aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/desktop-utils/lumina-fm
diff options
context:
space:
mode:
authorKen Moore <moorekou@gmail.com>2016-04-25 13:08:12 -0400
committerKen Moore <moorekou@gmail.com>2016-04-25 13:08:12 -0400
commited5ecf7ea7a482b4649e66ecb35fbc60af680684 (patch)
treeacc0fa17d228259e847f55c678db9fb0a9b50f0c /src-qt5/desktop-utils/lumina-fm
parentMerge branch 'master' of github.com:pcbsd/lumina (diff)
downloadlumina-ed5ecf7ea7a482b4649e66ecb35fbc60af680684.tar.gz
lumina-ed5ecf7ea7a482b4649e66ecb35fbc60af680684.tar.bz2
lumina-ed5ecf7ea7a482b4649e66ecb35fbc60af680684.zip
Rearrange the Lumina source tree quite a bit:
Now the utilites are arranged by category (core, core-utils, desktop-utils), so all the -utils may be excluded by a package system (or turned into separate packages) as needed.
Diffstat (limited to 'src-qt5/desktop-utils/lumina-fm')
-rw-r--r--src-qt5/desktop-utils/lumina-fm/BMMDialog.cpp75
-rw-r--r--src-qt5/desktop-utils/lumina-fm/BMMDialog.h44
-rw-r--r--src-qt5/desktop-utils/lumina-fm/BMMDialog.ui101
-rw-r--r--src-qt5/desktop-utils/lumina-fm/DirData.h188
-rw-r--r--src-qt5/desktop-utils/lumina-fm/FODialog.cpp381
-rw-r--r--src-qt5/desktop-utils/lumina-fm/FODialog.h87
-rw-r--r--src-qt5/desktop-utils/lumina-fm/FODialog.ui84
-rw-r--r--src-qt5/desktop-utils/lumina-fm/MainUI.cpp918
-rw-r--r--src-qt5/desktop-utils/lumina-fm/MainUI.h173
-rw-r--r--src-qt5/desktop-utils/lumina-fm/MainUI.ui432
-rw-r--r--src-qt5/desktop-utils/lumina-fm/ScrollDialog.h55
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_af.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ar.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_az.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bg.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bn.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bs.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ca.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cs.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cy.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_da.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_de.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_el.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_en_GB.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_en_ZA.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_es.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_et.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_eu.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fa.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fi.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr_CA.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_gl.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_he.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hi.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hr.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hu.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_id.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_is.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_it.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ja.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ka.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ko.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lt.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lv.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mk.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mn.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ms.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mt.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_nb.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_nl.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pa.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pl.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pt.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pt_BR.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ro.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ru.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sk.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sl.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sr.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sv.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sw.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ta.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_tg.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_th.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_tr.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_uk.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_uz.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_vi.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_CN.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_HK.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_TW.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zu.ts238
-rw-r--r--src-qt5/desktop-utils/lumina-fm/lumina-fm.desktop18
-rw-r--r--src-qt5/desktop-utils/lumina-fm/lumina-fm.pro116
-rw-r--r--src-qt5/desktop-utils/lumina-fm/main.cpp33
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/DDListWidgets.h240
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp1044
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.h228
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui527
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.cpp223
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.h71
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.ui181
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.cpp169
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.h57
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui346
86 files changed, 20547 insertions, 0 deletions
diff --git a/src-qt5/desktop-utils/lumina-fm/BMMDialog.cpp b/src-qt5/desktop-utils/lumina-fm/BMMDialog.cpp
new file mode 100644
index 00000000..5125a48e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/BMMDialog.cpp
@@ -0,0 +1,75 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "BMMDialog.h"
+#include "ui_BMMDialog.h"
+
+BMMDialog::BMMDialog(QWidget *parent) : QDialog(parent), ui(new Ui::BMMDialog){
+ ui->setupUi(this); //load the designer file
+ this->setWindowIcon( LXDG::findIcon("bookmarks-organize","") );
+ ui->tool_remove->setIcon( LXDG::findIcon("edit-delete","") );
+ ui->tool_rename->setIcon( LXDG::findIcon("edit-rename","") );
+ ui->push_done->setIcon( LXDG::findIcon("dialog-ok","") );
+ connect(ui->tool_remove, SIGNAL(clicked()), this, SLOT(RemoveItem()) );
+ connect(ui->tool_rename, SIGNAL(clicked()), this, SLOT(RenameItem()) );
+ connect(ui->push_done, SIGNAL(clicked()), this, SLOT(close()) );
+}
+
+BMMDialog::~BMMDialog(){
+}
+
+void BMMDialog::loadSettings(QSettings *set){
+ settings = set; //save this pointer for later
+ //Now fill the tree with the items
+ QStringList BM = settings->value("bookmarks", QStringList()).toStringList();
+ ui->treeWidget->clear();
+ for(int i=0; i<BM.length(); i++){
+ ui->treeWidget->addTopLevelItem( new QTreeWidgetItem(BM[i].split("::::")) );
+ }
+ //Now expand to encompass all the items
+ ui->treeWidget->resizeColumnToContents(0);
+ ui->treeWidget->resizeColumnToContents(1);
+}
+// ==== PRIVATE ====
+
+// ==== PRIVATE SLOTS ====
+void BMMDialog::RemoveItem(){
+ //Get the currently selected item
+ if(ui->treeWidget->currentItem()==0){ return; } //nothing selected
+ QString item = ui->treeWidget->currentItem()->text(0)+"::::"+ui->treeWidget->currentItem()->text(1);
+ //Remove it from the widget
+ delete ui->treeWidget->takeTopLevelItem( ui->treeWidget->indexOfTopLevelItem( ui->treeWidget->currentItem() ) );
+ //Remove it from the saved bookmarks
+ QStringList BM = settings->value("bookmarks",QStringList()).toStringList();
+ BM.removeAll(item);
+ settings->setValue("bookmarks",BM);
+ settings->sync();
+}
+
+void BMMDialog::RenameItem(){
+ //Get the currently selected item
+ if(ui->treeWidget->currentItem()==0){ return; } //nothing selected
+ QString olditem = ui->treeWidget->currentItem()->text(0)+"::::"+ui->treeWidget->currentItem()->text(1);
+ //Prompt for the new name
+ bool ok = false;
+ QString name = QInputDialog::getText(this, tr("Rename Bookmark"), tr("Name:"), QLineEdit::Normal, olditem.section("::::",0,0), \
+ &ok, 0, Qt::ImhFormattedNumbersOnly | Qt::ImhUppercaseOnly | Qt::ImhLowercaseOnly);
+ if(!ok || name.isEmpty()){ return; } //cancelled
+ //Check if this name already exists
+ QStringList BM = settings->value("bookmarks",QStringList()).toStringList();
+ if(BM.filter(name+"::::").length() >0){
+ QMessageBox::warning(this, tr("Invalid Name"), tr("This bookmark name already exists. Please choose another.") );
+ QTimer::singleShot(0,this, SLOT(RenameItem()));
+ return;
+ }
+ //Rename it in the widget
+ ui->treeWidget->currentItem()->setText(0,name);
+ //Replace it in the saved bookmarks
+ BM.removeAll(olditem);
+ BM.append(name+"::::"+olditem.section("::::",1,3));
+ settings->setValue("bookmarks",BM);
+ settings->sync();
+} \ No newline at end of file
diff --git a/src-qt5/desktop-utils/lumina-fm/BMMDialog.h b/src-qt5/desktop-utils/lumina-fm/BMMDialog.h
new file mode 100644
index 00000000..d421446c
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/BMMDialog.h
@@ -0,0 +1,44 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This is the dialog for managing bookmarks (BookMark Manager)
+//===========================================
+#ifndef _LUMINA_FILE_MANAGER_BOOKMARK_MANAGER_DIALOG_H
+#define _LUMINA_FILE_MANAGER_BOOKMARK_MANAGER_DIALOG_H
+
+// Qt includes
+#include <QDialog>
+#include <QInputDialog>
+#include <QStringList>
+#include <QSettings>
+#include <QTimer>
+#include <QMessageBox>
+
+// libLumina includes
+#include <LuminaXDG.h>
+
+namespace Ui{
+ class BMMDialog;
+};
+
+class BMMDialog : public QDialog{
+ Q_OBJECT
+public:
+ BMMDialog(QWidget *parent = 0);
+ ~BMMDialog();
+
+ void loadSettings(QSettings *);
+
+private:
+ Ui::BMMDialog *ui;
+ QSettings *settings;
+
+private slots:
+ void RemoveItem();
+ void RenameItem();
+};
+
+#endif
diff --git a/src-qt5/desktop-utils/lumina-fm/BMMDialog.ui b/src-qt5/desktop-utils/lumina-fm/BMMDialog.ui
new file mode 100644
index 00000000..fbadb61e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/BMMDialog.ui
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BMMDialog</class>
+ <widget class="QDialog" name="BMMDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>466</width>
+ <height>238</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Manage Bookmarks</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QTreeWidget" name="treeWidget">
+ <property name="indentation">
+ <number>5</number>
+ </property>
+ <property name="itemsExpandable">
+ <bool>false</bool>
+ </property>
+ <property name="sortingEnabled">
+ <bool>true</bool>
+ </property>
+ <attribute name="headerDefaultSectionSize">
+ <number>130</number>
+ </attribute>
+ <column>
+ <property name="text">
+ <string>Name</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Path</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QToolButton" name="tool_remove">
+ <property name="toolTip">
+ <string>Remove Bookmark</string>
+ </property>
+ <property name="text">
+ <string notr="true">Remove</string>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_rename">
+ <property name="toolTip">
+ <string>Rename BookMark</string>
+ </property>
+ <property name="text">
+ <string notr="true">Rename</string>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </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="QPushButton" name="push_done">
+ <property name="text">
+ <string>Finished</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src-qt5/desktop-utils/lumina-fm/DirData.h b/src-qt5/desktop-utils/lumina-fm/DirData.h
new file mode 100644
index 00000000..c3ace5a4
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/DirData.h
@@ -0,0 +1,188 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This is the backend classes for fetching directory information/contents
+//===========================================
+#ifndef _LUMINA_FM_BACKGROUND_DATA_CLASSES_H
+#define _LUMINA_FM_BACKGROUND_DATA_CLASSES_H
+
+#include <QObject>
+#include <QList>
+#include <QString>
+#include <QFileInfo>
+#include <QDir>
+
+#include <LuminaXDG.h>
+#include <LuminaUtils.h>
+
+#define ZSNAPDIR QString("/.zfs/snapshot/")
+
+#define DIR_DEBUG 0
+
+//Class used for keeping track of directory information in the HASH
+class LDirInfoList{
+public:
+ //Internal variables
+ QDateTime lastcheck;
+ QList<LFileInfo> list;
+ QStringList fileNames; //list of filenames for comparison/checking sorting
+ QString dirpath; //directory this structure was reading
+ QString snapdir; //base snapshot directory (if one was requested/found)
+ bool hashidden;
+
+ //Access Functions
+ LDirInfoList(QString path = ""){
+ dirpath = path;
+ list.clear();
+ fileNames.clear();
+ hashidden = false;
+ }
+ ~LDirInfoList(){}
+
+ //(re)Load a directory contents
+ void update(bool showhidden = false){
+ if(dirpath.isEmpty()){ return; } //nothing to do
+ //Assemble the structures
+ QDir dir(dirpath);
+ hashidden = showhidden;
+ if(!dir.exists()){
+ list.clear();
+ fileNames.clear();
+ dirpath.clear(); //invalid directory now
+ return;
+ }
+ if(dirpath.contains(ZSNAPDIR) && snapdir.isEmpty()){
+ snapdir = dirpath.section(ZSNAPDIR,0,0)+ZSNAPDIR; //no need to go looking for it later
+ }
+ QFileInfoList dirlist;
+ //Fill the structure
+ list.clear();
+ fileNames.clear();
+ lastcheck = QDateTime::currentDateTime().addMSecs(-500); //prevent missing any simultaneous dir changes
+ if(showhidden){ dirlist = dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden , QDir::Name | QDir::DirsFirst); }
+ else{ dirlist = dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot , QDir::Name | QDir::DirsFirst); }
+ //Simple add routine - can make it more dynamic/selective about updating individual items later
+ for(int i=0; i<dirlist.length(); i++){
+ list << LFileInfo(dirlist[i]); //generate the extra information for this file
+ fileNames << dirlist[i].fileName(); //add the filename to the list
+ }
+ }
+
+ void findSnapDir(){
+ //Search the filesystem
+ if(dirpath.contains(ZSNAPDIR)){
+ snapdir = dirpath.section(ZSNAPDIR,0,0)+ZSNAPDIR; //no need to go looking for it
+ }else{
+ //Need to backtrack
+ QDir dir(dirpath);
+ bool found = false;
+ while(dir.canonicalPath()!="/" && !found){
+ //qDebug() << " -- Checking for snapshot dir:" << dir.canonicalPath();
+ if(dir.exists(".zfs/snapshot")){
+ snapdir = dir.canonicalPath()+ZSNAPDIR;
+ found = true;
+ }else{
+ dir.cdUp();
+ }
+ }//end loop
+ }
+ }
+
+};
+
+//This class is designed to be run in a background thread and get all the necessary info for a directory listing
+class DirData : public QObject{
+ Q_OBJECT
+private:
+ QHash<QString, LDirInfoList> HASH; //Where we cache any info for rapid access later
+
+signals:
+ void DirDataAvailable(QString, QString, LFileInfoList); //[ID, Dirpath, DATA]
+ void SnapshotDataAvailable(QString, QString, QStringList); //[ID, BaseSnapDir, SnapNames]
+
+public:
+ //Variables
+ bool showHidden; //Whether hidden files/dirs should be output
+ bool zfsavailable; //Whether it should even bother looking for ZFS snapshots
+ bool pauseData; //When paused - this will ignore any requests for information (need to manually refresh browsers after unpause)
+
+ //Functions
+ DirData(){
+ showHidden = false;
+ zfsavailable = false;
+ pauseData = false;
+ }
+ ~DirData(){}
+
+public slots:
+ void GetDirData(QString ID, QString dirpath){
+ if(pauseData){ return; }
+ if(DIR_DEBUG){ qDebug() << "GetDirData:" << ID << dirpath; }
+ //The ID is used when returning the info in a moment
+ //Make sure to use the canonical path in the HASH search - don't use
+ QString canon = QFileInfo(dirpath).canonicalFilePath();
+ if(!HASH.contains(canon)){
+ //New directory (not previously loaded)
+ LDirInfoList info(canon);
+ info.update(showHidden);
+ HASH.insert(canon, info);
+ }else{
+ //See if the saved info needs to be updated
+ //if( (HASH.value(canon).hashidden != showHidden) || (QFileInfo(canon).lastModified() > HASH.value(canon).lastcheck) ){
+ HASH[canon].update(showHidden);
+ //}
+ }
+ if(DIR_DEBUG){ qDebug() << " -- Dir Data Found:" << ID << dirpath << HASH.value(canon).list.length(); }
+ emit DirDataAvailable(ID, dirpath, HASH.value(canon).list);
+ }
+
+ void GetSnapshotData(QString ID, QString dirpath){
+ if(pauseData){ return; }
+ if(DIR_DEBUG){ qDebug() << "GetSnapshotData:" << ID << dirpath; }
+ QString base; QStringList snaps;
+ //Only check if ZFS is flagged as available
+ if(zfsavailable){
+ //First find if the hash already has an entry for this directory
+ if(false){ //!HASH.contains(dirpath)){
+ LDirInfoList info(dirpath);
+ HASH.insert(dirpath,info);
+ }
+ //Now see if a snapshot directory has already been located
+ if(HASH.value(dirpath).snapdir.isEmpty()){
+ HASH[dirpath].findSnapDir();
+ }
+ //Now read off all the available snapshots
+ if(HASH.value(dirpath).snapdir != "-" && !HASH.value(dirpath).snapdir.isEmpty()){
+ //Good snapshot directory found - read off the current snapshots (can change regularly - don't cache this)
+ base = HASH.value(dirpath).snapdir;
+ QDir dir(base);
+ QString canon = QFileInfo(dirpath).canonicalFilePath();
+ QString dcanon = QString(dir.canonicalPath()+"/").section(ZSNAPDIR,0,0);
+ QString relpath = canon.section( dcanon+"/" ,-1);
+ //qDebug() << "Snapshot Dir:" << base << dcanon << "Dir:" << dirpath << canon << "Relpath:" << relpath;
+ snaps = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Time |QDir::Reversed );
+ //Also remove any "empty" snapshots (might be leftover by tools like "zfsnap")
+ for(int i=0; i<snaps.length(); i++){
+ dir.cd(base+"/"+snaps[i]);
+ if(relpath.isEmpty()){
+ //Make sure the snapshot is not empty
+ if(dir.count() < 3 && dir.exists() ){ snaps.removeAt(i); i--; } // "." and ".." are always in the count
+ //Make sure the snapshot contains the directory we are looking for
+ }else if(!dir.exists(relpath)){ snaps.removeAt(i); i--; }
+ }
+ //NOTE: snaps are sorted oldest -> newest
+ }
+
+ }
+ //if(DIR_DEBUG){ qDebug() << " -- Snap Data Found:" << ID << base << snaps; }
+ if(!base.isEmpty() && !snaps.isEmpty()){
+ emit SnapshotDataAvailable(ID, base, snaps);
+ }
+ }
+
+};
+
+#endif
diff --git a/src-qt5/desktop-utils/lumina-fm/FODialog.cpp b/src-qt5/desktop-utils/lumina-fm/FODialog.cpp
new file mode 100644
index 00000000..b9acdc03
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/FODialog.cpp
@@ -0,0 +1,381 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "FODialog.h"
+#include "ui_FODialog.h"
+
+#include <QApplication>
+#include <QFontMetrics>
+
+#include <ScrollDialog.h>
+
+#define DEBUG 0
+
+FODialog::FODialog(QWidget *parent) : QDialog(parent), ui(new Ui::FODialog){
+ ui->setupUi(this); //load the designer file
+ ui->label->setText(tr("Calculating"));
+ ui->progressBar->setVisible(false);
+ ui->push_stop->setIcon( LXDG::findIcon("edit-delete","") );
+ WorkThread = new QThread();
+ Worker = new FOWorker();
+ connect(Worker, SIGNAL(startingItem(int,int,QString,QString)), this, SLOT(UpdateItem(int,int,QString,QString)) );
+ connect(Worker, SIGNAL(finished(QStringList)), this, SLOT(WorkDone(QStringList)) );
+ Worker->moveToThread(WorkThread);
+ WorkThread->start();
+
+ //Make sure this dialog is centered on the parent
+ if(parent!=0){
+ QPoint ctr = parent->mapToGlobal(parent->geometry().center());
+ this->move( ctr.x()-(this->width()/2), ctr.y()-(this->height()/2) );
+ }
+ this->show();
+}
+
+FODialog::~FODialog(){
+ Worker->stopped = true; //just in case it might still be running when closed
+ WorkThread->quit();
+ WorkThread->wait();
+ delete Worker;
+ //delete WorkThread;
+}
+
+void FODialog::setOverwrite(bool ovw){
+ if(ovw){ Worker->overwrite = 1; }
+ else{ Worker->overwrite = 0; }
+}
+
+//Public "start" functions
+bool FODialog::RemoveFiles(QStringList paths){
+ Worker->ofiles = paths;
+ Worker->isRM = true;
+ if(CheckOverwrite()){
+ QTimer::singleShot(10,Worker, SLOT(slotStartOperations()));
+ return true;
+ }else{
+ this->close();
+ return false;
+ }
+}
+
+bool FODialog::CopyFiles(QStringList oldPaths, QStringList newPaths){
+ //same permissions as old files
+ if(oldPaths.length() == newPaths.length()){
+ Worker->ofiles = oldPaths;
+ Worker->nfiles = newPaths;
+ }
+ Worker->isCP=true;
+ if(CheckOverwrite()){
+ QTimer::singleShot(10,Worker, SLOT(slotStartOperations()));
+ return true;
+ }else{
+ this->close();
+ return false;
+ }
+}
+
+bool FODialog::RestoreFiles(QStringList oldPaths, QStringList newPaths){
+ //user/group rw permissions
+ if(oldPaths.length() == newPaths.length()){
+ Worker->ofiles = oldPaths;
+ Worker->nfiles = newPaths;
+ }
+ Worker->isRESTORE = true;
+ if(CheckOverwrite()){
+ QTimer::singleShot(10,Worker, SLOT(slotStartOperations()));
+ return true;
+ }else{
+ this->close();
+ return false;
+ }
+}
+
+bool FODialog::MoveFiles(QStringList oldPaths, QStringList newPaths){
+ //no change in permissions
+ if(oldPaths.length() == newPaths.length()){
+ Worker->ofiles = oldPaths;
+ Worker->nfiles = newPaths;
+ }
+ Worker->isMV=true;
+ if(CheckOverwrite()){
+ QTimer::singleShot(10,Worker, SLOT(slotStartOperations()));
+ return true;
+ }else{
+ this->close();
+ return false;
+ }
+}
+
+bool FODialog::CheckOverwrite(){
+ bool ok = true;
+ //Quick check that a file is not supposed to be moved/copied/restored onto itself
+ if(!Worker->isRM){
+ for(int i=0; i<Worker->nfiles.length(); i++){
+ if(Worker->nfiles[i] == Worker->ofiles[i]){
+ //duplicate - remove it from the queue
+ Worker->nfiles.removeAt(i); Worker->ofiles.removeAt(i);
+ i--;
+ }
+ }
+ }
+ if(!Worker->isRM && Worker->overwrite==-1){
+ //Check if the new files already exist, and prompt for action
+ QStringList existing;
+ for(int i=0; i<Worker->nfiles.length(); i++){
+ if(QFile::exists(Worker->nfiles[i])){ existing << Worker->nfiles[i].section("/",-1); }
+ }
+ if(!existing.isEmpty()){
+ //Prompt for whether to overwrite, not overwrite, or cancel
+ QMessageBox::StandardButton ans = QMessageBox::question(this, tr("Overwrite Files?"), tr("Do you want to overwrite the existing files?")+"\n"+tr("Note: It will just add a number to the filename otherwise.")+"\n\n"+existing.join(", "), QMessageBox::YesToAll | QMessageBox::NoToAll | QMessageBox::Cancel, QMessageBox::NoToAll);
+ if(ans==QMessageBox::NoToAll){ Worker->overwrite = 0; } //don't overwrite
+ else if(ans==QMessageBox::YesToAll){ Worker->overwrite = 1; } //overwrite
+ else{ qDebug() << " - Cancelled"; Worker->overwrite = -1; ok = false; } //cancel operations
+ if(DEBUG){ qDebug() << " - Overwrite:" << Worker->overwrite; }
+ }
+ }
+ QApplication::processEvents();
+ QApplication::processEvents();
+ return ok;
+}
+
+void FODialog::UpdateItem(int cur, int tot, QString oitem, QString nitem){
+ ui->progressBar->setRange(0,tot);
+ ui->progressBar->setValue(cur);
+ ui->progressBar->setVisible(true);
+ QString msg;
+ if(Worker->isRM){ msg = tr("Removing: %1"); }
+ else if(Worker->isCP){ msg = tr("Copying: %1 to %2"); }
+ else if(Worker->isRESTORE){ msg = tr("Restoring: %1 as %2"); }
+ else if(Worker->isMV){ msg = tr("Moving: %1 to %2"); }
+ if(msg.contains("%2")){
+ msg = msg.arg(oitem.section("/",-1), nitem.section("/",-1));
+ }else{
+ msg = msg.arg(oitem.section("/",-1));
+ }
+ msg = ui->label->fontMetrics().elidedText(msg, Qt::ElideRight, ui->label->width());
+ ui->label->setText( msg );
+}
+
+void FODialog::WorkDone(QStringList errlist){
+ if(!errlist.isEmpty()){
+ QString msg;
+ if(Worker->isRM){ msg = tr("Could not remove these files:"); }
+ else if(Worker->isCP){ msg = tr("Could not copy these files:"); }
+ else if(Worker->isRESTORE){ msg = tr("Could not restore these files:"); }
+ else if(Worker->isMV){ msg = tr("Could not move these files:"); }
+ ScrollDialog dlg(this);
+ dlg.setWindowTitle(tr("File Errors"));
+ dlg.setText( msg+"\n\n"+errlist.join("\n") );
+ dlg.exec();
+ }
+ noerrors = errlist.isEmpty();
+ this->close();
+}
+
+void FODialog::on_push_stop_clicked(){
+ Worker->stopped = true;
+}
+
+// ===================
+// ==== FOWorker Class ====
+// ===================
+QStringList FOWorker::subfiles(QString dirpath, bool dirsfirst){
+ //NOTE: dirpath (input) is always the first/last item in the output as well!
+ QStringList out;
+ if(dirsfirst){ out << dirpath; }
+ if( QFileInfo(dirpath).isDir() ){
+ QDir dir(dirpath);
+ if(dirsfirst){
+ //Now recursively add any subdirectories and their contents
+ QStringList subdirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden, QDir::NoSort);
+ for(int i=0; i<subdirs.length(); i++){ out << subfiles(dir.absoluteFilePath(subdirs[i]), dirsfirst); }
+ }
+ //List the files
+ QStringList files = dir.entryList(QDir::Files | QDir::NoDotAndDotDot | QDir::Hidden, QDir::NoSort);
+ for(int i=0; i<files.length(); i++){ out << dir.absoluteFilePath(files[i]); }
+
+ if(!dirsfirst){
+ //Now recursively add any subdirectories and their contents
+ QStringList subdirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden, QDir::NoSort);
+ for(int i=0; i<subdirs.length(); i++){ out << subfiles(dir.absoluteFilePath(subdirs[i]), dirsfirst); }
+ }
+ }
+ if(!dirsfirst){ out << dirpath; }
+ return out;
+}
+
+QString FOWorker::newFileName(QString path){
+ int num=1;
+ QString extension = path.section("/",-1).section(".",-1);
+ if( path.section("/",-1) == "."+extension || extension ==path.section("/",-1) ){ extension.clear(); } //just a hidden file without extension or directory
+ if(!extension.isEmpty() ){
+ extension.prepend(".");
+ path.chop(extension.length());
+ }
+ while( QFile::exists(path+"-"+QString::number(num)+extension) ){ num++; }
+ return QString(path+"-"+QString::number(num)+extension);
+}
+
+QStringList FOWorker::removeItem(QString path, bool recursive){
+ //qDebug() << "Remove Path:" << path;
+ QStringList items;
+ if(recursive){ items = subfiles(path,false); }
+ else{ items << path; } //only the given path
+ //qDebug() << " - Subfiles:" << items;
+ QStringList err;
+ for(int i=0; i<items.length(); i++){
+ if(QFileInfo(items[i]).isDir()){
+ if(items[i]==path){
+ //Current Directory Removal
+ QDir dir;
+ if( !dir.rmdir(items[i]) ){ err << items[i]; }
+ }else{
+ //Recursive Directory Removal
+ err << removeItem(items[i], recursive);
+ }
+ }else{
+ //Simple File Removal
+ if( !QFile::remove(items[i]) ){ err << items[i]; }
+ }
+ }
+ return err;
+}
+
+QStringList FOWorker::copyItem(QString oldpath, QString newpath){
+ QStringList err;
+ if(oldpath == newpath){ return err; } //copy something onto itself - just skip it
+ if(QFileInfo(oldpath).isDir()){
+ //Create a new directory with the same name (no way to copy dir+contents)
+ QDir dir;
+ if( !dir.mkpath(newpath) ){ err << oldpath; }
+ }else{
+ //Copy the file and reset permissions as necessary
+ if( !QFile::copy(oldpath, newpath) ){ err << oldpath; }
+ else{
+ if(isCP){
+ QFile::setPermissions(newpath, QFile::permissions(oldpath));
+ //Nothing special for copies at the moment (might be something we run into later)
+ }else if(isRESTORE){
+ QFile::setPermissions(newpath, QFile::permissions(oldpath));
+ //Nothing special for restores at the moment (might be something we run into later)
+ }
+ }
+ }
+ return err;
+}
+
+// ==== PRIVATE SLOTS ====
+void FOWorker::slotStartOperations(){
+ if(DEBUG){ qDebug() << "Start File operations" << isRM << isCP << isMV << ofiles << nfiles << overwrite; }
+ //Now setup the UI
+ /*ui->progressBar->setRange(0,ofiles.length());
+ ui->progressBar->setValue(0);
+ ui->progressBar->setVisible(true);
+ QApplication::processEvents();*/
+ /*if(!isRM && overwrite==-1){
+ //Check if the new files already exist, and prompt for action
+ QStringList existing;
+ for(int i=0; i<nfiles.length(); i++){
+ if(QFile::exists(nfiles[i])){ existing << nfiles[i].section("/",-1); }
+ }
+ if(!existing.isEmpty()){
+ //Prompt for whether to overwrite, not overwrite, or cancel
+ QMessageBox::StandardButton ans = QMessageBox::question(this, tr("Overwrite Files?"), tr("Do you want to overwrite the existing files?")+"\n"+tr("Note: It will just add a number to the filename otherwise.")+"\n\n"+existing.join(", "), QMessageBox::YesToAll | QMessageBox::NoToAll | QMessageBox::Cancel, QMessageBox::NoToAll);
+ if(ans==QMessageBox::NoToAll){ overwrite = 0; } //don't overwrite
+ else if(ans==QMessageBox::YesToAll){ overwrite = 1; } //overwrite
+ else{ emit finished(QStringList()); return; } //cancel operations
+ }
+ }*/
+
+ //Get the complete number of items to be operated on (better tracking)
+ QStringList olist, nlist; //old/new list to actually be used (not inputs - modified/added as necessary)
+ for(int i=0; i<ofiles.length() && !stopped; i++){
+ if(isRM){ //only old files
+ olist << subfiles(ofiles[i], false); //dirs need to be last for removals
+ }else if(isCP || isRESTORE){
+ if(nfiles[i] == ofiles[i] && overwrite==1){
+ //Trying to copy a file/dir to itself - skip it
+ continue;
+ }
+ if(QFile::exists(nfiles[i])){
+ if(overwrite!=1){
+ qDebug() << " - Get New Filename:" << nfiles[i];
+ nfiles[i] = newFileName(nfiles[i]); //prompt for new file name up front before anything starts
+ qDebug() << " -- nfiles[i]";
+ }
+ }
+ QStringList subs = subfiles(ofiles[i], true); //dirs need to be first for additions
+ for(int s=0; s<subs.length(); s++){
+ olist << subs[s];
+ QString newsub = subs[s].section(ofiles[i],0,100, QString::SectionSkipEmpty);
+ newsub.prepend(nfiles[i]);
+ nlist << newsub;
+ }
+ }else{ //Move/rename
+ if( nfiles[i].startsWith(ofiles[i]+"/") ){
+ //This is trying to move a directory into itself (not possible)
+ // Example: move "~/mydir" -> "~/mydir/mydir2"
+ QStringList err; err << tr("Invalid Move") << QString(tr("It is not possible to move a directory into itself. Please make a copy of the directory instead.\n\nOld Location: %1\nNew Location: %2")).arg(ofiles[i], nfiles[i]);
+ emit finished(err); return;
+ }else{
+ //Check for existance of the new name
+ if(QFile::exists(nfiles[i])){
+ if(overwrite!=1){
+ nfiles[i] = newFileName(nfiles[i]); //prompt for new file name up front before anything starts
+ }
+ }
+ //no changes necessary
+ olist << ofiles[i];
+ nlist << nfiles[i];
+ }
+ }
+ }
+ //Now start iterating over the operations
+ QStringList errlist;
+ for(int i=0; i<olist.length() && !stopped; i++){
+ if(isRM){
+ /*ui->label->setText( QString(tr("Removing: %1")).arg(olist[i].section("/",-1)) );
+ QApplication::processEvents();*/
+ emit startingItem(i+1,olist.length(), olist[i], "");
+ errlist << removeItem(olist[i]);
+ }else if(isCP || isRESTORE){
+ /*ui->label->setText( QString(tr("Copying: %1 to %2")).arg(olist[i].section("/",-1), nlist[i].section("/",-1)) );
+ QApplication::processEvents();*/
+ emit startingItem(i+1,olist.length(), olist[i],nlist[i]);
+ if(QFile::exists(nlist[i])){
+ if(overwrite==1){
+ errlist << removeItem(nlist[i], true); //recursively remove the file/dir since we are supposed to overwrite it
+ }
+ }
+ //If a parent directory fails to copy, skip all the children as well (they will also fail)
+ //QApplication::processEvents();
+ if( !errlist.contains(olist[i].section("/",0,-1)) ){
+ errlist << copyItem(olist[i], nlist[i]);
+ }
+ }else if(isMV){
+ /*ui->label->setText( QString(tr("Moving: %1 to %2")).arg(ofiles[i].section("/",-1), nfiles[i].section("/",-1)) );
+ QApplication::processEvents();*/
+ emit startingItem(i+1,olist.length(), olist[i], nlist[i]);
+ //Clean up any overwritten files/dirs
+ if(QFile::exists(nlist[i])){
+ if(overwrite==1){
+ errlist << removeItem(nlist[i], true); //recursively remove the file/dir since we are supposed to overwrite it
+ }
+ }
+ //Perform the move if no error yet (including skipping all children)
+ if( !errlist.contains(olist[i].section("/",0,-1)) ){
+ if( !QFile::rename(ofiles[i], nfiles[i]) ){
+ errlist << ofiles[i];
+ }
+ }
+ }
+ //ui->progressBar->setValue(i+1);
+ //QApplication::processEvents();
+ }
+ //All finished, emit the signal
+ errlist.removeAll(""); //make sure to clear any empty items
+ emit finished(errlist);
+ qDebug() << "Done with File Operations";
+}
diff --git a/src-qt5/desktop-utils/lumina-fm/FODialog.h b/src-qt5/desktop-utils/lumina-fm/FODialog.h
new file mode 100644
index 00000000..ef3ff57d
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/FODialog.h
@@ -0,0 +1,87 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This is the dialog for showing currently running file operations
+//===========================================
+#ifndef _LUMINA_FILE_MANAGER_FILE_OP_DIALOG_H
+#define _LUMINA_FILE_MANAGER_FILE_OP_DIALOG_H
+
+// Qt includes
+#include <QDialog>
+#include <QMessageBox>
+#include <QStringList>
+#include <QTimer>
+#include <QFileInfo>
+#include <QDir>
+#include <QFile>
+#include <QThread>
+
+// libLumina includes
+#include <LuminaXDG.h>
+#include <LuminaUtils.h>
+
+namespace Ui{
+ class FODialog;
+};
+
+class FOWorker : public QObject{
+ Q_OBJECT
+public:
+ //variables that need to be set before starting the operations
+ QStringList ofiles, nfiles; //original/new files
+ bool isRM, isCP, isRESTORE, isMV;
+ bool stopped;
+ int overwrite; // [-1= auto, 0= no overwrite, 1= overwrite]
+
+
+ FOWorker() : QObject(){
+ isRM = isCP = isRESTORE = isMV = stopped = false;
+ overwrite = -1; //auto
+ }
+ ~FOWorker(){}
+
+public slots:
+ void slotStartOperations();
+
+private:
+ QStringList subfiles(QString dirpath, bool dirsfirst = false); //recursive function for fetching all "child" files/dirs (dirs last by default)
+ QString newFileName(QString path);
+ QStringList removeItem(QString path, bool recursive = false);
+ QStringList copyItem(QString oldpath, QString newpath);
+
+signals:
+ void startingItem(int, int, QString, QString); //current number, total number, Old File, New File (if appropriate)
+ void finished(QStringList); //errors returned
+};
+
+class FODialog : public QDialog{
+ Q_OBJECT
+public:
+ FODialog(QWidget *parent = 0);
+ ~FODialog();
+
+ bool noerrors;
+
+ void setOverwrite(bool);
+ bool RemoveFiles(QStringList paths);
+ bool CopyFiles(QStringList oldPaths, QStringList newPaths); //same permissions as old files
+ bool RestoreFiles(QStringList oldPaths, QStringList newPaths); //user/group rw permissions
+ bool MoveFiles(QStringList oldPaths, QStringList newPaths); //no change in permissions
+
+private:
+ Ui::FODialog *ui;
+ QThread *WorkThread;
+ FOWorker *Worker;
+
+ bool CheckOverwrite(); //Returns "true" if it is ok to start the procedure
+
+private slots:
+ void on_push_stop_clicked();
+ void UpdateItem(int, int, QString, QString);
+ void WorkDone(QStringList);
+};
+
+#endif
diff --git a/src-qt5/desktop-utils/lumina-fm/FODialog.ui b/src-qt5/desktop-utils/lumina-fm/FODialog.ui
new file mode 100644
index 00000000..47bb58bb
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/FODialog.ui
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>FODialog</class>
+ <widget class="QDialog" name="FODialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>306</width>
+ <height>91</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Performing File Operations</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string notr="true">Operation Running</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar">
+ <property name="value">
+ <number>24</number>
+ </property>
+ <property name="textDirection">
+ <enum>QProgressBar::TopToBottom</enum>
+ </property>
+ <property name="format">
+ <string>%v/%m</string>
+ </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>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <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="QPushButton" name="push_stop">
+ <property name="text">
+ <string>Stop</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src-qt5/desktop-utils/lumina-fm/MainUI.cpp b/src-qt5/desktop-utils/lumina-fm/MainUI.cpp
new file mode 100644
index 00000000..010df40d
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/MainUI.cpp
@@ -0,0 +1,918 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014-2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "MainUI.h"
+#include "ui_MainUI.h"
+
+#include <QFileInfo>
+
+#define DEBUG 0
+
+MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){
+ //for Signal/slot we must register the Typedef of QFileInfoList
+ qRegisterMetaType<QFileInfoList>("QFileInfoList");
+ qRegisterMetaType< LFileInfoList >("LFileInfoList");
+ //just to silence/fix some Qt connect warnings in QtConcurrent
+ qRegisterMetaType< QVector<int> >("QVector<int>");
+ qRegisterMetaType< QList<QPersistentModelIndex> >("QList<QPersistentModelIndex>");
+
+
+ ui->setupUi(this);
+ if(DEBUG){ qDebug() << "Initilization:"; }
+ //Be careful about the QSettings setup, it must match the lumina-desktop setup
+ QSettings::setPath(QSettings::NativeFormat, QSettings::UserScope, QDir::homePath()+"/.lumina");
+ settings = new QSettings( QSettings::UserScope, "LuminaDE", "lumina-fm", this);
+ favdir = QDir::homePath()+"/.lumina/favorites/"; //save this for later
+ //syncTimer = new QTimer(this);
+ //syncTimer->setInterval(200); //1/5 second (collect as many signals/slots as necessary
+ //syncTimer->setSingleShot(true);
+ //Reset the UI to the previously used size (if possible)
+QSize orig = settings->value("preferences/MainWindowSize", QSize()).toSize();
+ if(!orig.isEmpty() && orig.isValid()){
+ //Make sure the old size is larger than the default size hint
+ if(orig.width() < this->sizeHint().width()){ orig.setWidth(this->sizeHint().width()); }
+ if(orig.height() < this->sizeHint().height()){ orig.setHeight(this->sizeHint().height()); }
+ //Also ensure the old size is smaller than the current screen size
+ QSize screen = QApplication::desktop()->availableGeometry(this).size();
+ if(orig.width() > screen.width()){ orig.setWidth(screen.width()); }
+ if(orig.height() > screen.height()){ orig.setHeight(screen.height()); }
+ //Now resize the window
+ this->resize(orig);
+ }
+ //initialize the non-ui widgets
+ if(DEBUG){ qDebug() << " - Tab Bar Setup"; }
+ tabBar = new QTabBar(this);
+ tabBar->setTabsClosable(true);
+ tabBar->setMovable(true); //tabs are independant - so allow the user to sort them
+ tabBar->setShape(QTabBar::RoundedNorth);
+ tabBar->setFocusPolicy(Qt::NoFocus);
+ static_cast<QBoxLayout*>(ui->centralwidget->layout())->insertWidget(0,tabBar);
+ if(DEBUG){ qDebug() << " - Threading"; }
+ workThread = new QThread;
+ workThread->setObjectName("Lumina-fm filesystem worker");
+ worker = new DirData();
+ worker->zfsavailable = LUtils::isValidBinary("zfs");
+ connect(worker, SIGNAL(DirDataAvailable(QString, QString, LFileInfoList)), this, SLOT(DirDataAvailable(QString, QString, LFileInfoList)) );
+ connect(worker, SIGNAL(SnapshotDataAvailable(QString, QString, QStringList)), this, SLOT(SnapshotDataAvailable(QString, QString, QStringList)) );
+ worker->moveToThread(workThread);
+ if(DEBUG){ qDebug() << " - File System Model"; }
+ fsmod = new QFileSystemModel(this);
+ fsmod->setRootPath(QDir::homePath());
+ dirCompleter = new QCompleter(fsmod, this);
+ dirCompleter->setModelSorting( QCompleter::CaseInsensitivelySortedModel );
+ if(DEBUG){ qDebug() << " - Context Menu"; }
+ contextMenu = new QMenu(this);
+ radio_view_details = new QRadioButton(tr("Detailed List"), this);
+ radio_view_list = new QRadioButton(tr("Basic List"), this);
+ radio_view_tabs = new QRadioButton(tr("Prefer Tabs"), this);
+ radio_view_cols = new QRadioButton(tr("Prefer Columns"), this);
+ ui->menuView_Mode->clear();
+ ui->menuGroup_Mode->clear();
+ detWA = new QWidgetAction(this);
+ detWA->setDefaultWidget(radio_view_details);
+ listWA = new QWidgetAction(this);
+ listWA->setDefaultWidget(radio_view_list);
+ tabsWA = new QWidgetAction(this);
+ tabsWA->setDefaultWidget(radio_view_tabs);
+ colsWA = new QWidgetAction(this);
+ colsWA->setDefaultWidget(radio_view_cols);
+ ui->menuView_Mode->addAction(detWA);
+ ui->menuView_Mode->addAction(listWA);
+ ui->menuGroup_Mode->addAction(tabsWA);
+ ui->menuGroup_Mode->addAction(colsWA);
+ //Setup the pages
+ //ui->BrowserLayout->clear();
+ ui->page_player->setLayout(new QVBoxLayout());
+ ui->page_image->setLayout(new QVBoxLayout());
+ MW = new MultimediaWidget(this);
+ SW = new SlideshowWidget(this);
+ ui->page_player->layout()->addWidget(MW);
+ ui->page_image->layout()->addWidget(SW);
+
+ //Setup any specialty keyboard shortcuts
+ if(DEBUG){ qDebug() << " - Keyboard Shortcuts"; }
+ nextTabLShort = new QShortcut( QKeySequence(tr("Shift+Left")), this);
+ nextTabRShort = new QShortcut( QKeySequence(tr("Shift+Right")), this);
+
+ //Finish loading the interface
+ workThread->start();
+ if(DEBUG){ qDebug() << " - Icons"; }
+ setupIcons();
+ if(DEBUG){ qDebug() << " - Connections"; }
+ setupConnections();
+ if(DEBUG){ qDebug() << " - Settings"; }
+ loadSettings();
+ if(DEBUG){ qDebug() << " - Bookmarks"; }
+ RebuildBookmarksMenu();
+ if(DEBUG){ qDebug() << " - Devices"; }
+ RebuildDeviceMenu();
+ //Make sure we start on the browser page
+ if(DEBUG){ qDebug() << " - Load Browser Page"; }
+ //goToBrowserPage();
+ if(DEBUG){ qDebug() << " - Done with init"; }
+}
+
+MainUI::~MainUI(){
+ for(int i=0; i<DWLIST.length(); i++){
+ DWLIST[i]->cleanup();
+ }
+ workThread->quit();
+ //Also ensure the work thread is stopped
+ workThread->wait();
+}
+
+void MainUI::OpenDirs(QStringList dirs){
+ //Now open the dirs
+ if(dirs.isEmpty()){ dirs << QDir::homePath(); }
+ QStringList invalid;
+ for(int i=0; i<dirs.length(); i++){
+ if(dirs[i].simplified().isEmpty()){ continue; }
+ //Open this directory in a viewer
+ if(dirs[i].endsWith("/")){ dirs[i].chop(1); }
+ if(!QFile::exists(dirs[i])){ invalid << dirs[i]; continue; }
+ if(DEBUG){ qDebug() << "Open Directory:" << dirs[i]; }
+ ///Get a new Unique ID
+ int id = 0;
+ for(int j=0; j<DWLIST.length(); j++){
+ if(DWLIST[j]->id().section("-",1,1).toInt() >= id){ id = DWLIST[j]->id().section("-",1,1).toInt()+1; }
+ }
+ //Create the new DirWidget
+ DirWidget *DW = new DirWidget("DW-"+QString::number(id), this);
+ DW->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ ui->BrowserLayout->addWidget(DW);
+ DWLIST << DW;
+ //Connect the signals/slots for it
+ connect(DW, SIGNAL(OpenDirectories(QStringList)), this, SLOT(OpenDirs(QStringList)) );
+ connect(DW, SIGNAL(LoadDirectory(QString, QString)), worker, SLOT(GetDirData(QString, QString)) );
+ connect(DW, SIGNAL(findSnaps(QString, QString)), worker, SLOT(GetSnapshotData(QString, QString)) );
+ connect(DW, SIGNAL(PlayFiles(LFileInfoList)), this, SLOT(OpenPlayer(LFileInfoList)) );
+ connect(DW, SIGNAL(ViewFiles(LFileInfoList)), this, SLOT(OpenImages(LFileInfoList)) );
+ connect(DW, SIGNAL(LaunchTerminal(QString)), this, SLOT(OpenTerminal(QString)) );
+ connect(DW, SIGNAL(CutFiles(QStringList)), this, SLOT(CutFiles(QStringList)) );
+ connect(DW, SIGNAL(CopyFiles(QStringList)), this, SLOT(CopyFiles(QStringList)) );
+ connect(DW, SIGNAL(FavoriteFiles(QStringList)), this, SLOT(FavoriteFiles(QStringList)) );
+ connect(DW, SIGNAL(RenameFiles(QStringList)), this, SLOT(RenameFiles(QStringList)) );
+ connect(DW, SIGNAL(RemoveFiles(QStringList)), this, SLOT(RemoveFiles(QStringList)) );
+ connect(DW, SIGNAL(PasteFiles(QString,QStringList)), this, SLOT(PasteFiles(QString, QStringList)) );
+ connect(DW, SIGNAL(CloseBrowser(QString)), this, SLOT(CloseBrowser(QString)) );
+ //Now create the tab for this
+ if(radio_view_tabs->isChecked()){
+ int index = tabBar->addTab( LXDG::findIcon("folder-open",""), dirs[i].section("/",-1) );
+ tabBar->setTabWhatsThis( index, "DW-"+QString::number(id) );
+ tabBar->setCurrentIndex(index);
+ }else{
+ //Just make sure the browser tab is visible
+ bool found = false;
+ for(int i=0; i<tabBar->count() && !found; i++){
+ if(tabBar->tabWhatsThis(i)=="browser"){ tabBar->setCurrentIndex(i); found=true; }
+ }
+ if(!found){
+ //Need to create the generic Browser tab
+ int index = tabBar->addTab( LXDG::findIcon("folder-open",""), "Browser" );
+ tabBar->setTabWhatsThis( index, "browser" );
+ tabBar->setCurrentIndex(index);
+ }
+ }
+
+ //Initialize the widget with the proper settings
+ DW->setShowDetails(radio_view_details->isChecked());
+ DW->setShowSidebar(ui->actionShow_Action_Buttons->isChecked());
+ QList<DirWidget::DETAILTYPES> details; details <<DirWidget::NAME << DirWidget::SIZE << DirWidget::TYPE << DirWidget::DATEMOD;
+ DW->setDetails(details); //Which details to show and in which order (L->R)
+ DW->setShowThumbnails(ui->actionShow_Thumbnails->isChecked());
+ DW->setThumbnailSize(settings->value("iconsize", 32).toInt());
+ DW->setDirCompleter(dirCompleter);
+ DW->setShowCloseButton(!radio_view_tabs->isChecked());
+ //Now load the directory
+ DW->ChangeDir(dirs[i]); //kick off loading the directory info
+ }
+ //Update visibilities
+ tabChanged(tabBar->currentIndex());
+ tabBar->setVisible( tabBar->count() > 1 );
+ if(!invalid.isEmpty()){
+ QMessageBox::warning(this, tr("Invalid Directories"), tr("The following directories are invalid and could not be opened:")+"\n"+invalid.join(", ") );
+ }
+ //Double check that there is at least 1 dir loaded
+ //qDebug() << "OpenDirs:" << DWLIST.length() << dirs << invalid << tabBar->currentIndex();
+ if(DWLIST.isEmpty()){ OpenDirs(QStringList()); }
+
+}
+
+void MainUI::setupIcons(){
+ this->setWindowIcon( LXDG::findIcon("Insight-FileManager","") );
+
+ //Setup all the icons using libLumina
+ // File menu
+ ui->actionNew_Window->setIcon( LXDG::findIcon("window-new","") );
+ ui->actionNew_Tab->setIcon( LXDG::findIcon("tab-new","") );
+ ui->actionSearch->setIcon( LXDG::findIcon("edit-find","") );
+ ui->actionClose_Browser->setIcon( LXDG::findIcon("tab-close","") );
+ ui->actionClose->setIcon( LXDG::findIcon("application-exit","") );
+
+ // Edit menu
+ ui->actionRename->setIcon( LXDG::findIcon("edit-rename","") );
+ ui->actionCut_Selection->setIcon( LXDG::findIcon("edit-cut","") );
+ ui->actionCopy_Selection->setIcon( LXDG::findIcon("edit-copy","") );
+ ui->actionPaste->setIcon( LXDG::findIcon("edit-paste","") );
+ ui->actionDelete_Selection->setIcon( LXDG::findIcon("edit-delete","") );
+
+ // View menu
+ ui->actionRefresh->setIcon( LXDG::findIcon("view-refresh","") );
+ ui->menuView_Mode->setIcon( LXDG::findIcon("view-choose","") );
+ ui->menuGroup_Mode->setIcon( LXDG::findIcon("tab-duplicate","") );
+ ui->actionLarger_Icons->setIcon( LXDG::findIcon("zoom-in","") );
+ ui->actionSmaller_Icons->setIcon( LXDG::findIcon("zoom-out", "") );
+
+ // Bookmarks menu
+ ui->actionManage_Bookmarks->setIcon( LXDG::findIcon("bookmarks-organize","") );
+ ui->actionAdd_Bookmark->setIcon( LXDG::findIcon("bookmark-new","") );
+
+ // External Devices menu
+ ui->actionScan->setIcon( LXDG::findIcon("system-search","") );
+}
+
+//==========
+// PRIVATE
+//==========
+void MainUI::setupConnections(){
+ connect(tabBar, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int)) );
+ connect(tabBar, SIGNAL(tabCloseRequested(int)), this, SLOT(tabClosed(int)) );
+ connect(ui->menuBookmarks, SIGNAL(triggered(QAction*)), this, SLOT(goToBookmark(QAction*)) );
+ connect(ui->menuExternal_Devices, SIGNAL(triggered(QAction*)), this, SLOT(goToDevice(QAction*)) );
+
+ //Radio Buttons
+ connect(radio_view_details, SIGNAL(toggled(bool)), this, SLOT(viewModeChanged(bool)) );
+ connect(radio_view_list, SIGNAL(toggled(bool)), this, SLOT(viewModeChanged(bool)) );
+ connect(radio_view_tabs, SIGNAL(toggled(bool)), this, SLOT(groupModeChanged(bool)) );
+ connect(radio_view_cols, SIGNAL(toggled(bool)), this, SLOT(groupModeChanged(bool)) );
+
+ //Special Keyboard Shortcuts
+ connect(nextTabLShort, SIGNAL(activated()), this, SLOT( prevTab() ) );
+ connect(nextTabRShort, SIGNAL(activated()), this, SLOT( nextTab() ) );
+}
+
+void MainUI::loadSettings(){
+ //Note: make sure this is run after all the UI elements are created and connected to slots
+ // but before the first directory gets loaded
+ ui->actionView_Hidden_Files->setChecked( settings->value("showhidden", false).toBool() );
+ on_actionView_Hidden_Files_triggered(); //make sure to update the models too
+ ui->actionShow_Action_Buttons->setChecked(settings->value("showactions", true).toBool() );
+ on_actionShow_Action_Buttons_triggered(); //make sure to update the UI
+ ui->actionShow_Thumbnails->setChecked( settings->value("showthumbnails", true).toBool() );
+ //View Type
+ bool showDetails = (settings->value("viewmode","details").toString()=="details");
+ if(showDetails){ radio_view_details->setChecked(true); }
+ else{ radio_view_list->setChecked(true); }
+ //Grouping type
+ bool usetabs = (settings->value("groupmode","tabs").toString()=="tabs");
+ if(usetabs){ radio_view_tabs->setChecked(true); }
+ else{ radio_view_cols->setChecked(true); }
+
+}
+
+void MainUI::RebuildBookmarksMenu(){
+ //Create the bookmarks menu
+ QStringList BM = settings->value("bookmarks", QStringList()).toStringList();
+ ui->menuBookmarks->clear();
+ ui->menuBookmarks->addAction(ui->actionManage_Bookmarks);
+ ui->menuBookmarks->addAction(ui->actionAdd_Bookmark);
+ ui->menuBookmarks->addSeparator();
+ bool changed = false;
+ BM.sort(); //Sort alphabetically
+ for(int i=0; i<BM.length(); i++){
+ if(QFile::exists(BM[i].section("::::",1,1)) ){
+ QAction *act = new QAction(BM[i].section("::::",0,0),this);
+ act->setWhatsThis(BM[i].section("::::",1,1));
+ ui->menuBookmarks->addAction(act);
+ }else{
+ //Invalid directory - remove the bookmark
+ BM.removeAt(i);
+ i--;
+ changed = true;
+ }
+ }
+ if(changed){ settings->setValue("bookmarks",BM); }
+ ui->actionManage_Bookmarks->setEnabled(BM.length()>0);
+}
+
+void MainUI::RebuildDeviceMenu(){
+ //Create the External Devices Menu appropriately
+ ui->menuExternal_Devices->clear();
+ ui->menuExternal_Devices->addAction( ui->actionScan );
+ ui->menuExternal_Devices->addSeparator();
+ //Scan for externally mounted devices
+ QStringList devs = LOS::ExternalDevicePaths();
+ //Output Format: <type>::::<filesystem>::::<path> (6/24/14 - version 0.4.0 )
+ // <type> = [USB, HDRIVE, SDCARD, DVD, LVM, UNKNOWN]
+ qDebug() << "Externally-mounted devices:" << devs;
+ //Now add them to the menu appropriately
+ for(int i=0; i<devs.length(); i++){
+ //Skip hidden mount points (usually only for system usage - not user browsing)
+ QString label, path, fs;
+ //Format inputs as necesary
+ path = devs[i].section("::::",2,2);
+ fs = devs[i].section("::::",1,1);
+ if(path.endsWith("/") && path.length()>1 ){ path.chop(1); }
+ if(path == "/"){ label = tr("Root"); }
+ else{ label = path.section("/",-1).simplified(); }
+ if(label.startsWith(".") ){ continue; } //don't show hidden mountpoint (not usually user-browsable)
+ //Create entry for this device
+ if( !fs.simplified().isEmpty()){
+ //Add filesystem type to the label
+ label = QString(tr("%1 (Type: %2)")).arg(label, fs);
+ }
+ QAction *act = new QAction(label,this);
+ act->setWhatsThis(path); //full path to mountpoint
+ act->setToolTip( QString(tr("Filesystem: %1")).arg( devs[i].section("::::",1,1) ) );
+ //Now set the appropriate icon
+ QString type = devs[i].section("::::",0,0);
+ if(type=="USB"){ type = "drive-removable-media-usb"; }
+ else if(type=="HDRIVE" || type=="LVM"){ type = "drive-harddisk"; }
+ else if(type=="SDCARD"){ type = "media-flash-sd-mmc"; }
+ else if(type=="DVD"){ type = "media-optical"; }
+ else{ type = "drive-removable-media"; }
+ act->setIcon( LXDG::findIcon(type, "") );
+ ui->menuExternal_Devices->addAction(act);
+ }
+}
+
+DirWidget* MainUI::FindActiveBrowser(){
+ //Find the current directory
+ DirWidget *curB = 0;
+ //Get the current tab ID to start with
+ QString cur = tabBar->tabWhatsThis(tabBar->currentIndex());
+ //if(cur.startsWith("#")){ cur.clear(); } //multimedia/player tab open
+
+ if(DWLIST.length()==1){
+ //Only 1 browser open - use it
+ curB = DWLIST[0];
+ }else if(cur.startsWith("DW-")){
+ //This is a tab for a browser - just find the matching widget
+ for(int i=0; i<DWLIST.length(); i++){
+ if(DWLIST[i]->id()==cur){ curB = DWLIST[i]; break; }
+ }
+ }else{
+ //This is a bit more complex - either showing multiple columns or a non-browser tab is active
+ if(cur=="browser"){
+ //Column View
+ QWidget *focus = QApplication::focusWidget(); //the widget which currently has focus
+ for(int i=0; i<DWLIST.length(); i++){
+ if(DWLIST[i]->isAncestorOf(focus)){ curB = DWLIST[i]; break; } //This browser has focus
+ }
+
+ }else{
+ //Non-Browser in focus - use the fallback below
+ }
+ }
+ //if all else fails - just use the first browser in the list (there should always be at least one)
+ if(curB==0 && !DWLIST.isEmpty()){ curB = DWLIST[0]; }
+ return curB;
+}
+
+//==============
+// PRIVATE SLOTS
+//==============
+void MainUI::DisplayStatusBar(QString msg){
+ //qDebug() << "message to show in the status bar:" << msg;
+ ui->statusbar->showMessage(msg);
+}
+
+//---------------------
+//Menu Actions
+//---------------------
+void MainUI::on_actionNew_Window_triggered(){
+ QProcess::startDetached("lumina-fm -new-instance");
+}
+
+void MainUI::on_actionNew_Tab_triggered(){
+ OpenDirs(QStringList() << QDir::homePath());
+}
+
+void MainUI::on_actionSearch_triggered(){
+ DirWidget *dir = FindActiveBrowser();
+ if(dir==0){ return; }
+ QProcess::startDetached("lumina-search -dir \""+dir->currentDir()+"\"");
+}
+
+void MainUI::on_actionClose_Browser_triggered(){
+ tabClosed();
+}
+
+void MainUI::on_actionClose_triggered(){
+ if(tabBar->count() > 1){
+ if(QMessageBox::Yes != QMessageBox::question(this, tr("Verify Quit"), tr("You have multiple tabs open. Are you sure you want to quit?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes ) ){
+ return;
+ }
+ }
+ qDebug() << "Closing Down...";
+ this->close();
+}
+
+void MainUI::on_actionRename_triggered(){
+ DirWidget *dir = FindActiveBrowser();
+ if(DEBUG){ qDebug() << "Rename Shortcut Pressed:" << dir << dir->currentDir(); }
+ if(dir!=0){ QTimer::singleShot(0, dir, SLOT(TryRenameSelection()) ); }
+}
+
+void MainUI::on_actionCut_Selection_triggered(){
+ DirWidget *dir = FindActiveBrowser();
+ if(DEBUG){ qDebug() << "Cut Shortcut Pressed:" << dir << dir->currentDir(); }
+ if(dir!=0){ QTimer::singleShot(0, dir, SLOT(TryCutSelection()) ); }
+}
+
+void MainUI::on_actionCopy_Selection_triggered(){
+ DirWidget *dir = FindActiveBrowser();
+ if(DEBUG){ qDebug() << "Copy Shortcut Pressed:" << dir << dir->currentDir(); }
+ if(dir!=0){ QTimer::singleShot(0, dir, SLOT(TryCopySelection()) ); }
+}
+
+void MainUI::on_actionPaste_triggered(){
+ DirWidget *dir = FindActiveBrowser();
+ if(DEBUG){ qDebug() << "Paste Shortcut Pressed:" << dir << dir->currentDir(); }
+ if(dir!=0){ QTimer::singleShot(0, dir, SLOT(TryPasteSelection()) ); }
+}
+
+void MainUI::on_actionDelete_Selection_triggered(){
+ DirWidget *dir = FindActiveBrowser();
+ if(DEBUG){ qDebug() << "Delete Shortcut Pressed:" << dir << dir->currentDir(); }
+ if(dir!=0){ QTimer::singleShot(0, dir, SLOT(TryDeleteSelection()) ); }
+}
+
+void MainUI::on_actionRefresh_triggered(){
+ DirWidget *cur = FindActiveBrowser();
+ if(cur!=0){ cur->refresh(); }
+}
+
+void MainUI::on_actionView_Hidden_Files_triggered(){
+ worker->showHidden = ui->actionView_Hidden_Files->isChecked();
+ //Now save this setting for later
+ settings->setValue("showhidden", ui->actionView_Hidden_Files->isChecked());
+ worker->showHidden = ui->actionView_Hidden_Files->isChecked();
+ //Re-load the current browsers
+ for(int i=0; i<DWLIST.length(); i++){ DWLIST[i]->refresh(); }
+
+}
+
+void MainUI::on_actionShow_Action_Buttons_triggered(){
+ bool show = ui->actionShow_Action_Buttons->isChecked();
+ settings->setValue("showactions", show);
+ for(int i=0; i<DWLIST.length(); i++){ DWLIST[i]->setShowSidebar(show); }
+}
+
+void MainUI::on_actionShow_Thumbnails_triggered(){
+ //Now save this setting for later
+ bool show = ui->actionShow_Thumbnails->isChecked();
+ settings->setValue("showthumbnails", show);
+ for(int i=0; i<DWLIST.length(); i++){ DWLIST[i]->setShowThumbnails(show); }
+}
+
+void MainUI::goToBookmark(QAction *act){
+ if(act==ui->actionManage_Bookmarks){
+ BMMDialog dlg(this);
+ dlg.loadSettings(settings);
+ dlg.exec();
+ RebuildBookmarksMenu();
+ }else if(act == ui->actionAdd_Bookmark){
+ CreateBookMark();
+ }else{
+ //Find the current directory
+ DirWidget *dir = FindActiveBrowser();
+ if(dir!=0){
+ dir->ChangeDir(act->whatsThis());
+ return;
+ }
+ //If no current dir could be found - open a new tab/column
+ OpenDirs(QStringList() << act->whatsThis() );
+ }
+}
+
+void MainUI::goToDevice(QAction *act){
+ if(act==ui->actionScan){
+ RebuildDeviceMenu();
+ }else{
+ DirWidget *dir = FindActiveBrowser();
+ if(dir!=0){
+ dir->ChangeDir(act->whatsThis());
+ return;
+ }
+ //If no current dir could be found - open a new tab/column
+ OpenDirs(QStringList() << act->whatsThis() );
+ }
+}
+
+void MainUI::viewModeChanged(bool active){
+ if(!active){ return; } //on every view change, all radio buttons will call this function - only run this once though
+ bool showDetails = radio_view_details->isChecked();
+ if(showDetails){ settings->setValue("viewmode","details"); }
+ else{ settings->setValue("viewmode","list"); }
+
+ //Re-load the view widgets
+ for(int i=0; i<DWLIST.length(); i++){
+ DWLIST[i]->setShowDetails(showDetails);
+ }
+
+}
+
+void MainUI::groupModeChanged(bool active){
+ if(!active){ return; } //on every change, all radio buttons will call this function - only run this once though
+ bool usetabs = radio_view_tabs->isChecked();
+ if(usetabs){
+ settings->setValue("groupmode","tabs");
+ //Now clean up all the tabs (remove the generic one and add the specific ones)
+ for(int i=0; i<tabBar->count(); i++){
+ //Remove all the browser tabs
+ if( !tabBar->tabWhatsThis(i).startsWith("#") ){
+ tabBar->removeTab(i);
+ i--; //go back one to ensure nothing is missed
+ }
+ }
+ //Create all the specific browser tabs for open browsers
+ for(int i=0; i<DWLIST.length(); i++){
+ qDebug() << "Add specific tab:" << DWLIST[i]->currentDir() << DWLIST[i]->id();
+ int tab = tabBar->addTab( LXDG::findIcon("folder-open",""), DWLIST[i]->currentDir().section("/",-1) );
+ tabBar->setTabWhatsThis(tab, DWLIST[i]->id() );
+ DWLIST[i]->setShowCloseButton(false);
+ }
+ }else{
+ settings->setValue("groupmode","columns");
+ //Now clean up the tabs (remove the specific ones and add a generic one)
+ for(int i=0; i<tabBar->count(); i++){
+ //Remove all the browser tabs
+ if( !tabBar->tabWhatsThis(i).startsWith("#") ){
+ tabBar->removeTab(i);
+ i--; //go back one to ensure nothing is missed
+ }
+ }
+ //Now create the generic "browser" tab
+ int tab = tabBar->addTab( LXDG::findIcon("folder-open",""), tr("Browser") );
+ tabBar->setTabWhatsThis(tab, "browser" );
+ for(int i=0; i<DWLIST.length(); i++){ DWLIST[i]->setShowCloseButton(true); }
+ }
+ if(tabBar->currentIndex()<0){ tabBar->setCurrentIndex(0); }
+ tabBar->setVisible( tabBar->count() > 1 );
+ QTimer::singleShot(20, this, SLOT(tabChanged()) );
+}
+
+void MainUI::on_actionLarger_Icons_triggered(){
+ int size = settings->value("iconsize", 32).toInt();
+ size += 16;
+ for(int i=0; i<DWLIST.length(); i++){ DWLIST[i]->setThumbnailSize(size); }
+ settings->setValue("iconsize", size);
+}
+
+void MainUI::on_actionSmaller_Icons_triggered(){
+ int size = settings->value("iconsize", 32).toInt();
+ if(size <= 16){ return; }
+ size -= 16;
+ for(int i=0; i<DWLIST.length(); i++){ DWLIST[i]->setThumbnailSize(size); }
+ settings->setValue("iconsize", size);
+}
+
+void MainUI::CreateBookMark(){
+ QString dir = FindActiveBrowser()->currentDir();
+ bool ok = false;
+ QString name = QInputDialog::getText(this, tr("New Bookmark"), tr("Name:"), QLineEdit::Normal, dir, \
+ &ok, 0, Qt::ImhFormattedNumbersOnly | Qt::ImhUppercaseOnly | Qt::ImhLowercaseOnly);
+ if(!ok || name.isEmpty()){ return; } //cancelled
+ QStringList BM = settings->value("bookmarks",QStringList()).toStringList();
+ if(BM.filter(name+"::::").length() >0){
+ QMessageBox::warning(this, tr("Invalid Name"), tr("This bookmark name already exists. Please choose another.") );
+ QTimer::singleShot(0,this, SLOT(on_actionBookMark_triggered()));
+ return;
+ }
+ BM.append(name+"::::"+dir);
+ BM.sort(); //sort alphabetically by name
+ settings->setValue("bookmarks", BM);
+ //Now rebuild the bookmarks menu
+ RebuildBookmarksMenu();
+}
+
+void MainUI::tabChanged(int tab){
+ if(tab<0){ tab = tabBar->currentIndex(); }
+ if(tab < 0){ return; }
+ //Load the directory contained in the new tab
+ QString info = tabBar->tabWhatsThis(tab); //get the full directory
+ if(info.isEmpty()){ return; } //unknown tab (this happens while we are in the middle of making changes to tabs - just ignore it)
+ //qDebug() << "Change to Tab:" << tab << tabBar->tabText(tab);
+ //qDebug() << " -- ID:" << info;
+ if(info=="#MW"){ ui->stackedWidget->setCurrentWidget(ui->page_player); }
+ else if(info=="#SW"){ ui->stackedWidget->setCurrentWidget(ui->page_image); }
+ else{
+ ui->stackedWidget->setCurrentWidget(ui->page_browser);
+ if(radio_view_tabs->isChecked()){
+ for(int i=0; i<DWLIST.length(); i++){
+ DWLIST[i]->setVisible(DWLIST[i]->id()==info);
+ }
+ }else{
+ //For columns, all widgets need to be visible
+ for(int i=0; i<DWLIST.length(); i++){
+ DWLIST[i]->setVisible(true);
+ }
+ }
+ }
+ tabBar->setVisible( tabBar->count() > 1 );
+}
+
+void MainUI::tabClosed(int tab){
+ if(tabBar->count()==1){ return; } //Can't close the only tab
+ if(tab < 0){ tab = tabBar->currentIndex(); }
+ QString info = tabBar->tabWhatsThis(tab);
+ if(info=="browser"){ return; }
+ //qDebug() << "Tab Closed:" << info;
+ if(!info.startsWith("#")){
+ for(int i=0; i<DWLIST.length(); i++){
+ if(info == DWLIST[i]->id()){
+ DWLIST[i]->cleanup();
+ delete DWLIST.takeAt(i);
+ break;
+ }
+ }
+ }else if(info=="#MW"){
+ MW->Cleanup(); //prepare it to be hidden/removed
+ }
+ //Remove the tab (will automatically move to a different one);
+ qDebug() << "Closing tab:" << tab << tabBar->tabText(tab);
+ tabBar->removeTab(tab);
+ tabBar->setVisible( tabBar->count() > 1 );
+ if(DWLIST.isEmpty()){ OpenDirs(QStringList() << QDir::homePath() ); }
+}
+
+void MainUI::prevTab(){
+ int cur = tabBar->currentIndex();
+ if(cur == 0){ tabBar->setCurrentIndex( tabBar->count()-1 ); }
+ else{ tabBar->setCurrentIndex( cur-1 ); }
+}
+
+void MainUI::nextTab(){
+ int cur = tabBar->currentIndex();
+ if(cur == (tabBar->count()-1) ){ tabBar->setCurrentIndex(0); }
+ else{ tabBar->setCurrentIndex( cur+1 ); }
+}
+
+void MainUI::DirDataAvailable(QString id, QString dir, LFileInfoList list){
+ for(int i=0; i<DWLIST.length(); i++){
+ if(id == DWLIST[i]->id()){
+ DWLIST[i]->LoadDir(dir, list);
+ break;
+ }
+ }
+ if(radio_view_tabs->isChecked()){
+ //Need to update the text for the tab so it corresponds to the current directory loaded
+ for(int i=0; i<tabBar->count(); i++){
+ if(tabBar->tabWhatsThis(i)==id){
+ tabBar->setTabText(i, dir.section("/",-1));
+ }
+ }
+ }
+}
+
+void MainUI::SnapshotDataAvailable(QString id , QString dir, QStringList list){
+ for(int i=0; i<DWLIST.length(); i++){
+ if(id == DWLIST[i]->id()){
+ DWLIST[i]->LoadSnaps(dir, list);
+ break;
+ }
+ }
+}
+
+void MainUI::OpenPlayer(LFileInfoList list){
+ //See if the tab is available for the multimedia player
+ int tab = -1;
+ for(int i=0; i<tabBar->count(); i++){
+ if(tabBar->tabWhatsThis(i)=="#MW"){ tab=i; break;}
+ }
+ if(tab<0){
+ //Need to create a new tab
+ tab = tabBar->addTab(LXDG::findIcon("media-playback-start",""), tr("Multimedia"));
+ tabBar->setTabWhatsThis(tab,"#MW");
+ //Also clear the info in the player
+ MW->ClearPlaylist();
+ }
+ //Load the data into the player
+ MW->LoadMultimedia(list);
+ //Switch to the player tab
+ tabBar->setCurrentIndex(tab);
+}
+
+void MainUI::OpenImages(LFileInfoList list){
+ int tab = -1;
+ for(int i=0; i<tabBar->count(); i++){
+ if(tabBar->tabWhatsThis(i)=="#SW"){ tab=i; break;}
+ }
+ if(tab<0){
+ //Need to create a new tab
+ tab = tabBar->addTab(LXDG::findIcon("fileview-preview",""), tr("Slideshow"));
+ tabBar->setTabWhatsThis(tab,"#SW");
+ //Also clear the info in the viewer
+ SW->ClearImages();
+ }
+ //Load the data into the viewer
+ SW->LoadImages(list);
+ //Switch to the player tab
+ tabBar->setCurrentIndex(tab);
+ QTimer::singleShot(20, SW, SLOT(refresh()) );
+}
+
+void MainUI::OpenTerminal(QString dirpath){
+ //we use the application defined as the default terminal
+ QSettings sessionsettings( QSettings::UserScope, "LuminaDE","sessionsettings", this);
+ //xterm remains the default
+ QString defTerminal = sessionsettings.value("default-terminal", "xterm").toString();
+ //qDebug() << "Found default terminal:" << defTerminal;
+ //Now get the exec string and run it
+ QString cmd = LUtils::GenerateOpenTerminalExec(defTerminal, dirpath);
+ //qDebug() << "Starting Terminal with command:" << cmd;
+ QProcess::startDetached(cmd);
+
+}
+
+void MainUI::CutFiles(QStringList list){
+ qDebug() << "Cut Files:" << list;
+ if(list.isEmpty()){ return; } //nothing selected
+ //Format the data string
+ QList<QUrl> urilist; //Also assemble a URI list for cros-app compat (no copy/cut distinguishing)
+ for(int i=0; i<list.length(); i++){
+ urilist << QUrl::fromLocalFile(list[i]);
+ list[i] = list[i].prepend("cut::::");
+ }
+ //Now save that data to the global clipboard
+ QMimeData *dat = new QMimeData;
+ dat->clear();
+ dat->setData("x-special/lumina-copied-files", list.join("\n").toLocal8Bit());
+ dat->setUrls(urilist); //the text/uri-list mimetype - built in Qt conversion/use
+ QApplication::clipboard()->clear();
+ QApplication::clipboard()->setMimeData(dat);
+ //Update all the buttons to account for clipboard change
+ for(int i=0; i<DWLIST.length(); i++){ DWLIST[i]->refreshButtons(); }
+}
+
+void MainUI::CopyFiles(QStringList list){
+ qDebug() << "Copy Files:" << list;
+ if(list.isEmpty()){ return; } //nothing selected
+ //Format the data string
+ QList<QUrl> urilist; //Also assemble a URI list for cros-app compat (no copy/cut distinguishing)
+ for(int i=0; i<list.length(); i++){
+ urilist << QUrl::fromLocalFile(list[i]);
+ list[i] = list[i].prepend("copy::::");
+ }
+ //Now save that data to the global clipboard
+ QMimeData *dat = new QMimeData;
+ dat->clear();
+ dat->setData("x-special/lumina-copied-files", list.join("\n").toLocal8Bit());
+ dat->setUrls(urilist); //the text/uri-list mimetype - built in Qt conversion/use
+ QApplication::clipboard()->clear();
+ QApplication::clipboard()->setMimeData(dat);
+ //Update all the buttons to account for clipboard change
+ for(int i=0; i<DWLIST.length(); i++){ DWLIST[i]->refreshButtons(); }
+}
+
+void MainUI::PasteFiles(QString dir, QStringList raw){
+ qDebug() << "Paste Files:" << dir;
+ QStringList cut, copy, newcut, newcopy;
+ if(raw.isEmpty()){
+ //Pull info from the clipboard
+ const QMimeData *dat = QApplication::clipboard()->mimeData();
+ raw = QString(dat->data("x-special/lumina-copied-files")).split("\n");
+ }
+ if(!dir.endsWith("/")){ dir.append("/"); }
+ for(int i=0; i<raw.length(); i++){
+ if(raw[i].startsWith("cut::::")){
+ cut << raw[i].section("::::",1,50);
+ newcut << dir+raw[i].section("::::",1,50).section("/",-1);
+ }
+ else if(raw[i].startsWith("copy::::")){
+ copy << raw[i].section("::::",1,50);
+ newcopy<< dir+raw[i].section("::::",1,50).section("/",-1);
+ }
+ }
+ bool errs = false;
+ //Perform the copy/move operations
+ worker->pauseData = true; //pause any info requests
+ if(!copy.isEmpty()){
+ qDebug() << "Paste Copy:" << copy << "->" << newcopy;
+ FODialog dlg(this);
+ if( !dlg.CopyFiles(copy, newcopy) ){ return; } //cancelled
+ dlg.show();
+ dlg.exec();
+ errs = errs || !dlg.noerrors;
+ }
+ if(!cut.isEmpty()){
+ qDebug() << "Paste Cut:" << cut << "->" << newcut;
+ FODialog dlg(this);
+ if(!dlg.MoveFiles(cut, newcut) ){ return; } //cancelled
+ dlg.show();
+ dlg.exec();
+ errs = errs || !dlg.noerrors;
+ }
+ worker->pauseData = false; //resume info requests
+ //Modify the clipboard appropriately
+ if(!errs && !cut.isEmpty()){
+ //Now clear the clipboard since those old file locations are now invalid
+ QApplication::clipboard()->clear();
+ if(!copy.isEmpty()){
+ //There were also files copied: save those files back into the clipboard
+ QMimeData *dat = new QMimeData;
+ dat->clear();
+ dat->setData("x-special/lumina-copied-files", raw.filter("copy::::").join("\n").toLocal8Bit());
+ QApplication::clipboard()->setMimeData(dat);
+ }
+ }
+ //Update all the buttons to account for clipboard change
+ for(int i=0; i<DWLIST.length(); i++){ DWLIST[i]->refresh(); }
+}
+
+void MainUI::FavoriteFiles(QStringList list){
+ qDebug() << "Favorite Files:" << list;
+ for(int i=0; i<list.length(); i++){
+ LUtils::addFavorite(list[i]);
+ }
+ //Might want to make this a "toggle" instead of an add later on...
+}
+
+void MainUI::RenameFiles(QStringList list){
+ qDebug() << "Rename Files:" << list;
+ for(int i=0; i<list.length(); i++){
+ QString fname = list[i];
+ QString path = fname;
+ fname = fname.section("/",-1); //turn this into just the file name
+ path.chop(fname.length()); //turn this into the base directory path (has a "/" at the end)
+ //Now prompt for the new filename
+ bool ok = false;
+ QString nname = QInputDialog::getText(this, tr("Rename File"),tr("New Name:"), QLineEdit::Normal, fname, &ok);
+ if(!ok || nname.isEmpty()){ return; } //cancelled
+ //Now check for a file extension and add it if necessary
+ QString oext = fname.section(".",-1);
+ if("."+oext == fname){ oext.clear(); } //hidden file without an extension
+ else if(oext==fname){ oext.clear(); } //no extension
+ QString next = nname.section(".",-1);
+ if(next==nname){ next.clear(); } //no extension
+ if(next.isEmpty() && !oext.isEmpty()){
+ nname.append( "."+oext );
+ }
+ //Check if this filename already exists
+ bool overwrite = QFile::exists(path+nname);
+ if(overwrite){
+ if(QMessageBox::Yes != QMessageBox::question(this, tr("Overwrite File?"), tr("An existing file with the same name will be replaced. Are you sure you want to proceed?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) ){
+ return; //cancelled
+ }
+ }
+ //Now perform the move
+ //Don't pause the background worker for a simple rename - this operation is extremely fast
+ qDebug() << "Rename:" << path+fname << "->" << path+nname;
+ FODialog dlg(this);
+ dlg.setOverwrite(overwrite);
+ dlg.MoveFiles(QStringList() << path+fname, QStringList() << path+nname);
+ dlg.show();
+ dlg.exec();
+ } //end loop over list of files
+}
+
+void MainUI::RemoveFiles(QStringList list){
+ if(list.isEmpty()){ return; } //nothing selected
+ qDebug() << "Remove Files:" << list;
+ QStringList paths, names;
+ for(int i=0; i<list.length(); i++){
+ paths << list[i];
+ names << list[i].section("/",-1);
+ }
+
+ //Verify permanent removal of file/dir
+ QMessageBox dlgQ(QMessageBox::Question, tr("Verify Removal"), tr("WARNING: This will permanently delete the file(s) from the system!")+"\n"+tr("Are you sure you want to continue?"), QMessageBox::Yes | QMessageBox::No, this);
+ dlgQ.setDetailedText(tr("Items to be removed:")+"\n\n"+names.join("\n"));
+ dlgQ.exec();
+ if(dlgQ.result() != QMessageBox::Yes){ return; } //cancelled
+
+ //Now remove the file/dir
+ qDebug() << " - Delete: "<<paths;
+ worker->pauseData = true; //pause any info requests
+ FODialog dlg(this);
+ dlg.RemoveFiles(paths);
+ dlg.show();
+ dlg.exec();
+ worker->pauseData = false; //resume info requests
+ for(int i=0; i<DWLIST.length(); i++){ DWLIST[i]->refresh(); }
+}
+
+void MainUI::CloseBrowser(QString ID){
+ //Find the tab associated with this browser first
+ for(int i=0; i<tabBar->count(); i++){
+ if(tabBar->tabWhatsThis(i)==ID){
+ tabBar->removeTab(i);
+ break;
+ }
+ }
+ //Now remove the browser itself
+ for(int i=0; i<DWLIST.length(); i++){
+ if(DWLIST[i]->id()==ID){
+ delete DWLIST.takeAt(i);
+ break;
+ }
+ }
+ //If the last browser was just closed, create a new one
+ if(DWLIST.isEmpty()){
+ OpenDirs(QStringList() << QDir::homePath());
+ }
+}
diff --git a/src-qt5/desktop-utils/lumina-fm/MainUI.h b/src-qt5/desktop-utils/lumina-fm/MainUI.h
new file mode 100644
index 00000000..6c286152
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/MainUI.h
@@ -0,0 +1,173 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014-2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This is the main interface for the Lumina File Manager (Insight)
+//===========================================
+#ifndef _LUMINA_FILE_MANAGER_UI_H
+#define _LUMINA_FILE_MANAGER_UI_H
+// Qt includes
+#include <QMainWindow>
+#include <QTabBar>
+#include <QLineEdit>
+#include <QFileSystemModel>
+#include <QStringList>
+#include <QDebug>
+#include <QAction>
+#include <QProcess>
+#include <QSettings>
+#include <QInputDialog>
+#include <QMessageBox>
+#include <QDir>
+#include <QTimer>
+#include <QDateTime>
+#include <QShortcut>
+#include <QCompleter>
+#include <QClipboard>
+#include <QMimeData>
+#include <QTreeWidgetItem>
+#include <QListWidgetItem>
+#include <QRadioButton>
+#include <QWidgetAction>
+#include <QImageReader>
+#include <QScrollBar>
+#include <QFileDialog>
+#include <QResizeEvent>
+#include <QDesktopWidget>
+#include <QThread>
+#include <QUrl>
+#include <QThread>
+
+//Multimedia Widgets
+#include <QVideoWidget>
+#include <QMediaPlayer>
+
+// libLumina includes
+#include <LuminaXDG.h>
+#include <LuminaOS.h>
+
+// Local includes
+#include "FODialog.h" //file operation dialog
+#include "BMMDialog.h" //bookmark manager dialog
+
+#include "DirData.h"
+#include "widgets/MultimediaWidget.h"
+#include "widgets/SlideshowWidget.h"
+#include "widgets/DirWidget.h"
+
+namespace Ui{
+ class MainUI;
+};
+
+class MainUI : public QMainWindow{
+ Q_OBJECT
+public:
+ MainUI();
+ ~MainUI();
+
+public slots:
+ void OpenDirs(QStringList); //also called from the main.cpp after initialization
+ void setupIcons(); //used during initialization
+
+private:
+ Ui::MainUI *ui;
+ QThread *workThread;
+ DirData *worker;
+ //Internal non-ui widgets
+ QTabBar *tabBar;
+ QFileSystemModel *fsmod;
+ QMenu *contextMenu;
+ QRadioButton *radio_view_details, *radio_view_list, *radio_view_tabs, *radio_view_cols;
+ QWidgetAction *detWA, *listWA, *tabsWA, *colsWA;
+ QString favdir;
+ //UI Widgets
+ QList<DirWidget*> DWLIST;
+ MultimediaWidget *MW;
+ SlideshowWidget *SW;
+
+ QSettings *settings;
+ QShortcut *nextTabLShort, *nextTabRShort;
+ QCompleter *dirCompleter;
+
+ //Simplification Functions
+ void setupConnections(); //used during initialization
+ void loadSettings(); //used during initialization
+
+ void RebuildBookmarksMenu();
+ void RebuildDeviceMenu();
+
+ DirWidget* FindActiveBrowser();
+
+private slots:
+ void slotSingleInstance(QStringList in){
+ this->show();
+ this->raise();
+ this->activateWindow();
+ this->OpenDirs(in);
+ }
+
+ //void slotStartSyncTimer();
+
+ //Menu Actions
+ void on_actionNew_Window_triggered();
+ void on_actionNew_Tab_triggered();
+ void on_actionSearch_triggered();
+ void on_actionClose_Browser_triggered();
+ void on_actionClose_triggered();
+ void on_actionRename_triggered();
+ void on_actionCut_Selection_triggered();
+ void on_actionCopy_Selection_triggered();
+ void on_actionPaste_triggered();
+ void on_actionDelete_Selection_triggered();
+ void on_actionRefresh_triggered();
+ void on_actionView_Hidden_Files_triggered();
+ void on_actionShow_Action_Buttons_triggered();
+ void on_actionShow_Thumbnails_triggered();
+ void goToBookmark(QAction*);
+ void goToDevice(QAction*);
+ void viewModeChanged(bool);
+ void groupModeChanged(bool);
+ void on_actionLarger_Icons_triggered();
+ void on_actionSmaller_Icons_triggered();
+ void CreateBookMark();
+
+ //Tab interactions
+ void tabChanged(int tab = -1);
+ void tabClosed(int tab = -1);
+ void nextTab(); //For keyboard shortcuts
+ void prevTab(); //For keyboard shortcuts
+
+ //Backend Info passing
+ void DirDataAvailable(QString, QString, LFileInfoList);
+ void SnapshotDataAvailable(QString, QString, QStringList);
+
+ //Dir Browser Interactions
+ void OpenPlayer(LFileInfoList);
+ void OpenImages(LFileInfoList);
+ void OpenTerminal(QString dirpath);
+ void CutFiles(QStringList); //file selection
+ void CopyFiles(QStringList); //file selection
+ void PasteFiles(QString, QStringList raw = QStringList() ); //current dir, optional list of commands
+ void FavoriteFiles(QStringList); //file selection
+ void RenameFiles(QStringList); //file selection
+ void RemoveFiles(QStringList); //file selection
+ void CloseBrowser(QString); //ID
+
+ //file info in status bar
+ void DisplayStatusBar(QString);
+
+signals:
+ void Si_AdaptStatusBar(QFileInfoList fileList, QString path, QString messageFolders, QString messageFiles);
+
+protected:
+ void resizeEvent(QResizeEvent *ev){
+ //Save the new size to the settings file for later
+ settings->setValue("preferences/MainWindowSize", ev->size());
+ QMainWindow::resizeEvent(ev); //just in case the window needs to see the event too
+ }
+
+};
+
+#endif
diff --git a/src-qt5/desktop-utils/lumina-fm/MainUI.ui b/src-qt5/desktop-utils/lumina-fm/MainUI.ui
new file mode 100644
index 00000000..8078b804
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/MainUI.ui
@@ -0,0 +1,432 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainUI</class>
+ <widget class="QMainWindow" name="MainUI">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>567</width>
+ <height>415</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Insight</string>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <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="QStackedWidget" name="stackedWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="page_browser">
+ <layout class="QHBoxLayout" name="BrowserPageLayout">
+ <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="scroll_browsers">
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="verticalScrollBarPolicy">
+ <enum>Qt::ScrollBarAlwaysOff</enum>
+ </property>
+ <property name="sizeAdjustPolicy">
+ <enum>QAbstractScrollArea::AdjustToContents</enum>
+ </property>
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="scrollAreaWidgetContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>567</width>
+ <height>371</height>
+ </rect>
+ </property>
+ <layout class="QHBoxLayout" name="BrowserLayout">
+ <property name="spacing">
+ <number>2</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>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_player"/>
+ <widget class="QWidget" name="page_image"/>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menubar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>567</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menuFile">
+ <property name="title">
+ <string>File</string>
+ </property>
+ <addaction name="actionNew_Window"/>
+ <addaction name="actionNew_Tab"/>
+ <addaction name="actionSearch"/>
+ <addaction name="separator"/>
+ <addaction name="actionClose_Browser"/>
+ <addaction name="separator"/>
+ <addaction name="actionClose"/>
+ </widget>
+ <widget class="QMenu" name="menuView">
+ <property name="title">
+ <string>View</string>
+ </property>
+ <widget class="QMenu" name="menuView_Mode">
+ <property name="title">
+ <string>View Mode</string>
+ </property>
+ <addaction name="actionTabs"/>
+ </widget>
+ <widget class="QMenu" name="menuGroup_Mode">
+ <property name="title">
+ <string>Group Mode</string>
+ </property>
+ <addaction name="actionTabs_2"/>
+ </widget>
+ <addaction name="actionRefresh"/>
+ <addaction name="separator"/>
+ <addaction name="actionShow_Thumbnails"/>
+ <addaction name="actionView_Hidden_Files"/>
+ <addaction name="actionShow_Action_Buttons"/>
+ <addaction name="separator"/>
+ <addaction name="menuView_Mode"/>
+ <addaction name="menuGroup_Mode"/>
+ <addaction name="separator"/>
+ <addaction name="actionLarger_Icons"/>
+ <addaction name="actionSmaller_Icons"/>
+ </widget>
+ <widget class="QMenu" name="menuBookmarks">
+ <property name="title">
+ <string>Bookmarks</string>
+ </property>
+ <addaction name="actionManage_Bookmarks"/>
+ <addaction name="actionAdd_Bookmark"/>
+ <addaction name="separator"/>
+ </widget>
+ <widget class="QMenu" name="menuExternal_Devices">
+ <property name="title">
+ <string>External Devices</string>
+ </property>
+ <addaction name="actionScan"/>
+ <addaction name="separator"/>
+ </widget>
+ <widget class="QMenu" name="menuEdit">
+ <property name="title">
+ <string>Edit</string>
+ </property>
+ <addaction name="actionRename"/>
+ <addaction name="separator"/>
+ <addaction name="actionCut_Selection"/>
+ <addaction name="actionCopy_Selection"/>
+ <addaction name="actionPaste"/>
+ <addaction name="separator"/>
+ <addaction name="actionDelete_Selection"/>
+ </widget>
+ <addaction name="menuFile"/>
+ <addaction name="menuEdit"/>
+ <addaction name="menuView"/>
+ <addaction name="menuBookmarks"/>
+ <addaction name="menuExternal_Devices"/>
+ </widget>
+ <widget class="QStatusBar" name="statusbar"/>
+ <action name="actionNew_Tab">
+ <property name="text">
+ <string>New Browser</string>
+ </property>
+ <property name="toolTip">
+ <string>New Browser</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+T</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionClose">
+ <property name="text">
+ <string>Exit</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+Q</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="action_Preferences">
+ <property name="text">
+ <string>&amp;Preferences</string>
+ </property>
+ </action>
+ <action name="actionView_Hidden_Files">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>Show Hidden Files</string>
+ </property>
+ </action>
+ <action name="actionScan">
+ <property name="text">
+ <string>Scan for Devices</string>
+ </property>
+ </action>
+ <action name="actionManage_Bookmarks">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>Manage Bookmarks</string>
+ </property>
+ <property name="whatsThis">
+ <string notr="true"/>
+ </property>
+ </action>
+ <action name="actionShow_Action_Buttons">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>Show Action Buttons</string>
+ </property>
+ </action>
+ <action name="actionShow_Thumbnails">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>Load Thumbnails</string>
+ </property>
+ </action>
+ <action name="actionSearch">
+ <property name="text">
+ <string>Search Directory...</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+F</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionTabs">
+ <property name="text">
+ <string notr="true">details</string>
+ </property>
+ <property name="iconText">
+ <string notr="true">details</string>
+ </property>
+ <property name="toolTip">
+ <string notr="true">details</string>
+ </property>
+ </action>
+ <action name="actionTabs_2">
+ <property name="text">
+ <string notr="true">tabs</string>
+ </property>
+ <property name="iconText">
+ <string notr="true">tabs</string>
+ </property>
+ <property name="toolTip">
+ <string notr="true">tabs</string>
+ </property>
+ </action>
+ <action name="actionIncrease_Icon_Size">
+ <property name="text">
+ <string>Increase Icon Size</string>
+ </property>
+ </action>
+ <action name="actionDecrease_Icon_Size">
+ <property name="text">
+ <string>Decrease Icon Size</string>
+ </property>
+ </action>
+ <action name="actionLarger_Icons">
+ <property name="text">
+ <string>Larger Icons</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl++</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionSmaller_Icons">
+ <property name="text">
+ <string>Smaller Icons</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+-</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionNew_Window">
+ <property name="text">
+ <string>New Window</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+N</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionAdd_Bookmark">
+ <property name="text">
+ <string>Add Bookmark</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+D</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionRename">
+ <property name="text">
+ <string>Rename...</string>
+ </property>
+ <property name="shortcut">
+ <string>F2</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionCut_Selection">
+ <property name="text">
+ <string>Cut Selection</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+X</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionCopy_Selection">
+ <property name="text">
+ <string>Copy Selection</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+C</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionPaste">
+ <property name="text">
+ <string>Paste</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+V</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionDelete_Selection">
+ <property name="text">
+ <string>Delete Selection</string>
+ </property>
+ <property name="shortcut">
+ <string>Del</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionRefresh">
+ <property name="text">
+ <string>Refresh</string>
+ </property>
+ <property name="shortcut">
+ <string>F5</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ <action name="actionClose_Browser">
+ <property name="text">
+ <string>Close Browser</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+W</string>
+ </property>
+ <property name="shortcutContext">
+ <enum>Qt::ApplicationShortcut</enum>
+ </property>
+ </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src-qt5/desktop-utils/lumina-fm/ScrollDialog.h b/src-qt5/desktop-utils/lumina-fm/ScrollDialog.h
new file mode 100644
index 00000000..eefe62f4
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/ScrollDialog.h
@@ -0,0 +1,55 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This is the dialog for showing a lot of text in a scrollable format (instead of QMessageBox)
+//===========================================
+#ifndef _LUMINA_FILE_MANAGER_SCROLL_DIALOG_H
+#define _LUMINA_FILE_MANAGER_SCROLL_DIALOG_H
+
+#include <QDialog>
+#include <QVBoxLayout>
+#include <QTextEdit>
+#include <QDialogButtonBox>
+
+class ScrollDialog : public QDialog{
+ Q_OBJECT
+
+private:
+ QDialogButtonBox *buttons;
+ QTextEdit *label;
+ QVBoxLayout *layout1;
+
+public:
+ ScrollDialog(QWidget *parent = 0) : QDialog(parent){
+ //Create the widgets
+ buttons = new QDialogButtonBox(QDialogButtonBox::Ok, Qt::Horizontal, this);
+ label = new QTextEdit(this);
+ label->setReadOnly(true);
+ label->setWordWrapMode(QTextOption::NoWrap);
+ layout1 = new QVBoxLayout(this);
+ //Put them in the dialog
+ layout1->addWidget(label);
+ layout1->addWidget(buttons);
+ this->setLayout(layout1);
+ //Connect signals/slots
+ connect(buttons, SIGNAL(accepted()), this, SLOT(accept()) );
+ connect(buttons, SIGNAL(rejected()), this, SLOT(reject()) );
+ //Set a useful size/position
+ this->resize(400,200);
+ if(parent!=0){
+ QPoint ctr = parent->mapToGlobal(parent->geometry().center());
+ this->move( ctr.x()-(this->width()/2), ctr.y()-(this->height()/2) );
+ }
+ }
+ ~ScrollDialog(){}
+
+ void setText(QString txt){
+ label->setPlainText(txt);
+ //this->resize( label->fontMetrics().width(txt.section("\n",0,0))+30, this->height());
+ }
+
+};
+#endif \ No newline at end of file
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_af.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_af.ts
new file mode 100644
index 00000000..dd10058e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_af.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="af_ZA">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ar.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ar.ts
new file mode 100644
index 00000000..32db908d
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ar.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ar_SA">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_az.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_az.ts
new file mode 100644
index 00000000..f855079c
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_az.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="az_AZ">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bg.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bg.ts
new file mode 100644
index 00000000..a4c054ef
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bg.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="bg_BG">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bn.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bn.ts
new file mode 100644
index 00000000..e9615d02
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bn.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="bn_BD">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bs.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bs.ts
new file mode 100644
index 00000000..4f159b69
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_bs.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="bs_BA">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ca.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ca.ts
new file mode 100644
index 00000000..69f4541d
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ca.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ca_ES">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cs.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cs.ts
new file mode 100644
index 00000000..c35ad5c3
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cs.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cy.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cy.ts
new file mode 100644
index 00000000..fdfd0a8e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cy.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cy_GB">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_da.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_da.ts
new file mode 100644
index 00000000..a0a91f2f
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_da.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="da_DK">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_de.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_de.ts
new file mode 100644
index 00000000..90e736d6
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_de.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de_DE">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_el.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_el.ts
new file mode 100644
index 00000000..9a1e6c22
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_el.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="el_GR">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_en_GB.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_en_GB.ts
new file mode 100644
index 00000000..74aeb9bc
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_en_GB.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_GB">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_en_ZA.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_en_ZA.ts
new file mode 100644
index 00000000..5b84de18
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_en_ZA.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_ZA">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_es.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_es.ts
new file mode 100644
index 00000000..15b058fa
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_es.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="es_ES">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_et.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_et.ts
new file mode 100644
index 00000000..3e22e513
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_et.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="et_EE">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_eu.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_eu.ts
new file mode 100644
index 00000000..853c2f39
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_eu.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="eu_ES">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fa.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fa.ts
new file mode 100644
index 00000000..19fcca86
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fa.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fa_IR">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fi.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fi.ts
new file mode 100644
index 00000000..02a88fcd
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fi.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fi_FI">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr.ts
new file mode 100644
index 00000000..c57fcc41
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr_CA.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr_CA.ts
new file mode 100644
index 00000000..45db8f2a
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr_CA.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_CA">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_gl.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_gl.ts
new file mode 100644
index 00000000..0a9eccd0
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_gl.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="gl_ES">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_he.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_he.ts
new file mode 100644
index 00000000..3cfd4663
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_he.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="he_IL">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hi.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hi.ts
new file mode 100644
index 00000000..2a6a4b61
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hi.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hi_IN">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hr.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hr.ts
new file mode 100644
index 00000000..2aeb403b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hr.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hr_HR">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hu.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hu.ts
new file mode 100644
index 00000000..bf691182
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_hu.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hu_HU">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation>Insight</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation>Multimédia lejátszó megnyitása</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation>Fájl(ok) megnyitása</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation>Lejátszási lista</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation>Ugrás a következőre</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation>Ugrás az elejére</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation>Ugrás az előzőre</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation>Ugrás a végére</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation>Név</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation>Módosítás dátuma</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation>Méret</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation>Tulajdonos</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation>Teljes könyvtár visszaállítása</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation>Összes visszaállítása</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation>Kijelölt elem visszaállítása</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation>Kijelölés visszaállítása</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation>Meglévő fájlok felülírása</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation>Fájl</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation>Szerkesztés</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation>Nézet</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation>Könyvjelzők</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation>Eszköztár</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation>Új &amp;fül</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation>Fül bezárása</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation>Ki&amp;lépés</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation>Gyorsindítók</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation>Zeneljátszó</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation>Képnéző</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation>Rejtett fájlok megjelenítése</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation>Vissza</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation>Vissza a könyvtárba</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation>Frissítés</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation>Könyvtár frissítése</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation>Könyvjelző</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation>Könyvtár könyvjelzőzése</translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_id.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_id.ts
new file mode 100644
index 00000000..6b6bb633
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_id.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="id_ID">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_is.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_is.ts
new file mode 100644
index 00000000..c93e2ea0
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_is.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="is_IS">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_it.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_it.ts
new file mode 100644
index 00000000..f8cf221e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_it.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="it_IT">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ja.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ja.ts
new file mode 100644
index 00000000..b9599f4b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ja.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja_JP">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ka.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ka.ts
new file mode 100644
index 00000000..f52e8c1a
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ka.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ka_GE">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ko.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ko.ts
new file mode 100644
index 00000000..878b4dd2
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ko.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ko_KR">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lt.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lt.ts
new file mode 100644
index 00000000..7c4e3690
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lt.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="lt_LT">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lv.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lv.ts
new file mode 100644
index 00000000..e2041972
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lv.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="lv_LV">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mk.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mk.ts
new file mode 100644
index 00000000..7ae1b84b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mk.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="mk_MK">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mn.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mn.ts
new file mode 100644
index 00000000..b440aadf
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mn.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="mn_MN">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ms.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ms.ts
new file mode 100644
index 00000000..d91b8a85
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ms.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ms_MY">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mt.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mt.ts
new file mode 100644
index 00000000..94614b74
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_mt.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="mt_MT">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_nb.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_nb.ts
new file mode 100644
index 00000000..e99ce5c7
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_nb.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="nb_NO">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_nl.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_nl.ts
new file mode 100644
index 00000000..35a69730
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_nl.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="nl_NL">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation>Open multimedia speler</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation>Bekijk diavoorstelling</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation>Herstel bestand(en)</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation>Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation>Ga naar volgende</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation>Ga naar begin</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation>Ga naar vorige</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation>Ga naar einde</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation>Naam</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation>Datum aangepast</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation>Grootte</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation>Eigenaar</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation>Herstel hele map</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation>Herstel alles</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation>Herstel geselecteerd items</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation>Herstel geselecteerde</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation>Overschrijf bestaande bestanden</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation>Bestand</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation>Bewerken</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation>Bekijken</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation>Bladwijzers</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation>Nieuwe &amp;tab</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation>Tab sluiten</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation>&amp;Voorkeuren</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation>Snelkoppelingen</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation>Muziek speler</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation>Afbeelding viewer</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation>Map omhoog</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation>Ga een map omhoog</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation>Hoofd map</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation>Ga naar uw hoofd map</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation>Bekijk verborgen bestanden</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation>Terug</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation>Terug naar map</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation>Verversen</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation>Ververs map</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation>Bladwijzer</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation>Refereer deze map</translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pa.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pa.ts
new file mode 100644
index 00000000..cdc4ec84
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pa.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pa_IN">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pl.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pl.ts
new file mode 100644
index 00000000..c1981fdb
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pl.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pl_PL">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pt.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pt.ts
new file mode 100644
index 00000000..ca7e1142
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pt.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pt_PT">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation>Insight</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation>Abrir Leitor de Multimédia</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation>Ver 'Slideshow'</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation>Restaurar Ficheiro(s)</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation>Playlist</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation>Avançar</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation>TextLabel</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation>Início</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation>Anterior</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation>Último</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation>Nome</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation>Data de alteração</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation>Tamanho</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation>Dono</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation>Restaurar pasta completa</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation>Restaurar tudo</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation>Restaurar item selecionado</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation>Restaurar seleção</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation>Substituir Ficheiros Existentes</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation>Ficheiro</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation>Editar</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation>Ver</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation>Favoritos</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation>toolBar</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation>Novo &amp;Separador</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation>Fechar Separador</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation>&amp;Sair</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation>&amp;Preferências</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation>Atalhos</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation>Leitor de Música</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation>Visualizador de Imagens</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation>UpDir</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation>Ir uma pasta acima</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation>Ir para a pasta 'Home'</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation>Ver ficheiros escondidos</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation>Voltar</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation>Voltar a pasta anterior</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation>Atualizar</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation>Atualizar Pasta</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation>Favoritos</translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation>Marcar esta pasta como Favorita</translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pt_BR.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pt_BR.ts
new file mode 100644
index 00000000..3d145f96
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_pt_BR.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pt_BR">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ro.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ro.ts
new file mode 100644
index 00000000..e14478fa
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ro.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ro_MD">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ru.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ru.ts
new file mode 100644
index 00000000..cd329149
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ru.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru_RU">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sk.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sk.ts
new file mode 100644
index 00000000..eb6e90f2
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sk.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sk_SK">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sl.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sl.ts
new file mode 100644
index 00000000..74defea9
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sl.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sl_SI">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sr.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sr.ts
new file mode 100644
index 00000000..2a6bc068
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sr.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sr_CS">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sv.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sv.ts
new file mode 100644
index 00000000..0df990b6
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sv.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sv_SE">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sw.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sw.ts
new file mode 100644
index 00000000..3071423f
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_sw.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sw_KE">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ta.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ta.ts
new file mode 100644
index 00000000..6d98ed5c
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ta.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ta_IN">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_tg.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_tg.ts
new file mode 100644
index 00000000..8f2871fc
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_tg.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="tg_TJ">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_th.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_th.ts
new file mode 100644
index 00000000..4d35afe7
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_th.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="th_TH">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_tr.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_tr.ts
new file mode 100644
index 00000000..12ed8708
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_tr.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="tr_TR">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_uk.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_uk.ts
new file mode 100644
index 00000000..2c6ef85b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_uk.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="uk_UA">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_uz.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_uz.ts
new file mode 100644
index 00000000..1f14d13b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_uz.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="uz_UZ">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_vi.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_vi.ts
new file mode 100644
index 00000000..d31a6a52
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_vi.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="vi_VN">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_CN.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_CN.ts
new file mode 100644
index 00000000..d7ddaa81
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_CN.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_CN">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_HK.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_HK.ts
new file mode 100644
index 00000000..fe4a5906
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_HK.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_HK">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_TW.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_TW.ts
new file mode 100644
index 00000000..c71b29a0
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_TW.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zu.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zu.ts
new file mode 100644
index 00000000..29dc4ebc
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zu.ts
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zu_ZA">
+<context>
+ <name>MainUI</name>
+ <message>
+ <location filename="../MainUI.ui" line="14"/>
+ <source>Insight</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="51"/>
+ <source>Open Multimedia Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="54"/>
+ <location filename="../MainUI.ui" line="67"/>
+ <location filename="../MainUI.ui" line="80"/>
+ <location filename="../MainUI.ui" line="136"/>
+ <location filename="../MainUI.ui" line="143"/>
+ <location filename="../MainUI.ui" line="215"/>
+ <location filename="../MainUI.ui" line="225"/>
+ <location filename="../MainUI.ui" line="271"/>
+ <location filename="../MainUI.ui" line="281"/>
+ <location filename="../MainUI.ui" line="309"/>
+ <location filename="../MainUI.ui" line="337"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="64"/>
+ <source>View Slideshow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="77"/>
+ <source>Restore File(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="106"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="116"/>
+ <location filename="../MainUI.ui" line="268"/>
+ <source>Go to Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="127"/>
+ <source>TextLabel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="212"/>
+ <source>Go to Beginning</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="222"/>
+ <source>Go to Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="278"/>
+ <source>Go to End</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="356"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="361"/>
+ <source>Date Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="366"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="371"/>
+ <source>Owner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="381"/>
+ <source>Restore entire directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="384"/>
+ <source>Restore All</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="394"/>
+ <source>Restore Selected Item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="397"/>
+ <source>Restore Selection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="420"/>
+ <source>Overwrite Existing Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="443"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="451"/>
+ <source>Edit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="457"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="465"/>
+ <source>Bookmarks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="476"/>
+ <source>toolBar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="497"/>
+ <source>New &amp;Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="502"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="507"/>
+ <source>E&amp;xit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="512"/>
+ <source>&amp;Preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="523"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="534"/>
+ <source>Music Player</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="545"/>
+ <source>Image Viewer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="550"/>
+ <source>UpDir</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="553"/>
+ <source>Go up one directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="558"/>
+ <source>Home</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="561"/>
+ <source>Go to your home directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="572"/>
+ <source>View Hidden Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="577"/>
+ <source>Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="580"/>
+ <source>Back to directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="585"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="588"/>
+ <source>Refresh Directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="591"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="596"/>
+ <source>Bookmark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../MainUI.ui" line="599"/>
+ <source>Bookmark this directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/lumina-fm.desktop b/src-qt5/desktop-utils/lumina-fm/lumina-fm.desktop
new file mode 100644
index 00000000..8112d2cd
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/lumina-fm.desktop
@@ -0,0 +1,18 @@
+[Desktop Entry]
+Exec=lumina-fm %F
+Icon=Insight-FileManager
+Terminal=false
+Type=Application
+StartupNotify=true
+Categories=Utility;
+MimeType=inode/directory;
+Name=Insight File Manager
+Name[fr]=Insight Gestionnaire de fichiers
+Name[fr_CA]=Insight Gestionnaire de fichiers
+Name[ja]=Insightファイルマネージャー
+Name[pl]=Insight Menadżer plików
+Comment=Access and use files
+Comment[fr]=Accéder et utiliser les fichiers
+Comment[fr_CA]=Accéder et utiliser les fichiers
+Comment[ja]=最近使ったファイル
+Comment[pl]=Dostęp i używanie plików
diff --git a/src-qt5/desktop-utils/lumina-fm/lumina-fm.pro b/src-qt5/desktop-utils/lumina-fm/lumina-fm.pro
new file mode 100644
index 00000000..9bb90a0e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/lumina-fm.pro
@@ -0,0 +1,116 @@
+include("$${PWD}/../../OS-detect.pri")
+
+QT += core gui
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets multimedia multimediawidgets network concurrent svg
+
+
+TARGET = lumina-fm
+target.path = $${L_BINDIR}
+
+TEMPLATE = app
+
+SOURCES += main.cpp \
+ MainUI.cpp \
+ FODialog.cpp \
+ BMMDialog.cpp \
+ widgets/MultimediaWidget.cpp \
+ widgets/SlideshowWidget.cpp \
+ widgets/DirWidget.cpp
+
+HEADERS += MainUI.h \
+ FODialog.h \
+ BMMDialog.h \
+ ScrollDialog.h \
+ DirData.h \
+ widgets/DDListWidgets.h \
+ widgets/MultimediaWidget.h \
+ widgets/SlideshowWidget.h \
+ widgets/DirWidget.h
+
+FORMS += MainUI.ui \
+ FODialog.ui \
+ BMMDialog.ui \
+ widgets/MultimediaWidget.ui \
+ widgets/SlideshowWidget.ui \
+ widgets/DirWidget.ui
+
+# RESOURCES+= lumina-fm.qrc
+
+LIBS += -lLuminaUtils
+
+DEPENDPATH += ../libLumina
+
+TRANSLATIONS = i18n/lumina-fm_af.ts \
+ i18n/lumina-fm_ar.ts \
+ i18n/lumina-fm_az.ts \
+ i18n/lumina-fm_bg.ts \
+ i18n/lumina-fm_bn.ts \
+ i18n/lumina-fm_bs.ts \
+ i18n/lumina-fm_ca.ts \
+ i18n/lumina-fm_cs.ts \
+ i18n/lumina-fm_cy.ts \
+ i18n/lumina-fm_da.ts \
+ i18n/lumina-fm_de.ts \
+ i18n/lumina-fm_el.ts \
+ i18n/lumina-fm_en_GB.ts \
+ i18n/lumina-fm_en_ZA.ts \
+ i18n/lumina-fm_es.ts \
+ i18n/lumina-fm_et.ts \
+ i18n/lumina-fm_eu.ts \
+ i18n/lumina-fm_fa.ts \
+ i18n/lumina-fm_fi.ts \
+ i18n/lumina-fm_fr.ts \
+ i18n/lumina-fm_fr_CA.ts \
+ i18n/lumina-fm_gl.ts \
+ i18n/lumina-fm_he.ts \
+ i18n/lumina-fm_hi.ts \
+ i18n/lumina-fm_hr.ts \
+ i18n/lumina-fm_hu.ts \
+ i18n/lumina-fm_id.ts \
+ i18n/lumina-fm_is.ts \
+ i18n/lumina-fm_it.ts \
+ i18n/lumina-fm_ja.ts \
+ i18n/lumina-fm_ka.ts \
+ i18n/lumina-fm_ko.ts \
+ i18n/lumina-fm_lt.ts \
+ i18n/lumina-fm_lv.ts \
+ i18n/lumina-fm_mk.ts \
+ i18n/lumina-fm_mn.ts \
+ i18n/lumina-fm_ms.ts \
+ i18n/lumina-fm_mt.ts \
+ i18n/lumina-fm_nb.ts \
+ i18n/lumina-fm_nl.ts \
+ i18n/lumina-fm_pa.ts \
+ i18n/lumina-fm_pl.ts \
+ i18n/lumina-fm_pt.ts \
+ i18n/lumina-fm_pt_BR.ts \
+ i18n/lumina-fm_ro.ts \
+ i18n/lumina-fm_ru.ts \
+ i18n/lumina-fm_sk.ts \
+ i18n/lumina-fm_sl.ts \
+ i18n/lumina-fm_sr.ts \
+ i18n/lumina-fm_sv.ts \
+ i18n/lumina-fm_sw.ts \
+ i18n/lumina-fm_ta.ts \
+ i18n/lumina-fm_tg.ts \
+ i18n/lumina-fm_th.ts \
+ i18n/lumina-fm_tr.ts \
+ i18n/lumina-fm_uk.ts \
+ i18n/lumina-fm_uz.ts \
+ i18n/lumina-fm_vi.ts \
+ i18n/lumina-fm_zh_CN.ts \
+ i18n/lumina-fm_zh_HK.ts \
+ i18n/lumina-fm_zh_TW.ts \
+ i18n/lumina-fm_zu.ts
+
+dotrans.path=$${L_SHAREDIR}/Lumina-DE/i18n/
+dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)$${L_SHAREDIR}/Lumina-DE/i18n/
+
+desktop.files=lumina-fm.desktop
+desktop.path=$${L_SHAREDIR}/applications/
+
+INSTALLS += target dotrans desktop
+
+NO_I18N{
+ INSTALLS -= dotrans
+}
diff --git a/src-qt5/desktop-utils/lumina-fm/main.cpp b/src-qt5/desktop-utils/lumina-fm/main.cpp
new file mode 100644
index 00000000..b05c4016
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/main.cpp
@@ -0,0 +1,33 @@
+#include <QApplication>
+#include <QDebug>
+#include <QFile>
+#include <QStringList>
+
+#include "MainUI.h"
+#include <LuminaOS.h>
+#include <LuminaThemes.h>
+#include <LuminaUtils.h>
+#include <LuminaSingleApplication.h>
+
+int main(int argc, char ** argv)
+{
+ LTHEME::LoadCustomEnvSettings();
+ LSingleApplication a(argc, argv, "lumina-fm"); //loads translations inside constructor
+ if( !a.isPrimaryProcess()){ return 0; }
+ qDebug() << "Loaded QApplication";
+ a.setApplicationName("Insight File Manager");
+ LuminaThemeEngine themes(&a);
+
+ //Get the list of inputs for the initial load
+ QStringList in = a.inputlist; //has fixes for relative paths and such
+ if(in.isEmpty()){ in << QDir::homePath(); }
+ //Start the UI
+ MainUI w;
+ QObject::connect(&a, SIGNAL(InputsAvailable(QStringList)), &w, SLOT(slotSingleInstance(QStringList)) );
+ QObject::connect(&themes, SIGNAL(updateIcons()), &w, SLOT(setupIcons()) );
+ w.OpenDirs(in);
+ w.show();
+
+ int retCode = a.exec();
+ return retCode;
+}
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/DDListWidgets.h b/src-qt5/desktop-utils/lumina-fm/widgets/DDListWidgets.h
new file mode 100644
index 00000000..e3de9b0e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/DDListWidgets.h
@@ -0,0 +1,240 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This is a couple simple widget subclasses to enable drag and drop functionality
+// NOTE: The "whatsThis()" item information needs to correspond to the "[cut/copy]::::<file path>" syntax
+//NOTE2: The "whatsThis()" information on the widget itself should be the current dir path *if* it can accept drops
+//===========================================
+#ifndef _LUMINA_FM_DRAG_DROP_WIDGETS_H
+#define _LUMINA_FM_DRAG_DROP_WIDGETS_H
+
+#define MIME QString("x-special/lumina-copied-files")
+
+#include <QListWidget>
+#include <QTreeWidget>
+#include <QDropEvent>
+#include <QMimeData>
+#include <QDrag>
+#include <QFileInfo>
+#include <QDebug>
+#include <QMouseEvent>
+#include <QUrl>
+#include <QDir>
+
+//==============
+// LIST WIDGET
+//==============
+class DDListWidget : public QListWidget{
+ Q_OBJECT
+public:
+ DDListWidget(QWidget *parent=0) : QListWidget(parent){
+ //Drag and Drop Properties
+ this->setDragDropMode(QAbstractItemView::DragDrop);
+ this->setDefaultDropAction(Qt::MoveAction); //prevent any built-in Qt actions - the class handles it
+ //Other custom properties necessary for the FM
+ this->setFocusPolicy(Qt::StrongFocus);
+ this->setContextMenuPolicy(Qt::CustomContextMenu);
+ this->setSelectionMode(QAbstractItemView::ExtendedSelection);
+ this->setSelectionBehavior(QAbstractItemView::SelectRows);
+ this->setFlow(QListView::TopToBottom);
+ this->setWrapping(true);
+ this->setMouseTracking(true);
+ //this->setSortingEnabled(true); //This sorts *only* by name - type is not preserved
+ }
+ ~DDListWidget(){}
+
+signals:
+ void DataDropped(QString, QStringList); //Dir path, List of commands
+
+protected:
+ void startDrag(Qt::DropActions act){
+ QList<QListWidgetItem*> items = this->selectedItems();
+ if(items.length()<1){ return; }
+ QList<QUrl> urilist;
+ for(int i=0; i<items.length(); i++){
+ urilist << QUrl::fromLocalFile(items[i]->whatsThis().section("::::",1,100));
+ }
+ //Create the mime data
+ QMimeData *mime = new QMimeData;
+ mime->setUrls(urilist);
+ //Create the drag structure
+ QDrag *drag = new QDrag(this);
+ drag->setMimeData(mime);
+ /*if(info.first().section("::::",0,0)=="cut"){
+ drag->exec(act | Qt::MoveAction);
+ }else{*/
+ drag->exec(act | Qt::CopyAction);
+ //}
+ }
+
+ void dragEnterEvent(QDragEnterEvent *ev){
+ //qDebug() << "Drag Enter Event:" << ev->mimeData()->hasFormat(MIME);
+ if(ev->mimeData()->hasUrls() && !this->whatsThis().isEmpty() ){
+ ev->acceptProposedAction(); //allow this to be dropped here
+ }else{
+ ev->ignore();
+ }
+ }
+
+ void dragMoveEvent(QDragMoveEvent *ev){
+ if(ev->mimeData()->hasUrls() && !this->whatsThis().isEmpty() ){
+ //Change the drop type depending on the data/dir
+ QString home = QDir::homePath();
+ if( this->whatsThis().startsWith(home) ){ ev->setDropAction(Qt::MoveAction); }
+ else{ ev->setDropAction(Qt::CopyAction); }
+ ev->acceptProposedAction(); //allow this to be dropped here
+ }else{
+ ev->ignore();
+ }
+ }
+
+ void dropEvent(QDropEvent *ev){
+ if(this->whatsThis().isEmpty() || !ev->mimeData()->hasUrls() ){ ev->ignore(); return; } //not supported
+ //qDebug() << "Drop Event:";
+ ev->accept(); //handled here
+ QString dirpath = this->whatsThis();
+ //See if the item under the drop point is a directory or not
+ QListWidgetItem *it = this->itemAt( ev->pos());
+ if(it!=0){
+ QFileInfo info(it->whatsThis().section("::::",1,100));
+ if(info.isDir() && info.isWritable()){
+ dirpath = info.absoluteFilePath();
+ }
+ }
+ //Now turn the input urls into local file paths
+ QStringList files;
+ QString home = QDir::homePath();
+ foreach(const QUrl &url, ev->mimeData()->urls()){
+ const QString filepath = url.toLocalFile();
+ //If the target file is modifiable, assume a move - otherwise copy
+ if(QFileInfo(filepath).isWritable() && (filepath.startsWith(home) && dirpath.startsWith(home))){ files << "cut::::"+filepath; }
+ else{ files << "copy::::"+filepath; }
+ }
+ //qDebug() << "Drop Event:" << dirpath;
+ emit DataDropped( dirpath, files );
+ }
+
+ void mouseReleaseEvent(QMouseEvent *ev){
+ if(ev->button() != Qt::RightButton && ev->button() != Qt::LeftButton){ ev->ignore(); }
+ else{ QListWidget::mouseReleaseEvent(ev); } //pass it along to the widget
+ }
+ void mousePressEvent(QMouseEvent *ev){
+ if(ev->button() != Qt::RightButton && ev->button() != Qt::LeftButton){ ev->ignore(); }
+ else{ QListWidget::mousePressEvent(ev); } //pass it along to the widget
+ }
+ /*void mouseMoveEvent(QMouseEvent *ev){
+ if(ev->button() != Qt::RightButton && ev->button() != Qt::LeftButton){ ev->ignore(); }
+ else{ QListWidget::mouseMoveEvent(ev); } //pass it along to the widget
+ }*/
+};
+
+//================
+// TreeWidget
+//================
+class DDTreeWidget : public QTreeWidget{
+ Q_OBJECT
+public:
+ DDTreeWidget(QWidget *parent=0) : QTreeWidget(parent){
+ //Drag and Drop Properties
+ this->setDragDropMode(QAbstractItemView::DragDrop);
+ this->setDefaultDropAction(Qt::MoveAction); //prevent any built-in Qt actions - the class handles it
+ //Other custom properties necessary for the FM
+ this->setFocusPolicy(Qt::StrongFocus);
+ this->setContextMenuPolicy(Qt::CustomContextMenu);
+ this->setSelectionMode(QAbstractItemView::ExtendedSelection);
+ this->setSelectionBehavior(QAbstractItemView::SelectRows);
+ this->setMouseTracking(true);
+ this->setSortingEnabled(true);
+ this->setIndentation(0);
+ this->setItemsExpandable(false);
+ }
+ ~DDTreeWidget(){}
+
+signals:
+ void DataDropped(QString, QStringList); //Dir path, List of commands
+
+protected:
+ void startDrag(Qt::DropActions act){
+ QList<QTreeWidgetItem*> items = this->selectedItems();
+ if(items.length()<1){ return; }
+ QList<QUrl> urilist;
+ for(int i=0; i<items.length(); i++){
+ urilist << QUrl::fromLocalFile(items[i]->whatsThis(0).section("::::",1,100));
+ }
+ //Create the mime data
+ QMimeData *mime = new QMimeData;
+ mime->setUrls(urilist);
+ //Create the drag structure
+ QDrag *drag = new QDrag(this);
+ drag->setMimeData(mime);
+ /*if(info.first().section("::::",0,0)=="cut"){
+ drag->exec(act | Qt::MoveAction);
+ }else{*/
+ drag->exec(act | Qt::CopyAction| Qt::MoveAction);
+ //}
+ }
+
+ void dragEnterEvent(QDragEnterEvent *ev){
+ //qDebug() << "Drag Enter Event:" << ev->mimeData()->hasFormat(MIME);
+ if(ev->mimeData()->hasUrls() && !this->whatsThis().isEmpty() ){
+ ev->acceptProposedAction(); //allow this to be dropped here
+ }else{
+ ev->ignore();
+ }
+ }
+
+ void dragMoveEvent(QDragMoveEvent *ev){
+ if(ev->mimeData()->hasUrls() && !this->whatsThis().isEmpty() ){
+ //Change the drop type depending on the data/dir
+ QString home = QDir::homePath();
+ if( this->whatsThis().startsWith(home) ){ ev->setDropAction(Qt::MoveAction); }
+ else{ ev->setDropAction(Qt::CopyAction); }
+ ev->accept(); //allow this to be dropped here
+ }else{
+ ev->ignore();
+ }
+ }
+
+ void dropEvent(QDropEvent *ev){
+ if(this->whatsThis().isEmpty() || !ev->mimeData()->hasUrls() ){ ev->ignore(); return; } //not supported
+ ev->accept(); //handled here
+ QString dirpath = this->whatsThis();
+ //See if the item under the drop point is a directory or not
+ QTreeWidgetItem *it = this->itemAt( ev->pos());
+ if(it!=0){
+ QFileInfo info(it->whatsThis(0).section("::::",1,100));
+ if(info.isDir() && info.isWritable()){
+ dirpath = info.absoluteFilePath();
+ }
+ }
+ //qDebug() << "Drop Event:" << dirpath;
+ //Now turn the input urls into local file paths
+ QStringList files;
+ QString home = QDir::homePath();
+ foreach(const QUrl &url, ev->mimeData()->urls()){
+ const QString filepath = url.toLocalFile();
+ //If the target file is modifiable, assume a move - otherwise copy
+ if(QFileInfo(filepath).isWritable() && (filepath.startsWith(home) && dirpath.startsWith(home)) ){ files << "cut::::"+filepath; }
+ else{ files << "copy::::"+filepath; }
+ }
+ //qDebug() << "Drop Event:" << dirpath;
+ emit DataDropped( dirpath, files );
+ }
+
+ void mouseReleaseEvent(QMouseEvent *ev){
+ if(ev->button() != Qt::RightButton && ev->button() != Qt::LeftButton){ ev->ignore(); }
+ else{ QTreeWidget::mouseReleaseEvent(ev); } //pass it along to the widget
+ }
+ void mousePressEvent(QMouseEvent *ev){
+ if(ev->button() != Qt::RightButton && ev->button() != Qt::LeftButton){ ev->ignore(); }
+ else{ QTreeWidget::mousePressEvent(ev); } //pass it along to the widget
+ }
+ /*void mouseMoveEvent(QMouseEvent *ev){
+ if(ev->button() != Qt::RightButton && ev->button() != Qt::LeftButton){ ev->ignore(); }
+ else{ QTreeWidget::mouseMoveEvent(ev); } //pass it along to the widget
+ }*/
+};
+#endif \ No newline at end of file
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp
new file mode 100644
index 00000000..d988bca6
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.cpp
@@ -0,0 +1,1044 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "DirWidget.h"
+#include "ui_DirWidget.h"
+
+#include <QMessageBox>
+#include <QCursor>
+#include <QClipboard>
+#include <QMimeData>
+#include <QTimer>
+#include <QInputDialog>
+#include <QScrollBar>
+#include <QSettings>
+#include <QtConcurrent/QtConcurrentRun>
+
+#include <LuminaOS.h>
+#include <LuminaXDG.h>
+#include <LuminaUtils.h>
+
+#include "../ScrollDialog.h"
+
+#define DEBUG 0
+
+
+const QString sessionsettings_config_file = QDir::homePath() + "/.lumina/LuminaDE/sessionsettings.conf";
+
+DirWidget::DirWidget(QString objID, QWidget *parent) : QWidget(parent), ui(new Ui::DirWidget){
+ ui->setupUi(this); //load the designer file
+ ID = objID;
+ //Assemble the toolbar for the widget
+ toolbar = new QToolBar(this);
+ toolbar->setContextMenuPolicy(Qt::CustomContextMenu);
+ toolbar->setFloatable(false);
+ toolbar->setMovable(false);
+ toolbar->setOrientation(Qt::Horizontal);
+ toolbar->setToolButtonStyle(Qt::ToolButtonIconOnly);
+ //toolbar->setIconSize(QSize(32,32));
+ ui->toolbar_layout->addWidget(toolbar);
+ // - Add the buttons to the toolbar
+ toolbar->addAction(ui->actionBack);
+ toolbar->addAction(ui->actionUp);
+ toolbar->addAction(ui->actionHome);
+ line_dir = new QLineEdit(this);
+ toolbar->addWidget(line_dir);
+ toolbar->addAction(ui->actionStopLoad);
+ toolbar->addAction(ui->actionClose_Browser);
+ //Add the browser widgets
+ listWidget = new DDListWidget(this);
+ treeWidget = new DDTreeWidget(this);
+ ui->browser_layout->addWidget(listWidget);
+ ui->browser_layout->addWidget(treeWidget);
+ //Create the keyboard shortcuts
+ /*copyFilesShort = new QShortcut( QKeySequence(tr("Ctrl+C")), this);
+ pasteFilesShort = new QShortcut( QKeySequence(tr("Ctrl+V")), this);
+ cutFilesShort = new QShortcut( QKeySequence(tr("Ctrl+X")), this);
+ deleteFilesShort = new QShortcut( QKeySequence(tr("Delete")), this);*/
+ //Create the filesystem watcher
+ watcher = new QFileSystemWatcher(this);
+ synctimer = new QTimer(this);
+ synctimer->setInterval(300); // 300 millisecond pause (combine simultaneous signals from the watcher)
+ synctimer->setSingleShot(true);
+ //Now update the rest of the UI
+ canmodify = false; //initial value
+ contextMenu = new QMenu(this);
+ setDateFormat();
+ setShowDetails(true);
+ setShowThumbnails(true);
+ UpdateIcons();
+ UpdateText();
+ setupConnections();
+}
+
+DirWidget::~DirWidget(){
+ stopload = true; //just in case another thread is still loading/running
+}
+
+void DirWidget::cleanup(){
+ stopload = true; //just in case another thread is still loading/running
+ if(thumbThread.isRunning()){ thumbThread.waitForFinished(); } //this will stop really quickly with the flag set
+}
+
+void DirWidget::ChangeDir(QString dirpath){
+ stopload = true; //just in case it is still loading
+ emit LoadDirectory(ID, dirpath);
+}
+
+void DirWidget::setDirCompleter(QCompleter *comp){
+ line_dir->setCompleter(comp);
+}
+
+QString DirWidget::id(){
+ return ID;
+}
+
+QString DirWidget::currentDir(){
+ return CDIR;
+}
+
+void DirWidget::setShowDetails(bool show){
+ if(show!=showDetails){
+ //View about to change - ensure the selection gets transferred too
+ tmpSel = currentSelection();
+ }
+ showDetails = show;
+ listWidget->setVisible(!showDetails);
+ treeWidget->setVisible(showDetails);
+ this->refresh();
+}
+
+void DirWidget::setShowSidebar(bool show){
+ ui->group_actions->setVisible(show);
+}
+
+void DirWidget::setShowThumbnails(bool show){
+ showThumbs = show;
+ this->refresh();
+}
+
+void DirWidget::setDetails(QList<DETAILTYPES> list){
+ listDetails = list;
+ //Need to re-create the header item as well
+ CQTreeWidgetItem *it = new CQTreeWidgetItem();
+ int nmcol = -1; int typecol = -1;
+ for(int t=0; t<listDetails.length(); t++){
+ switch(listDetails[t]){
+ case NAME:
+ it->setText(t,tr("Name"));
+ nmcol = t;
+ break;
+ case SIZE:
+ it->setText(t,tr("Size"));
+ break;
+ case TYPE:
+ it->setText(t, tr("Type"));
+ typecol = t;
+ break;
+ case DATEMOD:
+ it->setText(t, tr("Date Modified") );
+ break;
+ case DATECREATE:
+ it->setText(t, tr("Date Created") );
+ break;
+ }
+ }
+ treeWidget->setHeaderItem(it);
+ //Now reset the sorting (alphabetically, dirs first)
+ if(nmcol>=0){ treeWidget->sortItems(nmcol, Qt::AscendingOrder); } // sort by name
+ if(typecol>=0){ treeWidget->sortItems(typecol, Qt::AscendingOrder); } //sort by type first
+
+ if(CDIR.isEmpty() || !showDetails){ return; } //don't need to reload dir if details are not visible
+ this->refresh();
+}
+
+void DirWidget::setThumbnailSize(int px){
+ bool larger = listWidget->iconSize().height() < px;
+ listWidget->setIconSize(QSize(px,px));
+ treeWidget->setIconSize(QSize(px,px));
+ if(CDIR.isEmpty() || !larger ){ return; } //don't need to reload icons unless the new size is larger
+ this->refresh();
+}
+
+void DirWidget::setShowCloseButton(bool show){
+ ui->actionClose_Browser->setVisible(show);
+}
+
+QStringList DirWidget::getDateFormat() {
+ return date_format;
+}
+
+// This function is only called if user changes sessionsettings. By doing so, operations like sorting by date
+// are faster because the date format is already stored in DirWidget::date_format static variable
+void DirWidget::setDateFormat() {
+ if(!date_format.isEmpty())
+ date_format.clear();
+ QSettings settings("LuminaDE","sessionsettings");
+ // If value doesn't exist or is not setted, empty string is returned
+ date_format << settings.value("DateFormat").toString();
+ date_format << settings.value("TimeFormat").toString();
+}
+
+
+// ================
+// PUBLIC SLOTS
+// ================
+void DirWidget::LoadDir(QString dir, QList<LFileInfo> list){
+ if(dir.isEmpty()){ return; } //nothing to do
+ QTime time;
+ if(DEBUG){time.start(); }
+ qDebug() << "Load Dir:" << dir;
+ QString lastdir = CDIR; //for some checks later
+ QString lastbasedir = normalbasedir;
+ CDIR = dir;
+ if(CDIR.endsWith("/") && CDIR.length() > 1){ CDIR.chop(1); }
+ CLIST = list; //save for later
+ canmodify = QFileInfo(CDIR).isWritable();
+ if(DEBUG){ qDebug() << "Clear UI:" <<time.elapsed(); }
+ //Clear the status text
+ if(!canmodify){ui->label_status->setText(tr("(Limited Access) ")); }
+ else{ ui->label_status->setText(""); }
+ //Hide the extra buttons for a moment
+ ui->tool_goToPlayer->setVisible(false);
+ ui->tool_goToImages->setVisible(false);
+ ui->tool_new_dir->setVisible(canmodify);
+ ui->tool_new_file->setVisible(canmodify);
+ //Set the drag/drop info as appripriate
+ if(canmodify){
+ listWidget->setWhatsThis(CDIR);
+ treeWidget->setWhatsThis(CDIR);
+ }else{
+ listWidget->setWhatsThis("");
+ treeWidget->setWhatsThis("");
+ }
+ bool updateThumbs = (lastdir != CDIR);
+ //Determine if this is an internal ZFS snapshot
+ bool loadsnaps = false;
+ if(DEBUG){ qDebug() << "Load Snap Info:" << time.elapsed(); }
+ if( dir.contains(ZSNAPDIR) ){
+ //This is a zfs snapshot - only update the saved paths necessary to rotate between snapshots/system
+ snaprelpath = dir.section(ZSNAPDIR,1,1000).section("/",1,1000); //the relative path inside the snapshot
+ if(snaprelpath.endsWith("/")){ snaprelpath.chop(1); }
+ normalbasedir = dir.section(ZSNAPDIR,0,0)+"/"+snaprelpath; //Update the new base directory
+ if(normalbasedir.endsWith("/")){ normalbasedir.chop(1); }
+ line_dir->setText(normalbasedir);
+ //See if this was a manual move to the directory, or an internal move
+ QString tmp = dir.section(ZSNAPDIR,0,0);
+ if(tmp != snapbasedir.section(ZSNAPDIR,0,0)){
+ loadsnaps = true; //different snapshot loaded - need to update internally
+ }
+ }else{
+ //This is a normal directory - prompt for snapshot information
+ line_dir->setText(CDIR);
+ normalbasedir = CDIR;
+ if(!snapbasedir.isEmpty()){ watcher->removePath(snapbasedir); }
+ snapbasedir.clear();
+ loadsnaps = true;
+ }
+ if(loadsnaps){
+ //kick this off while still loading the dir contents
+ ui->group_snaps->setEnabled(false); //to prevent the snap updates to be automatically used
+ ui->group_snaps->setVisible(false);
+ ui->slider_snap->setRange(1,1);
+ emit findSnaps(ID, normalbasedir);
+ }
+
+ if(DEBUG){ qDebug() << "Update History:" <<time.elapsed(); }
+ //Now update the history for this browser
+ //qDebug() << "History:" << history << normalbasedir << lastbasedir;
+ if(!history.isEmpty() && history.last() == normalbasedir && lastbasedir!=normalbasedir ){
+ //We went back one - remove this from the history
+ history.takeLast();
+ ui->actionBack->setEnabled(!history.isEmpty());
+ //qDebug() << " - Duplicate: removed item";
+ }else if(lastbasedir!=normalbasedir){ //not a refresh or internal snapshot change
+ //qDebug() << " - New History Item:" << normalbasedir;
+ history << normalbasedir;
+ ui->actionBack->setEnabled(history.length()>1);
+ }
+ if(DEBUG){ qDebug() << "Update Watcher:" << time.elapsed(); }
+ //Clear the current watcher
+ if(!watcher->directories().isEmpty()){ watcher->removePaths(watcher->directories()); }
+ if(!watcher->files().isEmpty()){ watcher->removePaths(watcher->files()); }
+ watcher->addPath(CDIR);
+ // add sessionsettings to watcher so date_format can be update based on user settings
+ watcher->addPath(sessionsettings_config_file);
+ ui->actionStopLoad->setVisible(true);
+ stopload = false;
+ //Clear the display widget (if a new directory)
+ if(DEBUG){ qDebug() << "Clear Browser Widget:" << time.elapsed(); }
+ double scrollpercent = -1;
+ if(updateThumbs){ needThumbs.clear(); }
+ if(lastbasedir != normalbasedir){
+ if(showDetails){ treeWidget->clear(); }
+ else{ listWidget->clear(); }
+ QApplication::processEvents(); //make sure it is cleared right away
+ }else{
+ //Need to be smarter about which items need to be removed
+ // - compare the old/new lists and remove any items not in the new listing (new items taken care of below)
+ QStringList newfiles; //just the filenames
+ for(int i=0; i<CLIST.length(); i++){ newfiles << CLIST[i].fileName(); }
+ if(showDetails){
+ for(int i=0; i<treeWidget->topLevelItemCount(); i++){
+ if( !newfiles.contains(treeWidget->topLevelItem(i)->whatsThis(0).section("/",-1)) ){
+ if(!updateThumbs){ needThumbs.removeAll( treeWidget->topLevelItem(i)->whatsThis(0).section("::::",1,50)); }
+ delete treeWidget->takeTopLevelItem(i);
+ i--;
+ }
+ }
+ QApplication::processEvents(); //make sure the scrollbar is up to date after removals
+ scrollpercent = treeWidget->verticalScrollBar()->value()/( (double) treeWidget->verticalScrollBar()->maximum());
+ }else{
+ for(int i=0; i<listWidget->count(); i++){
+ if( !newfiles.contains(listWidget->item(i)->text()) ){
+ if(!updateThumbs){ needThumbs.removeAll( listWidget->item(i)->whatsThis().section("::::",1,50)); }
+ delete listWidget->takeItem(i);
+ i--;
+ }
+ }
+ QApplication::processEvents(); //make sure the scrollbar is up to date after removals
+ scrollpercent = listWidget->horizontalScrollBar()->value()/( (double) listWidget->horizontalScrollBar()->maximum());
+ }
+ } //end check for CDIR reload
+ //Now fill the display widget
+ bool hasimages, hasmultimedia;
+ hasimages = hasmultimedia = false;
+ int numdirs = 0;
+ qint64 filebytes = 0;
+ //Setup the timer to see when we should process events
+ /*QTimer updatetime;
+ updatetime.setInterval(1000); //1 second updates
+ updatetime.setSingleShot(true);
+ updatetime.start();*/
+ QTime updatetime = QTime::currentTime().addMSecs(500);
+ if(DEBUG){ qDebug() << "Start Loop over items:" << time.elapsed(); }
+ for(int i=0; i<list.length(); i++){
+ if(stopload){ ui->actionStopLoad->setVisible(false); return; } //stop right now
+ if(!hasimages && list[i].isImage()){ hasimages = true; ui->tool_goToImages->setVisible(true); }
+ else if(!hasmultimedia && list[i].isAVFile()){ hasmultimedia = true; ui->tool_goToPlayer->setVisible(true); }
+ //Update statistics
+ if(list[i].isDir()){ numdirs++; }
+ else{ filebytes += list[i].size(); }
+ watcher->addPath(list[i].absoluteFilePath());
+ if(showDetails){
+ //Now create all the individual items for the details tree
+ CQTreeWidgetItem *it;
+ bool addnew = false;
+ //See if an item already exists for this file
+ QList<QTreeWidgetItem*> items = treeWidget->findItems(list[i].fileName(),Qt::MatchExactly,0); //NOTE: This requires column 0 to be the name
+ if(items.isEmpty()){
+ it = new CQTreeWidgetItem();
+ addnew = true;
+ }else{
+ // Safe downcasting because CQTreeWidgetItem only redefines the virtual function bool opearot<. Not new methos added.
+ it = static_cast<CQTreeWidgetItem *> (items.first());
+ }
+ //Now update the entry contents
+ it->setWhatsThis(0, QString(canmodify ? "cut": "copy")+"::::"+list[i].absoluteFilePath());
+ for(int t=0; t<listDetails.length(); t++){
+ switch(listDetails[t]){
+ case NAME:
+ it->setText(t,list[i].fileName());
+ it->setStatusTip(t, list[i].fileName());
+ //Since the icon/image is based on the filename - only update this for a new item
+ // (This is the slowest part of the routine)
+ if(list[i].isImage()&& (addnew || updateThumbs)){
+ if(showThumbs){
+ it->setIcon(t, LXDG::findIcon("fileview-preview","image-x-generic") );
+ needThumbs << list[i].absoluteFilePath();
+ }else{ it->setIcon(t, LXDG::findIcon(list[i].iconfile(),"image-x-generic") ); }
+ }else if(addnew){
+ it->setIcon(t, LXDG::findIcon(list[i].iconfile(),"unknown") );
+ }
+ break;
+ case SIZE:
+ if(!list[i].isDir()){
+ it->setText(t, LUtils::BytesToDisplaySize(list[i].size()) );
+ }
+ break;
+ case TYPE:
+ it->setText(t, list[i].mimetype());
+ break;
+ case DATEMOD:
+ {
+ QStringList datetime_format = getDateFormat();
+ // Save datetime in WhatThis value. Lately will be used by CQTreeWidgetItem for sorting by date
+ it->setWhatsThis(t, list[i].lastModified().toString("yyyyMMddhhmmsszzz"));
+ // Default configurition. Fallback to Qt::DefaultLocaleShortDate for formats
+ if(datetime_format.at(0).isEmpty() && datetime_format.at(1).isEmpty())
+ it->setText(t, list[i].lastModified().toString(Qt::DefaultLocaleShortDate) );
+ // Date is setted but time not. Time goes to default
+ else if(!datetime_format.at(0).isEmpty() && datetime_format.at(1).isEmpty())
+ it->setText(t, list[i].lastModified().date().toString(datetime_format.at(0)) + " " + list[i].lastModified().time().toString(Qt::DefaultLocaleShortDate));
+ // Time is setted but date not. Date goes to default
+ else if(datetime_format.at(0).isEmpty() && !datetime_format.at(1).isEmpty())
+ it->setText(t, list[i].lastModified().date().toString(Qt::DefaultLocaleShortDate) + " " + list[i].lastModified().time().toString(datetime_format.at(1)));
+ // Both time and date setted.
+ else
+ it->setText(t, list[i].lastModified().date().toString(datetime_format.at(0)) + " " + list[i].lastModified().time().toString(datetime_format.at(1)));
+ break;
+ }
+ case DATECREATE:
+ {
+ QStringList datetime_format = getDateFormat();
+ it->setWhatsThis(DATECREATE, list[i].lastModified().toString("yyyyMMddhhmmsszzz"));
+ if(datetime_format.at(0).isEmpty() && datetime_format.at(1).isEmpty())
+ it->setText(t, list[i].lastModified().toString(Qt::DefaultLocaleShortDate) );
+ else if(!datetime_format.at(0).isEmpty() && datetime_format.at(1).isEmpty())
+ it->setText(t, list[i].lastModified().date().toString(datetime_format.at(0)) + " " + list[i].lastModified().time().toString(Qt::DefaultLocaleShortDate));
+ else if(datetime_format.at(0).isEmpty() && !datetime_format.at(1).isEmpty())
+ it->setText(t, list[i].lastModified().date().toString(Qt::DefaultLocaleShortDate) + " " + list[i].lastModified().time().toString(datetime_format.at(1)));
+ else
+ it->setText(t, list[i].lastModified().date().toString(datetime_format.at(0)) + " " + list[i].lastModified().time().toString(datetime_format.at(1)));
+ break;
+ }
+ }
+ }
+ if(addnew){ treeWidget->addTopLevelItem(it); }
+ if(tmpSel.contains(list[i].absoluteFilePath())){ it->setSelected(true); }
+ if(lastdir == CDIR+"/"+list[i].fileName()){
+ treeWidget->setCurrentItem(it);
+ treeWidget->scrollToItem(it);
+ }
+ }else{
+ //Create all the individual items for the basic list
+ QListWidgetItem *it;
+ //See if there is an existing item to re-use
+ bool addnew = false;
+ QList<QListWidgetItem*> items = listWidget->findItems(list[i].fileName(), Qt::MatchExactly);
+ if(items.isEmpty()){
+ it = new QListWidgetItem();
+ addnew = true;
+ }else{ it = items.first(); }
+
+ it->setWhatsThis( QString(canmodify ? "cut": "copy")+"::::"+list[i].absoluteFilePath()); //used for drag and drop
+ it->setText(list[i].fileName());
+ it->setStatusTip(list[i].fileName());
+ //Since the icon/image is based on the filename - only update this for a new items (non-thumbnail)
+ // (This is the slowest part of the routine)
+ if(list[i].isImage() && (addnew || updateThumbs) ){
+ if(showThumbs){
+ it->setIcon(LXDG::findIcon("fileview-preview","image-x-generic") );
+ needThumbs << list[i].absoluteFilePath();
+ }else{ it->setIcon(LXDG::findIcon(list[i].iconfile(),"image-x-generic") ); }
+ }else if(addnew){
+ it->setIcon(LXDG::findIcon(list[i].iconfile(),"unknown") );
+ }
+ listWidget->addItem(it);
+ if(tmpSel.contains(list[i].absoluteFilePath())){ it->setSelected(true); }
+ if(lastdir == CDIR+"/"+list[i].fileName()){
+ listWidget->setCurrentItem(it);
+ listWidget->scrollToItem(it);
+ }
+ }
+ if(QTime::currentTime() > updatetime){ QApplication::processEvents(); updatetime = QTime::currentTime().addMSecs(500); }//keep the UI snappy while loading a directory
+ if(DEBUG){ qDebug() << " - item finished:" << i << time.elapsed(); }
+ }
+ tmpSel.clear();
+ if(DEBUG){ qDebug() << "Done with item loop:" << time.elapsed() << list.length(); }
+ ui->actionStopLoad->setVisible(false);
+ //Another check to ensure the current item is visible (or return to the same scroll position)
+ if(stopload){ return; } //stop right now
+ if(scrollpercent<0){
+ if(showDetails){
+ for(int t=0; t<treeWidget->columnCount(); t++){treeWidget->resizeColumnToContents(t); }
+ if(treeWidget->currentItem()!=0){ treeWidget->scrollToItem(treeWidget->currentItem()); }
+ }else{
+ if(listWidget->currentItem()!=0){ listWidget->scrollToItem(listWidget->currentItem()); }
+ }
+ }else{
+ if(showDetails){
+ treeWidget->verticalScrollBar()->setValue( qRound(treeWidget->verticalScrollBar()->maximum()*scrollpercent) );
+ }else{
+ listWidget->horizontalScrollBar()->setValue( qRound(listWidget->horizontalScrollBar()->maximum()*scrollpercent) );
+ }
+ }
+
+
+ if(stopload){ return; } //stop right now
+ if(DEBUG){ qDebug() << "Assemble Status Message:" << time.elapsed(); }
+ //Assemble any status message
+ QString stats = QString(tr("Capacity: %1")).arg(LOS::FileSystemCapacity(CDIR));
+ if(list.length()>0){
+ stats.prepend("\t");
+ if(numdirs < list.length()){
+ //Has Files
+ stats.prepend( QString(tr("Files: %1 (%2)")).arg(QString::number(list.length()-numdirs), LUtils::BytesToDisplaySize(filebytes)) );
+ }
+ if(numdirs > 0){
+ //Has Dirs
+ if(numdirs<list.length()){ stats.prepend(" / "); }//has files output already
+ stats.prepend( QString(tr("Dirs: %1")).arg(QString::number(numdirs)) );
+ }
+
+ }
+ if(stopload){ return; } //stop right now
+ if(!canmodify){ stats.prepend(tr("(Limited Access) ")); }
+ ui->label_status->setText( stats.simplified() );
+ if(DEBUG){ qDebug() << "DONE:" << time.elapsed(); }
+ if(showThumbs){ thumbThread = QtConcurrent::run(this, &DirWidget::startLoadThumbs); }
+}
+
+void DirWidget::LoadSnaps(QString basedir, QStringList snaps){
+ //Save these value internally for use later
+ qDebug() << "ZFS Snapshots available:" << basedir << snaps;
+ snapbasedir = basedir;
+ snapshots = snaps;
+ if(!snapbasedir.isEmpty()){ watcher->addPath(snapbasedir); } //add this to the watcher in case snapshots get created/removed
+ //Now update the UI as necessary
+ if(ui->tool_snap->menu()==0){
+ ui->tool_snap->setMenu(new QMenu(this));
+ connect(ui->tool_snap->menu(), SIGNAL(triggered(QAction*)), this, SLOT(direct_snap_selected(QAction*)) );
+ }
+ ui->tool_snap->menu()->clear();
+ for(int i=0; i<snapshots.length(); i++){
+ QAction *tmp = ui->tool_snap->menu()->addAction(snapshots[i]);
+ tmp->setWhatsThis(snapshots[i]);
+ }
+ ui->slider_snap->setRange(0, snaps.length());
+ if(CDIR.contains(ZSNAPDIR)){
+ //The user was already within a snapshot - figure out which one and set the slider appropriately
+ int index = snaps.indexOf( CDIR.section(ZSNAPDIR,1,1).section("/",0,0) );
+ if(index < 0){ index = snaps.length(); } //unknown - load the system (should never happen)
+ ui->slider_snap->setValue(index);
+ }else{
+ ui->slider_snap->setValue(snaps.length()); //last item (normal system)
+ }
+ on_slider_snap_valueChanged();
+ QApplication::processEvents(); //let the slider changed signal get thrown away before we re-enable the widget
+ ui->group_snaps->setEnabled(!snaps.isEmpty());
+ ui->group_snaps->setVisible(!snaps.isEmpty());
+ ui->tool_snap_newer->setEnabled(ui->slider_snap->value() < ui->slider_snap->maximum());
+ ui->tool_snap_older->setEnabled(ui->slider_snap->value() > ui->slider_snap->minimum());
+}
+
+void DirWidget::refresh(){
+ if(!CDIR.isEmpty() && ~ID.isEmpty()){
+ stopload = true; //just in case it is still loading
+ emit LoadDirectory(ID, CDIR);
+ }
+}
+
+void DirWidget::refreshButtons(){
+ SelectionChanged();
+}
+
+//Theme change functions
+void DirWidget::UpdateIcons(){
+ //ui->tool_addNewFile->setIcon( LXDG::findIcon("document-new",""));
+ //ui->tool_addToDir->setIcon( LXDG::findIcon("folder-new","") );
+
+ //Snapshot buttons
+ ui->tool_snap_newer->setIcon(LXDG::findIcon("go-next-view","") );
+ ui->tool_snap_older->setIcon(LXDG::findIcon("go-previous-view","") );
+ //Bottom-Action Buttons
+ ui->tool_goToImages->setIcon( LXDG::findIcon("fileview-preview","") );
+ ui->tool_goToPlayer->setIcon( LXDG::findIcon("applications-multimedia","") );
+ ui->tool_new_file->setIcon( LXDG::findIcon("document-new","") );
+ ui->tool_new_dir->setIcon( LXDG::findIcon("folder-new","") );
+ //Side-Action Buttons
+ ui->tool_act_run->setIcon( LXDG::findIcon("run-build-file","") );
+ ui->tool_act_runwith->setIcon( LXDG::findIcon("run-build-configure","") );
+ ui->tool_act_cut->setIcon( LXDG::findIcon("edit-cut","") );
+ ui->tool_act_copy->setIcon( LXDG::findIcon("edit-copy","") );
+ ui->tool_act_paste->setIcon( LXDG::findIcon("edit-paste","") );
+ ui->tool_act_rename->setIcon( LXDG::findIcon("edit-rename","") );
+ ui->tool_act_rm->setIcon( LXDG::findIcon("edit-delete","") );
+ ui->tool_act_fav->setIcon( LXDG::findIcon("bookmark-toolbar","") );
+ //ToolBar Buttons
+ ui->actionBack->setIcon( LXDG::findIcon("go-previous","") );
+ ui->actionUp->setIcon( LXDG::findIcon("go-up","") );
+ ui->actionHome->setIcon( LXDG::findIcon("go-home","") );
+ ui->actionStopLoad->setIcon( LXDG::findIcon("dialog-cancel","") );
+ ui->actionClose_Browser->setIcon( LXDG::findIcon("dialog-close","") );
+}
+
+void DirWidget::UpdateText(){
+ ui->retranslateUi(this);
+}
+
+void DirWidget::UpdateButtons(){
+ SelectionChanged();
+}
+
+//Keyboard Shortcuts triggered
+void DirWidget::TryRenameSelection(){
+ on_tool_act_rename_clicked();
+}
+
+void DirWidget::TryCutSelection(){
+ on_tool_act_cut_clicked();
+}
+
+void DirWidget::TryCopySelection(){
+ on_tool_act_copy_clicked();
+}
+
+void DirWidget::TryPasteSelection(){
+ on_tool_act_paste_clicked();
+}
+
+void DirWidget::TryDeleteSelection(){
+ on_tool_act_rm_clicked();
+}
+
+// =================
+// PRIVATE
+// =================
+void DirWidget::setupConnections(){
+ //Info routines
+ connect(treeWidget, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(OpenContextMenu()) );
+ connect(listWidget, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(OpenContextMenu()) );
+ connect(treeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(SelectionChanged()) );
+ connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(SelectionChanged()) );
+
+ //Activation routines
+ connect(treeWidget, SIGNAL(itemActivated(QTreeWidgetItem*,int)), this, SLOT(on_tool_act_run_clicked()) );
+ connect(treeWidget, SIGNAL(DataDropped(QString, QStringList)), this, SIGNAL(PasteFiles(QString, QStringList)) );
+ connect(listWidget, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(on_tool_act_run_clicked()) );
+ connect(listWidget, SIGNAL(DataDropped(QString, QStringList)), this, SIGNAL(PasteFiles(QString, QStringList)) );
+ connect(line_dir, SIGNAL(returnPressed()), this, SLOT(dir_changed()) );
+
+ //Keyboard Shortcuts
+ /*connect(copyFilesShort, SIGNAL(activated()), this, SLOT( on_tool_act_copy_clicked() ) );
+ connect(cutFilesShort, SIGNAL(activated()), this, SLOT( on_tool_act_cut_clicked() ) );
+ connect(pasteFilesShort, SIGNAL(activated()), this, SLOT( on_tool_act_paste_clicked() ) );
+ connect(deleteFilesShort, SIGNAL(activated()), this, SLOT( on_tool_act_rm_clicked() ) );*/
+
+ //Filesystem Watcher
+ connect(watcher, SIGNAL(directoryChanged(const QString&)), this, SLOT(startSync(const QString &)) );
+ connect(watcher, SIGNAL(fileChanged(const QString&)), this, SLOT(startSync(const QString &)) ); //just in case
+ connect(synctimer, SIGNAL(timeout()), this, SLOT(refresh()) );
+
+ //Thumbnail loader
+ connect(this, SIGNAL(ThumbLoaded(QString, QIcon)), this, SLOT(showThumb(QString, QIcon)) );
+}
+
+QStringList DirWidget::currentSelection(){
+ QStringList out;
+ if(showDetails){
+ QList<QTreeWidgetItem*> sel = treeWidget->selectedItems();
+ for(int i=0; i<sel.length(); i++){
+ out << sel[i]->whatsThis(0).section("::::",1,100); //absolute file path
+ }
+ }else{
+ QList<QListWidgetItem*> sel = listWidget->selectedItems();
+ for(int i=0; i<sel.length(); i++){
+ out << sel[i]->whatsThis().section("::::",1,100); //absolute file path
+ }
+ }
+ out.removeDuplicates();
+ return out;
+}
+
+// =================
+// PRIVATE SLOTS
+// =================
+void DirWidget::startLoadThumbs(){
+ //This just runs through the dir and loads all the thumbnails as needed
+ if(DEBUG){ qDebug() << "Start Loading Thumbnails:" << needThumbs; }
+ if(needThumbs.isEmpty()){ return; }
+ needThumbs.removeDuplicates(); //just in case
+ //QTime updatetime = QTime::currentTime().addMSecs(500);
+ while(!needThumbs.isEmpty() && !stopload){
+ QString file = needThumbs.takeFirst();
+ QIcon ico(QPixmap(file).scaled(listWidget->iconSize(),Qt::IgnoreAspectRatio, Qt::FastTransformation) );
+ emit ThumbLoaded(file, ico);
+ }
+}
+
+void DirWidget::showThumb(QString file, QIcon ico){
+ if(showDetails){
+ //Use the tree widget
+ QList<QTreeWidgetItem*> items = treeWidget->findItems(file.section("/",-1), Qt::MatchExactly);
+ if(items.isEmpty() || stopload){ return; } //invalid item for some reason
+ QTreeWidgetItem *it = items.first();
+ it->setIcon(0, ico );
+ }else{
+ //Use the list widget
+ QList<QListWidgetItem*> items = listWidget->findItems(file.section("/",-1), Qt::MatchExactly);
+ if(items.isEmpty() || stopload){ return; } //invalid item for some reason
+ if(stopload){ return; } //stop right now
+ QListWidgetItem *it = items.first();
+ it->setIcon(ico);
+ }
+}
+
+//UI BUTTONS
+// -- Left Action Buttons
+void DirWidget::on_tool_act_cut_clicked(){
+ QStringList sel = currentSelection();
+ qDebug() << "Cutting Items to clipboard:" << sel;
+ if(sel.isEmpty()){ return; }
+ emit CutFiles(sel);
+}
+
+void DirWidget::on_tool_act_copy_clicked(){
+ QStringList sel = currentSelection();
+ if(sel.isEmpty()){ return; }
+ qDebug() << "Copying Items to clipboard:" << sel;
+ emit CopyFiles(sel);
+}
+
+void DirWidget::on_tool_act_fav_clicked(){
+ QStringList sel = currentSelection();
+ if(sel.isEmpty()){ return; }
+
+ emit FavoriteFiles(sel);
+}
+
+void DirWidget::on_tool_act_paste_clicked(){
+ qDebug() << "Pasting Items from clipboard:" << CDIR;
+ emit PasteFiles(CDIR, QStringList()); //use the clipboard for pasting
+}
+
+void DirWidget::on_tool_act_rename_clicked(){
+ QStringList sel = currentSelection();
+ if(sel.isEmpty()){ return; }
+ emit RenameFiles(sel);
+}
+
+void DirWidget::on_tool_act_rm_clicked(){
+ QStringList sel = currentSelection();
+ if(sel.isEmpty()){ return; }
+ qDebug() << "Deleting selected Items:" << sel;
+ emit RemoveFiles(sel);
+}
+
+void DirWidget::on_tool_act_run_clicked(){
+ QStringList sel = currentSelection();
+ if(sel.isEmpty()){ return; }
+ QStringList dirs;
+ for(int i=0; i<sel.length(); i++){
+ if(QFileInfo(sel[i]).isDir()){
+ dirs << sel[i];
+ }else{
+ QProcess::startDetached("lumina-open \""+sel[i]+"\"");
+ }
+ }
+ if(!dirs.isEmpty()){
+ stopload = true; //just in case it is still loading
+ emit LoadDirectory(ID, dirs.takeFirst()); //load the first directory in this widget
+ }
+ if(!dirs.isEmpty()){
+ emit OpenDirectories(dirs);
+ }
+}
+
+void DirWidget::on_tool_act_runwith_clicked(){
+ QStringList sel = currentSelection();
+ if(sel.isEmpty()){ return; }
+ for(int i=0; i<sel.length(); i++){
+ QProcess::startDetached("lumina-open -select \""+sel[i]+"\""); //use absolute paths
+ }
+}
+
+// -- Bottom Action Buttons
+void DirWidget::on_tool_goToImages_clicked(){
+ QStringList sel = currentSelection();
+ if(sel.isEmpty()){ emit ViewFiles(CLIST); }
+ else{
+ //Just use the files from the current selection
+ LFileInfoList list;
+ for(int i=0; i<CLIST.length(); i++){
+ if(CLIST[i].isImage() && sel.contains(CLIST[i].absoluteFilePath()) ){
+ list << CLIST[i]; //add to the list
+ }
+ }
+ if(!list.isEmpty()){ emit ViewFiles(list); }
+ else{ emit ViewFiles(CLIST); } //invalid file(s) selected - just do everything
+ }
+}
+
+void DirWidget::on_tool_goToPlayer_clicked(){
+ QStringList sel = currentSelection();
+ if(sel.isEmpty()){ emit PlayFiles(CLIST); }
+ else{
+ //Just use the files from the current selection
+ LFileInfoList list;
+ for(int i=0; i<CLIST.length(); i++){
+ if(CLIST[i].isAVFile() && sel.contains(CLIST[i].absoluteFilePath()) ){
+ list << CLIST[i]; //add to the list
+ }
+ }
+ if(!list.isEmpty()){ emit PlayFiles(list); }
+ else{ emit PlayFiles(CLIST); } //invalid file(s) selected - just do everything
+ }
+}
+
+void DirWidget::on_tool_new_file_clicked(){
+ if(!canmodify){ return; } //cannot create anything here
+ //Prompt for the new filename
+ bool ok = false;
+ QString newdocument = QInputDialog::getText(this, tr("New Document"), tr("Name:"), QLineEdit::Normal, "", \
+ &ok, 0, Qt::ImhFormattedNumbersOnly | Qt::ImhUppercaseOnly | Qt::ImhLowercaseOnly);
+ if(!ok || newdocument.isEmpty()){ return; }
+ //Create the empty file
+ QString full = CDIR;
+ if(!full.endsWith("/")){ full.append("/"); }
+ QFile file(full+newdocument);
+ if(file.open(QIODevice::ReadWrite)){
+ //If successfully opened, it has created a blank file
+ file.close();
+ }else{
+ QMessageBox::warning(this, tr("Error Creating Document"), tr("The document could not be created. Please ensure that you have the proper permissions."));
+ }
+ //just in case the watcher does not work for this filesystem -queue up a sync
+ if(!synctimer->isActive()){ synctimer->start(); }
+}
+
+void DirWidget::on_tool_new_dir_clicked(){
+ if(!canmodify){ return; } //cannot create anything here
+ //Prompt for the new dir name
+ bool ok = false;
+ QString newdir = QInputDialog::getText(this, tr("New Directory"), tr("Name:"), QLineEdit::Normal, "", \
+ &ok, 0, Qt::ImhFormattedNumbersOnly | Qt::ImhUppercaseOnly | Qt::ImhLowercaseOnly);
+ if(!ok || newdir.isEmpty()){ return; }
+ //Now create the new dir
+ QString full = CDIR;
+ if(!full.endsWith("/")){ full.append("/"); }
+ QDir dir(full); //open the current dir
+ full.append(newdir); //append the new name to the current dir
+ //Verify that the new dir does not already exist
+ if(dir.exists(full)){
+ QMessageBox::warning(this, tr("Invalid Name"), tr("A file or directory with that name already exists! Please pick a different name."));
+ QTimer::singleShot(0,this, SLOT(on_tool_addToDir_clicked()) ); //repeat this function
+ }else{
+ if(!dir.mkdir(newdir) ){
+ QMessageBox::warning(this, tr("Error Creating Directory"), tr("The directory could not be created. Please ensure that you have the proper permissions to modify the current directory."));
+ }
+ }
+ //just in case the watcher does not work for this filesystem -queue up a sync
+ if(!synctimer->isActive()){ synctimer->start(); }
+}
+
+// -- Top Snapshot Buttons
+void DirWidget::on_tool_snap_newer_clicked(){
+ ui->slider_snap->setValue( ui->slider_snap->value()+1 );
+}
+
+void DirWidget::on_tool_snap_older_clicked(){
+ ui->slider_snap->setValue( ui->slider_snap->value()-1 );
+}
+
+void DirWidget::on_slider_snap_valueChanged(int val){
+ bool labelsonly = false;
+ if(val==-1){ val = ui->slider_snap->value(); labelsonly=true; }
+ //Update the snapshot interface
+ ui->tool_snap_newer->setEnabled(val < ui->slider_snap->maximum());
+ ui->tool_snap_older->setEnabled(val > ui->slider_snap->minimum());
+ if(val >= snapshots.length() || val < 0){
+ ui->tool_snap->setText(tr("Current"));
+ }else if(QFile::exists(snapbasedir+snapshots[val])){
+ ui->tool_snap->setText( QFileInfo(snapbasedir+snapshots[val]).lastModified().toString(Qt::DefaultLocaleShortDate) );
+ }
+ //Exit if a non-interactive snapshot change
+ if(!ui->group_snaps->isEnabled() || labelsonly){ return; } //internal change - do not try to change the actual info
+ //Determine which snapshot is now selected
+ QString dir;
+ if(DEBUG){ qDebug() << "Changing snapshot:" << CDIR << val << snapbasedir; }
+ stopload = true; //stop any currently-loading procedures
+ if(val >= snapshots.length() || val < 0){ //active system selected
+ if(DEBUG){ qDebug() << " - Load Active system:" << normalbasedir; }
+ dir = normalbasedir;
+ }else{
+ dir = snapbasedir+snapshots[val]+"/";
+ if(!QFile::exists(dir)){
+ //This snapshot must have been removed in the background by pruning tools
+ // move to a newer snapshot or the current base dir as necessary
+ qDebug() << "Snapshot no longer available:" << dir;
+ qDebug() << " - Reloading available snapshots";
+ emit findSnaps(ID, normalbasedir);
+ return;
+ }
+ //if(snaprelpath.isEmpty()){
+ //Need to figure out the relative path within the snapshot
+ snaprelpath = normalbasedir.section(snapbasedir.section(ZSNAPDIR,0,0), 1,1000);
+ if(DEBUG){ qDebug() << " - new snapshot-relative path:" << snaprelpath; }
+ //}
+ dir.append(snaprelpath);
+ dir.replace("//","/"); //just in case any duplicate slashes from all the split/combining
+ if(DEBUG){ qDebug() << " - Load Snapshot:" << dir; }
+ }
+ //Make sure this directory exists, and back up as necessary
+ if(dir.isEmpty()){ return; }
+ //Load the newly selected snapshot
+ stopload = true; //just in case it is still loading
+ emit LoadDirectory(ID, dir);
+}
+
+void DirWidget::direct_snap_selected(QAction *act){
+ QString snap = act->whatsThis();
+ int val = snapshots.indexOf(snap);
+ if(val<0){ return; }
+ else{ ui->slider_snap->setValue(val); }
+}
+
+//Top Toolbar buttons
+void DirWidget::on_actionBack_triggered(){
+ if(history.isEmpty()){ return; } //cannot do anything
+ QString dir = history.takeLast();
+ //qDebug() << "Go Back:" << dir << normalbasedir << history.last();
+ if(dir == normalbasedir){
+ dir = history.takeLast();
+ }
+ stopload = true; //just in case it is still loading
+ emit LoadDirectory(ID, dir);
+}
+
+void DirWidget::on_actionUp_triggered(){
+ QString dir = CDIR.section("/",0,-2);
+ if(dir.isEmpty())
+ dir = "/";
+ //Quick check to ensure the directory exists
+ while(!QFile::exists(dir) && !dir.isEmpty()){
+ dir = dir.section("/",0,-2); //back up one additional dir
+ }
+ stopload = true; //just in case it is still loading
+ emit LoadDirectory(ID, dir);
+}
+
+void DirWidget::on_actionHome_triggered(){
+ stopload = true; //just in case it is still loading
+ emit LoadDirectory(ID, QDir::homePath());
+}
+
+void DirWidget::on_actionStopLoad_triggered(){
+ stopload = true;
+ ui->actionStopLoad->setVisible(false);
+}
+
+void DirWidget::dir_changed(){
+ QString dir = line_dir->text().simplified();
+ //Run the dir through the user-input checks
+ dir = LUtils::PathToAbsolute(dir);
+ qDebug() << "Dir:" << dir;
+ //Quick check to ensure the directory exists
+ while(!QFile::exists(dir) && !dir.isEmpty()){
+ dir = dir.section("/",0,-2); //back up one additional dir
+ }
+ qDebug() << " - Now Dir:" << dir;
+ stopload = true; //just in case it is still loading
+ emit LoadDirectory(ID, dir);
+}
+
+void DirWidget::on_actionClose_Browser_triggered(){
+ emit CloseBrowser(ID);
+}
+
+// - Other Actions without a specific button on the side
+void DirWidget::fileCheckSums(){
+ QStringList files = currentSelection();
+ if(files.isEmpty()){ return; }
+ qDebug() << "Run Checksums:" << files;
+ QStringList info = LOS::Checksums(files);
+ qDebug() << " - Info:" << info;
+ if(info.isEmpty() || (info.length() != files.length()) ){ return; }
+ for(int i=0; i<info.length(); i++){
+ info[i] = QString("%2\n\t(%1)").arg(files[i].section("/",-1), info[i]);
+ }
+ ScrollDialog dlg(this);
+ dlg.setWindowTitle( tr("File Checksums:") );
+ dlg.setWindowIcon( LXDG::findIcon("document-encrypted","") );
+ dlg.setText(info.join("\n"));
+ dlg.exec();
+ /*QMessageBox dlg(this);
+ dlg.setWindowFlags( Qt::Dialog );
+ dlg.setWindowTitle( tr("File Checksums") );
+ dlg.setDetailedText(info.join("\n"));
+ dlg.exec();*/
+ //QMessageBox::information(this, tr("File Checksums"), info.join("\n") );
+}
+
+void DirWidget::fileProperties(){
+ QStringList sel = currentSelection();
+ if(sel.isEmpty()){ return; }
+ if(!LUtils::isValidBinary("lumina-fileinfo")){
+ //It should never get to this point due to checks earlier - but just in case...
+ QMessageBox::warning(this, tr("Missing Utility"), tr("The \"lumina-fileinfo\" utility could not be found on the system. Please install it first.") );
+ return;
+ }
+ for(int i=0; i<sel.length(); i++){
+ QProcess::startDetached("lumina-fileinfo \""+sel[i]+"\""); //use absolute paths
+ }
+}
+
+void DirWidget::openTerminal(){
+ emit LaunchTerminal(CDIR);
+}
+
+//Browser Functions
+void DirWidget::OpenContextMenu(){
+ //First generate the context menu based on the selection
+ QStringList sel = currentSelection();
+ contextMenu->clear();
+ if(!sel.isEmpty()){
+ contextMenu->addAction(LXDG::findIcon("run-build-file",""), tr("Open"), this, SLOT(on_tool_act_run_clicked()) );
+ contextMenu->addAction(LXDG::findIcon("run-build-configure",""), tr("Open With..."), this, SLOT(on_tool_act_runwith_clicked()) );
+
+ contextMenu->addAction(LXDG::findIcon("edit-rename",""), tr("Rename..."), this, SLOT(on_tool_act_rename_clicked()) )->setEnabled(canmodify);
+ contextMenu->addAction(LXDG::findIcon("document-encrypted",""), tr("View Checksums..."), this, SLOT(fileCheckSums()) );
+ contextMenu->addSeparator();
+ }
+ //Now add the general selection options
+ contextMenu->addAction(LXDG::findIcon("edit-cut",""), tr("Cut Selection"), this, SLOT(on_tool_act_cut_clicked()) )->setEnabled(canmodify && !sel.isEmpty());
+ contextMenu->addAction(LXDG::findIcon("edit-copy",""), tr("Copy Selection"), this, SLOT(on_tool_act_copy_clicked()) )->setEnabled(!sel.isEmpty());
+ contextMenu->addAction(LXDG::findIcon("edit-paste",""), tr("Paste"), this, SLOT(on_tool_act_paste_clicked()) )->setEnabled(QApplication::clipboard()->mimeData()->hasFormat("x-special/lumina-copied-files") && canmodify);
+ contextMenu->addSeparator();
+ contextMenu->addAction(LXDG::findIcon("edit-delete",""), tr("Delete Selection"), this, SLOT(on_tool_act_rm_clicked()) )->setEnabled(canmodify&&!sel.isEmpty());
+ if(LUtils::isValidBinary("lumina-fileinfo")){
+ contextMenu->addSeparator();
+ contextMenu->addAction(LXDG::findIcon("edit-find-replace",""), tr("File Properties..."), this, SLOT(fileProperties()) )->setEnabled(!sel.isEmpty());
+ }
+ contextMenu->addSeparator();
+ contextMenu->addAction(LXDG::findIcon("system-search",""), tr("Open Terminal here"), this, SLOT(openTerminal()));
+
+ //Now open the menu at the current cursor location
+ contextMenu->popup(QCursor::pos());
+}
+
+void DirWidget::SelectionChanged(){
+ //Go through and enable/disable the buttons as necessary
+ bool hasselection = !currentSelection().isEmpty();
+ ui->tool_act_copy->setEnabled(hasselection);
+ ui->tool_act_cut->setEnabled(hasselection && canmodify);
+ ui->tool_act_fav->setEnabled(hasselection);
+ ui->tool_act_paste->setEnabled(canmodify && QApplication::clipboard()->mimeData()->hasFormat("x-special/lumina-copied-files") );
+ ui->tool_act_rename->setEnabled(hasselection && canmodify);
+ ui->tool_act_rm->setEnabled(hasselection && canmodify);
+ ui->tool_act_run->setEnabled(hasselection);
+ ui->tool_act_runwith->setEnabled(hasselection);
+}
+
+void DirWidget::startSync(const QString &file){
+ //Update date_format based on user settings
+ if(file == sessionsettings_config_file){ setDateFormat(); }
+ else if(file == snapbasedir){ emit findSnaps(ID, normalbasedir); } //snapshot list changed
+ else if(file == normalbasedir){
+ if(synctimer->isActive()){ synctimer->stop(); } //already starting a sync - restart the timer
+ synctimer->start();
+ }else{
+ //Some file in the directory got changed - start the time for a dir reload
+ // -- This prevents a directory from refreshing constantly if a file within the directory is changing all the time (such as a log file)
+ if(!synctimer->isActive()){ synctimer->start(); }
+ }
+}
+
+//====================
+// PROTECTED
+//====================
+void DirWidget::mouseReleaseEvent(QMouseEvent *ev){
+ static Qt::MouseButtons backmap = Qt::BackButton | Qt::ExtraButton5;
+ //qDebug() << "Mouse Click:" << ev->button();
+ if(backmap.testFlag(ev->button())){
+ ev->accept();
+ on_actionBack_triggered();
+ //}else if(ev->button()==Qt::ForwardButton()){
+ //ev->accept();
+ }else{
+ ev->ignore(); //not handled here
+ }
+}
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.h b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.h
new file mode 100644
index 00000000..fad699b8
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.h
@@ -0,0 +1,228 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#ifndef _LUMINA_FM_DIRECTORY_BROWSER_WIDGET_H
+#define _LUMINA_FM_DIRECTORY_BROWSER_WIDGET_H
+
+#include <QList>
+#include <QWidget>
+#include <QObject>
+#include <QMenu>
+#include <QToolBar>
+#include <QLineEdit>
+#include <QShortcut>
+#include <QFileSystemWatcher>
+#include <QTimer>
+#include <QFuture>
+
+#include "../DirData.h"
+#include "DDListWidgets.h"
+
+#define ZSNAPDIR QString("/.zfs/snapshot/")
+
+namespace Ui{
+ class DirWidget;
+};
+
+class DirWidget : public QWidget{
+ Q_OBJECT
+public:
+ enum DETAILTYPES{ NAME, SIZE, TYPE, DATEMOD, DATECREATE};
+ DirWidget(QString objID, QWidget *parent = 0); //needs a unique ID (to distinguish from other DirWidgets)
+ ~DirWidget();
+
+ void cleanup(); //called before the browser is closed down
+
+ //Directory Managment
+ void ChangeDir(QString dirpath);
+ void setDirCompleter(QCompleter *comp);
+
+ //Information
+ QString id();
+ QString currentDir();
+
+ //View Settings
+ void setShowDetails(bool show);
+ void setShowSidebar(bool show);
+ void setShowThumbnails(bool show);
+ void setDetails(QList<DETAILTYPES> list); //Which details to show and in which order (L->R)
+ void setThumbnailSize(int px);
+ void setShowCloseButton(bool show);
+
+ //Date format for show items
+ QStringList getDateFormat();
+ void setDateFormat();
+
+public slots:
+ void LoadDir(QString dir, LFileInfoList list);
+ void LoadSnaps(QString basedir, QStringList snaps);
+
+ //Refresh options
+ void refresh(); //Refresh current directory
+ void refreshButtons(); //Refresh action buttons only
+
+ //Theme change functions
+ void UpdateIcons();
+ void UpdateText();
+
+ //Button updates
+ void UpdateButtons();
+
+ //Keyboard Shortcuts triggered
+ void TryRenameSelection();
+ void TryCutSelection();
+ void TryCopySelection();
+ void TryPasteSelection();
+ void TryDeleteSelection();
+
+private:
+ Ui::DirWidget *ui;
+ QString ID, CDIR; //unique ID assigned by the parent and the current dir path
+ LFileInfoList CLIST; //current item list (snap or not)
+ QString normalbasedir, snapbasedir, snaprelpath; //for maintaining directory context while moving between snapshots
+ QStringList snapshots, needThumbs, tmpSel;
+ bool showDetails, showThumbs, canmodify, stopload; //which widget to use for showing items
+ QList<DETAILTYPES> listDetails;
+ QMenu *contextMenu;
+ QFuture<void> thumbThread;
+ //The Toolbar and associated items
+ QToolBar *toolbar;
+ QLineEdit *line_dir;
+ QStringList history;
+ //The drag and drop brower widgets
+ DDListWidget *listWidget;
+ DDTreeWidget *treeWidget;
+
+ //Keyboard Shortcuts
+ //QShortcut *copyFilesShort, *cutFilesShort, *pasteFilesShort, *deleteFilesShort;
+ //Watcher to determine when the dir changes
+ QFileSystemWatcher *watcher;
+ QTimer *synctimer;
+
+ //Functions for internal use
+ void setupConnections();
+ QStringList currentSelection();
+ QStringList date_format;
+
+private slots:
+ //Internal loading of thumbnails
+ void startLoadThumbs();
+ void showThumb(QString file, QIcon ico);
+
+ //UI BUTTONS/Actions
+ // -- Left Action Buttons
+ void on_tool_act_copy_clicked();
+ void on_tool_act_cut_clicked();
+ void on_tool_act_fav_clicked();
+ void on_tool_act_paste_clicked();
+ void on_tool_act_rename_clicked();
+ void on_tool_act_rm_clicked();
+ void on_tool_act_run_clicked();
+ void on_tool_act_runwith_clicked();
+ // -- Bottom Action Buttons
+ void on_tool_goToImages_clicked();
+ void on_tool_goToPlayer_clicked();
+ void on_tool_new_file_clicked();
+ void on_tool_new_dir_clicked();
+ // -- Top Snapshot Buttons
+ void on_tool_snap_newer_clicked();
+ void on_tool_snap_older_clicked();
+ void on_slider_snap_valueChanged(int val = -1);
+ void direct_snap_selected(QAction*);
+
+ //Top Toolbar buttons
+ void on_actionBack_triggered();
+ void on_actionUp_triggered();
+ void on_actionHome_triggered();
+ void on_actionStopLoad_triggered();
+ void dir_changed(); //user manually changed the directory
+ void on_actionClose_Browser_triggered();
+
+ // - Other Actions without a specific button on the side
+ void fileCheckSums();
+ void fileProperties();
+ void openTerminal();
+
+
+ //Browser Functions
+ void OpenContextMenu();
+ void SelectionChanged();
+ void startSync(const QString &file); //used internally to collect/pause before updating the dir
+
+signals:
+ //Directory loading/finding signals
+ void OpenDirectories(QStringList); //Directories to open in other tabs/columns
+ void LoadDirectory(QString, QString); //ID, dirpath (Directory to load here)
+ void findSnaps(QString, QString); //ID, dirpath (Request snapshot information for a directory)
+ void CloseBrowser(QString); //ID (Request that this browser be closed)
+
+ //External App/Widget launching
+ void PlayFiles(LFileInfoList); //open in multimedia player
+ void ViewFiles(LFileInfoList); //open in slideshow
+ void LaunchTerminal(QString); //dirpath
+
+ //System Interactions
+ void CutFiles(QStringList); //file selection
+ void CopyFiles(QStringList); //file selection
+ void PasteFiles(QString, QStringList); //current dir
+ void FavoriteFiles(QStringList); //file selection
+ void RenameFiles(QStringList); //file selection
+ void RemoveFiles(QStringList); //file selection
+
+ //Internal thumbnail loading system (multi-threaded)
+ void ThumbLoaded(QString, QIcon);
+
+protected:
+ void mouseReleaseEvent(QMouseEvent *);
+
+};
+
+/*
+ * Virtual class for managing the sort of folders/files items. The problem with base class is that it only manages texts fields and
+ * we have dates and sizes.
+ *
+ * On this class, we overwrite the function operator<.
+ */
+
+class CQTreeWidgetItem : public QTreeWidgetItem {
+public:
+ CQTreeWidgetItem(int type = Type) : QTreeWidgetItem(type) {}
+ CQTreeWidgetItem(const QStringList & strings, int type = Type) : QTreeWidgetItem(strings, type) {}
+ CQTreeWidgetItem(QTreeWidget * parent, int type = Type) : QTreeWidgetItem(parent, type) {}
+ CQTreeWidgetItem(QTreeWidget * parent, const QStringList & strings, int type = Type) : QTreeWidgetItem(parent, strings, type) {}
+ CQTreeWidgetItem(QTreeWidget * parent, QTreeWidgetItem * preceding, int type = Type) : QTreeWidgetItem(parent, preceding, type) {}
+ CQTreeWidgetItem(QTreeWidgetItem * parent, int type = Type) : QTreeWidgetItem(parent, type) {}
+ CQTreeWidgetItem(QTreeWidgetItem * parent, const QStringList & strings, int type = Type) : QTreeWidgetItem(parent, strings, type) {}
+ CQTreeWidgetItem(QTreeWidgetItem * parent, QTreeWidgetItem * preceding, int type = Type) : QTreeWidgetItem(parent, preceding, type) {}
+ virtual ~CQTreeWidgetItem() {}
+ inline virtual bool operator<(const QTreeWidgetItem &tmp) const {
+ int column = this->treeWidget()->sortColumn();
+ // We are in date text
+ if(column == DirWidget::DATEMOD || column == DirWidget::DATECREATE)
+ return this->whatsThis(column) < tmp.whatsThis(column);
+ // We are in size text
+ else if(column == DirWidget::SIZE) {
+ QString text = this->text(column);
+ QString text_tmp = tmp.text(column);
+ double filesize, filesize_tmp;
+ // On folders, text is empty so we check for that
+ // In case we are in folders, we put -1 for differentiate of regular files with 0 bytes.
+ // Doing so, all folders we'll be together instead of mixing with files with 0 bytes.
+ if(text.isEmpty())
+ filesize = -1;
+ else
+ filesize = LUtils::DisplaySizeToBytes(text);
+ if(text_tmp.isEmpty())
+ filesize_tmp = -1;
+ else
+ filesize_tmp = LUtils::DisplaySizeToBytes(text_tmp);
+ return filesize < filesize_tmp;
+ }
+ // In other cases, we trust base class implementation
+ return QTreeWidgetItem::operator<(tmp);
+ }
+};
+#endif
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui
new file mode 100644
index 00000000..c5bf12c3
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget.ui
@@ -0,0 +1,527 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DirWidget</class>
+ <widget class="QWidget" name="DirWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>350</height>
+ </rect>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>350</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0" columnstretch="0,1">
+ <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>
+ <property name="horizontalSpacing">
+ <number>1</number>
+ </property>
+ <property name="verticalSpacing">
+ <number>2</number>
+ </property>
+ <item row="0" column="0" rowspan="2" colspan="2">
+ <layout class="QHBoxLayout" name="toolbar_layout"/>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <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="QToolButton" name="tool_new_file">
+ <property name="statusTip">
+ <string>Create a new file</string>
+ </property>
+ <property name="text">
+ <string>New File</string>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_new_dir">
+ <property name="statusTip">
+ <string>Create a new directory</string>
+ </property>
+ <property name="text">
+ <string>New Dir</string>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_goToImages">
+ <property name="statusTip">
+ <string>Add selected images to slideshow</string>
+ </property>
+ <property name="text">
+ <string>Slideshow</string>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_goToPlayer">
+ <property name="statusTip">
+ <string>Enqueue selection in multimedia player</string>
+ </property>
+ <property name="text">
+ <string>Play</string>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_status">
+ <property name="text">
+ <string notr="true">Status</string>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="2" column="1">
+ <layout class="QVBoxLayout" name="browser_layout">
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ <item>
+ <widget class="QFrame" name="group_snaps">
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <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="QToolButton" name="tool_snap">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">padding-right: 5px;</string>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="popupMode">
+ <enum>QToolButton::InstantPopup</enum>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextOnly</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="slider_snap">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>1</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="invertedAppearance">
+ <bool>false</bool>
+ </property>
+ <property name="invertedControls">
+ <bool>false</bool>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksAbove</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_snap_older">
+ <property name="text">
+ <string notr="true">...</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_snap_newer">
+ <property name="text">
+ <string notr="true">...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="2" column="0">
+ <widget class="QFrame" name="group_actions">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <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="QToolButton" name="tool_act_run">
+ <property name="toolTip">
+ <string>Open item</string>
+ </property>
+ <property name="statusTip">
+ <string>Open item</string>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonIconOnly</enum>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_act_runwith">
+ <property name="toolTip">
+ <string>Open item (select application)</string>
+ </property>
+ <property name="statusTip">
+ <string>Open item (select application)</string>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_act_fav">
+ <property name="toolTip">
+ <string>Add item to personal favorites</string>
+ </property>
+ <property name="statusTip">
+ <string>Add item to personal favorites</string>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_act_rename">
+ <property name="toolTip">
+ <string>Rename item</string>
+ </property>
+ <property name="statusTip">
+ <string>Rename item</string>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line_7">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_act_cut">
+ <property name="toolTip">
+ <string>Cut items</string>
+ </property>
+ <property name="statusTip">
+ <string>Cut items (add to the clipboard)</string>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_act_copy">
+ <property name="toolTip">
+ <string>Copy items</string>
+ </property>
+ <property name="statusTip">
+ <string>Copy items to the clipboard</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_act_paste">
+ <property name="toolTip">
+ <string>Paste items from clipboard</string>
+ </property>
+ <property name="statusTip">
+ <string>Paste items from clipboard</string>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line_6">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_act_rm">
+ <property name="toolTip">
+ <string>Delete Items</string>
+ </property>
+ <property name="statusTip">
+ <string>Delete Items</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </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>
+ </widget>
+ </item>
+ </layout>
+ <action name="actionBack">
+ <property name="text">
+ <string notr="true">Back</string>
+ </property>
+ <property name="iconText">
+ <string>Back</string>
+ </property>
+ <property name="toolTip">
+ <string>Go back to previous directory</string>
+ </property>
+ <property name="statusTip">
+ <string>Go back to previous directory</string>
+ </property>
+ </action>
+ <action name="actionUp">
+ <property name="text">
+ <string notr="true">Up</string>
+ </property>
+ <property name="iconText">
+ <string>Up</string>
+ </property>
+ <property name="toolTip">
+ <string>Go to parent directory</string>
+ </property>
+ <property name="statusTip">
+ <string>Go to parent directory</string>
+ </property>
+ </action>
+ <action name="actionHome">
+ <property name="text">
+ <string notr="true">Home</string>
+ </property>
+ <property name="iconText">
+ <string>Home</string>
+ </property>
+ <property name="toolTip">
+ <string>Go to home directory</string>
+ </property>
+ <property name="statusTip">
+ <string>Go to home directory</string>
+ </property>
+ </action>
+ <action name="actionStopLoad">
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="statusTip">
+ <string>Stop loading the directory</string>
+ </property>
+ </action>
+ <action name="actionClose_Browser">
+ <property name="text">
+ <string notr="true">Close Browser</string>
+ </property>
+ <property name="iconText">
+ <string notr="true">Close Browser</string>
+ </property>
+ <property name="toolTip">
+ <string>Close this browser</string>
+ </property>
+ <property name="statusTip">
+ <string>Close this browser</string>
+ </property>
+ </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.cpp b/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.cpp
new file mode 100644
index 00000000..851a0b31
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.cpp
@@ -0,0 +1,223 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "MultimediaWidget.h"
+#include "ui_MultimediaWidget.h"
+
+#include <QTimer>
+
+MultimediaWidget::MultimediaWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MultimediaWidget){
+ ui->setupUi(this); //load the designer file
+
+ //Add in the special QMultimediaWidgets
+ mediaObj = new QMediaPlayer(this);
+ mediaObj->setVolume(100);
+ mediaObj->setNotifyInterval(500); //only every 1/2 second update
+ videoDisplay = new QVideoWidget(this);
+ videoDisplay->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ ui->videoLayout->addWidget(videoDisplay);
+ mediaObj->setVideoOutput(videoDisplay);
+ videoDisplay->setVisible(false);
+
+ UpdateIcons();
+ UpdateText();
+
+ //Connect the special signals/slots for the media object
+ connect(mediaObj, SIGNAL(durationChanged(qint64)), this, SLOT(playerDurationChanged(qint64)) );
+ connect(mediaObj, SIGNAL(seekableChanged(bool)), ui->playerSlider, SLOT(setEnabled(bool)) );
+ connect(mediaObj, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(playerStatusChanged(QMediaPlayer::MediaStatus)) );
+ connect(mediaObj, SIGNAL(positionChanged(qint64)), this, SLOT(playerTimeChanged(qint64)) );
+ connect(mediaObj, SIGNAL(stateChanged(QMediaPlayer::State)), this, SLOT(playerStateChanged(QMediaPlayer::State)) );
+ connect(mediaObj, SIGNAL(videoAvailableChanged(bool)), this, SLOT(playerVideoAvailable(bool)) );
+ connect(mediaObj, SIGNAL(error(QMediaPlayer::Error)), this, SLOT(playerError()) );
+
+ //Disable some of the initial states
+ ui->tool_player_stop->setEnabled(false); //nothing to stop yet
+ ui->tool_player_pause->setVisible(false); //nothing to pause yet
+ ui->playerSlider->setEnabled(false); //nothing to seek yet
+}
+
+MultimediaWidget::~MultimediaWidget(){
+
+}
+
+// ================
+// PUBLIC SLOTS
+// ================
+void MultimediaWidget::ClearPlaylist(){
+ mediaObj->stop();
+ ui->combo_player_list->clear();
+}
+
+void MultimediaWidget::LoadMultimedia(QList<LFileInfo> list){
+ for(int i=0; i<list.length(); i++){
+ if(list[i].isAVFile()){ ui->combo_player_list->addItem(list[i].fileName(), list[i].absoluteFilePath() ); }
+ }
+}
+
+void MultimediaWidget::Cleanup(){
+ mediaObj->stop(); //just make sure the player is stopped
+}
+
+//Theme change functions
+void MultimediaWidget::UpdateIcons(){
+ ui->tool_player_next->setIcon( LXDG::findIcon("media-skip-forward","") );
+ ui->tool_player_prev->setIcon( LXDG::findIcon("media-skip-backward","") );
+ ui->tool_player_pause->setIcon( LXDG::findIcon("media-playback-pause","") );
+ ui->tool_player_play->setIcon( LXDG::findIcon("media-playback-start","") );
+ ui->tool_player_stop->setIcon( LXDG::findIcon("media-playback-stop","") );
+}
+
+void MultimediaWidget::UpdateText(){
+ ui->retranslateUi(this);
+}
+
+
+// =================
+// PRIVATE
+// =================
+QString MultimediaWidget::msToText(qint64 ms){
+ QString disp;
+ if(ms>3600000){
+ disp.append( QString::number(ms/3600000)+":" );
+ ms = ms%3600000;
+ }
+ if(ms>60000){
+ disp.append( QString::number(ms/60000)+":" );
+ ms = ms%60000;
+ }else{
+ disp.append("0:");
+ }
+ if(ms>1000){
+ if(ms>=10000){ disp.append( QString::number(ms/1000) ); }
+ else{ disp.append( "0"+QString::number(ms/1000) ); }
+ }else{
+ disp.append("00");
+ }
+ return disp;
+}
+
+// =================
+// PRIVATE SLOTS
+// =================
+void MultimediaWidget::playerStatusChanged(QMediaPlayer::MediaStatus stat){
+ //Only use this for end-of-file detection - use the state detection otherwise
+ if(stat == QMediaPlayer::EndOfMedia){
+ if(!mediaObj->isMuted()){ playerFinished(); } //make sure it is not being seeked right now
+ }
+}
+
+void MultimediaWidget::playerStateChanged(QMediaPlayer::State newstate){
+ //This function keeps track of updating the visuals of the player
+ bool running = false;
+ bool showVideo = false;
+ QString msg;
+ switch(newstate){
+ case QMediaPlayer::PlayingState:
+ running=true;
+ showVideo = mediaObj->isVideoAvailable();
+ msg = "";//mediaObj->metaData(Phonon::TitleMetaData).join(" ");
+ if(msg.simplified().isEmpty()){ msg = ui->combo_player_list->currentText(); }
+ ui->label_player_novideo->setText(tr("Playing:")+"\n"+msg);
+ break;
+ case QMediaPlayer::PausedState:
+ showVideo=videoDisplay->isVisible(); //don't change the screen
+ break;
+ case QMediaPlayer::StoppedState:
+ ui->label_player_novideo->setText(tr("Stopped"));
+ break;
+ }
+ ui->tool_player_play->setVisible(!running);
+ ui->tool_player_pause->setVisible(running);
+ ui->tool_player_stop->setEnabled(running);
+ ui->label_player_novideo->setVisible(!showVideo);
+ videoDisplay->setVisible(showVideo);
+}
+
+void MultimediaWidget::playerVideoAvailable(bool showVideo){
+ ui->label_player_novideo->setVisible(!showVideo);
+ videoDisplay->setVisible(showVideo);
+}
+
+void MultimediaWidget::playerDurationChanged(qint64 dur){
+ if(dur < 0){ return; } //not ready yet
+ ui->playerSlider->setMaximum(mediaObj->duration());
+ playerTTime = msToText(dur);
+}
+
+void MultimediaWidget::playerTimeChanged(qint64 ctime){
+ if(mediaObj->isMuted() || playerTTime.isEmpty() ){ return; } //currently being moved
+ ui->playerSlider->setSliderPosition(ctime);
+}
+
+void MultimediaWidget::playerError(){
+ QString msg = QString(tr("Error Playing File: %1"));
+ msg = msg.arg( mediaObj->currentMedia().canonicalUrl().fileName() );
+ msg.append("\n"+mediaObj->errorString());
+ ui->label_player_novideo->setText(msg);
+}
+
+void MultimediaWidget::playerFinished(){
+ if(ui->combo_player_list->currentIndex()<(ui->combo_player_list->count()-1) && ui->check_player_gotonext->isChecked()){
+ ui->combo_player_list->setCurrentIndex( ui->combo_player_list->currentIndex()+1 );
+ QTimer::singleShot(0,this,SLOT(on_tool_player_play_clicked()));
+ }else{
+ ui->label_player_novideo->setText(tr("Finished"));
+ }
+}
+
+void MultimediaWidget::on_tool_player_play_clicked(){
+ if(mediaObj->state()==QMediaPlayer::PausedState \
+ && mediaObj->currentMedia().canonicalUrl().fileName()==ui->combo_player_list->currentText() ){
+ mediaObj->play();
+ }else{
+ mediaObj->stop();
+ //Get the selected file path
+ QString filePath = ui->combo_player_list->currentData().toString();
+ mediaObj->setMedia( QUrl::fromLocalFile(filePath) );
+ playerTTime.clear();
+ ui->playerSlider->setEnabled(mediaObj->isSeekable());
+ mediaObj->play();
+ }
+}
+
+void MultimediaWidget::on_combo_player_list_currentIndexChanged(int index){
+ ui->tool_player_next->setEnabled( ui->combo_player_list->count() > (index+1) );
+ ui->tool_player_prev->setEnabled( (index-1) >= 0 );
+}
+
+void MultimediaWidget::on_tool_player_next_clicked(){
+ ui->combo_player_list->setCurrentIndex( ui->combo_player_list->currentIndex()+1);
+ if(mediaObj->state()!=QMediaPlayer::StoppedState){ on_tool_player_play_clicked(); }
+}
+
+void MultimediaWidget::on_tool_player_prev_clicked(){
+ ui->combo_player_list->setCurrentIndex( ui->combo_player_list->currentIndex()-1);
+ if(mediaObj->state()!=QMediaPlayer::StoppedState){ on_tool_player_play_clicked(); }
+}
+
+void MultimediaWidget::on_tool_player_pause_clicked(){
+ mediaObj->pause();
+}
+
+void MultimediaWidget::on_tool_player_stop_clicked(){
+ mediaObj->stop();
+}
+
+//Slider controls
+void MultimediaWidget::on_playerSlider_sliderPressed(){
+ mediaObj->setMuted(true);
+ mediaObj->pause();
+}
+void MultimediaWidget::on_playerSlider_sliderReleased(){
+ if(mediaObj->state()==QMediaPlayer::PausedState){ mediaObj->play(); }
+ mediaObj->setMuted(false);
+}
+void MultimediaWidget::on_playerSlider_valueChanged(int val){
+ ui->label_player_runstats->setText( msToText(val)+"/"+playerTTime );
+ if(mediaObj->isMuted()){ mediaObj->setPosition(val); } //currently seeking
+}
+ \ No newline at end of file
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.h b/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.h
new file mode 100644
index 00000000..c579b2dd
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.h
@@ -0,0 +1,71 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#ifndef _LUMINA_FM_MULTIMEDIA_WIDGET_H
+#define _LUMINA_FM_MULTIMEDIA_WIDGET_H
+
+#include <QList>
+#include <QWidget>
+#include <QObject>
+#include <QMediaObject>
+#include <QMediaPlayer>
+#include <QVideoWidget>
+
+#include "../DirData.h"
+
+namespace Ui{
+ class MultimediaWidget;
+};
+
+class MultimediaWidget : public QWidget{
+ Q_OBJECT
+public:
+ MultimediaWidget(QWidget *parent = 0);
+ ~MultimediaWidget();
+
+public slots:
+ void ClearPlaylist();
+ void LoadMultimedia(QList<LFileInfo> list);
+ void Cleanup(); //perform actions necessary when closing the player
+
+ //Theme change functions
+ void UpdateIcons();
+ void UpdateText();
+
+private:
+ Ui::MultimediaWidget *ui;
+ QMediaPlayer *mediaObj;
+ QVideoWidget *videoDisplay;
+ QString playerTTime; //total time - to prevent recalculation every tick
+
+ QString msToText(qint64 ms);
+
+private slots:
+ //Media Object functions
+ void playerStatusChanged(QMediaPlayer::MediaStatus stat);
+ void playerStateChanged(QMediaPlayer::State newstate);
+ void playerVideoAvailable(bool showVideo);
+ void playerDurationChanged(qint64 dur);
+ void playerTimeChanged(qint64 ctime);
+ void playerError();
+ void playerFinished();
+
+ //The UI functions
+ void on_tool_player_play_clicked();
+ void on_combo_player_list_currentIndexChanged(int index);
+ void on_tool_player_next_clicked();
+ void on_tool_player_prev_clicked();
+ void on_tool_player_pause_clicked();
+ void on_tool_player_stop_clicked();
+
+ //Slider controls
+ void on_playerSlider_sliderPressed();
+ void on_playerSlider_sliderReleased();
+ void on_playerSlider_valueChanged(int val);
+
+
+};
+#endif \ No newline at end of file
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.ui b/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.ui
new file mode 100644
index 00000000..67805e13
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/MultimediaWidget.ui
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MultimediaWidget</class>
+ <widget class="QWidget" name="MultimediaWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QCheckBox" name="check_player_gotonext">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Go To Next</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_player_prev">
+ <property name="text">
+ <string notr="true">prev</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="combo_player_list">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_player_next">
+ <property name="text">
+ <string notr="true">next</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="videoLayout">
+ <item>
+ <widget class="QLabel" name="label_player_novideo">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>13</pointsize>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background: black; color: white;</string>
+ </property>
+ <property name="text">
+ <string>(No Running Video)</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="videoControlLayout">
+ <item>
+ <widget class="QToolButton" name="tool_player_play">
+ <property name="text">
+ <string notr="true">play</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_player_pause">
+ <property name="text">
+ <string notr="true">pause</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_player_stop">
+ <property name="text">
+ <string notr="true">stop</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line_4">
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="playerSlider">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_player_runstats">
+ <property name="text">
+ <string notr="true">?/?</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.cpp b/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.cpp
new file mode 100644
index 00000000..a9028d2b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.cpp
@@ -0,0 +1,169 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "SlideshowWidget.h"
+#include "ui_SlideshowWidget.h"
+
+#include <QImageWriter>
+#include <QMessageBox>
+
+SlideshowWidget::SlideshowWidget(QWidget *parent) : QWidget(parent), ui(new Ui::SlideshowWidget){
+ ui->setupUi(this); //load the designer file
+ zoom = 1;
+ UpdateIcons();
+ UpdateText();
+}
+
+SlideshowWidget::~SlideshowWidget(){
+
+}
+
+// ================
+// PUBLIC SLOTS
+// ================
+void SlideshowWidget::ClearImages(){
+ ui->combo_image_name->clear();
+}
+
+void SlideshowWidget::LoadImages(QList<LFileInfo> list){
+ int cmax = ui->combo_image_name->count(); //current number of items
+ for(int i=0; i<list.length(); i++){
+ if(list[i].isImage()){ ui->combo_image_name->addItem(list[i].fileName(), list[i].absoluteFilePath() ); }
+ }
+ //Now automatically show the first item from the batch of new ones
+ if(cmax < ui->combo_image_name->count()){ ui->combo_image_name->setCurrentIndex(cmax); }
+}
+
+void SlideshowWidget::refresh(){
+ UpdateImage();
+}
+
+//Theme change functions
+void SlideshowWidget::UpdateIcons(){
+ ui->tool_image_goBegin->setIcon( LXDG::findIcon("go-first-view","") );
+ ui->tool_image_goEnd->setIcon( LXDG::findIcon("go-last-view","") );
+ ui->tool_image_goPrev->setIcon( LXDG::findIcon("go-previous-view","") );
+ ui->tool_image_goNext->setIcon( LXDG::findIcon("go-next-view","") );
+ ui->tool_image_remove->setIcon( LXDG::findIcon("edit-delete","") );
+ ui->tool_image_rotateleft->setIcon( LXDG::findIcon("object-rotate-left","") );
+ ui->tool_image_rotateright->setIcon( LXDG::findIcon("object-rotate-right","") );
+ ui->tool_image_zoomin->setIcon( LXDG::findIcon("zoom-in","") );
+ ui->tool_image_zoomout->setIcon( LXDG::findIcon("zoom-out","") );
+}
+
+void SlideshowWidget::UpdateText(){
+ ui->retranslateUi(this);
+}
+
+
+// =================
+// PRIVATE
+// =================
+void SlideshowWidget::UpdateImage(){
+ QString file = ui->combo_image_name->currentData().toString();
+ qDebug() << "Show Image:" << file << "Zoom:" << zoom;
+ QPixmap pix(file);
+ QSize sz = ui->scrollArea->contentsRect().size();
+ if( sz.width()>pix.size().width() || sz.height()>pix.size().height()){ sz = pix.size(); } //100% size already - apply zoom after this
+ pix = pix.scaled(sz*zoom, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+ ui->label_image->setPixmap(pix);
+ //Now set/load the buttons
+ ui->tool_image_goBegin->setEnabled(ui->combo_image_name->currentIndex()>0);
+ ui->tool_image_goPrev->setEnabled(ui->combo_image_name->currentIndex()>0);
+ ui->tool_image_goEnd->setEnabled(ui->combo_image_name->currentIndex()<(ui->combo_image_name->count()-1));
+ ui->tool_image_goNext->setEnabled(ui->combo_image_name->currentIndex()<(ui->combo_image_name->count()-1));
+ ui->label_image_index->setText( QString::number(ui->combo_image_name->currentIndex()+1)+"/"+QString::number(ui->combo_image_name->count()) );
+ static QList<QByteArray> writeableformats;
+ if(writeableformats.isEmpty()){
+ writeableformats = QImageWriter::supportedImageFormats();
+ qDebug() << "Writeable image formats:" << writeableformats;
+ }
+ bool canwrite = writeableformats.contains(file.section(".",-1).toLower().toLocal8Bit()); //compare the suffix with the list
+ bool isUserWritable = QFileInfo(file).isWritable();
+ ui->tool_image_remove->setEnabled(isUserWritable);
+ ui->tool_image_rotateleft->setEnabled(isUserWritable && canwrite);
+ ui->tool_image_rotateright->setEnabled(isUserWritable && canwrite);
+ ui->tool_image_zoomin->setEnabled(zoom<2);
+ ui->tool_image_zoomout->setEnabled(zoom>0.25);
+}
+
+
+// =================
+// PRIVATE SLOTS
+// =================
+// Picture rotation options
+void SlideshowWidget::on_combo_image_name_currentIndexChanged(int index){
+ if(index>=0 && !ui->combo_image_name->currentData().toString().isEmpty()){
+ zoom = 1; //always reset the zoom level when changing images
+ UpdateImage();
+ }
+}
+
+void SlideshowWidget::on_tool_image_goEnd_clicked(){
+ ui->combo_image_name->setCurrentIndex( ui->combo_image_name->count()-1 );
+}
+
+void SlideshowWidget::on_tool_image_goNext_clicked(){
+ ui->combo_image_name->setCurrentIndex( ui->combo_image_name->currentIndex()+1 );
+}
+
+void SlideshowWidget::on_tool_image_goPrev_clicked(){
+ ui->combo_image_name->setCurrentIndex( ui->combo_image_name->currentIndex()-1 );
+}
+
+void SlideshowWidget::on_tool_image_goBegin_clicked(){
+ ui->combo_image_name->setCurrentIndex(0);
+}
+
+// Picture modification options
+void SlideshowWidget::on_tool_image_remove_clicked(){
+ QString file = ui->combo_image_name->currentData().toString();
+ //Verify permanent removal of file/dir
+ if(QMessageBox::Yes != QMessageBox::question(this, tr("Verify Removal"), tr("WARNING: This will permanently delete the file from the system!")+"\n"+tr("Are you sure you want to continue?")+"\n\n"+file, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) ){
+ return; //cancelled
+ }
+ if( QFile::remove(file) ){
+ int index = ui->combo_image_name->currentIndex();
+ ui->combo_image_name->removeItem( index );
+ }
+}
+
+void SlideshowWidget::on_tool_image_rotateleft_clicked(){
+ //First load the file fresh (not the scaled version in the UI)
+ QString file = ui->combo_image_name->currentData().toString();
+ QPixmap pix(file);
+ //Now rotate the image 90 degrees counter-clockwise
+ QTransform trans;
+ pix = pix.transformed( trans.rotate(-90) , Qt::SmoothTransformation);
+ //Now save the image back to the same file
+ pix.save(file);
+ //Now re-load the image in the UI
+ UpdateImage();
+}
+
+void SlideshowWidget::on_tool_image_rotateright_clicked(){
+ //First load the file fresh (not the scaled version in the UI)
+ QString file = ui->combo_image_name->currentData().toString();
+ QPixmap pix(file);
+ //Now rotate the image 90 degrees counter-clockwise
+ QTransform trans;
+ pix = pix.transformed( trans.rotate(90) , Qt::SmoothTransformation);
+ //Now save the image back to the same file
+ pix.save(file);
+ //Now re-load the image in the UI
+ UpdateImage();
+}
+
+void SlideshowWidget::on_tool_image_zoomin_clicked(){
+ zoom+=0.25; //change 25% every time
+ UpdateImage();
+}
+
+void SlideshowWidget::on_tool_image_zoomout_clicked(){
+ zoom-=0.25; //change 25% every time
+ UpdateImage();
+}
+
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.h b/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.h
new file mode 100644
index 00000000..3b9c70fd
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.h
@@ -0,0 +1,57 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#ifndef _LUMINA_FM_SLIDESHOW_WIDGET_H
+#define _LUMINA_FM_SLIDESHOW_WIDGET_H
+
+#include <QList>
+#include <QWidget>
+#include <QObject>
+
+#include "../DirData.h"
+
+namespace Ui{
+ class SlideshowWidget;
+};
+
+class SlideshowWidget : public QWidget{
+ Q_OBJECT
+public:
+ SlideshowWidget(QWidget *parent = 0);
+ ~SlideshowWidget();
+
+public slots:
+ void ClearImages();
+ void LoadImages(QList<LFileInfo> list);
+
+ void refresh(); //Note: This should be called right after the widget becomes visible
+
+ //Theme change functions
+ void UpdateIcons();
+ void UpdateText();
+
+private:
+ Ui::SlideshowWidget *ui;
+ void UpdateImage();
+ double zoom;
+
+private slots:
+ // Picture rotation options
+ void on_combo_image_name_currentIndexChanged(int index);
+ void on_tool_image_goEnd_clicked();
+ void on_tool_image_goNext_clicked();
+ void on_tool_image_goPrev_clicked();
+ void on_tool_image_goBegin_clicked();
+
+ // Picture modification options
+ void on_tool_image_remove_clicked();
+ void on_tool_image_rotateleft_clicked();
+ void on_tool_image_rotateright_clicked();
+ void on_tool_image_zoomin_clicked();
+ void on_tool_image_zoomout_clicked();
+
+};
+#endif \ No newline at end of file
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui b/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui
new file mode 100644
index 00000000..cab4c5f9
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/SlideshowWidget.ui
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SlideshowWidget</class>
+ <widget class="QWidget" name="SlideshowWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <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>
+ <layout class="QHBoxLayout" name="horizontalLayout_5">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QToolButton" name="tool_image_remove">
+ <property name="toolTip">
+ <string>Delete this image file</string>
+ </property>
+ <property name="text">
+ <string notr="true">...</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line_8">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_image_rotateleft">
+ <property name="toolTip">
+ <string>Rotate this image file counter-clockwise</string>
+ </property>
+ <property name="text">
+ <string notr="true">...</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_image_rotateright">
+ <property name="toolTip">
+ <string>Rotate this image file clockwise</string>
+ </property>
+ <property name="text">
+ <string notr="true">...</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_image_zoomin">
+ <property name="toolTip">
+ <string>Zoom in</string>
+ </property>
+ <property name="statusTip">
+ <string>Zoom in</string>
+ </property>
+ <property name="text">
+ <string notr="true">...</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_image_zoomout">
+ <property name="toolTip">
+ <string>Zoom out</string>
+ </property>
+ <property name="statusTip">
+ <string>Zoom out</string>
+ </property>
+ <property name="text">
+ <string notr="true">...</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <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="QScrollArea" name="scrollArea">
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="scrollAreaWidgetContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>364</width>
+ <height>264</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <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="QLabel" name="label_image">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <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="QToolButton" name="tool_image_goBegin">
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Go to Beginning</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="shortcut">
+ <string>Shift+Left</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_image_goPrev">
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Go to Previous</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="shortcut">
+ <string>Left</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="combo_image_name">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="frame">
+ <bool>true</bool>
+ </property>
+ <item>
+ <property name="text">
+ <string>File Name</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_image_index">
+ <property name="text">
+ <string notr="true">1/10</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_image_goNext">
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Go to Next</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="shortcut">
+ <string>Right</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_image_goEnd">
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Go to End</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="shortcut">
+ <string>Shift+Right</string>
+ </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>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
bgstack15