diff options
Diffstat (limited to 'plugins/Themes/Oxygen2')
118 files changed, 15759 insertions, 0 deletions
diff --git a/plugins/Themes/Oxygen2/DarkButton.cpp b/plugins/Themes/Oxygen2/DarkButton.cpp new file mode 100755 index 0000000..06b09f1 --- /dev/null +++ b/plugins/Themes/Oxygen2/DarkButton.cpp @@ -0,0 +1,99 @@ +#include "DarkButton.h" +#include <QPainter> + +DarkButton::DarkButton(QWidget *parent) : + QPushButton(parent) +{ + setMinimumHeight(36); + setMaximumHeight(36); + setStyleSheet("border:none;color:#afb;"); + over=false; + enabled=true; +} + +void DarkButton::paintEvent(QPaintEvent * event) +{ + if(backgroundLeft.isNull() || backgroundLeft.height()!=height()) + { + QPixmap background(":/Themes/Oxygen2/resources/darkButton.png"); + if(background.isNull()) + abort(); + QPixmap backgroundPushed(":/Themes/Oxygen2/resources/darkButtonPushed.png"); + if(backgroundPushed.isNull()) + abort(); + QPixmap over(":/Themes/Oxygen2/resources/darkButtonOver.png"); + if(over.isNull()) + abort(); + if(height()==background.height()) + { + backgroundLeft=background.copy(0,0,10,36); + backgroundMiddle=background.copy(10,0,46,36); + backgroundRight=background.copy(56,0,10,36); + backgroundPushedLeft=backgroundPushed.copy(0,0,10,36); + backgroundPushedMiddle=backgroundPushed.copy(10,0,46,36); + backgroundPushedRight=backgroundPushed.copy(56,0,10,36); + overLeft=over.copy(0,0,10,36); + overMiddle=over.copy(10,0,46,36); + overRight=over.copy(56,0,10,36); + } + else + { + backgroundLeft=background.copy(0,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation); + backgroundMiddle=background.copy(10,0,46,36).scaledToHeight(height(),Qt::SmoothTransformation); + backgroundRight=background.copy(56,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation); + backgroundPushedLeft=backgroundPushed.copy(0,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation); + backgroundPushedMiddle=backgroundPushed.copy(10,0,46,36).scaledToHeight(height(),Qt::SmoothTransformation); + backgroundPushedRight=backgroundPushed.copy(56,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation); + overLeft=over.copy(0,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation); + overMiddle=over.copy(10,0,46,36).scaledToHeight(height(),Qt::SmoothTransformation); + overRight=over.copy(56,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation); + } + } + QPainter paint; + paint.begin(this); + if(enabled && !isEnabled()) + { + setStyleSheet("border:none;color:#fab;"); + enabled=false; + } + if(!enabled && isEnabled()) + { + setStyleSheet("border:none;color:#afb;"); + enabled=true; + } + if(isDown() && isEnabled()) + { + paint.drawPixmap(0,0,backgroundPushedLeft.width(), backgroundPushedLeft.height(), backgroundPushedLeft); + paint.drawPixmap(backgroundPushedLeft.width(), 0, + width()-backgroundPushedLeft.width()-backgroundPushedRight.width(), backgroundPushedLeft.height(),backgroundPushedMiddle); + paint.drawPixmap(width()-backgroundPushedRight.width(),0, backgroundPushedRight.width(), backgroundPushedRight.height(),backgroundPushedRight); + } + else + { + paint.drawPixmap(0,0,backgroundLeft.width(), backgroundLeft.height(), backgroundLeft); + paint.drawPixmap(backgroundLeft.width(), 0, + width()-backgroundLeft.width()-backgroundRight.width(), backgroundLeft.height(),backgroundMiddle); + paint.drawPixmap(width()-backgroundRight.width(),0, backgroundRight.width(), backgroundRight.height(),backgroundRight); + } + if(over && isEnabled()) + { + paint.drawPixmap(0,0,overLeft.width(), overLeft.height(), overLeft); + paint.drawPixmap(overLeft.width(), 0, + width()-overLeft.width()-overRight.width(), overLeft.height(),overMiddle); + paint.drawPixmap(width()-overRight.width(),0, overRight.width(), overRight.height(),overRight); + } + QPushButton::paintEvent(event); +} + +void DarkButton::enterEvent(QEvent *e) +{ + over=true; + QWidget::enterEvent(e); + update(); +} +void DarkButton::leaveEvent(QEvent *e) +{ + over=false; + QWidget::leaveEvent(e); + update(); +} diff --git a/plugins/Themes/Oxygen2/DarkButton.h b/plugins/Themes/Oxygen2/DarkButton.h new file mode 100755 index 0000000..38dbb60 --- /dev/null +++ b/plugins/Themes/Oxygen2/DarkButton.h @@ -0,0 +1,22 @@ +#ifndef DarkButton_H +#define DarkButton_H + +#include <QPushButton> + +class DarkButton : public QPushButton +{ +public: + DarkButton(QWidget *parent = nullptr); + void paintEvent(QPaintEvent *) override; +protected: + void enterEvent(QEvent *e) override; + void leaveEvent(QEvent *e) override; +private: + QPixmap backgroundLeft,backgroundMiddle,backgroundRight; + QPixmap backgroundPushedLeft,backgroundPushedMiddle,backgroundPushedRight; + QPixmap overLeft,overMiddle,overRight; + bool over; + bool enabled; +}; + +#endif // PROGRESSBARDARK_H diff --git a/plugins/Themes/Oxygen2/DebugEngineMacro.h b/plugins/Themes/Oxygen2/DebugEngineMacro.h new file mode 100755 index 0000000..4582010 --- /dev/null +++ b/plugins/Themes/Oxygen2/DebugEngineMacro.h @@ -0,0 +1,28 @@ +/** \file DebugEngineMacro.h +\brief Define the macro for the debug +\author alpha_one_x86 +\licence GPL3, see the file COPYING */ + +#ifndef DEBUGENGINEMACRO_H +#define DEBUGENGINEMACRO_H + +#ifdef WIN32 +# define __func__ __FUNCTION__ +#endif + +/// \brief Macro for the debug log +#ifdef ULTRACOPIER_PLUGIN_DEBUG + #if defined (__FILE__) && defined (__LINE__) + #define ULTRACOPIER_DEBUGCONSOLE(a,b) emit debugInformation(a,__func__,b,__FILE__,__LINE__) + #else + #define ULTRACOPIER_DEBUGCONSOLE(a,b) emit debugInformation(a,__func__,b) + #endif +#else // ULTRACOPIER_DEBUG + #define ULTRACOPIER_DEBUGCONSOLE(a,b) void() +#endif // ULTRACOPIER_DEBUG + +#endif // DEBUGENGINEMACRO_H + + + + diff --git a/plugins/Themes/Oxygen2/Environment.h b/plugins/Themes/Oxygen2/Environment.h new file mode 100755 index 0000000..265a5a6 --- /dev/null +++ b/plugins/Themes/Oxygen2/Environment.h @@ -0,0 +1,10 @@ +/** \file Environment.h
+\brief Define the environment variable and global function
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include "Variable.h"
+/// \brief The global include
+#include "StructEnumDefinition.h"
+#include "DebugEngineMacro.h"
+
diff --git a/plugins/Themes/Oxygen2/Languages/ar/translation.qm b/plugins/Themes/Oxygen2/Languages/ar/translation.qm Binary files differnew file mode 100755 index 0000000..563a429 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/ar/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/ar/translation.ts b/plugins/Themes/Oxygen2/Languages/ar/translation.ts new file mode 100644 index 0000000..383e6a3 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/ar/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ar_JO"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation>ملفات %1</translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation>%1 ملف ، بمتوسط حجم %2</translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation>إلى ملفات %1</translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation>شراء النسخة النهائية لتمويل التنمية</translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation>الملف %1/%2 ، الحجم: %3/%4</translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation>قائمة النسخ</translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation>قائمة التحريك</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation>لا تغلق إذا تم العثور على أخطاء</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation>لا تغلق</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation>إغلاق دائما</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation>اسم الملف ، 0KB</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation>تحديد لون</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation>%1 %2% من %3 إلى ملفات %4</translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation>عدم الإغلاق في حاله العثور على أخطاء</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation>لا تغلق أبدا</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation>إغلاق دائما</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation>تحديد لون</translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation>من:</translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation>&اكثر </translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation>&مهلة</translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation>&تخطي</translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation>&الغاء الامر</translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation>إغلاق عند إتمام النقل</translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation>0</translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation>100MB+</translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation>الحد من سرعه النسخ إلى:</translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation>قائمه النقل</translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation>تحريك المواد المحددة إلى الأعلى</translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation>تحريك المواد المحددة لاعلى</translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation>تحريك المواد المحددة لأسفل</translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation>تحريك العناصر المحددة إلى الأسفل</translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation>أضافه ملف/مجلد</translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation>حذف المواد المحددة</translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation>بحث</translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation>تصدير قائمه النقل</translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation>استيراد قائمه النقل</translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation>السابق</translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation>التالي</translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation>خطا</translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation>تصدير الأخطاء إلى قائمه النقل</translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation>المصدر</translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation>الوجهه</translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation>الواجهه</translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation>اضافة ملف</translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation>اضافة مجلد</translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation>نقل الملفات</translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation>نقل المجلد</translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation>نسخ الملفات</translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation>نسخ المجلد</translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation>إظهار التقدم المزدوج</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation>إظهار السرعة كمعلومات رئيسيه</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation>استخدام</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation>تبدا مع "أكثر زر" دفعت</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation>تصغير بالقرب من درج النظام</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation>في نهاية النسخ</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation>الحد من سرعه النسخ إلى</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation>KB/s</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation>بدء التصغير</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation>الموضع في البداية</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation>واجهه مستخدم داكنه</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation>افتراضي</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation>حفظ كسابق</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation>في الوسط</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation>المعلومات</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation>عرض</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation>السرعة مع شريط التقدم</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation>تدرج اللون</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation>انقر لتحرير اللون</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation>إظهار التقدم في العنوان</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation>دائما في القمه</translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/de/translation.qm b/plugins/Themes/Oxygen2/Languages/de/translation.qm Binary files differnew file mode 100755 index 0000000..ef742de --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/de/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/de/translation.ts b/plugins/Themes/Oxygen2/Languages/de/translation.ts new file mode 100644 index 0000000..db34222 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/de/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="de" sourcelanguage="en"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation>%1 Dateien</translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation>%1 Datei, mit einer ungefähren Größe von %2</translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation> in%1 Dateien</translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation>Kaufe die Ultimate Version um die Entwicklung zu finanzieren</translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation>Datei %1/%2, Größe:%3/%4</translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation>Zu kopierende Dateien</translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation>Zu verschiebende Dateien</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation>Nicht schließen, wenn Fehler aufgetreten sind</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation>Niemals schließen</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation>Immer schließen</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation>Dateiname, 0KB</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation>Farbe auswählen</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation>%1 %2 von %3 in %4 Dateien</translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation>Nicht schließen, wenn Fehler aufgetreten sind</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation>Niemals schließen</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation>Immer schließen</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation>Wählen Sie eine Farbe</translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation>Von:</translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation>&Mehr</translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation>&Pause</translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation>Über&springen</translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation>Abbrechen (&C)</translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation>Dateiliste</translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation>Ausgewählte Einträge löschen</translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation>Dateiliste exportieren</translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation>Dateiliste importieren</translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation>Vorherige</translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation>Nächste</translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation>Darstellungsoptionen</translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation>Ausgewählte Einträge an den Listenanfang verschieben</translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation>0</translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation>100MB+</translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation>Am Ende des Transfers schließen</translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation>Begrenze Kopiergeschwindigkeit auf:</translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation>Ausgewählte Einträge einen Platz nach oben verschieben</translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation>Ausgewählte Einträge einen Platz nach unten verschieben</translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation>Ausgewählte Einträge an das Listenende verschieben</translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation>Datei/Ordner hinzufügen</translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation>In Dateiliste suchen</translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation>Fehlerprotokoll</translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation>Fehlgeschlagene Dateien exportieren</translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation>Quelle</translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation>Ziel</translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation>Datei hinzufügen</translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation>Ordner hinzufügen</translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation>Datei(en) verschieben</translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation>Ordner verschieben</translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation>Datei(en) kopieren</translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation>Verzeichnis kopieren</translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation>Zweifachen Fortschrittsbalken anzeigen</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation>Geschwindigkeitsbegrenzungsschieberegler anzeigen</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation>Benutzung</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation>Standardmäßig "Mehr" Informationen anzeigen</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation>Beim Schließen ins Systray minimieren</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation>Am Ende des Vorgangs</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation>Begrenze Übertragungsgeschwindigkeit auf</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation>Minimiert starten</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation>Zum Bearbeiten der Farbe klicken</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation> KB/s</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation>Dunkles Design</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation>Informationen</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation>Anzeige</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation>Geschwindigkeit als Fortschrittsbalken anzeigen</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation>Farbe des Fortschrittsbalken</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation>Fortschritt im Fenstertitel zeigen</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation>Fenster immer im Vordergrund halten</translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/el/translation.qm b/plugins/Themes/Oxygen2/Languages/el/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/el/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/el/translation.ts b/plugins/Themes/Oxygen2/Languages/el/translation.ts new file mode 100755 index 0000000..24ac139 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/el/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/en/translation.qm b/plugins/Themes/Oxygen2/Languages/en/translation.qm Binary files differnew file mode 100755 index 0000000..d925dd6 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/en/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/en/translation.ts b/plugins/Themes/Oxygen2/Languages/en/translation.ts new file mode 100755 index 0000000..4b62856 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/en/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="en"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/es/translation.qm b/plugins/Themes/Oxygen2/Languages/es/translation.qm Binary files differnew file mode 100755 index 0000000..e18e87a --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/es/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/es/translation.ts b/plugins/Themes/Oxygen2/Languages/es/translation.ts new file mode 100755 index 0000000..43e63df --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/es/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="es" sourcelanguage="en"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation>Comprar la versión Ultimate para financiar el desarrollo</translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation>El archivo %1/%2, el tamaño: %3/%4</translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation>Lista de copia</translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation>Lista de movimiento</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation>No cierre si se encuentran errores</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation>Nunca cierre</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation>Siempre cerrar</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation>Nombre de archivo, 0KB</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation>Seleccione un color</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation>No cierre si se encuentran errores</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation>Nunca cierre</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation>Siempre cerrar</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation>Seleccione un color</translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation>De:</translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation>&Más</translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation>&Pausa</translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation>&Omitir</translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation>&Cancelar</translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation>Cerca de finalización de transferencia</translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation>Limitar la velocidad de copia en:</translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation>Lista de transferencia</translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation>Mueve los elementos seleccionados a la parte superior</translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation>Mueva los elementos seleccionados</translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation>Bajar los elementos seleccionados</translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation>Mueve los elementos seleccionados a la parte inferior</translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation>Agregar archivo/carpeta</translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation>Eliminar los elementos seleccionados</translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation>Buscar</translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation>Exportar la lista de transferencias</translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation>Importe la lista de transferencias</translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation>Anterior</translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation>Próximo</translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation>Error</translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation>Exportar los errores en la lista de transferencias</translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation>Fuente</translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation>Destino</translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation>Interfaz</translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation>Añadir archivo</translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation>Añadir carpeta</translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation>Mover archivo(s)</translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation>Mueva la carpeta</translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation>Copia el archivo(s)</translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation>Copia la carpeta</translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation>Mostrar progresión dual</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation>Mostrar la velocidad como principales informaciones</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation>Uso</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation>Comience con el "botón más" empujada</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation>Minimizar en cerca de la bandeja del sistema</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation>Al final de la copia</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation>Limitar la velocidad de copia de</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation>Haga clic para editar el color</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation> KB/s</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation>Informations</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation>Visualización</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation>Velocidad con barra de progreso</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation>Progresión de color</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation>Mostrar progresión en el título</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation>Siempre visible</translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/fr/translation.qm b/plugins/Themes/Oxygen2/Languages/fr/translation.qm Binary files differnew file mode 100755 index 0000000..c6039f5 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/fr/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/fr/translation.ts b/plugins/Themes/Oxygen2/Languages/fr/translation.ts new file mode 100755 index 0000000..2fedb8b --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/fr/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="fr" sourcelanguage="en"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="+108"/> + <source>%1 files</source> + <translation>%1 fichiers</translation> + </message> + <message> + <location line="+96"/> + <source>%1 file, with an average size of %2</source> + <translation>%1 fichiers, avec une taille moyenne de %2</translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="+194"/> + <location line="+2"/> + <source> into %1 files</source> + <translation> dans %1 fichiers</translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="+292"/> + <location line="+21"/> + <source>Buy the Ultimate version to fund development</source> + <translation>Achetez la version Ultimate pour financer le développement</translation> + </message> + <message> + <location line="+197"/> + <source>File %1/%2, size: %3/%4</source> + <translation>Fichier %1/%2, taille: %3/%4</translation> + </message> + <message> + <location line="+307"/> + <source>Copy list</source> + <translation>Liste de copies</translation> + </message> + <message> + <location line="+2"/> + <source>Move list</source> + <translation>Liste de déplacements</translation> + </message> + <message> + <location line="+501"/> + <source>Don't close if errors are found</source> + <translation>Garder ouvert s'il y a des erreurs</translation> + </message> + <message> + <location line="+1"/> + <source>Never close</source> + <translation>Ne jamais fermer</translation> + </message> + <message> + <location line="+1"/> + <source>Always close</source> + <translation>Toujours fermer</translation> + </message> + <message> + <location line="+2"/> + <source>File Name, 0KB</source> + <translation>Nom de fichier, 0Ko</translation> + </message> + <message> + <location line="+195"/> + <location line="+12"/> + <location line="+12"/> + <source>Select a color</source> + <translation>Selectionner une coleur</translation> + </message> + <message> + <location line="+88"/> + <location line="+11"/> + <location line="+9"/> + <source>%1 %2% of %3 into %4 files</source> + <translation>%1 %2% de %3 dans %4 fichiers</translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="+320"/> + <source>Don't close if errors are found</source> + <translation>Garder ouvert s'il y a des erreurs</translation> + </message> + <message> + <location line="+1"/> + <source>Never close</source> + <translation>Ne jamais fermer</translation> + </message> + <message> + <location line="+1"/> + <source>Always close</source> + <translation>Toujours fermer</translation> + </message> + <message> + <location line="+196"/> + <location line="+15"/> + <location line="+15"/> + <source>Select a color</source> + <translation>Selectionner une coleur</translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="+420"/> + <source>From:</source> + <translation>Depuis:</translation> + </message> + <message> + <location line="-119"/> + <source>&More</source> + <translation>Pl&us</translation> + </message> + <message> + <location line="+20"/> + <source>&Pause</source> + <translation>&Pause</translation> + </message> + <message> + <location line="+161"/> + <source>&Skip</source> + <translation>&Passer</translation> + </message> + <message> + <location line="+11"/> + <source>&Cancel</source> + <translation>&Annuler</translation> + </message> + <message> + <location line="-104"/> + <source>Close on transfer completion</source> + <translation>Fermer à la fin des transferts</translation> + </message> + <message> + <location line="-157"/> + <source>0</source> + <translation>0</translation> + </message> + <message> + <location line="+20"/> + <source>100MB+</source> + <translation>100Mo+</translation> + </message> + <message> + <location line="+275"/> + <source>Limit copy speed to:</source> + <translation>Limiter la vitesse de copie à:</translation> + </message> + <message> + <location line="+43"/> + <source>Transfer list</source> + <translation>Liste de transferts</translation> + </message> + <message> + <location line="+23"/> + <source>Move the selected items to the top</source> + <translation>Déplacer l'item selectionné au debut</translation> + </message> + <message> + <location line="+26"/> + <source>Move up the selected items</source> + <translation>Déplacer l'item selectionné vers le haut</translation> + </message> + <message> + <location line="+26"/> + <source>Move down the selected items</source> + <translation>Déplacer l'item selectionné vers le bas</translation> + </message> + <message> + <location line="+26"/> + <source>Move the selected items to the bottom</source> + <translation>Déplacer l'item selectionné à la fin</translation> + </message> + <message> + <location line="+26"/> + <source>Add file/folder</source> + <translation>Ajouter fichier/dossier</translation> + </message> + <message> + <location line="+29"/> + <source>Delete the selected items</source> + <translation>Supprimer les items sélectionnés</translation> + </message> + <message> + <location line="+26"/> + <source>Search</source> + <translation>Rechercher</translation> + </message> + <message> + <location line="+29"/> + <source>Export the transfer list</source> + <translation>Exporter la liste de transfert</translation> + </message> + <message> + <location line="+26"/> + <source>Import the transfer list</source> + <translation>Importer la liste de transfert</translation> + </message> + <message> + <location line="+55"/> + <source>Previous</source> + <translation>Précédent</translation> + </message> + <message> + <location line="+7"/> + <source>Next</source> + <translation>Suivant</translation> + </message> + <message> + <location line="+35"/> + <location line="+69"/> + <source>Error</source> + <translation>Erreur</translation> + </message> + <message> + <location line="-49"/> + <source>Export the errors into transfer list</source> + <translation>Exporter les erreurs dans une liste de transfert</translation> + </message> + <message> + <location line="+39"/> + <source>Source</source> + <translation>Source</translation> + </message> + <message> + <location line="+5"/> + <source>Destination</source> + <translation>Destination</translation> + </message> + <message> + <location line="+14"/> + <source>Interface</source> + <translation>Interface</translation> + </message> + <message> + <location line="+46"/> + <source>Add file</source> + <translation>Ajouter un fichier</translation> + </message> + <message> + <location line="+9"/> + <source>Add folder</source> + <translation>Ajouter un répertoire</translation> + </message> + <message> + <location line="+9"/> + <source>Move file(s)</source> + <translation>Déplacer le(s) fichier(s)</translation> + </message> + <message> + <location line="+9"/> + <source>Move folder</source> + <translation>Déplacer un répertoire</translation> + </message> + <message> + <location line="+9"/> + <source>Copy file(s)</source> + <translation>Copier le(s) fichier(s)</translation> + </message> + <message> + <location line="+9"/> + <source>Copy folder</source> + <translation>Copier un répertoire</translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="+293"/> + <source>Show dual progression</source> + <translation>Afficher une double progression</translation> + </message> + <message> + <location line="-48"/> + <source>Show speed as main information</source> + <translation>Afficher la vitesse comme information principale</translation> + </message> + <message> + <location line="-201"/> + <source>Use</source> + <translation>Utilisation</translation> + </message> + <message> + <location line="+66"/> + <source>Start with the "more button" pushed</source> + <translation>Déplier automatiquement les détails</translation> + </message> + <message> + <location line="-53"/> + <source>Minimize on close to systray</source> + <translation>Minimiser à la fermeture dans le systray</translation> + </message> + <message> + <location line="+23"/> + <source>At the end of the copy</source> + <translation>À la fin de la copie</translation> + </message> + <message> + <location line="-10"/> + <location line="+17"/> + <source>Limit copy speed to</source> + <translation>Limiter la vitesse de copie à</translation> + </message> + <message> + <location line="+30"/> + <source>Start minimized</source> + <translation>Démarrer minimisé</translation> + </message> + <message> + <location line="+27"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+188"/> + <source>Click to edit the color</source> + <translation>Cliquer pour éditer la couleur</translation> + </message> + <message> + <location line="-235"/> + <source> KB/s</source> + <translation> Ko/s</translation> + </message> + <message> + <location line="+107"/> + <source>Dark UI</source> + <translation>UI obscure</translation> + </message> + <message> + <location line="+8"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>Informations</source> + <translation>Informations</translation> + </message> + <message> + <location line="+38"/> + <source>Display</source> + <translation>Affichage</translation> + </message> + <message> + <location line="+6"/> + <source>Speed with progress bar</source> + <translation>Vitesse avec barre de progression</translation> + </message> + <message> + <location line="+30"/> + <source>Progression color</source> + <translation>Couleur de progression</translation> + </message> + <message> + <location line="-10"/> + <source>Show progression in the title</source> + <translation>Afficher la progression dans le titre</translation> + </message> + <message> + <location line="-166"/> + <source>Always on top</source> + <translation>Toujours au 1er plan</translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/hi/translation.qm b/plugins/Themes/Oxygen2/Languages/hi/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/hi/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/hi/translation.ts b/plugins/Themes/Oxygen2/Languages/hi/translation.ts new file mode 100755 index 0000000..24ac139 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/hi/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/hu/translation.qm b/plugins/Themes/Oxygen2/Languages/hu/translation.qm Binary files differnew file mode 100755 index 0000000..6567c41 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/hu/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/hu/translation.ts b/plugins/Themes/Oxygen2/Languages/hu/translation.ts new file mode 100755 index 0000000..1d6d670 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/hu/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="hu"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation>Vásárold meg az Ultimate verziót a fejlesztés támogatásához</translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation>Fájl %1/%2, méret: %3/%4</translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation>Lista másolása</translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation>Lista mozgatása</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation>Ne zárja be, ha hiba történik</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation>Sose zárja be</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation>Mindig zárja be</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation>Fájlnév, 0KB</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation>Válassz egy színt</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation>Ne zárja be, ha hiba történik</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation>Sose zárja be</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation>Mindig zárja be</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation>Válassz egy színt</translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation>Forrás:</translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation>&Több</translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation>&Szünet</translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation>&Kihagy</translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation>&Mégse</translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation>Átviteli lista</translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation>Előző</translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation>Következő</translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation>Kezelőfelület</translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation>Kijelölések elemek mozgatása legfelülre</translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation>Átvitel végeztével zárja be</translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation>Másolási sebesség korlátozása:</translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation>Kijelölt elemek mozgatása fel</translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation>Kijelölt elemek mozgatása le</translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation>Kijelölések elemek mozgatása legalulra</translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation>Fájl/mappa hozzáadása</translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation>Kijelölt elemek törlése</translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation>Keresés</translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation>Átviteli lista exportálása</translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation>Átviteli lista importálása</translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation>Hiba</translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation>Hibák exportálása az átviteli listába</translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation>Forrás</translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation>Cél</translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation>Fájl hozzáadása</translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation>Mappa hozzáadása</translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation>Fájl(ok) mozgatása</translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation>Mappa mozgatása</translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation>Fájl(ok) másolása</translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation>Mappa másolása</translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation>Páros folyamat mutatása</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation>Sebesség mutatása, mint fő információ</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation>Használ</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation>Indítás a "több gomb" lenyomásával</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation>Bezáráskor minimalizálás a tálcára</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation>A másolás befejezésekor</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation>Másolási sebesség korlátozása</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation>Kattints a szín szerkesztéséhez</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation> KB/s</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation>Információk</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation>Megjelenítés</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation>Sebesség folyamatsávval</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation>Folyamat színe</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation>Folyamat mutatása a címsorban</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation>Mindig legfelül</translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/id/translation.qm b/plugins/Themes/Oxygen2/Languages/id/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/id/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/id/translation.ts b/plugins/Themes/Oxygen2/Languages/id/translation.ts new file mode 100755 index 0000000..24ac139 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/id/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/it/translation.qm b/plugins/Themes/Oxygen2/Languages/it/translation.qm Binary files differnew file mode 100755 index 0000000..5afbca5 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/it/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/it/translation.ts b/plugins/Themes/Oxygen2/Languages/it/translation.ts new file mode 100644 index 0000000..1c6eb21 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/it/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="it" sourcelanguage="en"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation>%1 file</translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation>%1 file, con una dimensione media di %2</translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation> in %1 file</translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation>Acquista la versione Ultimate per finanziare lo sviluppo del programma</translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation>File %1/%2, dimensione: %3/%4</translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation>Lista della copia</translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation>Lista dello spostamento</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation>Non chiudere se vengono rilevati errori</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation>Non chiudere mai</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation>Chiudere sempre</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation>Nome del file, 0KB</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation>Scegliere un colore</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation>%1 %2% di %3 in %4 file</translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation>Non chiudere se vengono rilevati errori</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation>Non chiudere mai</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation>Chiudere sempre</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation>Scegliere un colore</translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation>Da:</translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation>Avanzate</translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation>Pausa</translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation>Salta</translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation>Annulla</translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation>Arresta il sistema a trasferimento comletato</translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation>0</translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation>100MB+</translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation>Limitare la velocità di copia a:</translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation>Lista dei trasferimenti</translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation>Sposta in cima gli elementi selezionati</translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation>Sposta sopra gli elementi selezionati</translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation>Sposta sotto gli elementi selezionati</translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation>Sposta in coda gli elementi selezionati</translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation>Aggiungi file/cartelle</translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation>Elimina gli elementi selezionati</translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation>Cerca</translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation>Esporta la lista dei trasferimenti</translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation>Importa la lista dei trasferimenti</translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation>Precedente</translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation>Successivo</translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation>Errore</translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation>Esporta gli errori nella lista dei trasferimenti</translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation>Cartella di origine</translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation>Cartella di destinazione</translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation>Interfaccia</translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation>Aggiungi file</translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation>Aggiungi cartella</translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation>Sposta file</translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation>Sposta la cartella</translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation>Copia file</translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation>Copia la cartella</translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation>Mostrare la doppia progressione</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation>Mostrare la velocità come principale informazione</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation>Utilità</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation>Iniziare col pulsante "Altro" attivo</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation>Alla chiusura riduci nella'area di notifica</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation>Al termine della copia</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation>Limitare velocità di copia a:</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation>Avvia ridotto a icona</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation>Posizione di partenza</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation>Clicca per modificare il colore</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation> KB/s</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation>Interfaccia utente scura</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation>Predefinito</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation>Mantenere come precedente</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation>Centrale</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation>Informazioni</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation>Visualizza</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation>Velocità nella barra di progresso</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation>Colore della progressione</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation>Mostrare la percentuale di progresso sul titolo</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation>Sempre in primo piano</translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/ja/translation.qm b/plugins/Themes/Oxygen2/Languages/ja/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/ja/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/ja/translation.ts b/plugins/Themes/Oxygen2/Languages/ja/translation.ts new file mode 100755 index 0000000..851343e --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/ja/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/ko/translation.qm b/plugins/Themes/Oxygen2/Languages/ko/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/ko/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/ko/translation.ts b/plugins/Themes/Oxygen2/Languages/ko/translation.ts new file mode 100755 index 0000000..689ea9e --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/ko/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ko_KR"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="+108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+96"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="+194"/> + <location line="+2"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="+292"/> + <location line="+21"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+197"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished">파일 %1/%2, 크기: %3/%4</translation> + </message> + <message> + <location line="+307"/> + <source>Copy list</source> + <translation type="unfinished">복사 목록</translation> + </message> + <message> + <location line="+2"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+501"/> + <source>Don't close if errors are found</source> + <translation type="unfinished">오류 발견시 종료 안함</translation> + </message> + <message> + <location line="+1"/> + <source>Never close</source> + <translation type="unfinished">절대 종료 안함</translation> + </message> + <message> + <location line="+1"/> + <source>Always close</source> + <translation type="unfinished">항상 종료</translation> + </message> + <message> + <location line="+2"/> + <source>File Name, 0KB</source> + <translation type="unfinished">파일명, 0KB</translation> + </message> + <message> + <location line="+195"/> + <location line="+12"/> + <location line="+12"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+88"/> + <location line="+11"/> + <location line="+9"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="+320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished">오류 발견시 종료 안함</translation> + </message> + <message> + <location line="+1"/> + <source>Never close</source> + <translation type="unfinished">절대 종료 안함</translation> + </message> + <message> + <location line="+1"/> + <source>Always close</source> + <translation type="unfinished">항상 종료</translation> + </message> + <message> + <location line="+196"/> + <location line="+15"/> + <location line="+15"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="+420"/> + <source>From:</source> + <translation type="unfinished">원본:</translation> + </message> + <message> + <location line="-119"/> + <source>&More</source> + <translation type="unfinished">&자세히</translation> + </message> + <message> + <location line="+20"/> + <source>&Pause</source> + <translation type="unfinished">&일시 정지</translation> + </message> + <message> + <location line="+161"/> + <source>&Skip</source> + <translation type="unfinished">&건너뛰기</translation> + </message> + <message> + <location line="+11"/> + <source>&Cancel</source> + <translation type="unfinished">&취소</translation> + </message> + <message> + <location line="+77"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+156"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+55"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+26"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+55"/> + <source>Previous</source> + <translation type="unfinished">이전</translation> + </message> + <message> + <location line="+7"/> + <source>Next</source> + <translation type="unfinished">다음</translation> + </message> + <message> + <location line="+113"/> + <source>Interface</source> + <translation type="unfinished">인터페이스</translation> + </message> + <message> + <location line="-389"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-361"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+137"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+138"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+92"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+26"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+26"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+26"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+55"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+152"/> + <location line="+69"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-49"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+60"/> + <source>Add file</source> + <translation type="unfinished">파일 추가</translation> + </message> + <message> + <location line="+9"/> + <source>Add folder</source> + <translation type="unfinished">폴더 추가</translation> + </message> + <message> + <location line="+9"/> + <source>Move file(s)</source> + <translation type="unfinished">파일 이동</translation> + </message> + <message> + <location line="+9"/> + <source>Move folder</source> + <translation type="unfinished">폴더 이동</translation> + </message> + <message> + <location line="+9"/> + <source>Copy file(s)</source> + <translation type="unfinished">파일 복사</translation> + </message> + <message> + <location line="+9"/> + <source>Copy folder</source> + <translation type="unfinished">폴더 복사</translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="+293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-48"/> + <source>Show speed as main information</source> + <translation type="unfinished">메인 정보에 속도 표시</translation> + </message> + <message> + <location line="-201"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+66"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-53"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+23"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-10"/> + <location line="+17"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+30"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+188"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-235"/> + <source> KB/s</source> + <translation type="unfinished"> KB/초</translation> + </message> + <message> + <location line="+107"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+38"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+30"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-10"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-166"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/nl/translation.qm b/plugins/Themes/Oxygen2/Languages/nl/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/nl/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/nl/translation.ts b/plugins/Themes/Oxygen2/Languages/nl/translation.ts new file mode 100755 index 0000000..24ac139 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/nl/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/no/translation.qm b/plugins/Themes/Oxygen2/Languages/no/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/no/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/no/translation.ts b/plugins/Themes/Oxygen2/Languages/no/translation.ts new file mode 100755 index 0000000..24ac139 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/no/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/pl/translation.qm b/plugins/Themes/Oxygen2/Languages/pl/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/pl/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/pl/translation.ts b/plugins/Themes/Oxygen2/Languages/pl/translation.ts new file mode 100755 index 0000000..24ac139 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/pl/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/pt/translation.qm b/plugins/Themes/Oxygen2/Languages/pt/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/pt/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/pt/translation.ts b/plugins/Themes/Oxygen2/Languages/pt/translation.ts new file mode 100755 index 0000000..24ac139 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/pt/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/ru/translation.qm b/plugins/Themes/Oxygen2/Languages/ru/translation.qm Binary files differnew file mode 100755 index 0000000..59964bb --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/ru/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/ru/translation.ts b/plugins/Themes/Oxygen2/Languages/ru/translation.ts new file mode 100755 index 0000000..512bece --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/ru/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ru" sourcelanguage="en"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation>Файл %1/%2, размер: %3/%4</translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished">Копировать список</translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished">Не закрывать, если найдены ошибки</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished">Никогда не закрывать</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished">Всегда закрывайте</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation>Имя файла, 0KB</translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished">Не закрывать, если найдены ошибки</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished">Никогда не закрывать</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished">Всегда закрывайте</translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation>С:</translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation>больше</translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation>пауза</translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation>пропускать</translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation>отменить</translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation>предыдущий</translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation>следующий</translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation>интерфейс</translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation>Добавить файл</translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation>Добавить папку</translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation>Перемещение файла(ов)</translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation>Перемещение папки</translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation>Копировать файл (ы)</translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation>Копировать папку</translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished">Показать скорости в качестве основной информации</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"> Кб/с</translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/th/translation.qm b/plugins/Themes/Oxygen2/Languages/th/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/th/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/th/translation.ts b/plugins/Themes/Oxygen2/Languages/th/translation.ts new file mode 100755 index 0000000..24ac139 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/th/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/tr/translation.qm b/plugins/Themes/Oxygen2/Languages/tr/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/tr/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/tr/translation.ts b/plugins/Themes/Oxygen2/Languages/tr/translation.ts new file mode 100755 index 0000000..24ac139 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/tr/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Languages/zh/translation.qm b/plugins/Themes/Oxygen2/Languages/zh/translation.qm Binary files differnew file mode 100755 index 0000000..3738845 --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/zh/translation.qm diff --git a/plugins/Themes/Oxygen2/Languages/zh/translation.ts b/plugins/Themes/Oxygen2/Languages/zh/translation.ts new file mode 100755 index 0000000..851343e --- /dev/null +++ b/plugins/Themes/Oxygen2/Languages/zh/translation.ts @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"> +<context> + <name>QObject</name> + <message> + <location filename="../../radialMap/map.cpp" line="108"/> + <source>%1 files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../radialMap/map.cpp" line="204"/> + <source>%1 file, with an average size of %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RadialMap::Widget</name> + <message> + <location filename="../../radialMap/widgetEvents.cpp" line="194"/> + <location filename="../../radialMap/widgetEvents.cpp" line="196"/> + <source> into %1 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Themes</name> + <message> + <location filename="../../interface.cpp" line="292"/> + <location filename="../../interface.cpp" line="313"/> + <source>Buy the Ultimate version to fund development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="510"/> + <source>File %1/%2, size: %3/%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="817"/> + <source>Copy list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="819"/> + <source>Move list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1324"/> + <source>File Name, 0KB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1519"/> + <location filename="../../interface.cpp" line="1531"/> + <location filename="../../interface.cpp" line="1543"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.cpp" line="1631"/> + <location filename="../../interface.cpp" line="1642"/> + <location filename="../../interface.cpp" line="1651"/> + <source>%1 %2% of %3 into %4 files</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ThemesFactory</name> + <message> + <location filename="../../ThemesFactory.cpp" line="320"/> + <source>Don't close if errors are found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="321"/> + <source>Never close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="322"/> + <source>Always close</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ThemesFactory.cpp" line="518"/> + <location filename="../../ThemesFactory.cpp" line="533"/> + <location filename="../../ThemesFactory.cpp" line="548"/> + <source>Select a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>interfaceCopy</name> + <message> + <location filename="../../interface.ui" line="420"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="301"/> + <source>&More</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="321"/> + <source>&Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="482"/> + <source>&Skip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="493"/> + <source>&Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="570"/> + <source>Transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="726"/> + <source>Delete the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="781"/> + <source>Export the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="807"/> + <source>Import the transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="862"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="869"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="982"/> + <source>Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="593"/> + <source>Move the selected items to the top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="232"/> + <source>0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="252"/> + <source>100MB+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="389"/> + <source>Close on transfer completion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="527"/> + <source>Limit copy speed to:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="619"/> + <source>Move up the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="645"/> + <source>Move down the selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="671"/> + <source>Move the selected items to the bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="697"/> + <source>Add file/folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="752"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="904"/> + <location filename="../../interface.ui" line="973"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="924"/> + <source>Export the errors into transfer list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="963"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="968"/> + <source>Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1028"/> + <source>Add file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1037"/> + <source>Add folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1046"/> + <source>Move file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1055"/> + <source>Move folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1064"/> + <source>Copy file(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../interface.ui" line="1073"/> + <source>Copy folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>themesOptions</name> + <message> + <location filename="../../themesOptions.ui" line="293"/> + <source>Show dual progression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="245"/> + <source>Show speed as main information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="44"/> + <source>Use</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="110"/> + <source>Start with the "more button" pushed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="57"/> + <source>Minimize on close to systray</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="80"/> + <source>At the end of the copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="70"/> + <location filename="../../themesOptions.ui" line="87"/> + <source>Limit copy speed to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="97"/> + <source> KB/s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="117"/> + <source>Start minimized</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="144"/> + <source>Position at start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="204"/> + <source>Dark UI</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="212"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="217"/> + <source>Save as previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="222"/> + <source>At Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="239"/> + <source>Informations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="277"/> + <source>Display</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="283"/> + <source>Speed with progress bar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="313"/> + <source>Progression color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="332"/> + <source>Click to edit the color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="303"/> + <source>Show progression in the title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../themesOptions.ui" line="137"/> + <source>Always on top</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/plugins/Themes/Oxygen2/Oxygen2Environment.h b/plugins/Themes/Oxygen2/Oxygen2Environment.h new file mode 100755 index 0000000..71b9141 --- /dev/null +++ b/plugins/Themes/Oxygen2/Oxygen2Environment.h @@ -0,0 +1,10 @@ +/** \file Environment.h
+\brief Define the environment variable and global function
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include "Oxygen2Variable.h"
+/// \brief The global include
+#include "StructEnumDefinition.h"
+#include "DebugEngineMacro.h"
+
diff --git a/plugins/Themes/Oxygen2/Oxygen2Variable.h b/plugins/Themes/Oxygen2/Oxygen2Variable.h new file mode 100755 index 0000000..81a97d7 --- /dev/null +++ b/plugins/Themes/Oxygen2/Oxygen2Variable.h @@ -0,0 +1,18 @@ +/** \file Variable.h
+\brief Define the environment variable
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef VARIABLEINTERFACEO2_H
+#define VARIABLEINTERFACEO2_H
+
+
+//Un-comment this next line to put ultracopier plugin in debug mode
+#ifndef ULTRACOPIER_NODEBUG
+//#define ULTRACOPIER_PLUGIN_DEBUG
+#endif
+
+#endif // VARIABLEINTERFACEO2_H
+
+
+
diff --git a/plugins/Themes/Oxygen2/ProgressBarDark.cpp b/plugins/Themes/Oxygen2/ProgressBarDark.cpp new file mode 100755 index 0000000..3a6b414 --- /dev/null +++ b/plugins/Themes/Oxygen2/ProgressBarDark.cpp @@ -0,0 +1,69 @@ +#include "ProgressBarDark.h" +#include <QPainter> + +ProgressBarDark::ProgressBarDark(QWidget *parent) : + QProgressBar(parent) +{ + setMinimumHeight(22); + setMaximumHeight(55); +} + +ProgressBarDark::~ProgressBarDark() +{ +} + +void ProgressBarDark::paintEvent(QPaintEvent *) +{ + if(backgroundLeft.isNull() || backgroundLeft.height()!=height()) + { + QPixmap background(":/Themes/Oxygen2/resources/progressBarout.png"); + if(background.isNull()) + abort(); + QPixmap bar(":/Themes/Oxygen2/resources/progressBarin.png"); + if(bar.isNull()) + abort(); + if(height()==background.height()) + { + backgroundLeft=background.copy(0,0,24,55); + backgroundMiddle=background.copy(24,0,701,55); + backgroundRight=background.copy(725,0,24,55); + barLeft=bar.copy(0,0,24,55); + barMiddle=bar.copy(24,0,701,55); + barRight=bar.copy(725,0,24,55); + } + else + { + backgroundLeft=background.copy(0,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation); + backgroundMiddle=background.copy(24,0,701,55).scaledToHeight(height(),Qt::SmoothTransformation); + backgroundRight=background.copy(725,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation); + barLeft=bar.copy(0,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation); + barMiddle=bar.copy(24,0,701,55).scaledToHeight(height(),Qt::SmoothTransformation); + barRight=bar.copy(725,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation); + } + } + QPainter paint; + paint.begin(this); + + if(maximum()<=0) + { + paint.drawPixmap(0,0,backgroundLeft.width(), backgroundLeft.height(), backgroundLeft); + paint.drawPixmap(backgroundLeft.width(), 0, + width()-backgroundLeft.width()-backgroundRight.width(), backgroundLeft.height(),backgroundMiddle); + paint.drawPixmap(width()-backgroundRight.width(),0, backgroundRight.width(), backgroundRight.height(),backgroundRight); + return; + } + + int size=width()-barLeft.width()-barRight.width(); + int inpixel=value()*size/maximum(); + + paint.drawPixmap(0,0,backgroundLeft.width(), backgroundLeft.height(), backgroundLeft); + paint.drawPixmap(0,0,barLeft.width(), barLeft.height(), barLeft); + + paint.drawPixmap(backgroundLeft.width(), 0, + width()-backgroundLeft.width()-backgroundRight.width(), backgroundLeft.height(),backgroundMiddle); + paint.drawPixmap(barLeft.width(), 0, + inpixel, barLeft.height(),barMiddle); + + paint.drawPixmap(width()-backgroundRight.width(),0, backgroundRight.width(), backgroundRight.height(),backgroundRight); + paint.drawPixmap(barLeft.width()+inpixel, 0, barRight.width(), barRight.height(),barRight); +} diff --git a/plugins/Themes/Oxygen2/ProgressBarDark.h b/plugins/Themes/Oxygen2/ProgressBarDark.h new file mode 100755 index 0000000..7c8e168 --- /dev/null +++ b/plugins/Themes/Oxygen2/ProgressBarDark.h @@ -0,0 +1,17 @@ +#ifndef PROGRESSBARDARK_H +#define PROGRESSBARDARK_H + +#include <QProgressBar> + +class ProgressBarDark : public QProgressBar +{ +public: + ProgressBarDark(QWidget *parent = nullptr); + ~ProgressBarDark(); + void paintEvent(QPaintEvent *) override; +private: + QPixmap backgroundLeft,backgroundMiddle,backgroundRight; + QPixmap barLeft,barMiddle,barRight; +}; + +#endif // PROGRESSBARDARK_H diff --git a/plugins/Themes/Oxygen2/README.md b/plugins/Themes/Oxygen2/README.md new file mode 100755 index 0000000..b529701 --- /dev/null +++ b/plugins/Themes/Oxygen2/README.md @@ -0,0 +1,4 @@ +# Themes: Oxygen + +This theme is based on the the Oxygen project for KDE Plasma desktops. It is the +default theme for _Ultracopier_. diff --git a/plugins/Themes/Oxygen2/StructEnumDefinition.h b/plugins/Themes/Oxygen2/StructEnumDefinition.h new file mode 100755 index 0000000..c1758f4 --- /dev/null +++ b/plugins/Themes/Oxygen2/StructEnumDefinition.h @@ -0,0 +1 @@ +#include "../../../StructEnumDefinition.h" diff --git a/plugins/Themes/Oxygen2/ThemesFactory.cpp b/plugins/Themes/Oxygen2/ThemesFactory.cpp new file mode 100755 index 0000000..111cbaa --- /dev/null +++ b/plugins/Themes/Oxygen2/ThemesFactory.cpp @@ -0,0 +1,573 @@ +/** \file factory.cpp +\brief Define the factory core +\author alpha_one_x86 */ + +#include <QColorDialog> +#include <QDesktopWidget> +#include <QScreen> + +#include "ThemesFactory.h" +#include "../../../cpp11addition.h" + +ThemesFactory::ThemesFactory() +{ + optionsEngine=NULL; + tempWidget=new QWidget(); + ui=new Ui::themesOptions(); + ui->setupUi(tempWidget); + ui->toolBox->setCurrentIndex(0); + currentSpeed = 0; + updateSpeed(); + + qRegisterMetaType<QList<QPersistentModelIndex> >("QList<QPersistentModelIndex>"); +} + +ThemesFactory::~ThemesFactory() +{ +} + +PluginInterface_Themes * ThemesFactory::getInstance() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, currentSpeed: "+std::to_string(currentSpeed)); + + Themes * newInterface=new Themes( + ui->alwaysOnTop->isChecked(), + ui->showProgressionInTheTitle->isChecked(), + progressColorWrite,progressColorRead,progressColorRemaining, + ui->showDualProgression->isChecked(), + ui->comboBox_copyEnd->currentIndex(), + ui->speedWithProgressBar->isChecked(), + currentSpeed, + ui->checkBoxShowSpeed->isChecked(), + facilityEngine, + ui->checkBoxStartWithMoreButtonPushed->isChecked(), + ui->minimizeToSystray->isChecked(), + ui->startMinimized->isChecked(), + ui->savePosition->currentIndex(), + ui->dark->isChecked() + ); + #ifdef ULTRACOPIER_PLUGIN_DEBUG + if(!connect(newInterface,&Themes::debugInformation,this,&PluginInterface_ThemesFactory::debugInformation)) + abort(); + #endif + if(!connect(this,&ThemesFactory::reloadLanguage,newInterface,&Themes::newLanguageLoaded)) + abort(); + if(!connect(newInterface,&Themes::destroyed,this,&ThemesFactory::savePositionBeforeClose)) + abort(); + switch(ui->savePosition->currentIndex()) + { + default: + case 0: + break; + case 1: + newInterface->move( + stringtouint32(optionsEngine->getOptionValue("savePositionX")), + stringtouint32(optionsEngine->getOptionValue("savePositionY")) + ); + break; + case 2: + if(!qApp->screens().isEmpty()) + newInterface->setGeometry( + QStyle::alignedRect( + Qt::LeftToRight, + Qt::AlignCenter, + newInterface->size(), + #if QT_VERSION < QT_VERSION_CHECK(5, 12, 0) + qApp->desktop()->availableGeometry() + #else + qApp->screens().front()->geometry() + #endif + ) + ); + break; + } + return newInterface; +} + +void ThemesFactory::savePositionBeforeClose(QObject *obj) +{ + if(ui->savePosition->currentIndex()!=1) + return; + if(obj == nullptr) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"obj == nullptr"); + return; + } + const QWidget * const widget=static_cast<QWidget *>(obj); + optionsEngine->setOptionValue("savePositionX",std::to_string(widget->x())); + optionsEngine->setOptionValue("savePositionY",std::to_string(widget->y())); +} + +void ThemesFactory::setResources(OptionInterface * optionsEngine,const std::string & + #ifdef ULTRACOPIER_PLUGIN_DEBUG + writePath + #endif + ,const std::string & + #ifdef ULTRACOPIER_PLUGIN_DEBUG + pluginPath + #endif + ,FacilityInterface * facilityEngine,const bool & + ) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, writePath: "+writePath+", pluginPath: "+pluginPath); + this->facilityEngine=facilityEngine; + if(optionsEngine!=NULL) + { + this->optionsEngine=optionsEngine; + //load the options + std::vector<std::pair<std::string, std::string> > KeysList; + KeysList.push_back(std::pair<std::string, std::string>("checkBoxShowSpeed","false")); + KeysList.push_back(std::pair<std::string, std::string>("moreButtonPushed","false")); + KeysList.push_back(std::pair<std::string, std::string>("speedWithProgressBar","true")); + KeysList.push_back(std::pair<std::string, std::string>("currentSpeed","0")); + KeysList.push_back(std::pair<std::string, std::string>("comboBox_copyEnd","0")); + KeysList.push_back(std::pair<std::string, std::string>("showDualProgression","false")); + KeysList.push_back(std::pair<std::string, std::string>("showProgressionInTheTitle","true")); + KeysList.push_back(std::pair<std::string, std::string>("progressColorWrite",QApplication::palette().color(QPalette::Highlight).name().toStdString())); + KeysList.push_back(std::pair<std::string, std::string>("progressColorRead",QApplication::palette().color(QPalette::AlternateBase).name().toStdString())); + KeysList.push_back(std::pair<std::string, std::string>("progressColorRemaining",QApplication::palette().color(QPalette::Base).name().toStdString())); + KeysList.push_back(std::pair<std::string, std::string>("alwaysOnTop","false")); + KeysList.push_back(std::pair<std::string, std::string>("minimizeToSystray","false")); + KeysList.push_back(std::pair<std::string, std::string>("startMinimized","false")); + KeysList.push_back(std::pair<std::string, std::string>("savePosition","0")); + KeysList.push_back(std::pair<std::string, std::string>("savePositionX","0")); + KeysList.push_back(std::pair<std::string, std::string>("savePositionY","0")); + KeysList.push_back(std::pair<std::string, std::string>("dark","true")); + optionsEngine->addOptionGroup(KeysList); + connect(optionsEngine,&OptionInterface::resetOptions,this,&ThemesFactory::resetOptions); + updateSpeed(); + + ui->comboBox_copyEnd->setCurrentIndex(stringtouint32(optionsEngine->getOptionValue("comboBox_copyEnd"))); + ui->speedWithProgressBar->setChecked(stringtobool(optionsEngine->getOptionValue("speedWithProgressBar"))); + ui->checkBoxShowSpeed->setChecked(stringtobool(optionsEngine->getOptionValue("checkBoxShowSpeed"))); + ui->checkBoxStartWithMoreButtonPushed->setChecked(stringtobool(optionsEngine->getOptionValue("moreButtonPushed"))); + ui->showDualProgression->setChecked(stringtobool(optionsEngine->getOptionValue("showDualProgression"))); + ui->showProgressionInTheTitle->setChecked(stringtobool(optionsEngine->getOptionValue("showProgressionInTheTitle"))); + ui->alwaysOnTop->setChecked(stringtobool(optionsEngine->getOptionValue("alwaysOnTop"))); + ui->minimizeToSystray->setChecked(stringtobool(optionsEngine->getOptionValue("minimizeToSystray"))); + ui->startMinimized->setChecked(stringtobool(optionsEngine->getOptionValue("startMinimized"))); + ui->savePosition->setCurrentIndex(stringtouint8(optionsEngine->getOptionValue("savePosition"))); + ui->dark->setChecked(stringtobool(optionsEngine->getOptionValue("dark"))); + } + #ifndef __GNUC__ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"__GNUC__ is not set"); + #else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"__GNUC__ is set"); + #endif +} + +QWidget * ThemesFactory::options() +{ + if(optionsEngine!=NULL) + { + bool ok; + currentSpeed=stringtouint32(optionsEngine->getOptionValue("currentSpeed"),&ok); + if(!ok) + currentSpeed=0; + + progressColorWrite=QVariant(QString::fromStdString(optionsEngine->getOptionValue("progressColorWrite"))).value<QColor>(); + progressColorRead=QVariant(QString::fromStdString(optionsEngine->getOptionValue("progressColorRead"))).value<QColor>(); + progressColorRemaining=QVariant(QString::fromStdString(optionsEngine->getOptionValue("progressColorRemaining"))).value<QColor>(); + + QPixmap pixmap(75,20); + pixmap.fill(progressColorWrite); + ui->progressColorWrite->setIcon(pixmap); + pixmap.fill(progressColorRead); + ui->progressColorRead->setIcon(pixmap); + pixmap.fill(progressColorRemaining); + ui->progressColorRemaining->setIcon(pixmap); + updateSpeed(); + updateProgressionColorBar(); + + if(!connect(ui->alwaysOnTop,&QCheckBox::stateChanged,this,&ThemesFactory::alwaysOnTop)) + abort(); + if(!connect(ui->checkBoxShowSpeed,&QCheckBox::stateChanged,this,&ThemesFactory::checkBoxShowSpeed)) + abort(); + if(!connect(ui->minimizeToSystray,&QCheckBox::stateChanged,this,&ThemesFactory::minimizeToSystray)) + abort(); + if(!connect(ui->checkBox_limitSpeed,&QCheckBox::stateChanged,this,&ThemesFactory::uiUpdateSpeed)) + abort(); + if(!connect(ui->SliderSpeed,&QAbstractSlider::valueChanged,this,&ThemesFactory::on_SliderSpeed_valueChanged)) + abort(); + if(!connect(ui->limitSpeed,static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &ThemesFactory::uiUpdateSpeed)) + abort(); + if(!connect(ui->checkBoxShowSpeed,&QAbstractButton::toggled,this,&ThemesFactory::checkBoxShowSpeedHaveChanged)) + abort(); + if(!connect(ui->checkBoxStartWithMoreButtonPushed,&QAbstractButton::toggled,this,&ThemesFactory::checkBoxStartWithMoreButtonPushedHaveChanged)) + abort(); + if(!connect(ui->speedWithProgressBar,&QAbstractButton::toggled,this,&ThemesFactory::speedWithProgressBar)) + abort(); + if(!connect(ui->comboBox_copyEnd, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&ThemesFactory::comboBox_copyEnd)) + abort(); + if(!connect(ui->showDualProgression,&QCheckBox::stateChanged,this,&ThemesFactory::showDualProgression)) + abort(); + if(!connect(ui->showDualProgression,&QCheckBox::stateChanged,this,&ThemesFactory::updateProgressionColorBar)) + abort(); + if(!connect(ui->showProgressionInTheTitle,&QCheckBox::stateChanged,this,&ThemesFactory::setShowProgressionInTheTitle)) + abort(); + if(!connect(ui->progressColorWrite,&QAbstractButton::clicked,this,&ThemesFactory::progressColorWrite_clicked)) + abort(); + if(!connect(ui->progressColorRead, &QAbstractButton::clicked,this,&ThemesFactory::progressColorRead_clicked)) + abort(); + if(!connect(ui->progressColorRemaining,&QAbstractButton::clicked,this,&ThemesFactory::progressColorRemaining_clicked)) + abort(); + if(!connect(ui->startMinimized,&QCheckBox::stateChanged,this,&ThemesFactory::startMinimized)) + abort(); + if(!connect(ui->savePosition,static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),this,&ThemesFactory::savePositionHaveChanged)) + abort(); + if(!connect(ui->dark,&QCheckBox::stateChanged,this,&ThemesFactory::setDark)) + abort(); + } + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"return the options"); + return tempWidget; +} + +QIcon ThemesFactory::getIcon(const std::string &fileName) const +{ + if(fileName=="SystemTrayIcon/exit.png") + { + QIcon tempIcon=QIcon::fromTheme("application-exit"); + if(!tempIcon.isNull()) + return tempIcon; + } + else if(fileName=="SystemTrayIcon/add.png") + { + QIcon tempIcon=QIcon::fromTheme("list-add"); + if(!tempIcon.isNull()) + return tempIcon; + } + else if(fileName=="SystemTrayIcon/informations.png") + { + QIcon tempIcon=QIcon::fromTheme("help-about"); + if(!tempIcon.isNull()) + return tempIcon; + } + else if(fileName=="SystemTrayIcon/options.png") + { + QIcon tempIcon=QIcon::fromTheme("applications-system"); + if(!tempIcon.isNull()) + return tempIcon; + } + return QIcon(":/Themes/Oxygen2/resources/"+QString::fromStdString(fileName)); +} + +void ThemesFactory::resetOptions() +{ + ui->checkBoxShowSpeed->setChecked(true); + ui->checkBoxStartWithMoreButtonPushed->setChecked(false); + ui->savePosition->setCurrentIndex(0); +} + +void ThemesFactory::checkBoxShowSpeedHaveChanged(bool toggled) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("checkBoxShowSpeed",std::to_string(toggled)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::checkBoxStartWithMoreButtonPushedHaveChanged(bool toggled) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("moreButtonPushed",std::to_string(toggled)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::savePositionHaveChanged(int value) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("savePosition",std::to_string(value)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::setDark(bool toggled) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("dark",std::to_string(toggled)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::comboBox_copyEnd(int value) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("comboBox_copyEnd",std::to_string(value)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::speedWithProgressBar(bool toggled) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("speedWithProgressBar",std::to_string(toggled)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::newLanguageLoaded() +{ + ui->retranslateUi(tempWidget); + ui->comboBox_copyEnd->setItemText(0,tr("Don't close if errors are found")); + ui->comboBox_copyEnd->setItemText(1,tr("Never close")); + ui->comboBox_copyEnd->setItemText(2,tr("Always close")); + emit reloadLanguage(); +} + +void ThemesFactory::checkBoxShowSpeed(bool checked) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + Q_UNUSED(checked); + updateSpeed(); +} + +void ThemesFactory::minimizeToSystray(bool checked) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("minimizeToSystray",std::to_string(checked)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::alwaysOnTop(bool checked) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("alwaysOnTop",std::to_string(checked)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::showDualProgression(bool checked) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("showDualProgression",std::to_string(checked)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::startMinimized(bool checked) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("startMinimized",std::to_string(checked)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::on_SliderSpeed_valueChanged(int value) +{ + if(optionsEngine==NULL) + return; + if(!ui->checkBoxShowSpeed->isChecked()) + return; + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"value: "+std::to_string(value)); + switch(value) + { + case 0: + currentSpeed=0; + break; + case 1: + currentSpeed=1024; + break; + case 2: + currentSpeed=1024*4; + break; + case 3: + currentSpeed=1024*16; + break; + case 4: + currentSpeed=1024*64; + break; + case 5: + currentSpeed=1024*128; + break; + } + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); + updateSpeed(); +} + +void ThemesFactory::uiUpdateSpeed() +{ + if(optionsEngine==NULL) + return; + if(ui->checkBoxShowSpeed->isChecked()) + return; + if(!ui->checkBox_limitSpeed->isChecked()) + currentSpeed=0; + else + currentSpeed=ui->limitSpeed->value(); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit newSpeedLimitation: "+std::to_string(currentSpeed)); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::updateSpeed() +{ + if(optionsEngine==NULL) + return; + ui->label_Slider_speed->setVisible(ui->checkBoxShowSpeed->isChecked()); + ui->SliderSpeed->setVisible(ui->checkBoxShowSpeed->isChecked()); + ui->label_SpeedMaxValue->setVisible(ui->checkBoxShowSpeed->isChecked()); + ui->limitSpeed->setVisible(!ui->checkBoxShowSpeed->isChecked()); + ui->checkBox_limitSpeed->setVisible(!ui->checkBoxShowSpeed->isChecked()); + + if(ui->checkBoxShowSpeed->isChecked()) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"checked, currentSpeed: "+std::to_string(currentSpeed)); + ui->limitSpeed->setEnabled(false); + if(currentSpeed==0) + { + ui->SliderSpeed->setValue(0); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->translateText("Unlimited"))); + } + else if(currentSpeed<=1024) + { + if(currentSpeed!=1024) + { + currentSpeed=1024; + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); + } + ui->SliderSpeed->setValue(1); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*1))); + } + else if(currentSpeed<=1024*4) + { + if(currentSpeed!=1024*4) + { + currentSpeed=1024*4; + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); + } + ui->SliderSpeed->setValue(2); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*4))); + } + else if(currentSpeed<=1024*16) + { + if(currentSpeed!=1024*16) + { + currentSpeed=1024*16; + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); + } + ui->SliderSpeed->setValue(3); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*16))); + } + else if(currentSpeed<=1024*64) + { + if(currentSpeed!=1024*64) + { + currentSpeed=1024*64; + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); + } + ui->SliderSpeed->setValue(4); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*64))); + } + else + { + if(currentSpeed!=1024*128) + { + currentSpeed=1024*128; + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed)); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); + } + ui->SliderSpeed->setValue(5); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*128))); + } + } + else + { + ui->checkBox_limitSpeed->setChecked(currentSpeed>0); + if(currentSpeed>0) + ui->limitSpeed->setValue(currentSpeed); + ui->checkBox_limitSpeed->setEnabled(currentSpeed!=-1); + ui->limitSpeed->setEnabled(ui->checkBox_limitSpeed->isChecked()); + } +} + +void ThemesFactory::progressColorWrite_clicked() +{ + QColor color=QColorDialog::getColor(progressColorWrite,NULL,tr("Select a color")); + if(!color.isValid()) + return; + progressColorWrite=color; + QPixmap pixmap(75,20); + pixmap.fill(progressColorWrite); + ui->progressColorWrite->setIcon(pixmap); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("progressColorWrite",progressColorWrite.name().toStdString()); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::progressColorRead_clicked() +{ + QColor color=QColorDialog::getColor(progressColorRead,NULL,tr("Select a color")); + if(!color.isValid()) + return; + progressColorRead=color; + QPixmap pixmap(75,20); + pixmap.fill(progressColorRead); + ui->progressColorRead->setIcon(pixmap); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("progressColorRead",progressColorRead.name().toStdString()); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::progressColorRemaining_clicked() +{ + QColor color=QColorDialog::getColor(progressColorRemaining,NULL,tr("Select a color")); + if(!color.isValid()) + return; + progressColorRemaining=color; + QPixmap pixmap(75,20); + pixmap.fill(progressColorRemaining); + ui->progressColorRemaining->setIcon(pixmap); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("progressColorRemaining",progressColorRemaining.name().toStdString()); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} + +void ThemesFactory::updateProgressionColorBar() +{ + ui->labelProgressionColor->setVisible(ui->showDualProgression->isChecked()); + ui->frameProgressionColor->setVisible(ui->showDualProgression->isChecked()); +} + +void ThemesFactory::setShowProgressionInTheTitle() +{ + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("showProgressionInTheTitle",std::to_string(ui->showProgressionInTheTitle->isChecked())); + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented"); +} diff --git a/plugins/Themes/Oxygen2/ThemesFactory.h b/plugins/Themes/Oxygen2/ThemesFactory.h new file mode 100755 index 0000000..bd6095e --- /dev/null +++ b/plugins/Themes/Oxygen2/ThemesFactory.h @@ -0,0 +1,89 @@ +/** \file factory.h +\brief Define the factory, to create instance of the interface +\author alpha_one_x86 +\licence GPL3, see the file COPYING */ + +#ifndef FACTORYTHEMEOXYGEN_H +#define FACTORYTHEMEOXYGEN_H + +#include <QObject> +#include <QWidget> +#include <QMenu> +#include <QCloseEvent> +#include <QFile> +#include <QIcon> +#include <QColor> +#include <QPixmap> + +#include "../../../interface/PluginInterface_Themes.h" +#include "ui_themesOptions.h" +#include "interface.h" +#include "Oxygen2Environment.h" + +namespace Ui { + class themesOptions; +} + +/// \brief Define the factory, to create instance of the interface +class ThemesFactory : public PluginInterface_ThemesFactory +{ + Q_OBJECT + #ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE_DIRECT + Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.ThemesFactory/1.0.1.0" FILE "plugin.json") + Q_INTERFACES(PluginInterface_ThemesFactory) + #endif +public: + ThemesFactory(); + ~ThemesFactory(); + /// \brief to return the instance of the copy engine + PluginInterface_Themes * getInstance() override; + /// \brief set the resources, to store options, to have facilityInterface + void setResources(OptionInterface * optionsEngine,const std::string & + #ifdef ULTRACOPIER_PLUGIN_DEBUG + writePath + #endif + ,const std::string & + #ifdef ULTRACOPIER_PLUGIN_DEBUG + pluginPath + #endif + ,FacilityInterface * facilityEngine,const bool &portableVersion) override; + /// \brief to get the default options widget + QWidget * options() override; + /// \brief to get a resource icon + QIcon getIcon(const std::string &fileName) const override; +private slots: + void checkBoxShowSpeedHaveChanged(bool toggled); + void checkBoxStartWithMoreButtonPushedHaveChanged(bool toggled); + void comboBox_copyEnd(int value); + void speedWithProgressBar(bool toggled); + void checkBoxShowSpeed(bool checked); + void minimizeToSystray(bool checked); + void alwaysOnTop(bool checked); + void showDualProgression(bool checked); + void on_SliderSpeed_valueChanged(int value); + void uiUpdateSpeed(); + void updateSpeed(); + void progressColorWrite_clicked(); + void progressColorRead_clicked(); + void progressColorRemaining_clicked(); + void updateProgressionColorBar(); + void setShowProgressionInTheTitle(); + void startMinimized(bool checked); + void savePositionBeforeClose(QObject *obj); + void savePositionHaveChanged(int value); + void setDark(bool toggled); +public slots: + void resetOptions() override; + void newLanguageLoaded() override; +private: + OptionInterface * optionsEngine; + Ui::themesOptions *ui; + QWidget *tempWidget; + FacilityInterface * facilityEngine; + int32_t currentSpeed;///< in KB/s, assume as 0KB/s as default like every where + QColor progressColorWrite,progressColorRead,progressColorRemaining; +signals: + void reloadLanguage() const; +}; + +#endif // FACTORY_H diff --git a/plugins/Themes/Oxygen2/TransferModel.cpp b/plugins/Themes/Oxygen2/TransferModel.cpp new file mode 100755 index 0000000..5a97aab --- /dev/null +++ b/plugins/Themes/Oxygen2/TransferModel.cpp @@ -0,0 +1,755 @@ +#include "TransferModel.h" +#include "../../../cpp11addition.h" +#include <iostream> + +#define COLUMN_COUNT 3 + +// Model + +QIcon *TransferModel::start=NULL; +QIcon *TransferModel::stop=NULL; + +TransferModel::TransferModel() +{ + /// \warning to prevent Must construct a QGuiApplication before QPixmap IN STATIC WINDOWS VERSION ONLY + if(TransferModel::start==NULL) + TransferModel::start=new QIcon(QStringLiteral(":/resources/player_play.png")); + if(TransferModel::stop==NULL) + TransferModel::stop=new QIcon(QStringLiteral(":/resources/player_pause.png")); + currentIndexSearch=0; + haveSearchItem=false; + loop_size=0,index_for_loop=0; + sub_loop_size=0,sub_index_for_loop=0; + row=0,column=0; + facilityEngine=NULL; + currentIndexSearch=0; + haveSearchItem=false; + searchId=0; + + tree=NULL; +} + +int TransferModel::columnCount( const QModelIndex& parent ) const +{ + return parent == QModelIndex() ? COLUMN_COUNT : 0; +} + +QVariant TransferModel::data( const QModelIndex& index, int role ) const +{ + int row,column; + row=index.row(); + column=index.column(); + if(index.parent()!=QModelIndex() || row < 0 || (unsigned int)row >= transfertItemList.size() || column < 0 || column >= COLUMN_COUNT) + return QVariant(); + + const TransfertItem& item = transfertItemList.at(row); + if(role==Qt::UserRole) + return (quint64)item.id; + else if(role==Qt::DisplayRole) + { + switch(column) + { + case 0: + return QString::fromStdString(item.source); + break; + case 1: + return QString::fromStdString(item.size); + break; + case 2: + return QString::fromStdString(item.destination); + break; + default: + return QVariant(); + } + } + else if(role==Qt::DecorationRole) + { + switch(column) + { + case 0: + if(stopId.find(item.id)!=stopId.cend()) + return *stop; + else if(startId.find(item.id)!=startId.cend()) + return *start; + else + return QVariant(); + break; + default: + return QVariant(); + } + } + else if(role==Qt::BackgroundRole) + { + if(!search_text.empty() && (item.source.find(search_text)!=std::string::npos || + item.destination.find(search_text)!=std::string::npos)) + { + if(haveSearchItem && searchId==item.id) + return QColor(255,150,150,100); + else + return QColor(255,255,0,100); + } + else + return QVariant(); + } + return QVariant(); +} + +int TransferModel::rowCount( const QModelIndex& parent ) const +{ + return parent == QModelIndex() ? transfertItemList.size() : 0; +} + +uint64_t TransferModel::firstId() const +{ + if(transfertItemList.size()>0) + return transfertItemList.front().id; + else + return 0; +} + +QVariant TransferModel::headerData( int section, Qt::Orientation orientation, int role ) const +{ + if(facilityEngine==NULL) + abort(); + if ( role == Qt::DisplayRole && orientation == Qt::Horizontal && section >= 0 && section < COLUMN_COUNT ) { + switch ( section ) { + case 0: + return QString::fromStdString(facilityEngine->translateText("Source")); + case 1: + return QString::fromStdString(facilityEngine->translateText("Size")); + case 2: + return QString::fromStdString(facilityEngine->translateText("Destination")); + } + } + + return QAbstractTableModel::headerData( section, orientation, role ); +} + +bool TransferModel::setData( const QModelIndex& index, const QVariant& value, int role ) +{ + row=index.row(); + column=index.column(); + if(index.parent()!=QModelIndex() || row < 0 || (unsigned int)row >= transfertItemList.size() || column < 0 || column >= COLUMN_COUNT) + return false; + + TransfertItem& item = transfertItemList[row]; + if(role==Qt::UserRole) + { + item.id=value.toULongLong(); + return true; + } + else if(role==Qt::DisplayRole) + { + switch(column) + { + case 0: + item.source=value.toString().toStdString(); + emit dataChanged(index,index); + return true; + break; + case 1: + item.size=value.toString().toStdString(); + emit dataChanged(index,index); + return true; + break; + case 2: + item.destination=value.toString().toStdString(); + emit dataChanged(index,index); + return true; + break; + default: + return false; + } + } + return false; +} + +Folder * TransferModel::appendToTreeR(Folder * const tree, const std::string &subPath,Folder * const oldTree) +{ + const std::string::size_type n=subPath.find('/'); + + //isolate the name + std::string name; + if(n == std::string::npos) + name=subPath; + else + name=subPath.substr(0,n); + //search + auto search = tree->folders.find(name); + Folder * folder=nullptr; + if(search == tree->folders.end()) + { + //append or remplace the existing + if(oldTree!=NULL && (n+1)==subPath.size()) + { + oldTree->setName(subPath.substr(0,n).c_str()); + folder=oldTree; + } + else + folder=new Folder(name); + if(!folder->isFolder()) + { + if(oldTree!=NULL) + abort(); + return nullptr; + } + tree->append(folder); + } + else + { + //create a new leaf + File * file=search->second; + if(!file->isFolder()) + return nullptr; + folder=static_cast<Folder *>(file); + } + if(n == std::string::npos || n+1==subPath.size()) + return folder; + else + return appendToTreeR(folder,subPath.substr(n+1),oldTree); +} + +void TransferModel::appendToTree(const std::string &path,const uint64_t &size) +{ + if(size==0) + return; + const std::string::size_type n=path.rfind('/'); + if(n == std::string::npos) + return; + if(treePath.empty()) + { + treePath=path.substr(0,n+1); + tree->append(path.c_str()+n+1,size); + } + else + { + const std::string &newPath=path.substr(0,n+1); + unsigned int index=0; + while(index<newPath.size() && index<treePath.size()) + { + if(treePath.at(index)!=newPath.at(index)) + break; + index++; + } + //append to current path + if(index==treePath.size()) + { + //get the next path, found or create + Folder * finalTree=tree; + if((n+1)>index) + { + const std::string &subPath=path.substr(index,(n+1)-index); + finalTree=appendToTreeR(tree,subPath); + } + finalTree->append(path.c_str()+n+1,size); + } + else //new root is to be created + { + //save the old values + const std::string oldTreePath=treePath; + Folder * const oldTree=tree; + tree=new Folder(""); + treePath=path.substr(0,index); + + //path switch to rebase the root + if(oldTreePath.size()>index) + appendToTreeR(tree,oldTreePath.substr(index),oldTree); + + Folder * finalTree=tree; + //make the new sub path if have + if((n+1)>index) + finalTree=appendToTreeR(tree,path.substr(index)); + + //do the file + finalTree->append(path.c_str()+n+1,size); + } + } + #ifdef ULTRACOPIER_PLUGIN_DEBUG + //check the integrity of tree + /*now it's mostly stable checkIntegrityChildren(tree); + checkIntegritySize(tree);*/ + #endif +} + +#ifdef ULTRACOPIER_PLUGIN_DEBUG +//check the integrity of tree size +uint64_t TransferModel::checkIntegritySize(const Folder * const tree) +{ + uint64_t size=0; + unsigned int index=0; + while(index<tree->onlyFiles.size()) + { + File * file=tree->onlyFiles.at(index); + if(file->parent()!=tree) + { + std::cerr << "tree parrent corrupted" << std::endl; + abort(); + } + size+=file->size(); + index++; + } + for(const auto& n : tree->folders) + { + Folder * folder=n.second; + if(folder->parent()!=tree) + { + std::cerr << "tree parrent corrupted" << std::endl; + abort(); + } + size+=checkIntegritySize(folder); + } + if(size!=tree->size()) + { + std::cerr << "tree corrupted" << std::endl; + abort(); + } + return tree->size(); +} + +//check the integrity of tree children +uint64_t TransferModel::checkIntegrityChildren(const Folder * const tree) +{ + uint64_t childrens=0; + childrens+=tree->onlyFiles.size(); + for(const auto& n : tree->folders) + { + Folder * folder=n.second; + if(folder->parent()!=tree) + { + std::cerr << "tree parrent corrupted" << std::endl; + abort(); + } + childrens+=checkIntegrityChildren(folder); + } + if(childrens!=tree->children()) + { + std::cerr << "tree corrupted" << std::endl; + abort(); + } + return tree->children(); +} +#endif + +/* + Return[0]: totalFile + Return[1]: totalSize + Return[2]: currentFile + */ +std::vector<uint64_t> TransferModel::synchronizeItems(const std::vector<Ultracopier::ReturnActionOnCopyList>& returnActions) +{ + const QModelIndexList oldIndexes = persistentIndexList(); + QModelIndexList newIndexes=oldIndexes; + QMap<int, quint64> oldMapping; // model index row in model before update, item id + QMap<quint64, int> newMapping; // item id, model index row in model after update + for ( int i = 0; i < oldIndexes.count(); i++ ) { + const QModelIndex& index = oldIndexes.at(i); + oldMapping[index.row()] = index.data( Qt::UserRole ).value<quint64>(); + } + + loop_size=returnActions.size(); + index_for_loop=0; + quint64 totalFile=0,totalSize=0,currentFile=0; + emit layoutAboutToBeChanged(); + while(index_for_loop<loop_size) + { + const Ultracopier::ReturnActionOnCopyList& action=returnActions.at(index_for_loop); + switch(action.type) + { + case Ultracopier::AddingItem: + { + TransfertItem newItem; + newItem.id=action.addAction.id; + newItem.source=action.addAction.sourceFullPath; + newItem.size=facilityEngine->sizeToString(action.addAction.size); + newItem.destination=action.addAction.destinationFullPath; + transfertItemList.push_back(newItem); + totalFile++; + totalSize+=action.addAction.size; + + appendToTree(action.addAction.sourceFullPath,action.addAction.size); + } + break; + case Ultracopier::MoveItem: + { + //bool current_entry= + if(action.userAction.position<0) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString()); + break; + } + if((unsigned int)action.userAction.position>(transfertItemList.size()-1)) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString()); + break; + } + if(action.userAction.moveAt<0) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString()); + break; + } + if((unsigned int)action.userAction.moveAt>(transfertItemList.size()-1)) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString()); + break; + } + if(action.userAction.position==action.userAction.moveAt) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, move at same position: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString()); + break; + } + const TransfertItem transfertItem=transfertItemList.at(action.userAction.position); + transfertItemList.erase(transfertItemList.cbegin()+action.userAction.position); + transfertItemList.insert(transfertItemList.cbegin()+action.userAction.moveAt,transfertItem); + //newIndexes.move(action.userAction.position,action.userAction.moveAt); + } + break; + case Ultracopier::RemoveItem: + { + if(currentIndexSearch>0 && action.userAction.position<=currentIndexSearch) + currentIndexSearch--; + if(action.userAction.position<0) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position).toStdString()); + break; + } + if((unsigned int)action.userAction.position>(transfertItemList.size()-1)) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position).toStdString()); + break; + } + transfertItemList.erase(transfertItemList.cbegin()+action.userAction.position); + currentFile++; + startId.erase(action.addAction.id); + stopId.erase(action.addAction.id); + internalRunningOperation.erase(action.addAction.id); + //newIndexes.remove(action.userAction.moveAt); + } + break; + case Ultracopier::PreOperation: + { + ItemOfCopyListWithMoreInformations tempItem; + tempItem.currentReadProgression=0; + tempItem.currentWriteProgression=0; + tempItem.generalData=action.addAction; + tempItem.actionType=action.type; + internalRunningOperation[action.addAction.id]=tempItem; + } + break; + case Ultracopier::Transfer: + { + if(startId.find(action.addAction.id)==startId.cend()) + startId.insert(action.addAction.id); + stopId.erase(action.addAction.id); + if(internalRunningOperation.find(action.addAction.id)!=internalRunningOperation.cend()) + internalRunningOperation[action.addAction.id].actionType=action.type; + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unable to found entry for file %1: actionType: Transfer").arg(action.addAction.id).toStdString()); + } + break; + case Ultracopier::PostOperation: + { + if(stopId.find(action.addAction.id)==stopId.cend()) + stopId.insert(action.addAction.id); + startId.erase(action.addAction.id); + } + break; + case Ultracopier::CustomOperation: + { + bool custom_with_progression=(action.addAction.size==1); + //without progression + if(custom_with_progression) + { + if(startId.find(action.addAction.id)!=startId.cend()) + { + startId.erase(action.addAction.id); + if(stopId.find(action.addAction.id)==stopId.cend()) + stopId.insert(action.addAction.id); + } + } + //with progression + else + { + stopId.erase(action.addAction.id); + if(startId.find(action.addAction.id)==startId.cend()) + startId.insert(action.addAction.id); + } + if(internalRunningOperation.find(action.addAction.id)!=internalRunningOperation.cend()) + { + ItemOfCopyListWithMoreInformations &item=internalRunningOperation[action.addAction.id]; + item.actionType=action.type; + item.custom_with_progression=custom_with_progression; + item.currentReadProgression=0; + item.currentWriteProgression=0; + } + } + break; + default: + //unknow code, ignore it + break; + } + index_for_loop++; + } + + if(!oldIndexes.isEmpty()) + { + const QSet<quint64> ids = oldMapping.values().toSet(); + + for ( unsigned int i = 0; i < transfertItemList.size(); i++ ) { + const TransferModel::TransfertItem& item = transfertItemList.at(i); + + if ( ids.contains( item.id ) ) { + newMapping[ item.id ] = i; + } + } + + for ( int i = 0; i < oldIndexes.count(); i++ ) { + const QModelIndex& index = oldIndexes.at(i); + const int newRow = newMapping.value( oldMapping.value(index.row()), -1 ); + newIndexes[ i ] = newRow == -1 ? QModelIndex() : QAbstractTableModel::index( newRow, index.column(), index.parent() ); + } + } + + changePersistentIndexList( oldIndexes, newIndexes ); + emit layoutChanged(); + { + std::vector<uint64_t> newList; + newList.resize(3); + newList[0]=totalFile; + newList[1]=totalSize; + newList[2]=currentFile; + return newList; + } +} + +void TransferModel::setFacilityEngine(FacilityInterface * facilityEngine) +{ + this->facilityEngine=facilityEngine; +} + +int TransferModel::search(const std::string &text, bool searchNext) +{ + emit layoutAboutToBeChanged(); + search_text=text; + emit layoutChanged(); + if(transfertItemList.size()==0) + return -1; + if(text.empty()) + return -1; + if(searchNext) + { + currentIndexSearch++; + if(currentIndexSearch>=loop_size) + currentIndexSearch=0; + } + index_for_loop=0; + loop_size=transfertItemList.size(); + while(index_for_loop<loop_size) + { + const TransfertItem &transfertItem=transfertItemList.at(currentIndexSearch); + if(transfertItem.source.find(search_text)!=std::string::npos || + transfertItem.destination.find(search_text)!=std::string::npos) + { + haveSearchItem=true; + searchId=transfertItemList.at(currentIndexSearch).id; + return currentIndexSearch; + } + currentIndexSearch++; + if(currentIndexSearch>=loop_size) + currentIndexSearch=0; + index_for_loop++; + } + haveSearchItem=false; + return -1; +} + +int TransferModel::searchPrev(const std::string &text) +{ + emit layoutAboutToBeChanged(); + search_text=text; + emit layoutChanged(); + if(transfertItemList.size()==0) + return -1; + if(text.empty()) + return -1; + if(currentIndexSearch==0) + currentIndexSearch=loop_size-1; + else + currentIndexSearch--; + index_for_loop=0; + loop_size=transfertItemList.size(); + while(index_for_loop<loop_size) + { + const TransfertItem &transfertItem=transfertItemList.at(currentIndexSearch); + if(transfertItem.source.find(search_text)!=std::string::npos || + transfertItem.destination.find(search_text)!=std::string::npos) + { + haveSearchItem=true; + searchId=transfertItemList.at(currentIndexSearch).id; + return currentIndexSearch; + } + if(currentIndexSearch==0) + currentIndexSearch=loop_size-1; + else + currentIndexSearch--; + index_for_loop++; + } + haveSearchItem=false; + return -1; +} + +void TransferModel::setFileProgression(std::vector<Ultracopier::ProgressionItem> &progressionList) +{ + loop_size=progressionList.size(); + index_for_loop=0; + while(index_for_loop<loop_size) + { + if(internalRunningOperation.find(progressionList.at(index_for_loop).id)!=internalRunningOperation.cend()) + { + internalRunningOperation[progressionList.at(index_for_loop).id].generalData.size=progressionList.at(index_for_loop).total; + internalRunningOperation[progressionList.at(index_for_loop).id].currentReadProgression=progressionList.at(index_for_loop).currentRead; + internalRunningOperation[progressionList.at(index_for_loop).id].currentWriteProgression=progressionList.at(index_for_loop).currentWrite; + #ifdef ULTRACOPIER_PLUGIN_DEBUG + progressionList.erase(progressionList.cbegin()+index_for_loop); + index_for_loop--; + loop_size--; + #endif + } + index_for_loop++; + } +} + +TransferModel::currentTransfertItem TransferModel::getCurrentTransfertItem() const +{ + currentTransfertItem returnItem; + returnItem.progressBar_read=-1; + returnItem.progressBar_write=0; + returnItem.haveItem=startId.size()>0; + if(returnItem.haveItem) + { + if(internalRunningOperation.find(*startId.cbegin())==internalRunningOperation.cend()) + { + returnItem.haveItem=false; + return returnItem; + } + const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation.at(*startId.cbegin()); + returnItem.from=itemTransfer.generalData.sourceFullPath; + returnItem.to=itemTransfer.generalData.destinationFullPath; + returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size); + returnItem.id=itemTransfer.generalData.id; + switch(itemTransfer.actionType) + { + case Ultracopier::CustomOperation: + if(!itemTransfer.custom_with_progression) + returnItem.progressBar_read=-1; + else + { + if(itemTransfer.generalData.size>0) + { + returnItem.progressBar_read=((double)itemTransfer.currentReadProgression/itemTransfer.generalData.size)*65535; + returnItem.progressBar_write=((double)itemTransfer.currentWriteProgression/itemTransfer.generalData.size)*65535; + } + else + returnItem.progressBar_read=-1; + } + break; + case Ultracopier::Transfer: + if(itemTransfer.generalData.size>0) + { + returnItem.progressBar_read=((double)itemTransfer.currentReadProgression/itemTransfer.generalData.size)*65535; + returnItem.progressBar_write=((double)itemTransfer.currentWriteProgression/itemTransfer.generalData.size)*65535; + } + else + { + returnItem.progressBar_read=0; + returnItem.progressBar_write=0; + } + break; + //should never pass here + case Ultracopier::PostOperation: + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); + returnItem.progressBar_read=65535; + returnItem.progressBar_write=65535; + break; + //should pass here if in wait of new name for renaming + case Ultracopier::PreOperation: + //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); + returnItem.progressBar_read=0; + returnItem.progressBar_write=0; + break; + default: + returnItem.progressBar_read=0; + returnItem.progressBar_write=0; + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); + break; + } + } + else + { + returnItem.haveItem=stopId.size()>0; + if(returnItem.haveItem) + { + if(internalRunningOperation.find(*stopId.cbegin())==internalRunningOperation.cend()) + { + returnItem.haveItem=false; + return returnItem; + } + const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation.at(*stopId.cbegin()); + returnItem.from=itemTransfer.generalData.sourceFullPath; + returnItem.to=itemTransfer.generalData.destinationFullPath; + returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size); + returnItem.id=itemTransfer.generalData.id; + switch(itemTransfer.actionType) + { + case Ultracopier::CustomOperation: + if(!itemTransfer.custom_with_progression) + returnItem.progressBar_read=-1; + else + { + if(itemTransfer.generalData.size>0) + { + returnItem.progressBar_read=((double)itemTransfer.currentReadProgression/itemTransfer.generalData.size)*65535; + returnItem.progressBar_write=((double)itemTransfer.currentWriteProgression/itemTransfer.generalData.size)*65535; + } + else + returnItem.progressBar_read=-1; + } + break; + case Ultracopier::Transfer: + if(itemTransfer.generalData.size>0) + { + returnItem.progressBar_read=((double)itemTransfer.currentReadProgression/itemTransfer.generalData.size)*65535; + returnItem.progressBar_write=((double)itemTransfer.currentWriteProgression/itemTransfer.generalData.size)*65535; + } + else + { + returnItem.progressBar_read=0; + returnItem.progressBar_write=0; + } + break; + case Ultracopier::PostOperation: + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); + returnItem.progressBar_read=65535; + returnItem.progressBar_write=65535; + break; + //should never pass here + case Ultracopier::PreOperation: + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); + returnItem.progressBar_read=0; + returnItem.progressBar_write=0; + break; + default: + returnItem.progressBar_read=65535; + returnItem.progressBar_write=65535; + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); + break; + } + } + } + if(returnItem.haveItem && returnItem.progressBar_read!=-1 && returnItem.progressBar_write>returnItem.progressBar_read) + { + int tempVar=returnItem.progressBar_write; + returnItem.progressBar_write=returnItem.progressBar_read; + returnItem.progressBar_read=tempVar; + } + return returnItem; +} diff --git a/plugins/Themes/Oxygen2/TransferModel.h b/plugins/Themes/Oxygen2/TransferModel.h new file mode 100755 index 0000000..94ccdae --- /dev/null +++ b/plugins/Themes/Oxygen2/TransferModel.h @@ -0,0 +1,106 @@ +#ifndef TRANSFERMODEL_H +#define TRANSFERMODEL_H + +#include <QAbstractTableModel> +#include <QItemSelectionModel> +#include <QModelIndex> +#include <QVariant> +#include <QList> +#include <QSet> +#include <QIcon> +#include <QString> +#include <unordered_map> +#include <unordered_set> +#include <set> +#include <vector> + +#include "StructEnumDefinition.h" +#include "Oxygen2Environment.h" + +#include "../../../interface/FacilityInterface.h" +#include "fileTree.h" + +/// \brief model to store the transfer list +class TransferModel : public QAbstractTableModel +{ + Q_OBJECT +public: + /// \brief the transfer item displayed + struct TransfertItem + { + uint64_t id; + std::string source; + std::string size; + std::string destination; + }; + /// \brief the transfer item with progression + struct ItemOfCopyListWithMoreInformations + { + uint64_t currentReadProgression,currentWriteProgression; + Ultracopier::ItemOfCopyList generalData; + Ultracopier::ActionTypeCopyList actionType; + bool custom_with_progression; + }; + /// \brief returned first transfer item + struct currentTransfertItem + { + uint64_t id; + bool haveItem; + std::string from; + std::string to; + std::string current_file; + int progressBar_read,progressBar_write; + }; + + TransferModel(); + + virtual int columnCount(const QModelIndex& parent = QModelIndex()) const; + virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; + virtual int rowCount(const QModelIndex& parent = QModelIndex()) const; + virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole); + + std::vector<uint64_t> synchronizeItems(const std::vector<Ultracopier::ReturnActionOnCopyList>& returnActions); + void appendToTree(const std::string &path, const uint64_t &size); + Folder * appendToTreeR(Folder * const tree, const std::string &subPath,Folder * const oldTree=NULL); + void setFacilityEngine(FacilityInterface * facilityEngine); + + int search(const std::string &text,bool searchNext); + int searchPrev(const std::string &text); + + void setFileProgression(std::vector<Ultracopier::ProgressionItem> &progressionList); + + currentTransfertItem getCurrentTransfertItem() const; + + uint64_t firstId() const; + Folder * tree; + #ifdef ULTRACOPIER_PLUGIN_DEBUG + //check the integrity of tree + uint64_t checkIntegrityChildren(const Folder * const tree); + uint64_t checkIntegritySize(const Folder * const tree); + #endif +protected: + std::vector<TransfertItem> transfertItemList;///< To have a transfer list for the user + std::set<uint64_t> startId,stopId;///< To show what is started, what is stopped + std::unordered_map<uint64_t,ItemOfCopyListWithMoreInformations> internalRunningOperation;///< to have progression and stat +private: + int loop_size,index_for_loop; + int sub_loop_size,sub_index_for_loop; + int row,column; + FacilityInterface * facilityEngine; + std::string search_text; + /// \brief index from start the search, decresed by remove before it + int currentIndexSearch; + bool haveSearchItem; + uint64_t searchId; + static QIcon *start; + static QIcon *stop; + std::string treePath; +signals: + #ifdef ULTRACOPIER_PLUGIN_DEBUG + /// \brief To debug source + void debugInformation(const Ultracopier::DebugLevel &level,std::string fonction,std::string text,std::string file,int ligne) const; + #endif +}; + +#endif // TRANSFERMODEL_H diff --git a/plugins/Themes/Oxygen2/VerticalLabel.cpp b/plugins/Themes/Oxygen2/VerticalLabel.cpp new file mode 100755 index 0000000..bda9ab8 --- /dev/null +++ b/plugins/Themes/Oxygen2/VerticalLabel.cpp @@ -0,0 +1,44 @@ +#include "VerticalLabel.h" +#include <QPainter> +#include <QApplication> + +VerticalLabel::VerticalLabel(QWidget *parent) + : QLabel(parent) +{ + color=QApplication::palette().text().color(); +} + +VerticalLabel::VerticalLabel(const QString &text, QWidget *parent) + : QLabel(text, parent) +{ +} + +VerticalLabel::~VerticalLabel() +{ +} + +void VerticalLabel::paintEvent(QPaintEvent*) +{ + QPainter painter(this); + painter.setPen(color); + painter.setBrush(Qt::Dense1Pattern); + painter.rotate(90); + painter.drawText(0,0, text()); +} + +void VerticalLabel::setColor(QColor color) +{ + this->color=color; +} + +QSize VerticalLabel::minimumSizeHint() const +{ + QSize s = QLabel::minimumSizeHint(); + return QSize(s.height(), s.width()); +} + +QSize VerticalLabel::sizeHint() const +{ + QSize s = QLabel::sizeHint(); + return QSize(s.height(), s.width()); +} diff --git a/plugins/Themes/Oxygen2/VerticalLabel.h b/plugins/Themes/Oxygen2/VerticalLabel.h new file mode 100755 index 0000000..4c01012 --- /dev/null +++ b/plugins/Themes/Oxygen2/VerticalLabel.h @@ -0,0 +1,21 @@ +#ifndef VERTICALLABELCUSTOM_H +#define VERTICALLABELCUSTOM_H + +#include <QLabel> + +class VerticalLabel : public QLabel +{ +public: + explicit VerticalLabel(QWidget *parent=0); + explicit VerticalLabel(const QString &text, QWidget *parent=0); + ~VerticalLabel() override; + void setColor(QColor color); +protected: + void paintEvent(QPaintEvent*) override; + QSize sizeHint() const override; + QSize minimumSizeHint() const override; +private: + QColor color; +}; + +#endif // VERTICALLABELCUSTOM_H diff --git a/plugins/Themes/Oxygen2/chartarea.cpp b/plugins/Themes/Oxygen2/chartarea.cpp new file mode 100755 index 0000000..9378458 --- /dev/null +++ b/plugins/Themes/Oxygen2/chartarea.cpp @@ -0,0 +1,117 @@ +#include "chartarea.h" + +#include <QWidget> +#include <QPainter> +#include <QVector> +#include <QPointF> +#include <iostream> + +ChartArea::Widget::Widget(FacilityInterface * facilityEngine,QWidget *parent) + : QWidget(parent) +{ + this->facilityEngine=facilityEngine; + setSizePolicy(QSizePolicy::Preferred,QSizePolicy::MinimumExpanding); + setMinimumHeight(20); + setMinimumWidth(100); +} + +ChartArea::Widget::~Widget() +{ +} + +void ChartArea::Widget::invalidate() +{ +} + +void ChartArea::Widget::resizeEvent(QResizeEvent*) +{ +} + +void ChartArea::Widget::addValue(uint64_t value) +{ + m_values.push_back(value); + while(m_values.size()>64) + m_values.erase(m_values.begin()); + update(); +} + +void ChartArea::Widget::paintEvent(QPaintEvent*) +{ + QPainter painter; + painter.begin(this); + painter.setBrush(QColor(160,160,160,30)); + painter.drawRect(0,0,width()-1,height()-1); + painter.setRenderHint(QPainter::Antialiasing,true); + painter.setRenderHint(QPainter::SmoothPixmapTransform,true); + painter.setRenderHint(QPainter::HighQualityAntialiasing,true); + + while(m_values.size()<64) + m_values.insert(m_values.begin(),0); + std::vector<uint64_t> values=m_values; + QVector<QPointF> points; + { + uint64_t max=0; + unsigned int index=0; + while(index<values.size()) + { + if(max<values.at(index)) + max=values.at(index); + index++; + } + if(max<=0) + { + points << QPointF(0, height()-1); + points << QPointF(width()/2, height()-1); + points << QPointF(width()-1, height()-1); + } + else + { + index=0; + while(index<values.size()) + { + int w=width()-1; + int nw=w*index/(m_values.size()-1); + points << QPointF(nw, height()-values.at(index)*height()/max); + index++; + } + } + } + + painter.setPen(Qt::NoPen); + QLinearGradient gradient(0,height()*0.5,0,height()); + gradient.setColorAt(0, QColor(160,240,160,150)); + //gradient.setColorAt(0.2, QColor(100,220,100,200)); + gradient.setColorAt(1, QColor(160,240,160,0)); + painter.setBrush(gradient); + points.push_front(QPointF(0, height()-1)); + points.push_back(QPointF(width()-1, height()-1)); + painter.drawPolygon(QPolygonF(points)); + + if(width()*height()>250000) + painter.setPen(QPen(QColor(160,240,160), 3)); + else + painter.setPen(QPen(QColor(160,240,160), 2)); + painter.drawPolyline(QPolygonF(points)); + + + // todo: bounding rect + center flag + if(height()>30) + { + QFont font = painter.font(); + int heightTemp=height()/5; + if(heightTemp<14) + heightTemp=14; + font.setPixelSize(heightTemp); + painter.setFont(font); + + painter.setPen(QPen(QColor(140,140,140), 3)); + painter.drawText(0,0,width(),height(),Qt::AlignHCenter | Qt::AlignBottom, + QString::fromStdString( + facilityEngine->speedToString( + m_values.back() + ) + ) + ); + } + painter.end(); +} diff --git a/plugins/Themes/Oxygen2/chartarea.h b/plugins/Themes/Oxygen2/chartarea.h new file mode 100755 index 0000000..dbfa36c --- /dev/null +++ b/plugins/Themes/Oxygen2/chartarea.h @@ -0,0 +1,31 @@ +#ifndef ChartAreaWIDGET_H +#define ChartAreaWIDGET_H + +#include <QResizeEvent> +#include <QWidget> + +#include "../../../interface/FacilityInterface.h" + +namespace ChartArea +{ + +class Widget : public QWidget +{ + Q_OBJECT + +public: + explicit Widget(FacilityInterface * facilityEngine,QWidget* = nullptr); + ~Widget() override; + void addValue(uint64_t value); +public Q_SLOTS: + void invalidate(); +protected: + void paintEvent(QPaintEvent*) override; + void resizeEvent(QResizeEvent*) override; +private: + FacilityInterface * facilityEngine; + std::vector<uint64_t> m_values; +}; +} + +#endif diff --git a/plugins/Themes/Oxygen2/documentation.dox b/plugins/Themes/Oxygen2/documentation.dox new file mode 100755 index 0000000..d94ce0b --- /dev/null +++ b/plugins/Themes/Oxygen2/documentation.dox @@ -0,0 +1,31 @@ +/* -*- mode: C++ ; c-file-style: "stroustrup" -*- **/ + +/* + This file contains NO source code, just some documentation for doxygen to + parse. +*/ + +/*! + \mainpage Oxygen + + \section mainpage_overview Overview + + It's the default interface for Ultracopier.\n + More informations on <a href="http://ultracopier-wiki.first-world.info/">the wiki of ultracopier</a>. + + \section mainpage_platforms Platforms + + Ultracopier might be usable in all environments where you find Qt 5.\n + Ultracopier requires Qt 5.0 or newer. Tested on Qt 5.0. + + \section mainpage_downloads Downloads + + You can find the link on <a href="http://ultracopier.first-world.info/">Ultracopier</a> project page, via git, snapshot sources, ... + + \section license GPL Version 3 + The code source is under GPL3. The image is extacted from Oxygen icon pack of KDE4.\n + resources/export-transfer-list.png and resources/import-transfer-list.png done by png manipulation of KDE's oxygen icon pack (16x16/actions/format-indent-more.png + 16x16/actions/format-list-unordered.png), document-save.png -> all SystemTrayIcon/systray_* (color alteration).\n + From 16x16/actions/: list-add.png -> add.png and SystemTrayIcon/add.png, process-stop.png -> remove.png, document-save.png -> main.png and, arrow-down.png -> moveDown.png, arrow-up.png -> moveUp.png, system-shutdown.png -> cancel.png and SystemTrayIcon/exit.png, arrow-down-double.png -> putOnBottom.png, arrow-up-double.png -> putOnTop.png, media-skip-forward.png -> player_end.png, media-playback-pause.png -> player_pause.png, media-playback-start.png -> player_play.png, document-preview.png -> search.png, help-about.png -> SystemTrayIcon/informations.png \n + And 16x16/categories/applications-development.png -> SystemTrayIcon/options.png + +*/ diff --git a/plugins/Themes/Oxygen2/fileTree.cpp b/plugins/Themes/Oxygen2/fileTree.cpp new file mode 100755 index 0000000..501657c --- /dev/null +++ b/plugins/Themes/Oxygen2/fileTree.cpp @@ -0,0 +1,149 @@ +/*********************************************************************** +* Copyright 2003-2004 Max Howell <max.howell@methylblue.com> +* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org> +* Copyright 2017 Harald Sitter <sitter@kde.org> +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +***********************************************************************/ + +#include "fileTree.h" + +FacilityInterface *File::facilityEngine=NULL; + +#include <QDir> +#include <QUrl> + +QString File::displayName() const { + const QString decodedName = QString::fromStdString(m_name); + return url().isLocalFile() ? QDir::toNativeSeparators(decodedName) : decodedName; +} + +QString File::displayPath(const Folder *root) const +{ + // Use QUrl to sanitize the path for display and then run it through + // QDir to make sure we use native path separators. + const QUrl url = this->url(root); + const QString cleanPath = url.toDisplayString(QUrl::PreferLocalFile | QUrl::NormalizePathSegments); + return url.isLocalFile() ? QDir::toNativeSeparators(cleanPath) : cleanPath; +} + +QUrl File::url(const Folder *root) const +{ + QString path; + + if (root == this) + root = nullptr; //prevent returning empty string when there is something we could return + + for (const Folder *d = (Folder*)this; d != root && d; d = d->parent()) { + const QString &name=QString::fromStdString(d->name()); + if(!name.isEmpty() && !path.isEmpty()) + path.prepend(QDir::separator()); + path.prepend(name); + } + + return path; +} + +void Folder::append(File *p) +{ + if(p->isFolder()) + { + folders[p->name()]=static_cast<Folder *>(p); + Folder *d = this; + while(d != nullptr) { + d->m_children+=static_cast<Folder *>(p)->children(); + d->m_size += p->size(); + d=d->m_parent; + } + } + else + { + onlyFiles.push_back(p); + Folder *d = this; + while(d != nullptr) { + /*if(p->isFolder()) + d->m_children+=static_cast<Folder *>(p)->children(); + else*/ + d->m_children++; + d->m_size += p->size(); + d=d->m_parent; + } + } +} + +///appends a Folder +void Folder::append(Folder *d, const std::string &name) +{ + if (!name.empty()) + m_name=name; + + //do into append() m_children += d->children(); //doesn't include the dir itself + d->m_parent = this; + append((File*)d); //will add 1 to filecount for the dir itself +} + +void Folder::append(Folder *d) +{ + //do into append() m_children += d->children(); //doesn't include the dir itself + d->m_parent = this; + append((File*)d); //will add 1 to filecount for the dir itself +} + +///appends a File +void Folder::append(const std::string &name, uint64_t size) +{ + append(new File(name, size, this)); +} + +/// removes a file +void Folder::remove(const File *f) { + bool found=false; + uint64_t sizeToRemove=0; + uint64_t childToRemove=0; + for(const auto& n : folders) + { + Folder * folder=n.second; + if(f==folder) + { + sizeToRemove+=f->size(); + childToRemove+=static_cast<const Folder *>(f)->children(); + found=true; + break; + } + } + if(!found) + { + for (unsigned int i = 0; i < onlyFiles.size();) + { + if(onlyFiles.at(i)==f) + { + delete f; + sizeToRemove+=f->size(); + childToRemove++; + break; + } + else + i++; + } + } + Folder *d = this; + while(d != nullptr) { + d->m_size -= sizeToRemove; + d->m_children-=childToRemove; + d=d->m_parent; + } +} diff --git a/plugins/Themes/Oxygen2/fileTree.h b/plugins/Themes/Oxygen2/fileTree.h new file mode 100755 index 0000000..e0ea1c7 --- /dev/null +++ b/plugins/Themes/Oxygen2/fileTree.h @@ -0,0 +1,133 @@ +/*********************************************************************** +* Copyright 2003-2004 Max Howell <max.howell@methylblue.com> +* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org> +* Copyright 2017 Harald Sitter <sitter@kde.org> +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +***********************************************************************/ + +#ifndef FILETREE_H +#define FILETREE_H + +#include <QByteArray> //qstrdup +#include <QFile> //decodeName() +#include <QLocale> +#include <unordered_map> +#include <string> + +#include <stdlib.h> +#include "../../../interface/FacilityInterface.h" + +class Folder; + +class File +{ +public: + friend class Folder; + static FacilityInterface *facilityEngine; + +public: + File(const std::string &name, uint64_t size) : m_parent(nullptr), m_name(name), m_size(size) {} + File(const std::string &name, uint64_t size, Folder * parent) : m_parent(parent), m_name(name), m_size(size) {} + virtual ~File() { + } + + Folder *parent() const { + return m_parent; + } + + /** Do not use for user visible strings. Use name instead. */ + const std::string name() const { + return m_name; + } + void setName(const std::string &name) { + m_name=name; + } + /** Decoded name. Use when you need a QString. */ + QString decodedName() const { + return QString::fromStdString(m_name); + } + /** + * Human readable name (including native separators where applicable). + * Only use for display. + */ + QString displayName() const; + + uint64_t size() const { + return m_size; + } + + virtual bool isFolder() const { + return false; + } + + /** + * Human readable path for display (including native separators where applicable. + * Only use for display. + */ + QString displayPath(const Folder * = nullptr) const; + QString humanReadableSize() const { + return QString::fromStdString(facilityEngine->sizeToString(m_size)); + } + + /** Builds a complete QUrl by walking up to root. */ + QUrl url(const Folder *root = nullptr) const; + +protected: + File(const char *name, uint64_t size, Folder *parent) : m_parent(parent), m_name(qstrdup(name)), m_size(size) {} + + Folder *m_parent; //0 if this is treeRoot + std::string m_name;//speed boost with std::string in compare with char * due to string size defined without read all + uint64_t m_size; //in Bytes + +private: + File(const File&); + void operator=(const File&); +}; + + +class Folder : public File +{ +public: + Folder(const std::string &name) : File(name, 0), m_children(0) {} //DON'T pass the full path! + + uint children() const { + return m_children; + } + bool isFolder() const override { + return true; + } + + ///appends a Folder + void append(Folder *d, const std::string &name); + void append(Folder *d); + ///appends a File + void append(const std::string &name, uint64_t size); + /// removes a file + void remove(const File *f); + std::unordered_map<std::string,Folder *> folders; + std::vector<File *> onlyFiles; +private: + void append(File *p); + + uint m_children; +private: + Folder(const Folder&); //undefined + void operator=(const Folder&); //undefined +}; + +#endif diff --git a/plugins/Themes/Oxygen2/informations.xml b/plugins/Themes/Oxygen2/informations.xml new file mode 100755 index 0000000..d4ada14 --- /dev/null +++ b/plugins/Themes/Oxygen2/informations.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<package> + <title xml:lang="en"><![CDATA[Oxygen2 style for Ultracopier]]></title><!-- english is required --> + <title xml:lang="fr"><![CDATA[Style oxygen2 pour Ultracopier]]></title> + <!-- What kind of plugin this is --> + <category>Themes</category> + <!-- Who wrote this plugin --> + <author><![CDATA[BRULE Herman, alpha_one_x86 (alpha_one_x86@first-world.info)]]></author> + <!-- URL of page or site for this plugin (may provide additional information, bug reports, feature requests). --> + <website xml:lang="en"><![CDATA[http://ultracopier.first-world.info/]]></website><!-- not required --> + <website xml:lang="fr"><![CDATA[http://ultracopier-fr.first-world.info/]]></website><!-- not required --> + <!-- the date-time format should be in timestamps format --> + <pubDate>1287496800</pubDate> + <!-- the architecture code of this plugin, found PlatformMacro.h into ultracopier source --> + <architecture>windows-x86</architecture> + <!-- Detailed description --> + <description xml:lang="en"><![CDATA[Oxygen2 style for Ultracopier]]></description> + <description xml:lang="fr"><![CDATA[Style oxygen2 pour Ultracopier]]></description> + <!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number --> + <version>2.2.4.4</version> + <!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. --> + <name>Oxygen2</name> + <!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. --> + <dependencies><![CDATA[ + ]]></dependencies> +</package> diff --git a/plugins/Themes/Oxygen2/interface.cpp b/plugins/Themes/Oxygen2/interface.cpp new file mode 100755 index 0000000..13ec028 --- /dev/null +++ b/plugins/Themes/Oxygen2/interface.cpp @@ -0,0 +1,1995 @@ +/** \file interface.cpp +\brief Define the interface core +\author alpha_one_x86 */ + +#include <QMessageBox> +#include <QMimeData> +#include <QScrollArea> +#include <QColorDialog> +#include <QRect> +#include <QPainter> +#include <QDebug> +#include <cmath> +#include <chrono> +#include <ctime> +#ifdef Q_OS_WIN32 +#include <windows.h> +#endif + +#define ULTRACOPIERO2_MAXREMAININGTIMECOL 10 +#define ULTRACOPIERO2_MAXVALUESPEEDSTORED 5 + +#include "interface.h" +#include "ui_interface.h" +#include "ThemesFactory.h" +#include "ProgressBarDark.h" + +QIcon Themes::player_play; +QIcon Themes::player_pause; +QIcon Themes::tempExitIcon; +QIcon Themes::editDelete; +QIcon Themes::skinIcon; +QIcon Themes::editFind; +QIcon Themes::documentOpen; +QIcon Themes::documentSave; +QIcon Themes::listAdd; +bool Themes::iconLoaded=false; + +Themes::Themes(const bool &alwaysOnTop, + const bool &showProgressionInTheTitle, + const QColor &progressColorWrite, + const QColor &progressColorRead, + const QColor &progressColorRemaining, + const bool &showDualProgression, + const quint8 &comboBox_copyEnd, + const bool &speedWithProgressBar, + const qint32 ¤tSpeed, + const bool &checkBoxShowSpeed, + FacilityInterface * facilityEngine, + const bool &moreButtonPushed, + const bool &minimizeToSystray, + const bool &startMinimized, + const quint8 &position, + const bool &dark) : + duration(0), + durationStarted(false), + ui(new Ui::interfaceCopy()), + uiOptions(new Ui::themesOptions()), + currentFile(0), + totalFile(0), + currentSize(0), + totalSize(0), + getOldProgression(0), + sysTrayIcon(NULL), + menu(NULL), + action(Ultracopier::EngineActionInProgress::Idle), + currentSpeed(0), + storeIsInPause(false), + modeIsForced(false), + type(Ultracopier::CopyType::FileAndFolder), + mode(Ultracopier::CopyMode::Copy), + haveStarted(false), + haveError(false) + #ifdef Q_OS_WIN32 + ,winTaskbarProgress(this) + #endif +{ + darkUi=dark; + this->facilityEngine=facilityEngine; + File::facilityEngine=facilityEngine; + ui->setupUi(this); + uiOptions->setupUi(ui->optionsTab); + + m_havePause=false; + currentFile = 0; + totalFile = 0; + currentSize = 0; + totalSize = 0; + getOldProgression = 200; + haveError = false; + stat = status_never_started; + modeIsForced = false; + haveStarted = false; + storeIsInPause = false; + durationStarted = false; + if(startMinimized) + this->showMinimized(); + + this->progressColorWrite = progressColorWrite; + this->progressColorRead = progressColorRead; + this->progressColorRemaining= progressColorRemaining; + this->currentSpeed = currentSpeed; + uiOptions->showProgressionInTheTitle->setChecked(showProgressionInTheTitle); + uiOptions->speedWithProgressBar->setChecked(speedWithProgressBar); + uiOptions->showDualProgression->setChecked(showDualProgression); + uiOptions->startMinimized->setEnabled(false); + uiOptions->alwaysOnTop->setChecked(alwaysOnTop); + uiOptions->minimizeToSystray->setChecked(minimizeToSystray); + //uiOptions->setupUi(ui->tabWidget->widget(ui->tabWidget->count()-1)); + uiOptions->labelStartWithMoreButtonPushed->setVisible(false); + uiOptions->checkBoxStartWithMoreButtonPushed->setVisible(false); + uiOptions->labelSavePosition->setVisible(false); + uiOptions->savePosition->setVisible(false); + uiOptions->savePosition->setCurrentIndex(position); + uiOptions->label_Slider_speed->setVisible(false); + uiOptions->SliderSpeed->setVisible(false); + uiOptions->label_SpeedMaxValue->setVisible(false); + uiOptions->comboBox_copyEnd->setCurrentIndex(comboBox_copyEnd); + ui->progressBar->setValue(0); + ui->progressBar_2->setValue(0); + ui->progressBar_3->setValue(0); + ui->progressBar_4->setValue(0); + ui->progressBar_5->setValue(0); + ui->progressBar_6->setValue(0); + speedWithProgressBar_toggled(speedWithProgressBar); + QPixmap pixmap(75,20); + pixmap.fill(progressColorWrite); + uiOptions->progressColorWrite->setIcon(pixmap); + pixmap.fill(progressColorRead); + uiOptions->progressColorRead->setIcon(pixmap); + pixmap.fill(progressColorRemaining); + uiOptions->progressColorRemaining->setIcon(pixmap); + ui->labelTimeRemaining->setText(QString()); + + transferModel.setFacilityEngine(facilityEngine);//need be before ui->TransferList->setModel(&transferModel); due to call of TransferModel::headerData() + ui->TransferList->setModel(&transferModel); + ui->tabWidget->setCurrentIndex(0); + uiOptions->toolBox->setCurrentIndex(0); + uiOptions->checkBoxShowSpeed->setChecked(checkBoxShowSpeed); + menu=new QMenu(this); + ui->add->setMenu(menu); + + //connect the options + checkBoxShowSpeed_toggled(uiOptions->checkBoxShowSpeed->isChecked()); + connect(uiOptions->checkBoxShowSpeed,&QCheckBox::stateChanged,this,&Themes::checkBoxShowSpeed_toggled); + connect(uiOptions->speedWithProgressBar,&QCheckBox::stateChanged,this,&Themes::speedWithProgressBar_toggled); + connect(uiOptions->showProgressionInTheTitle,&QCheckBox::stateChanged,this,&Themes::updateTitle); + connect(uiOptions->showDualProgression,&QCheckBox::stateChanged,this,&Themes::showDualProgression_toggled); + connect(uiOptions->progressColorWrite,&QAbstractButton::clicked,this,&Themes::progressColorWrite_clicked); + connect(uiOptions->progressColorRead, &QAbstractButton::clicked,this,&Themes::progressColorRead_clicked); + connect(uiOptions->progressColorRemaining,&QAbstractButton::clicked,this,&Themes::progressColorRemaining_clicked); + connect(uiOptions->alwaysOnTop,&QAbstractButton::clicked,this,&Themes::alwaysOnTop_clickedSlot); + + connect(uiOptions->limitSpeed, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &Themes::uiUpdateSpeed); + connect(uiOptions->checkBox_limitSpeed,&QAbstractButton::toggled, this, &Themes::uiUpdateSpeed); + + connect(ui->actionAddFile,&QAction::triggered,this,&Themes::forcedModeAddFile); + connect(ui->actionAddFileToCopy,&QAction::triggered,this,&Themes::forcedModeAddFileToCopy); + connect(ui->actionAddFileToMove,&QAction::triggered,this,&Themes::forcedModeAddFileToMove); + connect(ui->actionAddFolderToCopy,&QAction::triggered,this,&Themes::forcedModeAddFolderToCopy); + connect(ui->actionAddFolderToMove,&QAction::triggered,this,&Themes::forcedModeAddFolderToMove); + connect(ui->actionAddFolder,&QAction::triggered,this,&Themes::forcedModeAddFolder); + connect(ui->exportErrorToTransferList,&QToolButton::triggered,this,&Themes::exportErrorIntoTransferList); + + ui->overall->hide(); + + //setup the search part + closeTheSearchBox(); + TimerForSearch = new QTimer(this); + TimerForSearch->setInterval(500); + TimerForSearch->setSingleShot(true); + searchShortcut = new QShortcut(QKeySequence(QKeySequence::Find),this); + searchShortcut2 = new QShortcut(QKeySequence(QKeySequence::FindNext),this); + searchShortcut3 = new QShortcut(QKeySequence(Qt::Key_Escape),this); + + //connect the search part + connect(TimerForSearch, &QTimer::timeout, this, &Themes::hilightTheSearchSlot); + connect(searchShortcut, &QShortcut::activated, this, &Themes::searchBoxShortcut); + connect(searchShortcut2, &QShortcut::activated, this, &Themes::on_pushButtonSearchNext_clicked); + connect(ui->pushButtonCloseSearch, &QPushButton::clicked, this, &Themes::closeTheSearchBox); + connect(searchShortcut3, &QShortcut::activated, this, &Themes::closeTheSearchBox); + + //remaining time + { + int index=0; + while(index<ULTRACOPIERO2_MAXREMAININGTIMECOL) + { + RemainingTimeLogarithmicColumn newEntry; + remainingTimeLogarithmicValue.push_back(newEntry); + index++; + } + } + + //reload directly untranslatable text + newLanguageLoaded(); + + //unpush the more button + ui->moreButton->setChecked(moreButtonPushed); + on_moreButton_toggled(moreButtonPushed); + + /// \note important for drag and drop, \see dropEvent() + setAcceptDrops(true); + + const QString themePath=":/Themes/Oxygen2/"; + + // try set the OS icon + if(!iconLoaded) + { + iconLoaded=true; + tempExitIcon=QIcon::fromTheme(QStringLiteral("application-exit")); + editDelete=QIcon::fromTheme(QStringLiteral("edit-delete")); + player_pause=QIcon::fromTheme(QStringLiteral("media-playback-pause")); + if(player_pause.isNull()) + player_pause=QIcon(themePath+QStringLiteral("resources/player_pause.png")); + player_play=QIcon::fromTheme(QStringLiteral("media-playback-play")); + if(player_play.isNull()) + player_play=QIcon(themePath+QStringLiteral("resources/player_play.png")); + skinIcon=QIcon::fromTheme(QStringLiteral("media-skip-forward")); + editFind=QIcon::fromTheme(QStringLiteral("edit-find")); + documentOpen=QIcon::fromTheme(QStringLiteral("document-open")); + documentSave=QIcon::fromTheme(QStringLiteral("document-save")); + listAdd=QIcon::fromTheme(QStringLiteral("list-add")); + } + if(!tempExitIcon.isNull()) + { + ui->cancelButton->setIcon(tempExitIcon); + ui->pushButtonCloseSearch->setIcon(tempExitIcon); + ui->shutdown->setIcon(tempExitIcon); + } + if(!editDelete.isNull()) + ui->del->setIcon(editDelete); + if(!player_pause.isNull()) + ui->pauseButton->setIcon(player_pause); + if(!skinIcon.isNull()) + ui->skipButton->setIcon(skinIcon); + if(!editFind.isNull()) + ui->searchButton->setIcon(editFind); + if(!documentOpen.isNull()) + ui->importTransferList->setIcon(documentOpen); + if(!documentSave.isNull()) + { + ui->exportTransferList->setIcon(documentSave); + ui->exportErrorToTransferList->setIcon(documentSave); + } + if(!listAdd.isNull()) + { + ui->add->setIcon(listAdd); + ui->actionAddFile->setIcon(listAdd); + ui->actionAddFileToCopy->setIcon(listAdd); + ui->actionAddFileToMove->setIcon(listAdd); + ui->actionAddFolder->setIcon(listAdd); + ui->actionAddFolderToCopy->setIcon(listAdd); + ui->actionAddFolderToMove->setIcon(listAdd); + } + #ifdef Q_OS_WIN32 + pixmapTop=QPixmap(themePath+QStringLiteral("resources/SystemTrayIcon/systray_Uncaught_Windows.png")); + pixmapBottom=QPixmap(themePath+QStringLiteral("resources/SystemTrayIcon/systray_Caught_Windows.png")); + #else + pixmapTop=QPixmap(themePath+QStringLiteral("resources/SystemTrayIcon/systray_Uncaught_Unix.png")); + pixmapBottom=QPixmap(themePath+QStringLiteral("resources/SystemTrayIcon/systray_Caught_Unix.png")); + #endif + + shutdown=facilityEngine->haveFunctionality("shutdown"); + ui->shutdown->setVisible(shutdown); + radial=new RadialMap::Widget(dark,this); + ui->verticalLayouMiddle->addWidget(radial); + + chartarea=new ChartArea::Widget(facilityEngine,this); + ui->verticalLayoutRight->insertWidget(0,chartarea); + + selectionModel=ui->TransferList->selectionModel(); + + #ifdef ULTRACOPIER_PLUGIN_DEBUG + connect(&transferModel,&TransferModel::debugInformation,this,&Themes::debugInformation); + #endif + + updateSpeed(); + alwaysOnTop_clicked(false); + /*#ifdef Q_OS_WIN32 + uiOptions->labelAlwaysOnTop->hide(); + uiOptions->alwaysOnTop->hide(); + #endif*/ + QString ultimateUrl; + if(facilityEngine->isUltimate()) + ui->ad_ultimate->hide(); + else + { + ultimateUrl=QString::fromStdString(facilityEngine->ultimateUrl()); + if(ultimateUrl.isEmpty()) + ui->ad_ultimate->hide(); + else + ui->ad_ultimate->setText( + QStringLiteral("<a href=\"%1\">%2</a>").arg(ultimateUrl).arg(tr("Buy the Ultimate version to fund development"))+", " + +QStringLiteral("Follow us: ")+QStringLiteral("<a href=\"%1\"><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAAAe0lEQVR4AWOAAPesxQQRUBlCNZEIu+qIjSfPvvn45c/f//////17vLxrJrIsugan3i3HoUq/fPj46c27gwWts/FpsF1x5O2/f////z5+th0uiFNDyb3n/1HBx0+LAwsWUaIB00krj7wHqfx94HgbXJBUDaMaSE58JCdvAAioiiB5mraWAAAAAElFTkSuQmCC\"/></a>").arg("https://www.facebook.com/Ultracopier/") + ); + } + + sysTrayIcon = new QSystemTrayIcon(this); + connect(sysTrayIcon,&QSystemTrayIcon::activated,this,&Themes::catchAction); + #ifdef Q_OS_WIN32 + winTaskbarProgress.show(); + #endif + + verticalLabel=new VerticalLabel(); + verticalLabel->setText(QString::fromStdString(facilityEngine->speedToString(50*1000*1000))); + ui->verticalLayoutVL->insertWidget(0,verticalLabel); + + if(darkUi) + { + if(ultimateUrl.isEmpty()) + ui->ad_ultimate->hide(); + else + ui->ad_ultimate->setText( + QStringLiteral("<a href=\"%1\"><span style=\"color:#cdf;\">%2</span></a>").arg(ultimateUrl).arg(tr("Buy the Ultimate version to fund development"))+", " + +QStringLiteral("<span style=\"color:#fff;\">Follow us:</span> ")+QStringLiteral("<a href=\"%1\"><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAAAe0lEQVR4AWOAAPesxQQRUBlCNZEIu+qIjSfPvvn45c/f//////17vLxrJrIsugan3i3HoUq/fPj46c27gwWts/FpsF1x5O2/f////z5+th0uiFNDyb3n/1HBx0+LAwsWUaIB00krj7wHqfx94HgbXJBUDaMaSE58JCdvAAioiiB5mraWAAAAAElFTkSuQmCC\"/></a>").arg("https://www.facebook.com/Ultracopier/") + ); + //ui->frame->setStyleSheet("#frame{background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgb(70, 70, 70), stop:1 rgb(40, 40, 40));}"); + ui->labelTimeRemaining->setStyleSheet("color:#fff;"); + ui->labelSPStart->setStyleSheet("color:#aaa;"); + ui->labelSPStop->setStyleSheet("color:#aaa;"); + ui->from_label->setStyleSheet("color:#aaa;"); + ui->current_file->setStyleSheet("color:#fff;"); + ui->from->setStyleSheet("color:#fff;"); + verticalLabel->setColor(QColor(160,160,160)); + + //ui->ad_ultimate->setStyleSheet("color:#fff;background-color:rgb(50, 50, 50);"); + + QString labelTimeRemaining; + labelTimeRemaining+="<html><body style=\"white-space:nowrap;\"><small style=\"color:#aaa\">"; + labelTimeRemaining+=QString::fromStdString(facilityEngine->translateText("Remaining:")); + labelTimeRemaining+="</small>"; + labelTimeRemaining+=QStringLiteral(" <b>"); + labelTimeRemaining+=QStringLiteral("∞"); + labelTimeRemaining+=QStringLiteral("</b></body></html>"); + ui->labelTimeRemaining->setText(labelTimeRemaining); + + ui->frameS->setStyleSheet("#frameS{border: 1px solid #b0c0f0;} QProgressBar{background-color: rgba(160,180,240,100);border: 0 solid grey; } QProgressBar::chunk {background-color: rgba(160,180,240,200);}"); + + int tempIndex=ui->verticalLayoutLeft->indexOf(ui->progressBar_all); + progressBar_all=new ProgressBarDark(ui->frameLeft); + progressBar_all->setMaximum(ui->progressBar_all->maximum()); + progressBar_all->setValue(ui->progressBar_all->value()); + ui->progressBar_all->hide(); + ui->verticalLayoutLeft->insertWidget(tempIndex,progressBar_all); + + tempIndex=ui->verticalLayoutRight->indexOf(ui->progressBar_file); + progressBar_file=new ProgressBarDark(ui->frameRight); + progressBar_file->setMaximum(ui->progressBar_file->maximum()); + progressBar_file->setValue(ui->progressBar_file->value()); + ui->progressBar_file->hide(); + ui->verticalLayoutRight->insertWidget(tempIndex,progressBar_file); + + tempIndex=ui->horizontalLayoutLeft->indexOf(ui->moreButton); + moreButton=new DarkButton(ui->frameLeft); + moreButton->setText(ui->moreButton->text()); + moreButton->setCheckable(ui->moreButton->isCheckable()); + moreButton->setMinimumWidth(60); + ui->moreButton->hide(); + ui->horizontalLayoutLeft->insertWidget(tempIndex,moreButton); + { + QIcon i; + i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/darkmoveUp.png"), QSize(), QIcon::Normal, QIcon::Off); + i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/darkmoveDown.png"), QSize(), QIcon::Normal, QIcon::On); + moreButton->setIcon(i); + } + connect(moreButton,&QPushButton::toggled,ui->moreButton,&QPushButton::toggled); + + tempIndex=ui->horizontalLayoutLeft->indexOf(ui->pauseButton); + pauseButton=new DarkButton(ui->frameLeft); + pauseButton->setText(ui->pauseButton->text()); + pauseButton->setCheckable(ui->pauseButton->isCheckable()); + pauseButton->setMinimumWidth(60); + ui->pauseButton->hide(); + ui->horizontalLayoutLeft->insertWidget(tempIndex,pauseButton); + { + QIcon i; + i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/darkplayer_pause.png"), QSize(), QIcon::Normal, QIcon::Off); + i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/darkplayer_play.png"), QSize(), QIcon::Normal, QIcon::On); + pauseButton->setIcon(i); + } + connect(pauseButton,&QPushButton::toggled,ui->pauseButton,&QPushButton::toggled); + connect(pauseButton,&QPushButton::clicked,ui->pauseButton,&QPushButton::clicked); + + tempIndex=ui->horizontalLayoutRight->indexOf(ui->skipButton); + skipButton=new DarkButton(ui->frameLeft); + skipButton->setText(ui->skipButton->text()); + skipButton->setCheckable(ui->skipButton->isCheckable()); + skipButton->setMinimumWidth(60); + ui->skipButton->hide(); + ui->horizontalLayoutRight->insertWidget(tempIndex,skipButton); + { + QIcon i; + i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/darkplayer_end.png")); + skipButton->setIcon(i); + } + connect(skipButton,&QPushButton::toggled,ui->skipButton,&QPushButton::toggled); + connect(skipButton,&QPushButton::clicked,ui->skipButton,&QPushButton::clicked); + + tempIndex=ui->horizontalLayoutRight->indexOf(ui->cancelButton); + cancelButton=new DarkButton(ui->frameLeft); + cancelButton->setText(ui->cancelButton->text()); + cancelButton->setCheckable(ui->cancelButton->isCheckable()); + cancelButton->setMinimumWidth(60); + ui->cancelButton->hide(); + ui->horizontalLayoutRight->insertWidget(tempIndex,cancelButton); + { + QIcon i; + i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/cancelDarkE.png")); + cancelButton->setIcon(i); + } + connect(cancelButton,&QPushButton::toggled,ui->cancelButton,&QPushButton::toggled); + connect(cancelButton,&QPushButton::clicked,ui->cancelButton,&QPushButton::clicked); + + #if defined(__EMSCRIPTEN__) && defined(ULTRACOPIER_LITTLE_RANDOM) + cancelButton->setEnabled(false); + #endif + } + else + { + progressBar_all=nullptr; + progressBar_file=nullptr; + + moreButton=nullptr; + pauseButton=nullptr; + skipButton=nullptr; + cancelButton=nullptr; + #if defined(__EMSCRIPTEN__) && defined(ULTRACOPIER_LITTLE_RANDOM) + ui->cancelButton->setEnabled(false); + #endif + } + isInPause(false); + showDualProgression_toggled(showDualProgression); + + show(); +} + +Themes::~Themes() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + //disconnect(ui->actionAddFile); + //disconnect(ui->actionAddFolder); + if(progressBar_all!=nullptr) + delete progressBar_all; + if(progressBar_file!=nullptr) + delete progressBar_file; + if(moreButton!=nullptr) + delete moreButton; + if(pauseButton!=nullptr) + delete pauseButton; + if(skipButton!=nullptr) + delete skipButton; + if(cancelButton!=nullptr) + delete cancelButton; + delete radial; + delete selectionModel; + delete menu; + delete sysTrayIcon; +} + +QWidget * Themes::getOptionsEngineWidget() +{ + return &optionEngineWidget; +} + +void Themes::getOptionsEngineEnabled(const bool &isEnabled) +{ + if(isEnabled) + { + QScrollArea *scrollArea=new QScrollArea(ui->tabWidget); + scrollArea->setWidgetResizable(true); + scrollArea->setWidget(&optionEngineWidget); + ui->tabWidget->addTab(scrollArea,QString::fromStdString(facilityEngine->translateText("Copy engine"))); + } +} + +void Themes::closeEvent(QCloseEvent *event) +{ + event->ignore(); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + this->hide(); + if(uiOptions->minimizeToSystray->isChecked()) + { + updateSysTrayIcon(); + sysTrayIcon->show(); + } + else + emit cancel(); +} + +void Themes::updateSysTrayIcon() +{ + if(totalSize==0) + { + sysTrayIcon->setIcon(dynaIcon(0,"-")); + return; + } + quint64 currentNew=currentSize*100; + //update systray icon + quint16 getVarProgression=currentNew/totalSize; + if(getOldProgression!=getVarProgression) + { + getOldProgression=getVarProgression; + sysTrayIcon->setIcon(dynaIcon(getVarProgression)); + } +} + +void Themes::updateOverallInformation() +{ + if(uiOptions->showProgressionInTheTitle->isChecked()) + updateTitle(); + ui->overall->setText(tr("File %1/%2, size: %3/%4") + .arg(currentFile) + .arg(totalFile) + .arg(QString::fromStdString(facilityEngine->sizeToString(currentSize))) + .arg(QString::fromStdString(facilityEngine->sizeToString(totalSize))) + ); +} + +void Themes::actionInProgess(const Ultracopier::EngineActionInProgress &action) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"start: "+std::to_string(action)); + this->action=action; + switch(action) + { + case Ultracopier::Copying: + case Ultracopier::CopyingAndListing: + if(darkUi) + { + progressBar_all->setMaximum(65535); + progressBar_all->setMinimum(0); + } + else + { + ui->progressBar_all->setMaximum(65535); + ui->progressBar_all->setMinimum(0); + } + #ifdef Q_OS_WIN32 + winTaskbarProgress.setMaximum(65535); + winTaskbarProgress.setMinimum(0); + #endif + break; + case Ultracopier::Listing: + if(darkUi) + { + progressBar_all->setMaximum(0); + progressBar_all->setMinimum(0); + } + else + { + ui->progressBar_all->setMaximum(0); + ui->progressBar_all->setMinimum(0); + } + #ifdef Q_OS_WIN32 + winTaskbarProgress.setMaximum(0); + winTaskbarProgress.setMinimum(0); + #endif + break; + case Ultracopier::Idle: + #ifdef Q_OS_WIN32 + winTaskbarProgress.setMaximum(65535); + winTaskbarProgress.setMinimum(0); + #endif + if(darkUi) + { + progressBar_all->setMaximum(65535); + progressBar_all->setMinimum(0); + } + else + { + ui->progressBar_all->setMaximum(65535); + ui->progressBar_all->setMinimum(0); + } + if(haveStarted && transferModel.rowCount()<=0) + { + if(shutdown && ui->shutdown->isChecked()) + { + facilityEngine->callFunctionality("shutdown"); + return; + } + switch(uiOptions->comboBox_copyEnd->currentIndex()) + { + case 2: + emit cancel(); + break; + case 0: + if(!haveError) + emit cancel(); + else + ui->tabWidget->setCurrentWidget(ui->tab_error); + break; + default: + break; + } + stat = status_stopped; + if(durationStarted) + { + Ultracopier::TimeDecomposition time=facilityEngine->secondsToTimeDecomposition( + (std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count()- + duration) + /1000); + ui->labelTimeRemaining->setText(QStringLiteral("<html><body style=\"white-space:nowrap;\">")+ + QString::fromStdString(facilityEngine->translateText("Completed in %1")).arg( + QString::number(time.hour)+QStringLiteral(":")+ + QString::number(time.minute).rightJustified(2,'0')+ + QStringLiteral(":")+ + QString::number(time.second).rightJustified(2,'0') + )+QStringLiteral("</body></html>")); + } + } + break; + default: + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"Very wrong switch case!"); + break; + } + switch(action) + { + case Ultracopier::Copying: + case Ultracopier::CopyingAndListing: + if(m_havePause) + ui->pauseButton->setEnabled(true); + if(!durationStarted) + { + duration=std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(); + durationStarted=true; + } + haveStarted=true; + ui->cancelButton->setText(QString::fromStdString(facilityEngine->translateText("Quit"))); + updatePause(); + break; + case Ultracopier::Listing: + if(m_havePause) + ui->pauseButton->setEnabled(false); + haveStarted=true;//to close if skip at root folder collision + break; + case Ultracopier::Idle: + if(m_havePause) + ui->pauseButton->setEnabled(false); + break; + default: + break; + } +} + +void Themes::newFolderListing(const std::string &path) +{ + QString newPath=QString::fromStdString(path); + if(newPath.size()>(64+3)) + newPath=newPath.mid(0,32)+QStringLiteral("...")+newPath.mid(newPath.size()-32,32); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + if(action==Ultracopier::Listing) + ui->from->setText(newPath); +} + +void Themes::detectedSpeed(const uint64_t &speed)//in byte per seconds +{ + /*if(uiOptions->speedWithProgressBar->isChecked()) + { + quint64 tempSpeed=speed; + if(tempSpeed>999999999) + tempSpeed=999999999; + if(tempSpeed>(quint64)ui->progressBarCurrentSpeed->maximum()) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"set max speed to: "+std::to_string(tempSpeed)); + ui->progressBarCurrentSpeed->setMaximum(tempSpeed); + } + ui->progressBarCurrentSpeed->setValue(tempSpeed); + ui->progressBarCurrentSpeed->setFormat(QString::fromStdString(facilityEngine->speedToString(speed))); + } + else + ui->currentSpeed->setText(QString::fromStdString(facilityEngine->speedToString(speed)));*/ + chartarea->addValue(speed); +} + +void Themes::remainingTime(const int &remainingSeconds) +{ + QString labelTimeRemaining; + if(darkUi) + labelTimeRemaining+="<html><body style=\"white-space:nowrap;\"><small style=\"color:#aaa\">"; + else + labelTimeRemaining+="<html><body style=\"white-space:nowrap;\">"; + labelTimeRemaining+=QString::fromStdString(facilityEngine->translateText("Remaining:")); + if(darkUi) + labelTimeRemaining+="</small>"; + labelTimeRemaining+=QStringLiteral(" <b>"); + if(remainingSeconds==-1) + labelTimeRemaining+=QStringLiteral("∞"); + else + { + Ultracopier::TimeDecomposition time=facilityEngine->secondsToTimeDecomposition(remainingSeconds); + labelTimeRemaining+=QString::number(time.hour)+QStringLiteral(":")+QString::number(time.minute).rightJustified(2,'0')+QStringLiteral(":")+QString::number(time.second).rightJustified(2,'0'); + } + labelTimeRemaining+=QStringLiteral("</b></body></html>"); + ui->labelTimeRemaining->setText(labelTimeRemaining); +} + +void Themes::errorDetected() +{ + haveError=true; +} + +/// \brief new error +void Themes::errorToRetry(const std::string &source,const std::string &destination,const std::string &error) +{ + ui->errorList->addTopLevelItem(new QTreeWidgetItem(QStringList() + << QString::fromStdString(source) + << QString::fromStdString(destination) + << QString::fromStdString(error) + )); +} + +/** \brief support speed limitation */ +void Themes::setSupportSpeedLimitation(const bool &supportSpeedLimitationBool) +{ + if(!supportSpeedLimitationBool) + { + ui->label_Slider_speed->setVisible(false); + ui->SliderSpeed->setVisible(false); + ui->label_SpeedMaxValue->setVisible(false); + uiOptions->labelShowSpeedAsMain->setVisible(false); + uiOptions->checkBoxShowSpeed->setVisible(false); + } + else + emit newSpeedLimitation(currentSpeed); +} + +//get information about the copy +void Themes::setGeneralProgression(const uint64_t ¤t,const uint64_t &total) +{ + currentSize=current; + totalSize=total; + if(total>0) + { + int newIndicator=((double)current/total)*65535; + if(darkUi) + progressBar_all->setValue(newIndicator); + else + ui->progressBar_all->setValue(newIndicator); + #ifdef Q_OS_WIN32 + winTaskbarProgress.setValue(newIndicator); + #endif + } + else + { + if(darkUi) + progressBar_all->setValue(0); + else + ui->progressBar_all->setValue(0); + #ifdef Q_OS_WIN32 + winTaskbarProgress.setValue(0); + #endif + } + if(current>0) + stat = status_started; + updateOverallInformation(); + if(isHidden()) + updateSysTrayIcon(); +} + +void Themes::setFileProgression(const std::vector<Ultracopier::ProgressionItem> &progressionList) +{ + std::vector<Ultracopier::ProgressionItem> progressionListBis=progressionList; + transferModel.setFileProgression(progressionListBis); + updateCurrentFileInformation(); +} + +//edit the transfer list +/// \todo check and re-enable to selection +void Themes::getActionOnList(const std::vector<Ultracopier::ReturnActionOnCopyList> &returnActions) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, returnActions.size(): "+std::to_string(returnActions.size())); + if(transferModel.tree==NULL) + transferModel.tree=new Folder(std::string()); + std::vector<uint64_t> returnValue=transferModel.synchronizeItems(returnActions); + totalFile+=returnValue.front(); + totalSize+=returnValue.at(1); + currentFile+=returnValue.back(); + if(transferModel.rowCount()==0) + { + ui->skipButton->setEnabled(false); + if(darkUi) + { + progressBar_all->setValue(65535); + progressBar_file->setValue(65535); + } + else + { + ui->progressBar_all->setValue(65535); + ui->progressBar_file->setValue(65535); + } + #ifdef Q_OS_WIN32 + winTaskbarProgress.setValue(65535); + #endif + currentSize=totalSize; + if(isHidden()) + updateSysTrayIcon(); + } + else + ui->skipButton->setEnabled(true); + updateOverallInformation(); + radial->invalidate(); + radial->create(transferModel.tree); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferModel.rowCount(): "+std::to_string(transferModel.rowCount())); +} + +void Themes::setCopyType(const Ultracopier::CopyType &type) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + this->type=type; + updateModeAndType(); +} + +void Themes::forceCopyMode(const Ultracopier::CopyMode &mode) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + modeIsForced=true; + this->mode=mode; + if(mode==Ultracopier::Copy) + ui->tabWidget->setTabText(0,tr("Copy list")); + else + ui->tabWidget->setTabText(0,tr("Move list")); + updateModeAndType(); + updateTitle(); +} + +void Themes::setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation) +{ + ui->exportTransferList->setVisible(transferListOperation & Ultracopier::TransferListOperation_Export); + ui->importTransferList->setVisible(transferListOperation & Ultracopier::TransferListOperation_Import); +} + +void Themes::haveExternalOrder() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); +// ui->moreButton->toggle(); +} + +void Themes::isInPause(const bool &isInPause) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"isInPause: "+std::to_string(isInPause)); + //resume in auto the pause + storeIsInPause=isInPause; + updatePause(); +} + +/// \brief set have pause +void Themes::havePause(const bool &havePause) +{ + if(darkUi) + pauseButton->setEnabled(havePause); + else + ui->pauseButton->setEnabled(havePause); + m_havePause=havePause; +} + +void Themes::updatePause() +{ + QPushButton *tempPauseButton=ui->pauseButton; + if(darkUi) + tempPauseButton=pauseButton; + if(storeIsInPause) + { + if(!darkUi) + ui->pauseButton->setIcon(player_play); + if(stat == status_started) + tempPauseButton->setText(QString::fromStdString(facilityEngine->translateText("Resume"))); + else + tempPauseButton->setText(QString::fromStdString(facilityEngine->translateText("Start"))); + } + else + { + if(!darkUi) + tempPauseButton->setIcon(player_pause); + tempPauseButton->setText(QString::fromStdString(facilityEngine->translateText("Pause"))); + } +} + +void Themes::updateCurrentFileInformation() +{ + TransferModel::currentTransfertItem transfertItem=transferModel.getCurrentTransfertItem(); + if(transfertItem.haveItem) + { + std::string from=transfertItem.from; + std::string::size_type pos=from.rfind('/'); + if(pos == std::string::npos) + { + #ifdef Q_OS_WIN32 + std::string::size_type pos=from.rfind('\\'); + if(pos != std::string::npos) + if(pos < from.size()-1) + from=from.substr(0,pos); + #endif + } + else if(pos < from.size()-1) + { + #ifdef Q_OS_WIN32 + std::string::size_type pos2=from.rfind('\\'); + if(pos2 != std::string::npos) + { + std::string::size_type pos=from.rfind('\\'); + if(pos != std::string::npos) + { + if(pos2 < from.size()-1) + { + if(pos<pos2) + from=from.substr(0,pos2); + else + from=from.substr(0,pos); + } + } + else + from=from.substr(0,pos); + } + else + #endif + from=from.substr(0,pos); + } + QString newPath=QString::fromStdString(from); + if(newPath.size()>(64+3)) + newPath=newPath.mid(0,32)+QStringLiteral("...")+newPath.mid(newPath.size()-32,32); + ui->from->setText(newPath); + newPath=QString::fromStdString(transfertItem.to); + if(newPath.size()>(64+3)) + newPath=newPath.mid(0,32)+QStringLiteral("...")+newPath.mid(newPath.size()-32,32); + //ui->to->setText(newPath); + ui->current_file->setText(QString::fromStdString(transfertItem.current_file)); + if(transfertItem.progressBar_read!=-1) + { + if(darkUi) + progressBar_file->setRange(0,65535); + else + ui->progressBar_file->setRange(0,65535); + if(uiOptions->showDualProgression->isChecked()) + { + if(!darkUi) + { + if(transfertItem.progressBar_read!=transfertItem.progressBar_write) + { + float permilleread=round((float)transfertItem.progressBar_read/65535*1000)/1000; + float permillewrite=permilleread-0.001; + ui->progressBar_file->setStyleSheet(QStringLiteral("QProgressBar{border: 1px solid grey;text-align: center;background-color: qlineargradient(spread:pad, x1:%1, y1:0, x2:%2, y2:0, stop:0 %3, stop:1 %4);}QProgressBar::chunk{background-color:%5;}") + .arg(permilleread) + .arg(permillewrite) + .arg(progressColorRemaining.name()) + .arg(progressColorRead.name()) + .arg(progressColorWrite.name()) + ); + } + else + ui->progressBar_file->setStyleSheet(QStringLiteral("QProgressBar{border:1px solid grey;text-align:center;background-color:%1;}QProgressBar::chunk{background-color:%2;}") + .arg(progressColorRemaining.name()) + .arg(progressColorWrite.name()) + ); + } + if(darkUi) + progressBar_file->setValue(transfertItem.progressBar_write); + else + ui->progressBar_file->setValue(transfertItem.progressBar_write); + } + else + { + if(darkUi) + progressBar_file->setValue((transfertItem.progressBar_read+transfertItem.progressBar_write)/2); + else + ui->progressBar_file->setValue((transfertItem.progressBar_read+transfertItem.progressBar_write)/2); + } + } + else + { + if(darkUi) + progressBar_file->setRange(0,0); + else + ui->progressBar_file->setRange(0,0); + } + } + else + { + ui->from->setText(QStringLiteral("")); + //ui->to->setText(QStringLiteral("")); + ui->current_file->setText(QStringLiteral("-")); + if(haveStarted && transferModel.rowCount()==0) + { + if(darkUi) + progressBar_file->setValue(65535); + else + ui->progressBar_file->setValue(65535); + } + else if(!haveStarted) + { + if(darkUi) + progressBar_file->setValue(0); + else + ui->progressBar_file->setValue(0); + } + } +} + + +void Themes::on_putOnTop_clicked() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + selectedItems=selectionModel->selectedRows(); + std::vector<uint64_t> ids; + int index=0; + const int &loop_size=selectedItems.size(); + while(index<loop_size) + { + ids.push_back(transferModel.data(selectedItems.at(index),Qt::UserRole).toULongLong()); + index++; + } + if(ids.size()>0) + emit moveItemsOnTop(ids); +} + +void Themes::on_pushUp_clicked() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + selectedItems=selectionModel->selectedRows(); + std::vector<uint64_t> ids; + int index=0; + const int &loop_size=selectedItems.size(); + while(index<loop_size) + { + ids.push_back(transferModel.data(selectedItems.at(index),Qt::UserRole).toULongLong()); + index++; + } + if(ids.size()>0) + emit moveItemsUp(ids); +} + +void Themes::on_pushDown_clicked() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + selectedItems=selectionModel->selectedRows(); + std::vector<uint64_t> ids; + int index=0; + const int &loop_size=selectedItems.size(); + while(index<loop_size) + { + ids.push_back(transferModel.data(selectedItems.at(index),Qt::UserRole).toULongLong()); + index++; + } + if(ids.size()>0) + emit moveItemsDown(ids); +} + +void Themes::on_putOnBottom_clicked() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + selectedItems=selectionModel->selectedRows(); + std::vector<uint64_t> ids; + int index=0; + const int &loop_size=selectedItems.size(); + while(index<loop_size) + { + ids.push_back(transferModel.data(selectedItems.at(index),Qt::UserRole).toULongLong()); + index++; + } + if(ids.size()>0) + emit moveItemsOnBottom(ids); +} + +void Themes::on_del_clicked() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + selectedItems=selectionModel->selectedRows(); + std::vector<uint64_t> ids; + int index=0; + const int &loop_size=selectedItems.size(); + while(index<loop_size) + { + ids.push_back(transferModel.data(selectedItems.at(index),Qt::UserRole).toULongLong()); + index++; + } + if(ids.size()>0) + emit removeItems(ids); +} + +void Themes::on_cancelButton_clicked() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + this->hide(); + emit cancel(); +} + + +void Themes::speedWithProgressBar_toggled(bool checked) +{ + (void)checked; + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + /*ui->progressBarCurrentSpeed->setVisible(checked); + ui->currentSpeed->setVisible(!checked);*/ +} + +void Themes::showDualProgression_toggled(bool checked) +{ + Q_UNUSED(checked); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + updateProgressionColorBar(); +} + +void Themes::checkBoxShowSpeed_toggled(bool checked) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + Q_UNUSED(checked); + updateSpeed(); +} + +void Themes::on_SliderSpeed_valueChanged(int value) +{ + if(!uiOptions->checkBoxShowSpeed->isChecked()) + return; + switch(value) + { + case 0: + currentSpeed=0; + break; + case 1: + currentSpeed=1024; + break; + case 2: + currentSpeed=1024*4; + break; + case 3: + currentSpeed=1024*16; + break; + case 4: + currentSpeed=1024*64; + break; + case 5: + currentSpeed=1024*128; + break; + } + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"value: "+std::to_string(value)); + emit newSpeedLimitation(currentSpeed); + updateSpeed(); +} + +void Themes::uiUpdateSpeed() +{ + if(uiOptions->checkBoxShowSpeed->isChecked()) + return; + if(!uiOptions->checkBox_limitSpeed->isChecked()) + currentSpeed=0; + else + currentSpeed=uiOptions->limitSpeed->value(); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit newSpeedLimitation"+std::to_string(currentSpeed)); + emit newSpeedLimitation(currentSpeed); +} + +void Themes::updateSpeed() +{ + ui->label_Slider_speed->setVisible(uiOptions->checkBoxShowSpeed->isChecked()); + ui->SliderSpeed->setVisible(uiOptions->checkBoxShowSpeed->isChecked()); + ui->label_SpeedMaxValue->setVisible(uiOptions->checkBoxShowSpeed->isChecked()); + uiOptions->limitSpeed->setVisible(!uiOptions->checkBoxShowSpeed->isChecked()); + uiOptions->checkBox_limitSpeed->setVisible(!uiOptions->checkBoxShowSpeed->isChecked()); + + if(uiOptions->checkBoxShowSpeed->isChecked()) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"checked, currentSpeed: "+std::to_string(currentSpeed)); + uiOptions->limitSpeed->setEnabled(false); + if(currentSpeed==0) + { + ui->SliderSpeed->setValue(0); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->translateText("Unlimited"))); + } + else if(currentSpeed<=1024) + { + if(currentSpeed!=1024) + { + currentSpeed=1024; + emit newSpeedLimitation(currentSpeed); + } + ui->SliderSpeed->setValue(1); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*1))); + } + else if(currentSpeed<=1024*4) + { + if(currentSpeed!=1024*4) + { + currentSpeed=1024*4; + emit newSpeedLimitation(currentSpeed); + } + ui->SliderSpeed->setValue(2); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*4))); + } + else if(currentSpeed<=1024*16) + { + if(currentSpeed!=1024*16) + { + currentSpeed=1024*16; + emit newSpeedLimitation(currentSpeed); + } + ui->SliderSpeed->setValue(3); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*16))); + } + else if(currentSpeed<=1024*64) + { + if(currentSpeed!=1024*64) + { + currentSpeed=1024*64; + emit newSpeedLimitation(currentSpeed); + } + ui->SliderSpeed->setValue(4); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*64))); + } + else + { + if(currentSpeed!=1024*128) + { + currentSpeed=1024*128; + emit newSpeedLimitation(currentSpeed); + } + ui->SliderSpeed->setValue(5); + ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*128))); + } + } + else + { + uiOptions->checkBox_limitSpeed->setChecked(currentSpeed>0); + if(currentSpeed>0) + uiOptions->limitSpeed->setValue(currentSpeed); + uiOptions->checkBox_limitSpeed->setEnabled(currentSpeed!=-1); + uiOptions->limitSpeed->setEnabled(uiOptions->checkBox_limitSpeed->isChecked()); + } +} + +void Themes::on_pauseButton_clicked() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + if(storeIsInPause) + emit resume(); + else + emit pause(); +} + +void Themes::on_skipButton_clicked() +{ + TransferModel::currentTransfertItem transfertItem=transferModel.getCurrentTransfertItem(); + if(transfertItem.haveItem) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"skip at running: "+std::to_string(transfertItem.id)); + emit skip(transfertItem.id); + } + else + { + if(transferModel.rowCount()>1) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"skip at idle: "+std::to_string(transferModel.firstId())); + emit skip(transferModel.firstId()); + } + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to skip the transfer, because no transfer running"); + } +} + +void Themes::updateModeAndType() +{ + menu->clear(); + if(modeIsForced) + { + menu->addAction(ui->actionAddFile); + if(type==Ultracopier::FileAndFolder) + menu->addAction(ui->actionAddFolder); + } + else + { + menu->addAction(ui->actionAddFileToCopy); + menu->addAction(ui->actionAddFileToMove); + if(type==Ultracopier::FileAndFolder) + { + menu->addAction(ui->actionAddFolderToCopy); + menu->addAction(ui->actionAddFolderToMove); + } + } +} + +void Themes::forcedModeAddFile() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + emit userAddFile(mode); +} + +void Themes::forcedModeAddFolder() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + emit userAddFolder(mode); +} + +void Themes::forcedModeAddFileToCopy() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + emit userAddFile(Ultracopier::Copy); +} + +void Themes::forcedModeAddFolderToCopy() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + emit userAddFolder(Ultracopier::Copy); +} + +void Themes::forcedModeAddFileToMove() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + emit userAddFile(Ultracopier::Move); +} + +void Themes::forcedModeAddFolderToMove() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + emit userAddFolder(Ultracopier::Move); +} + +void Themes::newLanguageLoaded() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + if(modeIsForced) + forceCopyMode(mode); + ui->retranslateUi(this); + uiOptions->retranslateUi(this); + uiOptions->comboBox_copyEnd->setItemText(0,tr("Don't close if errors are found")); + uiOptions->comboBox_copyEnd->setItemText(1,tr("Never close")); + uiOptions->comboBox_copyEnd->setItemText(2,tr("Always close")); + if(!haveStarted) + ui->current_file->setText(tr("File Name, 0KB")); + else + updateCurrentFileInformation(); + updateOverallInformation(); + updateSpeed(); + if(ui->tabWidget->count()>=4) + ui->tabWidget->setTabText(ui->tabWidget->count()-1, + QString::fromStdString(facilityEngine->translateText("Copy engine"))); + on_moreButton_toggled(ui->moreButton->isChecked()); +} + +void Themes::on_pushButtonCloseSearch_clicked() +{ + closeTheSearchBox(); +} + +//close the search box +void Themes::closeTheSearchBox() +{ + currentIndexSearch = -1; + ui->lineEditSearch->clear(); + ui->lineEditSearch->hide(); + ui->pushButtonSearchPrev->hide(); + ui->pushButtonSearchNext->hide(); + ui->pushButtonCloseSearch->hide(); + ui->searchButton->setChecked(false); + hilightTheSearch(); +} + +//search box shortcut +void Themes::searchBoxShortcut() +{ +/* if(ui->lineEditSearch->isHidden()) + {*/ + ui->lineEditSearch->show(); + ui->pushButtonSearchPrev->show(); + ui->pushButtonSearchNext->show(); + ui->pushButtonCloseSearch->show(); + ui->lineEditSearch->setFocus(Qt::ShortcutFocusReason); + ui->searchButton->setChecked(true); +/* } + else + closeTheSearchBox();*/ +} + +//hilight the search +void Themes::hilightTheSearch(bool searchNext) +{ + int result=transferModel.search(ui->lineEditSearch->text().toStdString(),searchNext); + if(ui->lineEditSearch->text().isEmpty()) + ui->lineEditSearch->setStyleSheet(""); + else + { + if(result==-1) + ui->lineEditSearch->setStyleSheet(QStringLiteral("background-color: rgb(255, 150, 150);")); + else + { + ui->lineEditSearch->setStyleSheet(QStringLiteral("background-color: rgb(193,255,176);")); + ui->TransferList->scrollTo(transferModel.index(result,0)); + } + } +} + +void Themes::hilightTheSearchSlot() +{ + hilightTheSearch(); +} + +void Themes::on_pushButtonSearchPrev_clicked() +{ + int result=transferModel.searchPrev(ui->lineEditSearch->text().toStdString()); + if(ui->lineEditSearch->text().isEmpty()) + ui->lineEditSearch->setStyleSheet(""); + else + { + if(result==-1) + ui->lineEditSearch->setStyleSheet(QStringLiteral("background-color: rgb(255, 150, 150);")); + else + { + ui->lineEditSearch->setStyleSheet(QStringLiteral("background-color: rgb(193,255,176);")); + ui->TransferList->scrollTo(transferModel.index(result,0)); + } + } +} + +void Themes::on_pushButtonSearchNext_clicked() +{ + hilightTheSearch(true); +} + +void Themes::on_lineEditSearch_returnPressed() +{ + hilightTheSearch(); +} + +void Themes::on_lineEditSearch_textChanged(QString text) +{ + if(text=="") + { + TimerForSearch->stop(); + hilightTheSearch(); + } + else + TimerForSearch->start(); +} + +void Themes::on_moreButton_toggled(bool checked) +{ + Q_UNUSED(checked); + /*if(checked) + this->setMaximumHeight(16777215); + else + this->setMaximumHeight(130);*/ + // usefull under windows + #if ! defined(__ANDROID__) && ! defined(ANDROID) && ! defined(__ANDROID_API__) + this->adjustSize(); + #endif +} + +/* drag event processing + +need setAcceptDrops(true); into the constructor +need implementation to accept the drop: +void dragEnterEvent(QDragEnterEvent* event); +void dragMoveEvent(QDragMoveEvent* event); +void dragLeaveEvent(QDragLeaveEvent* event); +*/ +void Themes::dropEvent(QDropEvent *event) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + const QMimeData* mimeData = event->mimeData(); + if(mimeData->hasUrls()) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"hasUrls"); + std::vector<std::string> urls; + unsigned int index=0; + foreach (QUrl url, mimeData->urls()) + { + const std::string &urlString=url.toString().toStdString(); + if(index<99) + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,urlString); + urls.push_back(urlString); + index++; + } + emit urlDropped(urls); + event->acceptProposedAction(); + } +} + +void Themes::dragEnterEvent(QDragEnterEvent* event) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + // if some actions should not be usable, like move, this code must be adopted + const QMimeData* mimeData = event->mimeData(); + if(mimeData->hasUrls()) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"hasUrls"); + event->acceptProposedAction(); + } +} + +void Themes::dragMoveEvent(QDragMoveEvent* event) +{ + // if some actions should not be usable, like move, this code must be adopted + const QMimeData* mimeData = event->mimeData(); + if(mimeData->hasUrls()) + event->acceptProposedAction(); +} + +void Themes::dragLeaveEvent(QDragLeaveEvent* event) +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + event->accept(); +} + +void Themes::on_searchButton_toggled(bool checked) +{ + if(checked) + searchBoxShortcut(); + else + closeTheSearchBox(); +} + +void Themes::on_exportTransferList_clicked() +{ + emit exportTransferList(); +} + +void Themes::on_importTransferList_clicked() +{ + emit importTransferList(); +} + +void Themes::progressColorWrite_clicked() +{ + QColor color=QColorDialog::getColor(progressColorWrite,this,tr("Select a color")); + if(!color.isValid()) + return; + progressColorWrite=color; + QPixmap pixmap(75,20); + pixmap.fill(progressColorWrite); + uiOptions->progressColorWrite->setIcon(pixmap); + updateProgressionColorBar(); +} + +void Themes::progressColorRead_clicked() +{ + QColor color=QColorDialog::getColor(progressColorRead,this,tr("Select a color")); + if(!color.isValid()) + return; + progressColorRead=color; + QPixmap pixmap(75,20); + pixmap.fill(progressColorRead); + uiOptions->progressColorRead->setIcon(pixmap); + updateProgressionColorBar(); +} + +void Themes::progressColorRemaining_clicked() +{ + QColor color=QColorDialog::getColor(progressColorRemaining,this,tr("Select a color")); + if(!color.isValid()) + return; + progressColorRemaining=color; + QPixmap pixmap(75,20); + pixmap.fill(progressColorRemaining); + uiOptions->progressColorRemaining->setIcon(pixmap); + updateProgressionColorBar(); +} + +void Themes::alwaysOnTop_clicked(bool reshow) +{ + Qt::WindowFlags flags = windowFlags(); + #ifdef Q_OS_WIN32 + if(uiOptions->alwaysOnTop->isChecked()) + SetWindowPos((HWND)this->winId(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + else + SetWindowPos((HWND)this->winId(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + #endif + #ifdef Q_OS_LINUX + if(uiOptions->alwaysOnTop->isChecked()) + flags=flags | Qt::X11BypassWindowManagerHint; + else + flags=flags & ~Qt::X11BypassWindowManagerHint; + #endif + if(uiOptions->alwaysOnTop->isChecked()) + flags=flags | Qt::WindowStaysOnTopHint; + else + flags=flags & ~Qt::WindowStaysOnTopHint; + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"uiOptions->alwaysOnTop->isChecked(): "+std::to_string(uiOptions->alwaysOnTop->isChecked())+", flags: "+std::to_string(flags)); + setWindowFlags(flags); + if(reshow) + show(); +} + +void Themes::alwaysOnTop_clickedSlot() +{ + alwaysOnTop_clicked(true); +} + +void Themes::updateProgressionColorBar() +{ + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); + uiOptions->labelProgressionColor->setVisible(uiOptions->showDualProgression->isChecked()); + uiOptions->frameProgressionColor->setVisible(uiOptions->showDualProgression->isChecked()); + if(!darkUi) + { + if(!uiOptions->showDualProgression->isChecked()) + { + ui->progressBar_all->setStyleSheet(QStringLiteral("")); + ui->progressBar_file->setStyleSheet(QStringLiteral("")); + //ui->progressBarCurrentSpeed->setStyleSheet(QStringLiteral("")); + } + else + { + ui->progressBar_all->setStyleSheet(QStringLiteral("QProgressBar{border:1px solid grey;text-align:center;background-color:%1;}QProgressBar::chunk{background-color:%2;}") + .arg(progressColorRemaining.name()) + .arg(progressColorWrite.name()) + ); + ui->progressBar_file->setStyleSheet(QStringLiteral("QProgressBar{border:1px solid grey;text-align:center;background-color:%1;}QProgressBar::chunk{background-color:%2;}") + .arg(progressColorRemaining.name()) + .arg(progressColorWrite.name()) + ); + /*ui->progressBarCurrentSpeed->setStyleSheet(QStringLiteral("QProgressBar{border:1px solid grey;text-align:center;background-color:%1;}QProgressBar::chunk{background-color:%2;}") + .arg(progressColorRemaining.name()) + .arg(progressColorWrite.name()) + );*/ + } + } + if(stat==status_never_started) + updateCurrentFileInformation(); +} + +QString Themes::simplifiedBigNum(const uint64_t &num) +{ + if(num<1000) + return QString::number(num); + else if(num<1000000) + return QString::number(num/1000)+QStringLiteral("k"); + else + return QString::number(num/1000000)+QStringLiteral("M"); +} + +void Themes::updateTitle() +{ + if(uiOptions->showProgressionInTheTitle->isChecked() && totalSize>0) + { + if(!modeIsForced) + this->setWindowTitle(tr("%1 %2% of %3 into %4 files") + .arg(QString::fromStdString(facilityEngine->translateText("Transfer"))) + .arg((currentSize*100)/totalSize) + .arg(QString::fromStdString(facilityEngine->sizeToString(totalSize))) + .arg(simplifiedBigNum(totalFile))+ + QStringLiteral(" - ")+ + QString::fromStdString(facilityEngine->softwareName()) + ); + else + { + if(mode==Ultracopier::Copy) + this->setWindowTitle(tr("%1 %2% of %3 into %4 files") + .arg(QString::fromStdString(facilityEngine->translateText("Copy"))) + .arg((currentSize*100)/totalSize) + .arg(QString::fromStdString(facilityEngine->sizeToString(totalSize))) + .arg(simplifiedBigNum(totalFile))+ + QStringLiteral(" - ")+ + QString::fromStdString(facilityEngine->softwareName()) + ); + else + this->setWindowTitle(tr("%1 %2% of %3 into %4 files") + .arg(QString::fromStdString(facilityEngine->translateText("Move"))) + .arg((currentSize*100)/totalSize) + .arg(QString::fromStdString(facilityEngine->sizeToString(totalSize))) + .arg(simplifiedBigNum(totalFile))+ + QStringLiteral(" - ")+ + QString::fromStdString(facilityEngine->softwareName()) + ); + } + } + else + { + if(!modeIsForced) + this->setWindowTitle( + QString::fromStdString(facilityEngine->translateText("Transfer"))+ + QStringLiteral(" - ")+ + QString::fromStdString(facilityEngine->softwareName()) + ); + else + { + if(mode==Ultracopier::Copy) + this->setWindowTitle( + QString::fromStdString(facilityEngine->translateText("Copy"))+ + QStringLiteral(" - ")+ + QString::fromStdString(facilityEngine->softwareName()) + ); + else + this->setWindowTitle( + QString::fromStdString(facilityEngine->translateText("Move"))+ + QStringLiteral(" - ")+ + QString::fromStdString(facilityEngine->softwareName()) + ); + } + } +} + +/** \brief Create progessive icon + +Do QIcon with top and bottom image mixed and percent writed on it. +The icon it be search in the style path. +Do by mongaulois, remake by alpha_one_x86. +\param percent indique how many percent need be showed, sould be between 0 and 100 +\param text The showed text if needed (optionnal) +\return QIcon of the final image +\note Can be used as it: dynaIcon(75,"...") +*/ +QIcon Themes::dynaIcon(int percent,std::string text) const +{ + #ifdef ULTRACOPIER_PLUGIN_DEBUG + if(pixmapTop.isNull() || pixmapBottom.isNull()) + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error loading the icons"); + #endif + if(percent==-1) + percent=getOldProgression; + if(percent<0) + percent=0; + if(percent>100) + percent=100; + //pixmap avec un fond transparent + #ifdef Q_OS_WIN32 + quint8 imageSize=16; + #else + quint8 imageSize=22; + #endif + QPixmap resultImage(imageSize,imageSize); + resultImage.fill(Qt::transparent); + { + QPainter painter(&resultImage); + #ifndef Q_OS_WIN32 + QFont font(QStringLiteral("Courier New"),9); + font.setBold(true); + font.setKerning(true); + painter.setFont(font); + #endif + #ifdef Q_OS_WIN32 + QFont font(QStringLiteral("Courier New"),8); + font.setBold(true); + font.setKerning(true); + painter.setFont(font); + #endif + + //preprocessing the calcul + quint8 bottomPixel=(percent*imageSize)/100; + quint8 topPixel=imageSize-bottomPixel; + + //top image + if(topPixel>0) + { + QRect target(0, 0, imageSize, topPixel); + QRect source(0, 0, imageSize, topPixel); + painter.drawPixmap(target, pixmapTop, source); + } + + //bottom image + if(bottomPixel>0) + { + QRect target2(0, topPixel, imageSize, bottomPixel); + QRect source2(0, topPixel, imageSize, bottomPixel); + painter.drawPixmap(target2, pixmapBottom, source2); + } + + qint8 textxOffset=0; + qint8 textyOffset=0; + if(text.empty()) + { + if(percent!=100) + text=std::to_string(percent); + else + { + text=":)"; + #ifdef Q_OS_WIN32 + textyOffset-=2; + #else + textyOffset-=1; + #endif + } + } + if(text.size()==1) + { + textxOffset+=3; + #ifdef Q_OS_WIN32 + textxOffset-=1; + #endif + } + else + { + #ifdef Q_OS_WIN32 + textxOffset-=1; + #endif + } + #ifndef Q_OS_WIN32 + textxOffset+=2; + textyOffset+=3; + #endif + painter.setPen(QPen(Qt::black)); + painter.drawText(3+textxOffset,13+textyOffset,QString::fromStdString(text)); + painter.setPen(QPen(Qt::white)); + painter.drawText(2+textxOffset,12+textyOffset,QString::fromStdString(text)); + } + return QIcon(resultImage); +} + +/** \brief For catch an action on the systray icon +\param reason Why it activated +*/ +void Themes::catchAction(QSystemTrayIcon::ActivationReason reason) +{ + if(reason==QSystemTrayIcon::DoubleClick || reason==QSystemTrayIcon::Trigger) + { + sysTrayIcon->hide(); + this->show(); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Double Click detected"); + } + else + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"reason: "+std::to_string(reason)); +} + +void Themes::on_exportErrorToTransferList_clicked() +{ + emit exportErrorIntoTransferList(); +} + +void Themes::resizeEvent(QResizeEvent*) +{ + if(!ui->moreButton->isChecked() && (moreButton==NULL || !moreButton->isChecked())) + { + if(width()<height()) + { + ui->horizontalLayout_3->setDirection(QBoxLayout::TopToBottom); + ui->frameLeft->setMaximumHeight(height()/3); + ui->frameLeft->setMaximumWidth(1000000); + ui->frameMiddle->setMaximumHeight(height()/3); + ui->frameMiddle->setMaximumWidth(1000000); + ui->frameRight->setMaximumHeight(height()/3); + ui->frameRight->setMaximumWidth(1000000); + } + else + { + ui->horizontalLayout_3->setDirection(QBoxLayout::LeftToRight); + ui->frameLeft->setMaximumHeight(1000000); + ui->frameLeft->setMaximumWidth(width()/3); + ui->frameMiddle->setMaximumHeight(1000000); + ui->frameMiddle->setMaximumWidth(width()/3); + ui->frameRight->setMaximumHeight(1000000); + ui->frameRight->setMaximumWidth(width()/3); + } + } + else { + ui->frameLeft->setMaximumHeight(1000000); + ui->frameLeft->setMaximumWidth(1000000); + ui->frameMiddle->setMaximumHeight(1000000); + ui->frameMiddle->setMaximumWidth(1000000); + ui->frameRight->setMaximumHeight(1000000); + ui->frameRight->setMaximumWidth(1000000); + } + if(ui->frameS->width()>300) + { + int space=ui->frameS->width()/20; + ui->horizontalLayoutS->setContentsMargins(space,space/2,space,space/2); + ui->horizontalLayoutS->setSpacing(space); + } + else + { + ui->horizontalLayoutS->setMargin(6); + ui->horizontalLayoutS->setSpacing(6); + } +} + +void Themes::doneTime(const std::vector<std::pair<uint64_t,uint32_t> > &timeList) +{ + if(remainingTimeLogarithmicValue.size()<ULTRACOPIERO2_MAXREMAININGTIMECOL) + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"bug, remainingTimeLogarithmicValue.size() "+std::to_string(remainingTimeLogarithmicValue.size())+" <ULTRACOPIERO2_MAXREMAININGTIMECOL"); + else + { + unsigned int sub_index=0; + while(sub_index<timeList.size()) + { + const std::pair<uint64_t,uint32_t> &timeUnit=timeList.at(sub_index); + const uint8_t &col=fileCatNumber(timeUnit.first); + RemainingTimeLogarithmicColumn &remainingTimeLogarithmicColumn=remainingTimeLogarithmicValue[col]; + if(remainingTimeLogarithmicValue.size()<=col) + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"bug, remainingTimeLogarithmicValue.size() "+std::to_string(remainingTimeLogarithmicValue.size())+" < col %2"+std::to_string(col)); + break; + } + else + { + if(timeUnit.second>0) + { + remainingTimeLogarithmicColumn.lastProgressionSpeed.push_back(static_cast<uint64_t>(timeUnit.first/timeUnit.second)*1000); + if(remainingTimeLogarithmicColumn.lastProgressionSpeed.size()>ULTRACOPIERO2_MAXVALUESPEEDSTORED) + remainingTimeLogarithmicColumn.lastProgressionSpeed.erase(remainingTimeLogarithmicColumn.lastProgressionSpeed.begin()); + + } + } + sub_index++; + } + unsigned int max=1; + sub_index=0; + while(sub_index<remainingTimeLogarithmicValue.size() && sub_index<6) + { + const RemainingTimeLogarithmicColumn &col=remainingTimeLogarithmicValue.at(sub_index); + unsigned int tot=0; + unsigned int index=0; + while(index<col.lastProgressionSpeed.size()) + { + tot+=col.lastProgressionSpeed.at(index); + index++; + } + unsigned int res=0; + if(!col.lastProgressionSpeed.empty()) + res=tot/col.lastProgressionSpeed.size(); + if(max<res) + max=res; + sub_index++; + } + if(max>1) + verticalLabel->setText(QString::fromStdString(facilityEngine->speedToString(max))); + sub_index=0; + while(sub_index<remainingTimeLogarithmicValue.size() && sub_index<6) + { + const RemainingTimeLogarithmicColumn &col=remainingTimeLogarithmicValue.at(sub_index); + unsigned int tot=0; + unsigned int index=0; + while(index<col.lastProgressionSpeed.size()) + { + tot+=col.lastProgressionSpeed.at(index); + index++; + } + unsigned int res=0; + if(!col.lastProgressionSpeed.empty()) + res=tot/col.lastProgressionSpeed.size(); + QProgressBar *p=nullptr; + switch (sub_index) { + case 0: + p=ui->progressBar; + break; + case 1: + p=ui->progressBar_2; + break; + case 2: + p=ui->progressBar_3; + break; + case 3: + p=ui->progressBar_4; + break; + case 4: + p=ui->progressBar_5; + break; + case 5: + p=ui->progressBar_6; + break; + default: + break; + } + p->setValue(res); + p->setMaximum(max); + p->setToolTip(QString::fromStdString(facilityEngine->speedToString(res))); + sub_index++; + } + } +} + +/* return 0 to 5 */ +uint8_t Themes::fileCatNumber(uint64_t size) +{ + //all is in base 10 to understand more easily + //drop the big value + if(size>100*1000*1000) + size=100*1000*1000; + size=size/100;//to group all the too small file into the value 0 + const double rlog=round(log10(size)); + if(rlog>5) + return 5; + return rlog; +} + +void Themes::paintEvent(QPaintEvent * event) +{ + if(darkUi) + { + if(background.width()!=width() || background.height()!=height()) + { + int minimal=height(); + if(width()<height()) + minimal=width(); + + QPixmap temp(minimal,minimal); + QPainter paint; + paint.begin(&temp); + + QRadialGradient radialGrad(QPointF(minimal/2,minimal/2), minimal/2); + radialGrad.setColorAt(0, QColor(70, 70, 70)); + radialGrad.setColorAt(1, QColor(40, 40, 40)); + QRect rect_radial(0,0,minimal,minimal); + paint.fillRect(rect_radial, radialGrad); + background=temp.scaled(width(),height(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation); + } + QPainter paint; + paint.begin(this); + paint.drawPixmap(0,0,background.width(), background.height(), background); + } + else + QWidget::paintEvent(event); +} diff --git a/plugins/Themes/Oxygen2/interface.h b/plugins/Themes/Oxygen2/interface.h new file mode 100755 index 0000000..ab6f101 --- /dev/null +++ b/plugins/Themes/Oxygen2/interface.h @@ -0,0 +1,259 @@ +/** \file interface.h +\brief Define the interface +\author alpha_one_x86 +\licence GPL3, see the file COPYING */ + +#ifndef INTERFACE_H +#define INTERFACE_H + +#include <QObject> +#include <QWidget> +#include <QMenu> +#include <QCloseEvent> +#include <QShortcut> +#include <QItemSelectionModel> +#include <QTimer> +#include <QTime> +#include <QSystemTrayIcon> +#include <QPixmap> +#ifdef Q_OS_WIN32 +#include <QWinTaskbarProgress> +#endif + +#include "../../../interface/PluginInterface_Themes.h" +#include "radialMap/widget.h" +#include "chartarea.h" +#include "ProgressBarDark.h" +#include "DarkButton.h" +#include "VerticalLabel.h" + +#include "ui_interface.h" +#include "ui_themesOptions.h" +#include "Oxygen2Environment.h" +#include "TransferModel.h" + +namespace Ui { + class interfaceCopy; + class themesOptions; +} + +/// \brief Define the interface +class Themes : public PluginInterface_Themes +{ + Q_OBJECT +public: + Themes(const bool &alwaysOnTop, + const bool &showProgressionInTheTitle, + const QColor &progressColorWrite, + const QColor &progressColorRead, + const QColor &progressColorRemaining, + const bool &showDualProgression, + const quint8 &comboBox_copyEnd, + const bool &speedWithProgressBar, + const qint32 ¤tSpeed, + const bool &checkBoxShowSpeed, + FacilityInterface * facilityEngine, + const bool &moreButtonPushed, + const bool &minimizeToSystray, + const bool &startMinimized, + const quint8 &position, + const bool &dark); + ~Themes(); + //send information about the copy + /// \brief to set the action in progress + void actionInProgess(const Ultracopier::EngineActionInProgress &) override; + /// \brief the new folder is listing + void newFolderListing(const std::string &path) override; + /** \brief show the detected speed + * in byte per seconds */ + void detectedSpeed(const uint64_t &speed) override; + /** \brief show the remaining time + * time in seconds */ + void remainingTime(const int &remainingSeconds) override; + /// \brief set the current collision action + void newCollisionAction(const std::string &action); + /// \brief set the current error action + void newErrorAction(const std::string &action); + /// \brief set one error is detected + void errorDetected() override; + /// \brief new error + void errorToRetry(const std::string &source,const std::string &destination,const std::string &error) override; + /** \brief support speed limitation */ + void setSupportSpeedLimitation(const bool &supportSpeedLimitationBool) override; + //get information about the copy + /// \brief show the general progression + void setGeneralProgression(const uint64_t ¤t,const uint64_t &total) override; + /// \brief show the file progression + void setFileProgression(const std::vector<Ultracopier::ProgressionItem> &progressionList) override; + /// \brief set the copyType -> file or folder + void setCopyType(const Ultracopier::CopyType &) override; + /// \brief set the copyMove -> copy or move, to force in copy or move, else support both + void forceCopyMode(const Ultracopier::CopyMode &) override; + /// \brief set if transfer list is exportable/importable + void setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation) override; + //edit the transfer list + /// \brief get action on the transfer list (add/move/remove) + void getActionOnList(const std::vector<Ultracopier::ReturnActionOnCopyList> &returnActions) override; + /** \brief set if the order is external (like file manager copy) + * to notify the interface, which can hide add folder/filer button */ + void haveExternalOrder() override; + /// to get by file speed, size and ms + void doneTime(const std::vector<std::pair<uint64_t,uint32_t> > &timeList) override; + /// \brief set if is in pause + void isInPause(const bool &) override; + /// \brief set if have pause + void havePause(const bool &) override; + /// \brief get the widget for the copy engine + QWidget * getOptionsEngineWidget() override; + /// \brief to set if the copy engine is found + void getOptionsEngineEnabled(const bool &isEnabled) override; + enum status{status_never_started,status_started,status_stopped}; + status stat; + + static QString simplifiedBigNum(const uint64_t &num); +public slots: + /// \brief set the translate + void newLanguageLoaded(); +private slots: + void on_putOnTop_clicked(); + void on_pushUp_clicked(); + void on_pushDown_clicked(); + void on_putOnBottom_clicked(); + void on_del_clicked(); + void on_cancelButton_clicked(); + void speedWithProgressBar_toggled(bool checked); + void showDualProgression_toggled(bool checked); + void checkBoxShowSpeed_toggled(bool checked); + void on_SliderSpeed_valueChanged(int value); + void on_pauseButton_clicked(); + void on_skipButton_clicked(); + void forcedModeAddFile(); + void forcedModeAddFolder(); + void forcedModeAddFileToCopy(); + void forcedModeAddFolderToCopy(); + void forcedModeAddFileToMove(); + void forcedModeAddFolderToMove(); + void uiUpdateSpeed(); + void on_pushButtonCloseSearch_clicked(); + //close the search box + void closeTheSearchBox(); + //search box shortcut + void searchBoxShortcut(); + //hilight the search + void hilightTheSearch(bool searchNext=false); + void hilightTheSearchSlot(); + //auto connect + void on_pushButtonSearchPrev_clicked(); + void on_pushButtonSearchNext_clicked(); + void on_lineEditSearch_returnPressed(); + void on_lineEditSearch_textChanged(QString text); + void on_moreButton_toggled(bool checked); + void on_searchButton_toggled(bool checked); + void on_exportTransferList_clicked(); + void on_importTransferList_clicked(); + void progressColorWrite_clicked(); + void progressColorRead_clicked(); + void progressColorRemaining_clicked(); + void alwaysOnTop_clicked(bool reshow); + void alwaysOnTop_clickedSlot(); + void updateProgressionColorBar(); + void updateTitle(); + void catchAction(QSystemTrayIcon::ActivationReason reason); + void on_exportErrorToTransferList_clicked(); +private: + uint64_t duration; + bool durationStarted; + QPixmap pixmapTop,pixmapBottom; + QColor progressColorWrite,progressColorRead,progressColorRemaining; + Ui::interfaceCopy *ui; + Ui::themesOptions *uiOptions; + uint64_t currentFile; + uint64_t totalFile; + uint64_t currentSize; + uint64_t totalSize; + uint8_t getOldProgression; + QSystemTrayIcon *sysTrayIcon; + void updateOverallInformation(); + void updateCurrentFileInformation(); + QMenu *menu; + Ultracopier::EngineActionInProgress action; + void closeEvent(QCloseEvent *event) override; + int32_t currentSpeed;///< in KB/s, assume as 0KB/s as default like every where + void updateSpeed(); + bool storeIsInPause; + bool modeIsForced; + Ultracopier::CopyType type; + Ultracopier::CopyMode mode; + void updateModeAndType(); + bool haveStarted; + bool haveError; + QWidget optionEngineWidget; + QShortcut *searchShortcut; + QShortcut *searchShortcut2; + QShortcut *searchShortcut3; + QTimer *TimerForSearch; + int currentIndexSearch; ///< Current index search in starting at the end + FacilityInterface * facilityEngine; + QItemSelectionModel *selectionModel; + QModelIndexList selectedItems; + /// \brief the custom transfer model + TransferModel transferModel; + RadialMap::Widget *radial; + ChartArea::Widget *chartarea; + bool darkUi; + bool m_havePause; + QPixmap background; + + static QIcon player_play,player_pause,tempExitIcon,editDelete,skinIcon,editFind,documentOpen,documentSave,listAdd; + static bool iconLoaded; + + struct RemainingTimeLogarithmicColumn + { + std::vector<int> lastProgressionSpeed; + }; + /** for RemainingTimeAlgo_Logarithmic **/ + std::vector<RemainingTimeLogarithmicColumn> remainingTimeLogarithmicValue; + + /** \brief drag event processing + + need setAcceptDrops(true); into the constructor + need implementation to accept the drop: + void dragEnterEvent(QDragEnterEvent* event); + void dragMoveEvent(QDragMoveEvent* event); + void dragLeaveEvent(QDragLeaveEvent* event); + */ + void dropEvent(QDropEvent *event) override; + /** \brief accept all event to allow the drag and drop + \see dropEvent() */ + void dragEnterEvent(QDragEnterEvent* event) override; + /** \brief accept all event to allow the drag and drop + \see dropEvent() */ + void dragMoveEvent(QDragMoveEvent* event) override; + /** \brief accept all event to allow the drag and drop + \see dropEvent() */ + void dragLeaveEvent(QDragLeaveEvent* event) override; + //have functionality + bool shutdown; + ProgressBarDark * progressBar_all; + ProgressBarDark * progressBar_file; + DarkButton * moreButton; + DarkButton * pauseButton; + DarkButton * skipButton; + DarkButton * cancelButton; + VerticalLabel *verticalLabel; + void updatePause(); + QIcon dynaIcon(int percent,std::string text="") const; + void updateSysTrayIcon(); + void resizeEvent(QResizeEvent*) override; + uint8_t fileCatNumber(uint64_t size); + void paintEvent(QPaintEvent *event) override; + + #ifdef Q_OS_WIN32 + QWinTaskbarProgress winTaskbarProgress; + #endif +signals: + /// \brief To debug source + void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const; +}; + +#endif // INTERFACE_H diff --git a/plugins/Themes/Oxygen2/interface.pro b/plugins/Themes/Oxygen2/interface.pro new file mode 100755 index 0000000..cbd495e --- /dev/null +++ b/plugins/Themes/Oxygen2/interface.pro @@ -0,0 +1,8 @@ +include($$PWD/../Oxygen2/interfaceInclude.pri) + +!CONFIG(static) { +RESOURCES += \ + $$PWD/../Oxygen2/interfaceResources.qrc \ + $$PWD/../Oxygen2/interfaceResources_unix.qrc \ + $$PWD/../Oxygen2/interfaceResources_windows.qrc +} diff --git a/plugins/Themes/Oxygen2/interface.ui b/plugins/Themes/Oxygen2/interface.ui new file mode 100755 index 0000000..dc0b397 --- /dev/null +++ b/plugins/Themes/Oxygen2/interface.ui @@ -0,0 +1,1098 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>interfaceCopy</class> + <widget class="QWidget" name="interfaceCopy"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>550</width> + <height>539</height> + </rect> + </property> + <property name="minimumSize"> + <size> + <width>550</width> + <height>0</height> + </size> + </property> + <property name="windowTitle"> + <string notr="true">Ultracopier</string> + </property> + <property name="windowIcon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/main.png</normaloff>:/Themes/Oxygen2/resources/main.png</iconset> + </property> + <layout class="QVBoxLayout"> + <property name="spacing"> + <number>2</number> + </property> + <property name="leftMargin"> + <number>1</number> + </property> + <property name="topMargin"> + <number>1</number> + </property> + <property name="rightMargin"> + <number>1</number> + </property> + <property name="bottomMargin"> + <number>1</number> + </property> + <item> + <widget class="QFrame" name="frame"> + <property name="minimumSize"> + <size> + <width>300</width> + <height>100</height> + </size> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QFrame" name="frameLeft"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <layout class="QVBoxLayout" name="verticalLayoutLeft"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <property name="spacing"> + <number>0</number> + </property> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <property name="spacing"> + <number>0</number> + </property> + <item> + <layout class="QVBoxLayout" name="verticalLayoutVL"> + <property name="spacing"> + <number>0</number> + </property> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QFrame" name="frameS"> + <layout class="QHBoxLayout" name="horizontalLayoutS"> + <item> + <widget class="QProgressBar" name="progressBar"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="value"> + <number>20</number> + </property> + <property name="textVisible"> + <bool>false</bool> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_2"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="value"> + <number>30</number> + </property> + <property name="textVisible"> + <bool>false</bool> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_3"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="value"> + <number>66</number> + </property> + <property name="textVisible"> + <bool>false</bool> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_4"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="value"> + <number>75</number> + </property> + <property name="textVisible"> + <bool>false</bool> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_5"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="value"> + <number>84</number> + </property> + <property name="textVisible"> + <bool>false</bool> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_6"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="value"> + <number>87</number> + </property> + <property name="textVisible"> + <bool>false</bool> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_8"> + <item> + <widget class="QLabel" name="labelSPStart"> + <property name="text"> + <string>0</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="labelSPStop"> + <property name="text"> + <string>100MB+</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="labelTimeRemaining"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string notr="true">Remaining: 5min</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_all"> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>16</height> + </size> + </property> + <property name="maximum"> + <number>65535</number> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayoutLeft"> + <item> + <widget class="QPushButton" name="moreButton"> + <property name="text"> + <string>&More</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/moveDown.png</normaloff>:/Themes/Oxygen2/resources/moveDown.png</iconset> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pauseButton"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>&Pause</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/player_pause.png</normaloff>:/Themes/Oxygen2/resources/player_pause.png</iconset> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QFrame" name="frameMiddle"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <layout class="QVBoxLayout" name="verticalLayouMiddle"> + <item> + <widget class="QLabel" name="overall"> + <property name="text"> + <string notr="true">File 0/0, Total: 0KB</string> + </property> + <property name="textFormat"> + <enum>Qt::PlainText</enum> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QFrame" name="frameRight"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <layout class="QVBoxLayout" name="verticalLayoutRight"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_9"> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QToolButton" name="shutdown"> + <property name="maximumSize"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + <property name="toolTip"> + <string>Close on transfer completion</string> + </property> + <property name="styleSheet"> + <string notr="true">background-color: rgba(255, 0, 255, 0);</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/SystemTrayIcon/exit.png</normaloff>:/Themes/Oxygen2/resources/SystemTrayIcon/exit.png</iconset> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_6"> + <item> + <widget class="QLabel" name="from_label"> + <property name="text"> + <string>From:</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="from"> + <property name="font"> + <font> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string/> + </property> + <property name="textFormat"> + <enum>Qt::PlainText</enum> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="current_file"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string notr="true">File Name, 0KB</string> + </property> + <property name="textFormat"> + <enum>Qt::PlainText</enum> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_file"> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>16</height> + </size> + </property> + <property name="maximum"> + <number>65535</number> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayoutRight"> + <item> + <widget class="QPushButton" name="skipButton"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>&Skip</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/player_end.png</normaloff>:/Themes/Oxygen2/resources/player_end.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="cancelButton"> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/cancel.png</normaloff>:/Themes/Oxygen2/resources/cancel.png</iconset> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QLabel" name="ad_ultimate"> + <property name="text"> + <string notr="true"><html><head/><body><p><span style=" font-weight:600; color:#ff0000;">Ad or warning here</span></p></body></html></string> + </property> + <property name="textFormat"> + <enum>Qt::RichText</enum> + </property> + <property name="openExternalLinks"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="limitSpeedAsMain"> + <item> + <widget class="QLabel" name="label_Slider_speed"> + <property name="text"> + <string>Limit copy speed to:</string> + </property> + </widget> + </item> + <item> + <widget class="QSlider" name="SliderSpeed"> + <property name="maximum"> + <number>5</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_SpeedMaxValue"> + <property name="text"> + <string notr="true">Unlimited</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>1</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QTabWidget" name="tabWidget"> + <property name="currentIndex"> + <number>0</number> + </property> + <widget class="QWidget" name="tab_main"> + <attribute name="title"> + <string>Transfer list</string> + </attribute> + <layout class="QHBoxLayout"> + <item> + <layout class="QVBoxLayout"> + <property name="spacing"> + <number>1</number> + </property> + <item> + <widget class="QToolButton" name="putOnTop"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="toolTip"> + <string>Move the selected items to the top</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/putOnTop.png</normaloff>:/Themes/Oxygen2/resources/putOnTop.png</iconset> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="pushUp"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="toolTip"> + <string>Move up the selected items</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/moveUp.png</normaloff>:/Themes/Oxygen2/resources/moveUp.png</iconset> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="pushDown"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="toolTip"> + <string>Move down the selected items</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/moveDown.png</normaloff>:/Themes/Oxygen2/resources/moveDown.png</iconset> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="putOnBottom"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="toolTip"> + <string>Move the selected items to the bottom</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/putOnBottom.png</normaloff>:/Themes/Oxygen2/resources/putOnBottom.png</iconset> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="add"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="toolTip"> + <string>Add file/folder</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset> + </property> + <property name="popupMode"> + <enum>QToolButton::InstantPopup</enum> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="del"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="toolTip"> + <string>Delete the selected items</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/remove.png</normaloff>:/Themes/Oxygen2/resources/remove.png</iconset> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="searchButton"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="toolTip"> + <string>Search</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/search.png</normaloff>:/Themes/Oxygen2/resources/search.png</iconset> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="exportTransferList"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="toolTip"> + <string>Export the transfer list</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/export-transfer-list.png</normaloff>:/Themes/Oxygen2/resources/export-transfer-list.png</iconset> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="importTransferList"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="toolTip"> + <string>Import the transfer list</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/import-transfer-list.png</normaloff>:/Themes/Oxygen2/resources/import-transfer-list.png</iconset> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <property name="spacing"> + <number>0</number> + </property> + <item> + <widget class="QTreeView" name="TransferList"> + <property name="selectionMode"> + <enum>QAbstractItemView::ExtendedSelection</enum> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <property name="uniformRowHeights"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayoutSearch"> + <property name="spacing"> + <number>0</number> + </property> + <item> + <widget class="QLineEdit" name="lineEditSearch"/> + </item> + <item> + <widget class="QPushButton" name="pushButtonSearchPrev"> + <property name="text"> + <string>Previous</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pushButtonSearchNext"> + <property name="text"> + <string>Next</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pushButtonCloseSearch"> + <property name="minimumSize"> + <size> + <width>25</width> + <height>25</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>25</width> + <height>25</height> + </size> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/remove.png</normaloff>:/Themes/Oxygen2/resources/remove.png</iconset> + </property> + <property name="flat"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_error"> + <attribute name="title"> + <string>Error</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QToolButton" name="exportErrorToTransferList"> + <property name="minimumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>22</width> + <height>22</height> + </size> + </property> + <property name="toolTip"> + <string>Export the errors into transfer list</string> + </property> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/export-transfer-list.png</normaloff>:/Themes/Oxygen2/resources/export-transfer-list.png</iconset> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QTreeWidget" name="errorList"> + <property name="selectionMode"> + <enum>QAbstractItemView::NoSelection</enum> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <property name="uniformRowHeights"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>Source</string> + </property> + </column> + <column> + <property name="text"> + <string>Destination</string> + </property> + </column> + <column> + <property name="text"> + <string>Error</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_interface"> + <attribute name="title"> + <string>Interface</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QScrollArea" name="optionsTab"> + <property name="widgetResizable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="scrollAreaWidgetContents"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>542</width> + <height>249</height> + </rect> + </property> + </widget> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + <action name="actionAddFile"> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset> + </property> + <property name="text"> + <string>Add file</string> + </property> + </action> + <action name="actionAddFolder"> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset> + </property> + <property name="text"> + <string>Add folder</string> + </property> + </action> + <action name="actionAddFileToMove"> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset> + </property> + <property name="text"> + <string>Move file(s)</string> + </property> + </action> + <action name="actionAddFolderToMove"> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset> + </property> + <property name="text"> + <string>Move folder</string> + </property> + </action> + <action name="actionAddFileToCopy"> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset> + </property> + <property name="text"> + <string>Copy file(s)</string> + </property> + </action> + <action name="actionAddFolderToCopy"> + <property name="icon"> + <iconset resource="interfaceResources.qrc"> + <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset> + </property> + <property name="text"> + <string>Copy folder</string> + </property> + </action> + </widget> + <resources> + <include location="interfaceResources.qrc"/> + </resources> + <connections> + <connection> + <sender>moreButton</sender> + <signal>toggled(bool)</signal> + <receiver>tabWidget</receiver> + <slot>setVisible(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>218</x> + <y>144</y> + </hint> + <hint type="destinationlabel"> + <x>149</x> + <y>305</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/plugins/Themes/Oxygen2/interfaceInclude.pri b/plugins/Themes/Oxygen2/interfaceInclude.pri new file mode 100755 index 0000000..354ffb9 --- /dev/null +++ b/plugins/Themes/Oxygen2/interfaceInclude.pri @@ -0,0 +1,73 @@ +CONFIG += c++11 +QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra" +mac:QMAKE_CXXFLAGS+="-stdlib=libc++" + +QT += widgets xml +TEMPLATE = lib +CONFIG += plugin +HEADERS = \ + $$PWD/ThemesFactory.h \ + $$PWD/StructEnumDefinition.h \ + $$PWD/DebugEngineMacro.h \ + $$PWD/Oxygen2Environment.h \ + $$PWD/Oxygen2Variable.h \ + $$PWD/../../../interface/PluginInterface_Themes.h \ + $$PWD/../../../interface/FacilityInterface.h \ + $$PWD/../../../interface/OptionInterface.h \ + $$PWD/../../../cpp11addition.h \ + $$PWD/TransferModel.h \ + $$PWD/interface.h \ + $$PWD/chartarea.h \ + $$PWD/fileTree.h \ + $$PWD/ProgressBarDark.h \ + $$PWD/DarkButton.h \ + $$PWD/VerticalLabel.h \ + $$PWD/radialMap/map.h \ + $$PWD/radialMap/widget.h \ + $$PWD/radialMap/radialMap.h + +SOURCES += \ + $$PWD/chartarea.cpp \ + $$PWD/fileTree.cpp \ + $$PWD/ProgressBarDark.cpp \ + $$PWD/DarkButton.cpp \ + $$PWD/VerticalLabel.cpp \ + $$PWD/radialMap/labels.cpp \ + $$PWD/radialMap/map.cpp \ + $$PWD/radialMap/widgetEvents.cpp \ + $$PWD/radialMap/widget.cpp \ + $$PWD/ThemesFactory.cpp \ + $$PWD/TransferModel.cpp \ + $$PWD/interface.cpp \ + $$PWD/../../../cpp11addition.cpp \ + $$PWD/../../../cpp11additionstringtointcpp.cpp +TARGET = $$qtLibraryTarget(interface) +TRANSLATIONS += \ + $$PWD/Languages/ar/translation.ts \ + $$PWD/Languages/de/translation.ts \ + $$PWD/Languages/el/translation.ts \ + $$PWD/Languages/en/translation.ts \ + $$PWD/Languages/es/translation.ts \ + $$PWD/Languages/fr/translation.ts \ + $$PWD/Languages/hi/translation.ts \ + $$PWD/Languages/hu/translation.ts \ + $$PWD/Languages/id/translation.ts \ + $$PWD/Languages/it/translation.ts \ + $$PWD/Languages/ja/translation.ts \ + $$PWD/Languages/ko/translation.ts \ + $$PWD/Languages/nl/translation.ts \ + $$PWD/Languages/no/translation.ts \ + $$PWD/Languages/pl/translation.ts \ + $$PWD/Languages/pt/translation.ts \ + $$PWD/Languages/ru/translation.ts \ + $$PWD/Languages/th/translation.ts \ + $$PWD/Languages/tr/translation.ts \ + $$PWD/Languages/zh/translation.ts + +FORMS += \ + $$PWD/interface.ui \ + $$PWD/themesOptions.ui + +win32: { +QT += winextras +} diff --git a/plugins/Themes/Oxygen2/interfaceResources.qrc b/plugins/Themes/Oxygen2/interfaceResources.qrc new file mode 100755 index 0000000..0a6e539 --- /dev/null +++ b/plugins/Themes/Oxygen2/interfaceResources.qrc @@ -0,0 +1,36 @@ +<RCC> + <qresource prefix="/Themes/Oxygen2"> + <file>resources/add.png</file> + <file>resources/cancel.png</file> + <file>resources/main.png</file> + <file>resources/moveDown.png</file> + <file>resources/darkmoveDown.png</file> + <file>resources/moveUp.png</file> + <file>resources/darkmoveUp.png</file> + <file>resources/player_end.png</file> + <file>resources/player_pause.png</file> + <file>resources/player_play.png</file> + <file>resources/darkplayer_end.png</file> + <file>resources/darkplayer_pause.png</file> + <file>resources/darkplayer_play.png</file> + <file>resources/putOnBottom.png</file> + <file>resources/putOnTop.png</file> + <file>resources/remove.png</file> + <file>resources/search.png</file> + <file>resources/export-transfer-list.png</file> + <file>resources/import-transfer-list.png</file> + <file>resources/SystemTrayIcon/add.png</file> + <file>resources/SystemTrayIcon/exit.png</file> + <file>resources/SystemTrayIcon/informations.png</file> + <file>resources/SystemTrayIcon/options.png</file> + <file>resources/cancelDarkE.png</file> + <file>resources/cancelDarkD.png</file> + <file>resources/progressBarout.png</file> + <file>resources/progressBarin.png</file> + <file>resources/darkButton.png</file> + <file>resources/darkButtonPushed.png</file> + <file>resources/darkButtonOver.png</file> + <file>resources/click.opus</file> + <file>resources/over.opus</file> + </qresource> +</RCC> diff --git a/plugins/Themes/Oxygen2/interfaceResources_unix.qrc b/plugins/Themes/Oxygen2/interfaceResources_unix.qrc new file mode 100755 index 0000000..1dcca48 --- /dev/null +++ b/plugins/Themes/Oxygen2/interfaceResources_unix.qrc @@ -0,0 +1,7 @@ +<RCC> + <qresource prefix="/Themes/Oxygen2"> + <file>resources/SystemTrayIcon/systray_Caught_Unix.png</file> + <file>resources/SystemTrayIcon/systray_Semiuncaught_Unix.png</file> + <file>resources/SystemTrayIcon/systray_Uncaught_Unix.png</file> + </qresource> +</RCC> diff --git a/plugins/Themes/Oxygen2/interfaceResources_windows.qrc b/plugins/Themes/Oxygen2/interfaceResources_windows.qrc new file mode 100755 index 0000000..b9915d0 --- /dev/null +++ b/plugins/Themes/Oxygen2/interfaceResources_windows.qrc @@ -0,0 +1,7 @@ +<RCC> + <qresource prefix="/Themes/Oxygen2"> + <file>resources/SystemTrayIcon/systray_Caught_Windows.png</file> + <file>resources/SystemTrayIcon/systray_Semiuncaught_Windows.png</file> + <file>resources/SystemTrayIcon/systray_Uncaught_Windows.png</file> + </qresource> +</RCC> diff --git a/plugins/Themes/Oxygen2/options.ui b/plugins/Themes/Oxygen2/options.ui new file mode 100755 index 0000000..4149e33 --- /dev/null +++ b/plugins/Themes/Oxygen2/options.ui @@ -0,0 +1,280 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>options</class> + <widget class="QWidget" name="options"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>515</width> + <height>251</height> + </rect> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="2"> + <widget class="QCheckBox" name="checkBoxShowSpeed"/> + </item> + <item row="3" column="2"> + <widget class="QFrame" name="frameProgressionColor"> + <layout class="QHBoxLayout" name="horizontalLayout"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QPushButton" name="progressColorWrite"> + <property name="minimumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="iconSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="flat"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="progressColorRead"> + <property name="minimumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="iconSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="flat"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="progressColorRemaining"> + <property name="minimumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="iconSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="flat"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item row="1" column="0" colspan="2"> + <widget class="QLabel" name="labelSpeedWithProgressBar"> + <property name="text"> + <string>Speed with progress bar</string> + </property> + </widget> + </item> + <item row="4" column="2"> + <widget class="QComboBox" name="comboBox_copyEnd"> + <item> + <property name="text"> + <string notr="true">Don't close if errors are found</string> + </property> + </item> + <item> + <property name="text"> + <string notr="true">Never close</string> + </property> + </item> + <item> + <property name="text"> + <string notr="true">Always close</string> + </property> + </item> + </widget> + </item> + <item row="0" column="0" colspan="2"> + <widget class="QLabel" name="labelShowSpeedAsMain"> + <property name="text"> + <string>Show speed as main information</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="labelProgressionColor"> + <property name="text"> + <string>Progression color</string> + </property> + </widget> + </item> + <item row="7" column="0"> + <widget class="QCheckBox" name="checkBox_limitSpeed"> + <property name="text"> + <string>Limit copy speed at:</string> + </property> + </widget> + </item> + <item row="7" column="1"> + <widget class="QSpinBox" name="limitSpeed"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="suffix"> + <string> KB/s</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>999999</number> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QCheckBox" name="showDualProgression"/> + </item> + <item row="4" column="1"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>122</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" colspan="2"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Show dual progression</string> + </property> + </widget> + </item> + <item row="6" column="0"> + <widget class="QLabel" name="label_Slider_speed"> + <property name="text"> + <string>Limit copy speed at:</string> + </property> + </widget> + </item> + <item row="8" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>At the end of the copy: </string> + </property> + </widget> + </item> + <item row="1" column="2"> + <widget class="QCheckBox" name="speedWithProgressBar"/> + </item> + <item row="6" column="2"> + <widget class="QLabel" name="label_SpeedMaxValue"> + <property name="text"> + <string notr="true">Unlimited</string> + </property> + </widget> + </item> + <item row="6" column="1"> + <widget class="QSlider" name="SliderSpeed"> + <property name="maximum"> + <number>5</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>checkBox_limitSpeed</sender> + <signal>clicked(bool)</signal> + <receiver>limitSpeed</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>109</x> + <y>144</y> + </hint> + <hint type="destinationlabel"> + <x>199</x> + <y>144</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/plugins/Themes/Oxygen2/plugin.json b/plugins/Themes/Oxygen2/plugin.json new file mode 100755 index 0000000..9e26dfe --- /dev/null +++ b/plugins/Themes/Oxygen2/plugin.json @@ -0,0 +1 @@ +{}
\ No newline at end of file diff --git a/plugins/Themes/Oxygen2/radialMap/labels.cpp b/plugins/Themes/Oxygen2/radialMap/labels.cpp new file mode 100755 index 0000000..c5ff770 --- /dev/null +++ b/plugins/Themes/Oxygen2/radialMap/labels.cpp @@ -0,0 +1,338 @@ +/*********************************************************************** +* Copyright 2003-2004 Max Howell <max.howell@methylblue.com> +* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org> +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +***********************************************************************/ + +#include <QFont> +#include <QFontMetrics> +#include <QPainter> +#include <QVector> + +#include "../fileTree.h" +#include "radialMap.h" +#include "widget.h" +#include <math.h> +#include <qmath.h> + +namespace RadialMap +{ +class Label +{ +public: + Label(const RadialMap::Segment *s, int l) : segment(s), level(l), angle(segment->start() + (segment->length() / 2)) { } + + bool tooClose(const int otherAngle) const { + return (angle > otherAngle - LABEL_ANGLE_MARGIN && angle < otherAngle + LABEL_ANGLE_MARGIN); + } + + const RadialMap::Segment *segment; + const unsigned int level; + const int angle; + + int targetX, targetY, middleX, startY, startX; + int textX, textY, tw, th; + + QString qs; +}; + +void RadialMap::Widget::paintExplodedLabels(QPainter &paint) const +{ + //we are a friend of RadialMap::Map + + QVector<Label*> list; + unsigned int startLevel = 0; + + + //1. Create list of labels sorted in the order they will be rendered + + if (m_focus && m_focus->file() != m_tree) { //separate behavior for selected vs unselected segments + //don't bother with files + if (m_focus && m_focus->file() && !m_focus->file()->isFolder()) { + return; + } + + //find the range of levels we will be potentially drawing labels for + //startLevel is the level above whatever m_focus is in + for (const Folder *p = (const Folder*)m_focus->file(); p != m_tree; ++startLevel) { + p = p->parent(); + } + + //range=2 means 2 levels to draw labels for + + const uint start = m_focus->start(); + const uint end = m_focus->end(); //boundary angles + const uint minAngle = int(m_focus->length() * LABEL_MIN_ANGLE_FACTOR); + + + //**** Levels should be on a scale starting with 0 + //**** range is a useless parameter + //**** keep a topblock var which is the lowestLevel OR startLevel for indentation purposes + for (unsigned int i = startLevel; i <= m_map.m_visibleDepth; ++i) { + for (const Segment *segment : m_map.m_signature[i]) { + if (segment->start() >= start && segment->end() <= end) { + if (segment->length() > minAngle) { + list.append(new Label(segment, i)); + } + } + } + } + } else { + for (Segment *segment : *m_map.m_signature) { + if (segment->length() > 288) { + list.append(new Label(segment, 0)); + + } + } + } + + std::sort(list.begin(), list.end(), [](Label *item1, Label *item2) { + //you add 1440 to work round the fact that later you want the circle split vertically + //and as it is you start at 3 o' clock. It's to do with rightPrevY, stops annoying bug + + int angle1 = (item1)->angle + 1440; + int angle2 = (item2)->angle + 1440; + + // Also sort by level + if (angle1 == angle2) { + return (item1->level > item2->level); + } + + if (angle1 > 5760) angle1 -= 5760; + if (angle2 > 5760) angle2 -= 5760; + + return (angle1 < angle2); + + }); + + //2. Check to see if any adjacent labels are too close together + // if so, remove it (the least significant labels, since we sort by level too). + + int pos = 0; + while (pos < list.size() - 1) { + if (list[pos]->tooClose(list[pos+1]->angle)) { + delete list.takeAt(pos+1); + } else { + ++pos; + } + } + + //used in next two steps + bool varySizes; + //**** should perhaps use doubles + int *sizes = new int [ m_map.m_visibleDepth + 1 ]; //**** make sizes an array of floats I think instead (or doubles) + + // If the minimum is larger than the default it fucks up further down + if (paint.font().pointSize() < 0 || + paint.font().pointSize() < minFontPitch) { + QFont font = paint.font(); + font.setPointSize(minFontPitch); + paint.setFont(font); + } + + QVector<Label*>::iterator it; + + do { + //3. Calculate font sizes + + { + //determine current range of levels to draw for + uint range = 0; + + for (Label *label : list) { + range = qMax(range, label->level); + + //**** better way would just be to assign if nothing is range + } + + range -= startLevel; //range 0 means 1 level of labels + + varySizes = range != 0; + + if (varySizes) { + //create an array of font sizes for various levels + //will exceed normal font pitch automatically if necessary, but not minPitch + //**** this needs to be checked lots + + //**** what if this is negative (min size gtr than default size) + uint step = (paint.font().pointSize() - minFontPitch) / range; + if (step == 0) { + step = 1; + } + + for (uint x = range + startLevel, y = minFontPitch; x >= startLevel; y += step, --x) { + sizes[x] = y; + } + } + } + + //4. determine label co-ordinates + + + const int preSpacer = int(m_map.m_ringBreadth * 0.5) + m_map.m_innerRadius; + const int fullStrutLength = (m_map.width() - m_map.MAP_2MARGIN) / 2 + LABEL_MAP_SPACER; //full length of a strut from map center + + int prevLeftY = 0; + int prevRightY = height(); + + QFont font; + + for (it = list.begin(); it != list.end(); ++it) { + Label *label = *it; + //** bear in mind that text is drawn with QPoint param as BOTTOM left corner of text box + QString string = label->segment->file()->displayName(); + if (varySizes) { + font.setPointSize(sizes[label->level]); + } + QFontMetrics fontMetrics(font); + #if QT_VERSION < QT_VERSION_CHECK(5, 6, 0) + const int minTextWidth = fontMetrics.width(QStringLiteral("M...")) + LABEL_TEXT_HMARGIN; // Fully elided string + #else + const int minTextWidth = fontMetrics.horizontalAdvance(QStringLiteral("M...")) + LABEL_TEXT_HMARGIN; // Fully elided string + #endif + + const int fontHeight = fontMetrics.height() + LABEL_TEXT_VMARGIN; //used to ensure label texts don't overlap + const int lineSpacing = fontHeight / 4; + + const bool rightSide = (label->angle < 1440 || label->angle > 4320); + + double sinra, cosra; + const double ra = M_PI/2880 * label->angle; //convert to radians + sinra = qSin(ra); + cosra = qCos(ra); + + const int spacer = preSpacer + m_map.m_ringBreadth * label->level; + + const int centerX = m_map.width() / 2 + m_offset.x(); //centre relative to canvas + const int centerY = m_map.height() / 2 + m_offset.y(); + int targetX = centerX + cosra * spacer; + int targetY = centerY - sinra * spacer; + int startX = targetX + cosra * (fullStrutLength - spacer + m_map.m_ringBreadth / 2); + int startY = targetY - sinra * (fullStrutLength - spacer); + + if (rightSide) { //righthand side, going upwards + if (startY > prevRightY /*- fmh*/) { //then it is too low, needs to be drawn higher + startY = prevRightY /*- fmh*/; + } + } else {//lefthand side, going downwards + if (startY < prevLeftY/* + fmh*/) { //then we're too high, need to be drawn lower + startY = prevLeftY /*+ fmh*/; + } + } + + int middleX = targetX - (startY - targetY) / tan(ra); + int textY = startY + lineSpacing; + + int textX; + #if QT_VERSION < QT_VERSION_CHECK(5, 6, 0) + const int textWidth = fontMetrics.width(string) + LABEL_TEXT_HMARGIN; + #else + const int textWidth = fontMetrics.horizontalAdvance(string) + LABEL_TEXT_HMARGIN; + #endif + if (rightSide) { + if (startX + minTextWidth > width() || textY < fontHeight || middleX < targetX) { + //skip this strut + //**** don't duplicate this code + list.erase(it); //will delete the label and set it to list.current() which _should_ be the next ptr + break; + } + + prevRightY = textY - fontHeight - lineSpacing; //must be after above's "continue" + + if (m_offset.x() + m_map.width() + textWidth < width()) { + startX = m_offset.x() + m_map.width(); + } else { + startX = qMax(width() - textWidth, startX); + string = fontMetrics.elidedText(string, Qt::ElideMiddle, width() - startX); + } + + textX = startX + LABEL_TEXT_HMARGIN; + } else { // left side + if (startX - minTextWidth < 0 || textY > height() || middleX > targetX) { + //skip this strut + list.erase(it); //will delete the label and set it to list.current() which _should_ be the next ptr + break; + } + + prevLeftY = textY + fontHeight - lineSpacing; + + if (m_offset.x() - textWidth > 0) { + startX = m_offset.x(); + textX = startX - textWidth - LABEL_TEXT_HMARGIN; + } else { + textX = 0; + string = fontMetrics.elidedText(string, Qt::ElideMiddle, startX); + #if QT_VERSION < QT_VERSION_CHECK(5, 6, 0) + startX = fontMetrics.width(string) + LABEL_TEXT_HMARGIN; + #else + startX = fontMetrics.horizontalAdvance(string) + LABEL_TEXT_HMARGIN; + #endif + } + } + + label->targetX = targetX; + label->targetY = targetY; + label->middleX = middleX; + label->startY = startY; + label->startX = startX; + label->textX = textX; + label->textY = textY; + label->qs = string; + } + + //if an element is deleted at this stage, we need to do this whole + //iteration again, thus the following loop + //**** in rare case that deleted label was last label in top level + // and last in labelList too, this will not work as expected (not critical) + + } while (it != list.end()); + + + //5. Render labels + + QFont font; + for (Label *label : list) { + if (varySizes) { + //**** how much overhead in making new QFont each time? + // (implicate sharing remember) + font.setPointSize(sizes[label->level]); + paint.setFont(font); + } + + paint.setPen(QPen(QColor(0,0,0),2)); + paint.drawLine(label->targetX, label->targetY, label->middleX, label->startY); + paint.drawLine(label->middleX, label->startY, label->startX, label->startY); + + paint.setPen(QPen(QColor(255,255,255),1)); + paint.drawLine(label->targetX, label->targetY, label->middleX, label->startY); + paint.drawLine(label->middleX, label->startY, label->startX, label->startY); + + paint.setPen(QPen(QColor(0,0,0),1)); + paint.drawText(label->textX-1, label->textY-1, label->qs); + paint.drawText(label->textX+1, label->textY-1, label->qs); + paint.drawText(label->textX+1, label->textY+1, label->qs); + paint.drawText(label->textX-1, label->textY+1, label->qs); + paint.setPen(QPen(QColor(255,255,255),1)); + paint.drawText(label->textX, label->textY, label->qs); + } + + qDeleteAll(list); + delete [] sizes; +} +} + diff --git a/plugins/Themes/Oxygen2/radialMap/map.cpp b/plugins/Themes/Oxygen2/radialMap/map.cpp new file mode 100755 index 0000000..a7306ac --- /dev/null +++ b/plugins/Themes/Oxygen2/radialMap/map.cpp @@ -0,0 +1,421 @@ +/*********************************************************************** +* Copyright 2003-2004 Max Howell <max.howell@methylblue.com> +* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org> +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +***********************************************************************/ + +#include <QApplication> //make() +#include <QImage> //make() & paint() +#include <QFont> //ctor +#include <QFontMetrics> //ctor +#include <QPainter> +#include <QBrush> + +#include "radialMap.h" // defines +#include "../interface.h" +#include "../fileTree.h" +#include "widget.h" +#include <cmath> +#include <qmath.h> + +RadialMap::Map::Map() + : m_signature(nullptr) + , m_visibleDepth(DEFAULT_RING_DEPTH) + , m_ringBreadth(MIN_RING_BREADTH) + , m_innerRadius(0) + , defaultRingDepth(4) +{ + + //FIXME this is all broken. No longer is a maximum depth! + const int fmh = QFontMetrics(QFont()).height(); + const int fmhD4 = fmh / 4; + MAP_2MARGIN = 2 * (fmh - (fmhD4 - LABEL_MAP_SPACER)); //margin is dependent on fitting in labels at top and bottom + + m_minSize=27300; +} + +RadialMap::Map::~Map() +{ + delete [] m_signature; +} + +void RadialMap::Map::invalidate() +{ + delete [] m_signature; + m_signature = nullptr; + + m_visibleDepth = defaultRingDepth; +} + +void RadialMap::Map::make(const Folder *tree, bool refresh) +{ + if(height()<1) + return; + //slow operation so set the wait cursor + QApplication::setOverrideCursor(Qt::WaitCursor); + + //build a signature of visible components + { + //**** REMOVE NEED FOR the +1 with MAX_RING_DEPTH uses + //**** add some angle bounds checking (possibly in Segment ctor? can I delete in a ctor?) + //**** this is a mess + + delete [] m_signature; + m_signature = new std::vector<Segment*>[m_visibleDepth + 1]; + + m_root = tree; + + if (!refresh) { + quint64 varSize=tree->size(); + quint64 varHeight=height(); + quint64 varA=(varSize * 3); + quint64 varB=(PI * varHeight - MAP_2MARGIN); + m_minSize = varA / varB; + findVisibleDepth(tree); + } + + setRingBreadth(); + + // Calculate ring size limits + m_limits.resize(m_visibleDepth + 1); + const double size = m_root->size(); + const double pi2B = M_PI * 4 * m_ringBreadth; + for (uint depth = 0; depth <= m_visibleDepth; ++depth) { + m_limits[depth] = uint(size / double(pi2B * (depth + 1))); //min is angle that gives 3px outer diameter for that depth + } + + build(tree); + } + + //colour the segments + colorise(); + + m_centerText = tree->humanReadableSize()+"\n"+QObject::tr("%1 files").arg(Themes::simplifiedBigNum(tree->children())); + + //paint the pixmap + paint(); + + QApplication::restoreOverrideCursor(); +} + +void RadialMap::Map::setRingBreadth() +{ + //FIXME called too many times on creation + + m_ringBreadth = (height() - MAP_2MARGIN) / (2 * m_visibleDepth + 4); + m_ringBreadth = qBound(MIN_RING_BREADTH, m_ringBreadth, MAX_RING_BREADTH); +} + +void RadialMap::Map::findVisibleDepth(const Folder *dir, uint currentDepth) +{ + + //**** because I don't use the same minimumSize criteria as in the visual function + // this can lead to incorrect visual representation + //**** BUT, you can't set those limits until you know m_depth! + + //**** also this function doesn't check to see if anything is actually visible + // it just assumes that when it reaches a new level everything in it is visible + // automatically. This isn't right especially as there might be no files in the + // dir provided to this function! + + static uint stopDepth = 0; + + if (dir == m_root) { + stopDepth = m_visibleDepth; + m_visibleDepth = 0; + } + + if (m_visibleDepth < currentDepth) m_visibleDepth = currentDepth; + if (m_visibleDepth >= stopDepth) return; + + for(const auto& n : dir->folders) + { + Folder * folder=n.second; + if (folder->size() > m_minSize) { + findVisibleDepth(folder, currentDepth + 1); //if no files greater than min size the depth is still recorded + } + } +} + +//**** segments currently overlap at edges (i.e. end of first is start of next) +bool RadialMap::Map::build(const Folder * const dir, const uint depth, uint a_start, const uint a_end) +{ + //first iteration: dir == m_root + + if (dir->children() == 0) //we do fileCount rather than size to avoid chance of divide by zero later + return false; + + uint64_t hiddenSize = 0; + uint hiddenFileCount = 0; + + for(const auto& n : dir->folders) + { + Folder * folder=n.second; + if (folder->size() < m_limits[depth] * 6) { // limit is half a degree? we want at least 3 degrees + hiddenSize += folder->size(); + hiddenFileCount += folder->children(); //need to add one to count the dir as well + ++hiddenFileCount; + continue; + } + unsigned int a_len = (unsigned int)(5760 * ((double)folder->size() / (double)m_root->size())); + Segment *s = new Segment(folder, a_start, a_len); + m_signature[depth].push_back(s); + if (depth != m_visibleDepth) { + //recurse + s->m_hasHiddenChildren = build(folder, depth + 1, a_start, a_start + a_len); + } else { + s->m_hasHiddenChildren = true; + } + a_start += a_len; //**** should we add 1? + } + for (File *file : dir->onlyFiles) { + if (file->size() < m_limits[depth] * 6) { // limit is half a degree? we want at least 3 degrees + hiddenSize += file->size(); + ++hiddenFileCount; + continue; + } + unsigned int a_len = (unsigned int)(5760 * ((double)file->size() / (double)m_root->size())); + Segment *s = new Segment(file, a_start, a_len); + m_signature[depth].push_back(s); + a_start += a_len; //**** should we add 1? + } + + if (hiddenFileCount == dir->children()) { + return true; + } + + if (depth == 0 && hiddenSize >= m_limits[depth] && hiddenFileCount > 0) { + //append a segment for unrepresented space - a "fake" segment + const QString s = QObject::tr("%1 file, with an average size of %2") + .arg(hiddenFileCount) + .arg(QString::fromStdString(File::facilityEngine->sizeToString(hiddenSize/hiddenFileCount))); + + + (m_signature + depth)->push_back(new Segment(new File(s.toUtf8().constData(), hiddenSize), a_start, a_end - a_start, true)); + } + + return false; +} + +bool RadialMap::Map::resize(const QRect &rect) +{ + //there's a MAP_2MARGIN border + + const int mw=width(); + const int mh=height(); + const int cw=rect.width(); + const int ch=rect.height(); + + if (cw < mw || ch < mh || (cw > mw && ch > mh)) + { + uint size = ((cw < ch) ? cw : ch) - MAP_2MARGIN; + + //this also causes uneven sizes to always resize when resizing but map is small in that dimension + //size -= size % 2; //even sizes mean less staggered non-antialiased resizing + + { + const uint minSize = MIN_RING_BREADTH * 2 * (m_visibleDepth + 2); + + if (size < minSize) + size = minSize; + + //this QRect is used by paint() + m_rect.setRect(0,0,size,size); + } + m_pixmap = QPixmap(m_rect.size()); + + //resize the pixmap + size += MAP_2MARGIN; + + if (m_signature != nullptr) + { + setRingBreadth(); + paint(); + } + + return true; + } + + return false; +} + +void RadialMap::Map::colorise() +{ + if (!m_signature || m_signature->empty()) { + //std::cerr << "no signature yet" << std::endl; + return; + } + + QColor cp, cb; + double darkness = 1; + double contrast = (double)94 / (double)100; + int h, s1, s2, v1, v2; + + for (uint i = 0; i <= m_visibleDepth; ++i, darkness += 0.04) { + for (Segment *segment : m_signature[i]) { + h = int(segment->start() / 16); + s1 = 160; + v1 = (int)(255.0 / darkness); //doing this more often than once seems daft! + + v2 = v1 - int(contrast * v1); + s2 = s1 + int(contrast * (255 - s1)); + + if (s1 < 80) s1 = 80; //can fall too low and makes contrast between the files hard to discern + + if (segment->isFake()) { //multi-file + cb.setHsv(h, s2, (v2 < 90) ? 90 : v2); //too dark if < 100 + cp.setHsv(h, 17, v1); + } else if (!segment->file()->isFolder()) { //file + cb.setHsv(h, 17, v1); + cp.setHsv(h, 17, v2); + } else { //folder + cb.setHsv(h, s1, v1); //v was 225 + cp.setHsv(h, s2, v2); //v was 225 - delta + } + + segment->setPalette(cp, cb); + } + } +} + +void RadialMap::Map::paint(bool antialias) +{ + QPainter paint; + QRect rect = m_rect; + + rect.adjust(5, 5, -5, -5); + m_pixmap.fill(Qt::transparent); + + //m_rect.moveRight(1); // Uncommenting this breaks repainting when recreating map from cache + + + //**** best option you can think of is to make the circles slightly less perfect, + // ** i.e. slightly eliptic when resizing inbetween + + if (m_pixmap.isNull()) + return; + + if (!paint.begin(&m_pixmap)) { + //qWarning() << "Filelight::RadialMap Failed to initialize painting, returning..."; + return; + } + + if (antialias) { + paint.translate(0.7, 0.7); + paint.setRenderHint(QPainter::Antialiasing); + } + + int step = m_ringBreadth; + int excess = -1; + + //do intelligent distribution of excess to prevent nasty resizing + if (m_ringBreadth != MAX_RING_BREADTH && m_ringBreadth != MIN_RING_BREADTH) { + excess = rect.width() % m_ringBreadth; + ++step; + } + + for (int x = m_visibleDepth; x >= 0; --x) + { + int width = rect.width() / 2; + //clever geometric trick to find largest angle that will give biggest arrow head + uint a_max = int(acos((double)width / double((width + 5))) * (180*16 / M_PI)); + + for (Segment *segment : m_signature[x]) { + //draw the pie segments, most of this code is concerned with drawing the little + //arrows on the ends of segments when they have hidden files + + paint.setPen(segment->pen()); + + if (segment->hasHiddenChildren()) + { + //draw arrow head to indicate undisplayed files/directories + QPolygon pts(3); + QPoint pos, cpos = rect.center(); + uint a[3] = { segment->start(), segment->length(), 0 }; + + a[2] = a[0] + (a[1] / 2); //assign to halfway between + if (a[1] > a_max) + { + a[1] = a_max; + a[0] = a[2] - a_max / 2; + } + + a[1] += a[0]; + + for (int i = 0, radius = width; i < 3; ++i) + { + double ra = M_PI/(180*16) * a[i], sinra, cosra; + + if (i == 2) + radius += 5; + sinra = qSin(ra); + cosra = qCos(ra); + pos.rx() = cpos.x() + static_cast<int>(cosra * radius); + pos.ry() = cpos.y() - static_cast<int>(sinra * radius); + pts.setPoint(i, pos); + } + + paint.setBrush(segment->pen()); + paint.drawPolygon(pts); + } + + paint.setPen(QColor(120,120,120)); + paint.setBrush(segment->brush()); + paint.drawPie(rect, segment->start(), segment->length()); + + if (segment->hasHiddenChildren()) + { + //**** code is bloated! + paint.save(); + QPen pen = paint.pen(); + int width = 2; + pen.setWidth(width); + paint.setPen(pen); + QRect rect2 = rect; + width /= 2; + rect2.adjust(width, width, -width, -width); + paint.drawArc(rect2, segment->start(), segment->length()); + paint.restore(); + } + } + + if (excess >= 0) { //excess allows us to resize more smoothly (still crud tho) + if (excess < 2) //only decrease rect by more if even number of excesses left + --step; + excess -= 2; + } + + rect.adjust(step, step, -step, -step); + } + + // if(excess > 0) rect.addCoords(excess, excess, 0, 0); //ugly + + paint.setPen(QColor(120,120,120)); + paint.setBrush(QColor(255,255,255)); + paint.drawEllipse(rect); + if(width()>200) + { + paint.setPen(QColor(0,0,0)); + paint.drawText(rect, Qt::AlignCenter, m_centerText); + } + + m_innerRadius = rect.width() / 2; //rect.width should be multiple of 2 + + paint.end(); +} + diff --git a/plugins/Themes/Oxygen2/radialMap/map.h b/plugins/Themes/Oxygen2/radialMap/map.h new file mode 100755 index 0000000..a78e56d --- /dev/null +++ b/plugins/Themes/Oxygen2/radialMap/map.h @@ -0,0 +1,85 @@ +/*********************************************************************** +* Copyright 2003-2004 Max Howell <max.howell@methylblue.com> +* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org> +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +***********************************************************************/ + +#ifndef RadialMapMAP_H +#define RadialMapMAP_H + +#include "../fileTree.h" + +#include <QPixmap> +#include <QRect> +#include <QString> + +namespace RadialMap { +class Segment; + +class Map +{ +public: + explicit Map(); + ~Map(); + + void make(const Folder *, bool = false); + bool resize(const QRect&); + + bool isNull() const { + return (m_signature == nullptr); + } + void invalidate(); + + int height() const { + return m_rect.height(); + } + int width() const { + return m_rect.width(); + } + QPixmap pixmap() const { + return m_pixmap; + } + + + friend class Widget; + +private: + void paint(bool antialias = true); + void colorise(); + void setRingBreadth(); + void findVisibleDepth(const Folder *dir, uint currentDepth = 0); + bool build(const Folder* const dir, const uint depth =0, uint a_start =0, const uint a_end =5760); + + std::vector<Segment*> *m_signature; + + const Folder *m_root; + uint m_minSize; + std::vector<uint64_t> m_limits; + QRect m_rect; + uint m_visibleDepth; ///visible level depth of system + QPixmap m_pixmap; + int m_ringBreadth; + uint m_innerRadius; ///radius of inner circle + QString m_centerText; + + uint MAP_2MARGIN; + int defaultRingDepth; +}; +} + +#endif diff --git a/plugins/Themes/Oxygen2/radialMap/radialMap.h b/plugins/Themes/Oxygen2/radialMap/radialMap.h new file mode 100755 index 0000000..7935010 --- /dev/null +++ b/plugins/Themes/Oxygen2/radialMap/radialMap.h @@ -0,0 +1,109 @@ +/*********************************************************************** +* Copyright 2003-2004 Max Howell <max.howell@methylblue.com> +* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org> +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +***********************************************************************/ + +#ifndef RadialMapRADIALMAP_H +#define RadialMapRADIALMAP_H + +#include <QColor> + +class File; + +namespace RadialMap +{ +class Segment //all angles are in 16ths of degrees +{ +public: + Segment(const File *f, uint s, uint l, bool isFake = false) + : m_angleStart(s) + , m_angleSegment(l) + , m_file(f) + , m_hasHiddenChildren(false) + , m_fake(isFake) {} + ~Segment(); + + uint start() const { + return m_angleStart; + } + uint length() const { + return m_angleSegment; + } + uint end() const { + return m_angleStart + m_angleSegment; + } + const File *file() const { + return m_file; + } + const QColor& pen() const { + return m_pen; + } + const QColor& brush() const { + return m_brush; + } + + bool isFake() const { + return m_fake; + } + bool hasHiddenChildren() const { + return m_hasHiddenChildren; + } + + bool intersects(uint a) const { + return ((a >= start()) && (a < end())); + } + + friend class Map; + friend class Builder; + +private: + void setPalette(const QColor &p, const QColor &b) { + m_pen = p; + m_brush = b; + } + + const uint m_angleStart, m_angleSegment; + const File* const m_file; + QColor m_pen, m_brush; + bool m_hasHiddenChildren; + const bool m_fake; +}; +} + + +#ifndef PI +#define PI 3.141592653589793 +#endif +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327 +#endif + +#define MIN_RING_BREADTH 7 +#define MAX_RING_BREADTH 60 +#define DEFAULT_RING_DEPTH 4 //first level = 0 +#define MIN_RING_DEPTH 0 + +#define LABEL_MAP_SPACER 7 +#define LABEL_TEXT_HMARGIN 5 +#define LABEL_TEXT_VMARGIN 0 +#define LABEL_ANGLE_MARGIN 32 +#define LABEL_MIN_ANGLE_FACTOR 0.05 +#define LABEL_MAX_CHARS 30 + +#endif diff --git a/plugins/Themes/Oxygen2/radialMap/widget.cpp b/plugins/Themes/Oxygen2/radialMap/widget.cpp new file mode 100755 index 0000000..9baf6db --- /dev/null +++ b/plugins/Themes/Oxygen2/radialMap/widget.cpp @@ -0,0 +1,211 @@ +/*********************************************************************** +* Copyright 2003-2004 Max Howell <max.howell@methylblue.com> +* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org> +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +***********************************************************************/ + +#include "widget.h" + +#include "../fileTree.h" +#include "radialMap.h" //constants +#include "map.h" + +#include <QUrl> + +#include <QApplication> //sendEvent +#include <QBitmap> //ctor - finding cursor size +#include <QCursor> //slotPostMouseEvent() +#include <QTimer> //member +#include <QWidget> + + +RadialMap::Widget::Widget(const bool dark, QWidget *parent) + : QWidget(parent) + , m_tree(nullptr) + , m_focus(nullptr) + , m_map() + , m_rootSegment(nullptr) //TODO we don't delete it, *shrug* + , m_toBeDeleted(nullptr) + , minFontPitch(QFont().pointSize() - 3) +{ + setMaximumSize(16777215, 16777215); + setMinimumSize(150, 100); + + connect(this, &Widget::folderCreated, this, &Widget::sendFakeMouseEvent); + connect(&m_timer, &QTimer::timeout, this, &Widget::resizeTimeout); + m_updateCache.start(100); + connect(&m_updateCache, &QTimer::timeout, this, &Widget::updateCache); + m_tooltip.setFrameShape(QFrame::StyledPanel); + m_tooltip.setWindowFlags(Qt::ToolTip | Qt::WindowTransparentForInput); + this->dark=dark; + newData=false; +} + +RadialMap::Widget::~Widget() +{ + if(m_rootSegment!=nullptr) + delete m_rootSegment; +} + + +QString RadialMap::Widget::path() const +{ + return m_tree->displayPath(); +} + +QUrl RadialMap::Widget::url(File const * const file) const +{ + return file ? file->url() : m_tree->url(); +} + +void RadialMap::Widget::invalidate() +{ + newData=true; + if (isValid()) + { + //**** have to check that only way to invalidate is this function frankly + //**** otherwise you may get bugs.. + + //disable mouse tracking + setMouseTracking(false); + + // Get this before reseting m_tree below + QUrl invalidatedUrl(url()); + + //ensure this class won't think we have a map still + m_tree = nullptr; + m_focus = nullptr; + + delete m_rootSegment; + m_rootSegment = nullptr; + + //FIXME move this disablement thing no? + // it is confusing in other areas, like the whole createFromCache() thing + m_map.invalidate(); + update(); + + //tell rest of Filelight + emit invalidated(invalidatedUrl); + } +} + +void +RadialMap::Widget::create(const Folder *tree) +{ + newData=true; + //it is not the responsibility of create() to invalidate first + //skip invalidation at your own risk + + //FIXME make it the responsibility of create to invalidate first + + if (tree) + { + m_focus = nullptr; + //generate the filemap image + m_map.make(tree); + + //this is the inner circle in the center + if(m_rootSegment!=nullptr) + delete m_rootSegment; + m_rootSegment = new Segment(tree, 0, 16*360); + + setMouseTracking(true); + } + + m_tree = tree; + + //tell rest of Filelight + emit folderCreated(tree); +} + +void +RadialMap::Widget::createFromCache(const Folder *tree) +{ + //no scan was necessary, use cached tree, however we MUST still emit invalidate + invalidate(); + create(tree); +} + +void +RadialMap::Widget::sendFakeMouseEvent() //slot +{ + QMouseEvent me(QEvent::MouseMove, mapFromGlobal(QCursor::pos()), Qt::NoButton, Qt::NoButton, Qt::NoModifier); + QApplication::sendEvent(this, &me); + update(); +} + +void +RadialMap::Widget::resizeTimeout() //slot +{ + // the segments are about to erased! + // this was a horrid bug, and proves the OO programming should be obeyed always! + m_focus = nullptr; + if (m_tree) + m_map.make(m_tree, true); + updateCache(); +} + +void +RadialMap::Widget::updateCache() +{ + if(newData) + { + newData=false; + cache=QPixmap(); + update(); + } +} + +void +RadialMap::Widget::refresh(int filth) +{ + //TODO consider a more direct connection + + if (!m_map.isNull()) + { + switch (filth) + { + case 1: + m_focus=nullptr; + m_map.make(m_tree, true); //true means refresh only + break; + + case 2: + m_map.paint(true); //antialiased painting + break; + + case 3: + m_map.colorise(); //FALL THROUGH! + case 4: + m_map.paint(); + + default: + break; + } + + update(); + } +} + +RadialMap::Segment::~Segment() +{ + if (isFake()) + delete m_file; //created by us in Builder::build() +} + + diff --git a/plugins/Themes/Oxygen2/radialMap/widget.h b/plugins/Themes/Oxygen2/radialMap/widget.h new file mode 100755 index 0000000..50dfea9 --- /dev/null +++ b/plugins/Themes/Oxygen2/radialMap/widget.h @@ -0,0 +1,118 @@ +/*********************************************************************** +* Copyright 2003-2004 Max Howell <max.howell@methylblue.com> +* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org> +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +***********************************************************************/ + +#ifndef RadialMapWIDGET_H +#define RadialMapWIDGET_H + +#include <QUrl> + +#include <QLabel> +#include <QDragEnterEvent> +#include <QDropEvent> +#include <QMouseEvent> +#include <QPaintEvent> +#include <QResizeEvent> +#include <QWidget> +#include <QTimer> + +#include "map.h" + +class Folder; +class File; +namespace KIO { +class Job; +} + +namespace RadialMap +{ +class Segment; + +class Widget : public QWidget +{ + Q_OBJECT + +public: + explicit Widget(const bool dark,QWidget* = nullptr); + ~Widget() override; + QString path() const; + QUrl url(File const * const = nullptr) const; + + bool isValid() const { + return m_tree != nullptr; + } + + friend class Label; //FIXME badness + +public Q_SLOTS: + void create(const Folder*); + void invalidate(); + void resizeTimeout(); + void refresh(int); + +private Q_SLOTS: + void sendFakeMouseEvent(); + void createFromCache(const Folder*); + +Q_SIGNALS: + void activated(const QUrl&); + void invalidated(const QUrl&); + void folderCreated(const Folder*); + void mouseHover(const QString&); + void giveMeTreeFor(const QUrl&); + +protected: + void changeEvent(QEvent*) override; + void mouseMoveEvent(QMouseEvent*) override; + void paintEvent(QPaintEvent*) override; + void resizeEvent(QResizeEvent*) override; + void enterEvent(QEvent*) override; + void leaveEvent(QEvent*) override; + +protected: + const Segment *segmentAt(QPoint&) const; //FIXME const reference for a library others can use + const Segment *rootSegment() const { + return m_rootSegment; ///never == 0 + } + const Segment *focusSegment() const { + return m_focus; ///0 == nothing in focus + } + +private: + void paintExplodedLabels(QPainter&) const; + void updateCache(); + + const Folder *m_tree; + const Segment *m_focus; + QPoint m_offset; + QTimer m_timer; + QTimer m_updateCache; + Map m_map; + Segment *m_rootSegment; + const Segment *m_toBeDeleted; + QLabel m_tooltip; + bool dark; + int minFontPitch; + QPixmap cache; + bool newData; +}; +} + +#endif diff --git a/plugins/Themes/Oxygen2/radialMap/widgetEvents.cpp b/plugins/Themes/Oxygen2/radialMap/widgetEvents.cpp new file mode 100755 index 0000000..d9c23a0 --- /dev/null +++ b/plugins/Themes/Oxygen2/radialMap/widgetEvents.cpp @@ -0,0 +1,254 @@ +/*********************************************************************** +* Copyright 2003-2004 Max Howell <max.howell@methylblue.com> +* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org> +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +***********************************************************************/ + +#include "../fileTree.h" +#include "radialMap.h" //class Segment +#include "widget.h" + +#include <QMenu> //::mousePressEvent() + +#include <QPainter> +#include <QTimer> //::resizeEvent() +#include <QDropEvent> +#include <QPaintEvent> +#include <QResizeEvent> +#include <QMouseEvent> + +#include <cmath> //::segmentAt() + +void RadialMap::Widget::resizeEvent(QResizeEvent*) +{ + QRect rectTemp(rect()); + if (m_map.resize(rectTemp)) + m_timer.setSingleShot(true); + m_timer.start(100); //will cause signature to rebuild for new size + + //always do these as they need to be initialised on creation + const unsigned int w=width(); + const unsigned int h=height(); + m_offset.rx() = (w - m_map.width()) / 2; + m_offset.ry() = (h - m_map.height()) / 2; +} + +void RadialMap::Widget::paintEvent(QPaintEvent*) +{ + if(cache.isNull() || cache.width()!=width() || cache.height()!=height()) + { + QImage temp(width(),height(),QImage::Format_ARGB32); + temp.fill(Qt::transparent); + QPainter paint; + paint.begin(&temp); + + if (!m_map.isNull()) + { + QPixmap p(m_map.pixmap()); + + int margin=((p.width() < p.height()) ? p.width() : p.height())/50; + if(margin<1) + margin=1; + paint.setRenderHint(QPainter::Antialiasing); + QRect rect = p.rect(); + rect.moveTo(m_offset); + rect.adjust(-margin, -margin, margin, margin); + paint.setPen(QColor(200,200,200)); + paint.setBrush(QColor(255,255,255)); + paint.drawEllipse(rect); + paint.setPen(QColor(0,0,0)); + + paint.drawPixmap(m_offset,p); + } + else + { + const unsigned int w=width(); + const unsigned int h=height(); + unsigned int min=w; + unsigned int x=0; + unsigned int y=0; + if(h<w) + { + min=h; + x=(width()-min)/2; + } + else + y=(height()-min)/2; + + paint.setRenderHint(QPainter::Antialiasing); + QRect rect(x,y,min,min); + //rect.moveTo(m_offset); + paint.setPen(QColor(200,200,200)); + paint.setBrush(QColor(255,255,255)); + paint.drawEllipse(rect); + paint.setPen(QColor(0,0,0)); + + paint.drawText(rect, Qt::AlignHCenter | Qt::AlignVCenter, "..."); + return; + } + + //exploded labels + if (!m_map.isNull() && !m_timer.isActive()) + { + if (true) { + paint.setRenderHint(QPainter::Antialiasing); + //make lines appear on pixel boundaries + paint.translate(0.5, 0.5); + } + paintExplodedLabels(paint); + } + + cache=QPixmap::fromImage(temp); + } + QPainter paint; + paint.begin(this); + paint.drawPixmap(0,0,cache.width(), cache.height(), cache); +} + +const RadialMap::Segment* RadialMap::Widget::segmentAt(QPoint &e) const +{ + //determine which segment QPoint e is above + + e -= m_offset; + + if (!m_map.m_signature) + return nullptr; + + const int m_map_width=m_map.width(); + const int m_map_height=m_map.height(); + if (e.x() <= m_map_width && e.y() <= m_map_height) + { + //transform to cartesian coords + e.rx() -= m_map_width / 2; //should be an int + e.ry() = m_map_height / 2 - e.y(); + + double length = hypot(e.x(), e.y()); + + if (length >= m_map.m_innerRadius) //not hovering over inner circle + { + uint depth = ((int)length - m_map.m_innerRadius) / m_map.m_ringBreadth; + + if (depth <= m_map.m_visibleDepth) //**** do earlier since you can //** check not outside of range + { + //vector calculation, reduces to simple trigonometry + //cos angle = (aibi + ajbj) / albl + //ai = x, bi=1, aj=y, bj=0 + //cos angle = x / (length) + + uint a = (uint)(acos((double)e.x() / length) * 916.736); //916.7324722 = #radians in circle * 16 + + //acos only understands 0-180 degrees + if (e.y() < 0) a = 5760 - a; + + for (Segment *segment : m_map.m_signature[depth]) { + if (segment->intersects(a)) + return segment; + } + } + } + else return m_rootSegment; //hovering over inner circle + } + + return nullptr; +} + +void RadialMap::Widget::mouseMoveEvent(QMouseEvent *e) +{ + //set m_focus to what we hover over, update UI if it's a new segment + + Segment const * const oldFocus = m_focus; + QPoint p = e->pos(); + + m_focus = segmentAt(p); //NOTE p is passed by non-const reference + + if (m_focus) + { + m_tooltip.move(e->globalX() + 20, e->globalY() + 20); + if (m_focus != oldFocus) //if not same as last time + { + setCursor(Qt::PointingHandCursor); + + QString string; + + + const QString &path=m_focus->file()->displayPath(); + if (m_focus->file()->isFolder()) + { + const Folder* folder=static_cast<const Folder*>(m_focus->file()); + if(path.isEmpty()) + string += m_focus->file()->humanReadableSize()+tr(" into %1 files").arg(folder->children()); + else + string += path+"\n"+m_focus->file()->humanReadableSize()+tr(" into %1 files").arg(folder->children()); + } + else + string += path+" "+m_focus->file()->humanReadableSize(); + + // Calculate a semi-sane size for the tooltip + QFontMetrics fontMetrics(font()); + int tooltipWidth = 0; + int tooltipHeight = 0; + for (const QString &part : string.split(QLatin1Char('\n'))) { + tooltipHeight += fontMetrics.height(); + #if QT_VERSION < QT_VERSION_CHECK(5, 6, 0) + tooltipWidth = qMax(tooltipWidth, fontMetrics.width(part)); + #else + tooltipWidth = qMax(tooltipWidth, fontMetrics.horizontalAdvance(part)); + #endif + } + // Limit it to the window size, probably should find something better + tooltipWidth = qMin(tooltipWidth, window()->width()); + tooltipWidth += 10; + tooltipHeight += 10; + m_tooltip.resize(tooltipWidth, tooltipHeight); + m_tooltip.setText(string); + m_tooltip.show(); + + emit mouseHover(m_focus->file()->displayPath()); + update(); + } + } + else if (oldFocus && oldFocus->file() != m_tree) + { + m_tooltip.hide(); + unsetCursor(); + update(); + + emit mouseHover(QString()); + } +} + +void RadialMap::Widget::enterEvent(QEvent *) +{ + if (!m_focus) return; + + setCursor(Qt::PointingHandCursor); + emit mouseHover(m_focus->file()->displayPath()); + update(); +} + +void RadialMap::Widget::leaveEvent(QEvent *) +{ + m_tooltip.hide(); +} + +void RadialMap::Widget::changeEvent(QEvent *e) +{ + if (e->type() == QEvent::ApplicationPaletteChange || + e->type() == QEvent::PaletteChange) + m_map.paint(); +} diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/add.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/add.png Binary files differnew file mode 100755 index 0000000..7932127 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/add.png diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/exit.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/exit.png Binary files differnew file mode 100755 index 0000000..ae3c4e8 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/exit.png diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/informations.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/informations.png Binary files differnew file mode 100755 index 0000000..5b7b255 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/informations.png diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/options.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/options.png Binary files differnew file mode 100755 index 0000000..23ec531 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/options.png diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Unix.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Unix.png Binary files differnew file mode 100755 index 0000000..6f5d1cf --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Unix.png diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Windows.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Windows.png Binary files differnew file mode 100755 index 0000000..5464856 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Windows.png diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png Binary files differnew file mode 100755 index 0000000..b2bb2e3 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png Binary files differnew file mode 100755 index 0000000..0abeb5f --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Unix.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Unix.png Binary files differnew file mode 100755 index 0000000..5e313b9 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Unix.png diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Windows.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Windows.png Binary files differnew file mode 100755 index 0000000..828e7e6 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Windows.png diff --git a/plugins/Themes/Oxygen2/resources/add.png b/plugins/Themes/Oxygen2/resources/add.png Binary files differnew file mode 100755 index 0000000..7932127 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/add.png diff --git a/plugins/Themes/Oxygen2/resources/cancel.png b/plugins/Themes/Oxygen2/resources/cancel.png Binary files differnew file mode 100755 index 0000000..ae3c4e8 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/cancel.png diff --git a/plugins/Themes/Oxygen2/resources/cancelDarkD.png b/plugins/Themes/Oxygen2/resources/cancelDarkD.png Binary files differnew file mode 100755 index 0000000..a2f4556 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/cancelDarkD.png diff --git a/plugins/Themes/Oxygen2/resources/cancelDarkE.png b/plugins/Themes/Oxygen2/resources/cancelDarkE.png Binary files differnew file mode 100755 index 0000000..1cda258 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/cancelDarkE.png diff --git a/plugins/Themes/Oxygen2/resources/click.opus b/plugins/Themes/Oxygen2/resources/click.opus Binary files differnew file mode 100755 index 0000000..ddd2a25 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/click.opus diff --git a/plugins/Themes/Oxygen2/resources/darkButton.png b/plugins/Themes/Oxygen2/resources/darkButton.png Binary files differnew file mode 100755 index 0000000..ab8d393 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/darkButton.png diff --git a/plugins/Themes/Oxygen2/resources/darkButtonOver.png b/plugins/Themes/Oxygen2/resources/darkButtonOver.png Binary files differnew file mode 100755 index 0000000..ea42018 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/darkButtonOver.png diff --git a/plugins/Themes/Oxygen2/resources/darkButtonPushed.png b/plugins/Themes/Oxygen2/resources/darkButtonPushed.png Binary files differnew file mode 100755 index 0000000..d8fba09 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/darkButtonPushed.png diff --git a/plugins/Themes/Oxygen2/resources/darkmoveDown.png b/plugins/Themes/Oxygen2/resources/darkmoveDown.png Binary files differnew file mode 100755 index 0000000..cfe6fe6 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/darkmoveDown.png diff --git a/plugins/Themes/Oxygen2/resources/darkmoveUp.png b/plugins/Themes/Oxygen2/resources/darkmoveUp.png Binary files differnew file mode 100755 index 0000000..1d5f41c --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/darkmoveUp.png diff --git a/plugins/Themes/Oxygen2/resources/darkplayer_end.png b/plugins/Themes/Oxygen2/resources/darkplayer_end.png Binary files differnew file mode 100755 index 0000000..b5e41ba --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/darkplayer_end.png diff --git a/plugins/Themes/Oxygen2/resources/darkplayer_pause.png b/plugins/Themes/Oxygen2/resources/darkplayer_pause.png Binary files differnew file mode 100755 index 0000000..8ce7922 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/darkplayer_pause.png diff --git a/plugins/Themes/Oxygen2/resources/darkplayer_play.png b/plugins/Themes/Oxygen2/resources/darkplayer_play.png Binary files differnew file mode 100755 index 0000000..b1d58a1 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/darkplayer_play.png diff --git a/plugins/Themes/Oxygen2/resources/export-transfer-list.png b/plugins/Themes/Oxygen2/resources/export-transfer-list.png Binary files differnew file mode 100755 index 0000000..3a0aac6 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/export-transfer-list.png diff --git a/plugins/Themes/Oxygen2/resources/import-transfer-list.png b/plugins/Themes/Oxygen2/resources/import-transfer-list.png Binary files differnew file mode 100755 index 0000000..ee47f0d --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/import-transfer-list.png diff --git a/plugins/Themes/Oxygen2/resources/main.png b/plugins/Themes/Oxygen2/resources/main.png Binary files differnew file mode 100755 index 0000000..5464856 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/main.png diff --git a/plugins/Themes/Oxygen2/resources/moveDown.png b/plugins/Themes/Oxygen2/resources/moveDown.png Binary files differnew file mode 100755 index 0000000..82a312c --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/moveDown.png diff --git a/plugins/Themes/Oxygen2/resources/moveUp.png b/plugins/Themes/Oxygen2/resources/moveUp.png Binary files differnew file mode 100755 index 0000000..7f7ba72 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/moveUp.png diff --git a/plugins/Themes/Oxygen2/resources/over.opus b/plugins/Themes/Oxygen2/resources/over.opus Binary files differnew file mode 100755 index 0000000..7344831 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/over.opus diff --git a/plugins/Themes/Oxygen2/resources/player_end.png b/plugins/Themes/Oxygen2/resources/player_end.png Binary files differnew file mode 100755 index 0000000..18982db --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/player_end.png diff --git a/plugins/Themes/Oxygen2/resources/player_pause.png b/plugins/Themes/Oxygen2/resources/player_pause.png Binary files differnew file mode 100755 index 0000000..68ee21f --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/player_pause.png diff --git a/plugins/Themes/Oxygen2/resources/player_play.png b/plugins/Themes/Oxygen2/resources/player_play.png Binary files differnew file mode 100755 index 0000000..a1c5b83 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/player_play.png diff --git a/plugins/Themes/Oxygen2/resources/progressBarin.png b/plugins/Themes/Oxygen2/resources/progressBarin.png Binary files differnew file mode 100755 index 0000000..6af26c7 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/progressBarin.png diff --git a/plugins/Themes/Oxygen2/resources/progressBarout.png b/plugins/Themes/Oxygen2/resources/progressBarout.png Binary files differnew file mode 100755 index 0000000..08f3748 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/progressBarout.png diff --git a/plugins/Themes/Oxygen2/resources/putOnBottom.png b/plugins/Themes/Oxygen2/resources/putOnBottom.png Binary files differnew file mode 100755 index 0000000..512286e --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/putOnBottom.png diff --git a/plugins/Themes/Oxygen2/resources/putOnTop.png b/plugins/Themes/Oxygen2/resources/putOnTop.png Binary files differnew file mode 100755 index 0000000..30fe96b --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/putOnTop.png diff --git a/plugins/Themes/Oxygen2/resources/remove.png b/plugins/Themes/Oxygen2/resources/remove.png Binary files differnew file mode 100755 index 0000000..b711740 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/remove.png diff --git a/plugins/Themes/Oxygen2/resources/search.png b/plugins/Themes/Oxygen2/resources/search.png Binary files differnew file mode 100755 index 0000000..cef1836 --- /dev/null +++ b/plugins/Themes/Oxygen2/resources/search.png diff --git a/plugins/Themes/Oxygen2/themesOptions.ui b/plugins/Themes/Oxygen2/themesOptions.ui new file mode 100755 index 0000000..b2da124 --- /dev/null +++ b/plugins/Themes/Oxygen2/themesOptions.ui @@ -0,0 +1,466 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>themesOptions</class> + <widget class="QWidget" name="themesOptions"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>519</width> + <height>389</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QToolBox" name="toolBox"> + <property name="currentIndex"> + <number>0</number> + </property> + <widget class="QWidget" name="page"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>492</width> + <height>300</height> + </rect> + </property> + <attribute name="label"> + <string>Use</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="4" column="1"> + <widget class="QCheckBox" name="startMinimized"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Minimize on close to systray</string> + </property> + </widget> + </item> + <item row="2" column="1" colspan="2"> + <widget class="QCheckBox" name="alwaysOnTop"/> + </item> + <item row="0" column="1"> + <widget class="QCheckBox" name="checkBoxStartWithMoreButtonPushed"/> + </item> + <item row="7" column="0"> + <widget class="QLabel" name="label_Slider_speed"> + <property name="text"> + <string>Limit copy speed to</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QCheckBox" name="minimizeToSystray"/> + </item> + <item row="6" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>At the end of the copy</string> + </property> + </widget> + </item> + <item row="8" column="0"> + <widget class="QCheckBox" name="checkBox_limitSpeed"> + <property name="text"> + <string>Limit copy speed to</string> + </property> + </widget> + </item> + <item row="8" column="1" colspan="2"> + <widget class="QSpinBox" name="limitSpeed"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="suffix"> + <string> KB/s</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>999999</number> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="labelStartWithMoreButtonPushed"> + <property name="text"> + <string>Start with the "more button" pushed</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="label_startMinimized"> + <property name="text"> + <string>Start minimized</string> + </property> + </widget> + </item> + <item row="9" column="2"> + <spacer name="verticalSpacer_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>133</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="labelAlwaysOnTop"> + <property name="text"> + <string>Always on top</string> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="labelSavePosition"> + <property name="text"> + <string>Position at start</string> + </property> + </widget> + </item> + <item row="6" column="1" colspan="2"> + <widget class="QComboBox" name="comboBox_copyEnd"> + <item> + <property name="text"> + <string notr="true">Don't close if errors are found</string> + </property> + </item> + <item> + <property name="text"> + <string notr="true">Never close</string> + </property> + </item> + <item> + <property name="text"> + <string notr="true">Always close</string> + </property> + </item> + </widget> + </item> + <item row="7" column="1" colspan="2"> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QSlider" name="SliderSpeed"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>5</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_SpeedMaxValue"> + <property name="text"> + <string notr="true">Unlimited</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="1" column="1"> + <widget class="QCheckBox" name="dark"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Dark UI</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="QComboBox" name="savePosition"> + <item> + <property name="text"> + <string>Default</string> + </property> + </item> + <item> + <property name="text"> + <string>Save as previous</string> + </property> + </item> + <item> + <property name="text"> + <string>At Center</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="page_2"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>509</width> + <height>283</height> + </rect> + </property> + <attribute name="label"> + <string>Informations</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="0" column="0"> + <widget class="QLabel" name="labelShowSpeedAsMain"> + <property name="text"> + <string>Show speed as main information</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QCheckBox" name="checkBoxShowSpeed"/> + </item> + <item row="1" column="2"> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>529</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <widget class="QWidget" name="page_3"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>509</width> + <height>283</height> + </rect> + </property> + <attribute name="label"> + <string>Display</string> + </attribute> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="labelSpeedWithProgressBar"> + <property name="text"> + <string>Speed with progress bar</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QCheckBox" name="speedWithProgressBar"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="labelDualProgression"> + <property name="text"> + <string>Show dual progression</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QCheckBox" name="showDualProgression"/> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Show progression in the title</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QCheckBox" name="showProgressionInTheTitle"/> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="labelProgressionColor"> + <property name="text"> + <string>Progression color</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QFrame" name="frameProgressionColor"> + <property name="minimumSize"> + <size> + <width>225</width> + <height>20</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>225</width> + <height>20</height> + </size> + </property> + <property name="toolTip"> + <string>Click to edit the color</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QPushButton" name="progressColorWrite"> + <property name="minimumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="iconSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="flat"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="progressColorRead"> + <property name="minimumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="iconSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="flat"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="progressColorRemaining"> + <property name="minimumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="iconSize"> + <size> + <width>75</width> + <height>20</height> + </size> + </property> + <property name="flat"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="4" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>455</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>checkBox_limitSpeed</sender> + <signal>clicked(bool)</signal> + <receiver>limitSpeed</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>109</x> + <y>144</y> + </hint> + <hint type="destinationlabel"> + <x>199</x> + <y>144</y> + </hint> + </hints> + </connection> + </connections> +</ui> |