diff options
94 files changed, 1213 insertions, 65 deletions
diff --git a/debian/changelog b/debian/changelog index 32ed822d..b9d3b36c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +lumina-desktop (0.8.3.347-1nano) unstable; urgency=low + + * new GIT snapshot + - add lumina-xconfig package + - install ROADMAP doc file + + -- Christopher Roy Bratusek <nano@jpberlin.de> Tue, 24 Feb 2015 19:15:07 +0100 + lumina-desktop (0.8.2.282-1nano) unstable; urgency=low * new GIT snapshot diff --git a/debian/control b/debian/control index f26327b8..14bce48d 100644 --- a/debian/control +++ b/debian/control @@ -99,3 +99,11 @@ Replaces: lumina-core (<< 0.8.2) Description: Basic information utility for Lumina lumina-info display various information about the Lumina installation, like paths or version. + +Package: lumina-xconfig +Architecture: any +Depends: ${misc:Depends}, ${shlibs:Depends}, libluminautils1 (= ${binary:Version}) +Replaces: lumina-core (<< 0.8.2) +Description: Display configuration tool for the lumina desktop environment + lumina-info display various information about the Lumina installation, + like paths or version. diff --git a/debian/copyright b/debian/copyright index d4c686c2..e339f063 100644 --- a/debian/copyright +++ b/debian/copyright @@ -3,11 +3,11 @@ Upstream-Name: lumina-desktop Source: https://github.com/pcbsd/lumina Files: * -Copyright: 2012-2014, Ken Moore (moorekou@gmail.com) +Copyright: 2012-2015, Ken Moore (moorekou@gmail.com) License: BSD-3-Clause Files: debian/* -Copyright: 2014 Christopher Roy Bratusek <nano@jpberlin.de> +Copyright: 2014-2015 Christopher Roy Bratusek <nano@jpberlin.de> License: BSD-3-Clause License: BSD-3-Clause diff --git a/debian/docs b/debian/docs index b43bf86b..0674dc87 100644 --- a/debian/docs +++ b/debian/docs @@ -1 +1,2 @@ README.md +ROADMAP diff --git a/debian/lumina-xconfig.install b/debian/lumina-xconfig.install new file mode 100644 index 00000000..00d8279a --- /dev/null +++ b/debian/lumina-xconfig.install @@ -0,0 +1,2 @@ +usr/bin/lumina-xconfig +usr/share/Lumina-DE/i18n/lumina-xconfig*.qm diff --git a/debian/rules b/debian/rules index 0a1db87c..f86bf5e3 100755 --- a/debian/rules +++ b/debian/rules @@ -17,7 +17,8 @@ QMAKE_EXTRA_DIRS = libLumina \ lumina-open \ lumina-screenshot \ lumina-search \ - lumina-info + lumina-info \ + lumina-xconfig %: dh $@ diff --git a/libLumina/LuminaOS-OpenBSD.cpp b/libLumina/LuminaOS-OpenBSD.cpp index ffc21fa4..2c86995a 100644 --- a/libLumina/LuminaOS-OpenBSD.cpp +++ b/libLumina/LuminaOS-OpenBSD.cpp @@ -30,20 +30,22 @@ QStringList LOS::ExternalDevicePaths(){ QStringList devs = LUtils::getCmdOutput("mount"); //Now check the output for(int i=0; i<devs.length(); i++){ - if(devs[i].startsWith("/dev/")){ - QString type = devs[i].section(" on ",0,0); - type.remove("/dev/"); + QString type = devs[i].section(" ",0,0); + type.remove("/dev/"); //Determine the type of hardware device based on the dev node if(type.startsWith("sd")||type.startsWith("wd")){ type = "HDRIVE"; } else if(type.startsWith("cd")){ type="DVD"; } else{ type = "UNKNOWN"; } //Now put the device in the proper output format - devs[i] = type+"::::"+devs[i].section("(",1,1).section(",",0,0)+"::::"+devs[i].section(" on ",1,50).section("(",0,0).simplified(); - }else{ - //invalid device - remove it from the list - devs.removeAt(i); - i--; - } + QString fs = devs[i].section(" ", 4, 4); + QString path = devs[i].section(" ",2, 2); + if (!fs.isEmpty() ) { //we not found a filesystem, most probably this is an invalid row + devs[i] = type+"::::"+fs+"::::"+path; + } + else { + devs.removeAt(i); + i--; + } } return devs; } diff --git a/lumina-desktop/LDesktop.cpp b/lumina-desktop/LDesktop.cpp index 31baa48d..9a045e4f 100644 --- a/lumina-desktop/LDesktop.cpp +++ b/lumina-desktop/LDesktop.cpp @@ -13,12 +13,12 @@ #define DEBUG 1 -LDesktop::LDesktop(int deskNum) : QObject(){ +LDesktop::LDesktop(int deskNum, bool setdefault) : QObject(){ DPREFIX = "desktop-"+QString::number(deskNum)+"/"; desktopnumber = deskNum; desktop = QApplication::desktop(); - defaultdesktop = (desktop->screenGeometry(desktopnumber).x()==0); + defaultdesktop = setdefault; //(desktop->screenGeometry(desktopnumber).x()==0); desktoplocked = true; issyncing = bgupdating = false; usewinmenu=false; @@ -52,10 +52,18 @@ void LDesktop::show(){ for(int i=0; i<PANELS.length(); i++){ PANELS[i]->show(); } } -void LDesktop::hide(){ +/*void LDesktop::hide(){ if(bgWindow!=0){ bgWindow->hide(); } if(bgDesktop!=0){ bgDesktop->hide(); } for(int i=0; i<PANELS.length(); i++){ PANELS[i]->hide(); } +}*/ + +void LDesktop::prepareToClose(){ + //Get any panels ready to close + for(int i=0; i<PANELS.length(); i++){ PANELS[i]->prepareToClose(); delete PANELS.takeAt(i); i--; } + //Now close down any desktop plugins + desktoplocked = true; //make sure that plugin settings are preserved during removal + for(int i=0; i<PLUGINS.length(); i++){delete PLUGINS.takeAt(i); i--; } } WId LDesktop::backgroundID(){ @@ -390,6 +398,7 @@ void LDesktop::UpdatePanels(){ for(int i=0; i<PANELS.length(); i++){ if(panels <= PANELS[i]->number()){ if(DEBUG){ qDebug() << " -- Remove Panel:" << PANELS[i]->number(); } + PANELS[i]->prepareToClose(); delete PANELS.takeAt(i); i--; } diff --git a/lumina-desktop/LDesktop.h b/lumina-desktop/LDesktop.h index ef91110a..456c61e9 100644 --- a/lumina-desktop/LDesktop.h +++ b/lumina-desktop/LDesktop.h @@ -34,12 +34,13 @@ class LDesktop : public QObject{ Q_OBJECT public: - LDesktop(int deskNum=0); + LDesktop(int deskNum=0, bool setdefault = false); ~LDesktop(); int Screen(); //return the screen number this object is managing void show(); - void hide(); + //void hide(); + void prepareToClose(); WId backgroundID(); QRect availableScreenGeom(); diff --git a/lumina-desktop/LPanel.cpp b/lumina-desktop/LPanel.cpp index 51c994a5..f979ea15 100644 --- a/lumina-desktop/LPanel.cpp +++ b/lumina-desktop/LPanel.cpp @@ -64,6 +64,19 @@ LPanel::~LPanel(){ } +void LPanel::prepareToClose(){ + //Go through and remove all the plugins + for(int i=0; i<PLUGINS.length(); i++){ + if( PLUGINS[i]->type().startsWith("systemtray---") ){ + static_cast<LSysTray*>(PLUGINS[i])->stop(); + } + layout->takeAt(i); //remove from the layout + delete PLUGINS.takeAt(i); //delete the actual widget + LSession::processEvents(); + i--; //need to back up one space to not miss another plugin + } +} + //=========== // PUBLIC SLOTS //=========== diff --git a/lumina-desktop/LPanel.h b/lumina-desktop/LPanel.h index b7b89d71..ed1a8906 100644 --- a/lumina-desktop/LPanel.h +++ b/lumina-desktop/LPanel.h @@ -49,6 +49,8 @@ public: return panelnum; } + void prepareToClose(); + public slots: void UpdatePanel(); //Load the settings file and update the panel appropriately void UpdateLocale(); //Locale Changed externally diff --git a/lumina-desktop/LSession.cpp b/lumina-desktop/LSession.cpp index 4b0a04e7..811c60da 100644 --- a/lumina-desktop/LSession.cpp +++ b/lumina-desktop/LSession.cpp @@ -24,7 +24,7 @@ #include <X11/extensions/Xdamage.h> #ifndef DEBUG -#define DEBUG 0 +#define DEBUG 1 #endif XCBEventFilter *evFilter = 0; @@ -43,6 +43,10 @@ LSession::LSession(int &argc, char ** argv) : QApplication(argc, argv){ SystemTrayID = 0; VisualTrayID = 0; TrayDmgEvent = 0; TrayDmgError = 0; + cleansession = true; + for(int i=1; i<argc; i++){ + if( QString::fromLocal8Bit(argv[i]) == "--noclean" ){ cleansession = false; break; } + } XCB = new LXCB(); //need access to XCB data/functions right away //initialize the empty internal pointers to 0 appmenu = 0; @@ -133,28 +137,36 @@ void LSession::CleanupSession(){ if( sessionsettings->value("PlayLogoutAudio",true).toBool() ){ playAudioFile(LOS::LuminaShare()+"Logout.ogg"); } - //Close any Tray Apps - for(int i=0; i<RunningTrayApps.length(); i++){ - XCB->CloseWindow(RunningTrayApps[i]); - LSession::processEvents(); - } - //Close any open windows - QList<WId> WL = XCB->WindowList(true); - for(int i=0; i<WL.length(); i++){ - XCB->CloseWindow(WL[i]); - LSession::processEvents(); - } - - //Now wait a moment for things to close down before quitting - for(int i=0; i<20; i++){ LSession::processEvents(); usleep(25); } //1/2 second pause - //Kill any remaining windows - WL = XCB->WindowList(true); //all workspaces - for(int i=0; i<WL.length(); i++){ - LX11::KillWindow(WL[i]); - LSession::processEvents(); + if(cleansession){ + //Close any Tray Apps + for(int i=0; i<RunningTrayApps.length(); i++){ + XCB->CloseWindow(RunningTrayApps[i]); + LSession::processEvents(); + } + //Close any open windows + QList<WId> WL = XCB->WindowList(true); + for(int i=0; i<WL.length(); i++){ + XCB->CloseWindow(WL[i]); + LSession::processEvents(); + } + //Now wait a moment for things to close down before quitting + for(int i=0; i<20; i++){ LSession::processEvents(); usleep(25); } //1/2 second pause + //Kill any remaining windows + WL = XCB->WindowList(true); //all workspaces + for(int i=0; i<WL.length(); i++){ + LX11::KillWindow(WL[i]); + LSession::processEvents(); + } + } + //Stop the window manager + WM->stopWM(); + //Now close down the desktop + for(int i=0; i<DESKTOPS.length(); i++){ + DESKTOPS[i]->prepareToClose(); + //don't actually close them yet - that will happen when the session exits + // this will leave the wallpapers up for a few moments (preventing black screens) } - //Now wait a moment for things to close down before quitting for(int i=0; i<20; i++){ LSession::processEvents(); usleep(25); } //1/2 second pause } @@ -295,7 +307,11 @@ void LSession::updateDesktops(){ if(!found){ //Start the desktop on the new screen qDebug() << " - Start desktop on screen:" << i; - DESKTOPS << new LDesktop(i); + if(firstrun && DW->screenGeometry(i).x()==0){ + DESKTOPS << new LDesktop(i,true); //set this one as the default + }else{ + DESKTOPS << new LDesktop(i); + } } } //qDebug() << " - Done Starting Desktops"; @@ -305,8 +321,10 @@ void LSession::updateDesktops(){ //Now go through and make sure to delete any desktops for detached screens for(int i=0; i<DESKTOPS.length(); i++){ if(DESKTOPS[i]->Screen() >= DW->screenCount()){ - qDebug() << " - Hide desktop on screen:" << DESKTOPS[i]->Screen(); - DESKTOPS[i]->hide(); + qDebug() << " - Close desktop on screen:" << DESKTOPS[i]->Screen(); + DESKTOPS[i]->prepareToClose(); //hide(); + delete DESKTOPS.takeAt(i); + i--; }else{ qDebug() << " - Show desktop on screen:" << DESKTOPS[i]->Screen(); DESKTOPS[i]->show(); @@ -341,6 +359,7 @@ void LSession::adjustWindowGeom(WId win, bool maximize){ } //Adjust the window location if necessary if(maximize){ + if(DEBUG){ qDebug() << "Maximizing New Window:" << desk.width() << desk.height(); } geom = desk; //Use the full screen XCB->MoveResizeWindow(win, geom); XCB->MaximizeWindow(win, true); //directly set the appropriate "maximized" flags (bypassing WM) diff --git a/lumina-desktop/LSession.h b/lumina-desktop/LSession.h index 6ad4ac90..fdd47eb6 100644 --- a/lumina-desktop/LSession.h +++ b/lumina-desktop/LSession.h @@ -99,6 +99,7 @@ private: QMediaPlayer *mediaObj; QThread *audioThread; QSettings *sessionsettings; + bool cleansession; //System Tray Variables WId SystemTrayID, VisualTrayID; diff --git a/lumina-desktop/SettingsMenu.cpp b/lumina-desktop/SettingsMenu.cpp index 8c989600..95e6e44f 100644 --- a/lumina-desktop/SettingsMenu.cpp +++ b/lumina-desktop/SettingsMenu.cpp @@ -28,6 +28,9 @@ void SettingsMenu::InitMenu(){ act = new QAction( LXDG::findIcon("preferences-desktop",""), tr("Desktop"), this); act->setWhatsThis("lumina-config"); this->addAction(act); + act = new QAction( LXDG::findIcon("preferences-other",""), tr("Screen Configuration"), this); + act->setWhatsThis("lumina-xconfig"); + this->addAction(act); QString qtconfig = LOS::QtConfigShortcut(); if(QFile::exists(qtconfig) && !qtconfig.isEmpty()){ act = new QAction( LXDG::findIcon("preferences-desktop-theme",""), tr("Window Theme"), this); diff --git a/lumina-desktop/panel-plugins/userbutton/UserWidget.cpp b/lumina-desktop/panel-plugins/userbutton/UserWidget.cpp index d5f8cd2e..6ca3ba19 100644 --- a/lumina-desktop/panel-plugins/userbutton/UserWidget.cpp +++ b/lumina-desktop/panel-plugins/userbutton/UserWidget.cpp @@ -32,12 +32,14 @@ UserWidget::UserWidget(QWidget* parent) : QTabWidget(parent), ui(new Ui::UserWid ui->tool_fav_files->setIcon( LXDG::findIcon("document-multiple","") ); ui->tool_desktopsettings->setIcon( LXDG::findIcon("preferences-desktop","") ); ui->tool_config_screensaver->setIcon( LXDG::findIcon("preferences-desktop-screensaver","") ); + ui->tool_config_screensettings->setIcon( LXDG::findIcon("preferences-other","") ); ui->tool_home_gohome->setIcon( LXDG::findIcon("go-home","") ); ui->tool_home_browse->setIcon( LXDG::findIcon("document-open","") ); ui->tool_config_about->setIcon( LXDG::findIcon("lumina","") ); //Connect the signals/slots connect(ui->tool_desktopsettings, SIGNAL(clicked()), this, SLOT(openDeskSettings()) ); connect(ui->tool_config_screensaver, SIGNAL(clicked()), this, SLOT(openScreenSaverConfig()) ); + connect(ui->tool_config_screensettings, SIGNAL(clicked()), this, SLOT(openScreenConfig()) ); connect(ui->tool_fav_apps, SIGNAL(clicked()), this, SLOT(FavChanged()) ); connect(ui->tool_fav_files, SIGNAL(clicked()), this, SLOT(FavChanged()) ); connect(ui->tool_fav_dirs, SIGNAL(clicked()), this, SLOT(FavChanged()) ); diff --git a/lumina-desktop/panel-plugins/userbutton/UserWidget.h b/lumina-desktop/panel-plugins/userbutton/UserWidget.h index 108f540f..c7af2a4d 100644 --- a/lumina-desktop/panel-plugins/userbutton/UserWidget.h +++ b/lumina-desktop/panel-plugins/userbutton/UserWidget.h @@ -80,6 +80,9 @@ private slots: void openScreenSaverConfig(){ LaunchItem(SSAVER, false); } + void openScreenConfig(){ + LaunchItem("lumina-xconfig",false); + } void openLuminaInfo(){ LaunchItem("lumina-info",false); } diff --git a/lumina-desktop/panel-plugins/userbutton/UserWidget.ui b/lumina-desktop/panel-plugins/userbutton/UserWidget.ui index 9a307cb6..f00daf08 100644 --- a/lumina-desktop/panel-plugins/userbutton/UserWidget.ui +++ b/lumina-desktop/panel-plugins/userbutton/UserWidget.ui @@ -481,6 +481,28 @@ </widget> </item> <item> + <widget class="QToolButton" name="tool_config_screensettings"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Screen Configuration</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_qtconfig"> <property name="sizePolicy"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> diff --git a/lumina-fm/DDFileSystemModel.h b/lumina-fm/DDFileSystemModel.h new file mode 100644 index 00000000..caa83b0e --- /dev/null +++ b/lumina-fm/DDFileSystemModel.h @@ -0,0 +1,36 @@ +//=========================================== +// 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 a simple subclassed QFileSystemModel to enable drag and drop +// (and moving) but disable all the other filesystem modifications +//=========================================== +#ifndef _LUMINA_FILE_MANAGER_DDFILESYSTEMMODEL_H +#define _LUMINA_FILE_MANAGER_DDFILESYSTEMMODEL_H + +#include <QFileSystemModel> +#include <QObject> + +class DDFileSystemModel : public QFileSystemModel{ + Q_OBJECT +public: + DDFileSystemModel(QObject *parent = 0) : QFileSystemModel(parent){ + this->setReadOnly(false); //need this to enable DnD + } + ~DDFileSystemModel(){} + + virtual Qt::ItemFlags flags(const QModelIndex &index) const { + //First get all the flags from the standard QFileSystemModel + Qt::ItemFlags defaultflags = QFileSystemModel::flags(index); + //Now if it has the "Editable" flag set - remove it + if(defaultflags & Qt::ItemIsEditable){ + defaultflags ^= Qt::ItemIsEditable; + } + + return defaultflags; + } +}; + +#endif
\ No newline at end of file diff --git a/lumina-fm/MainUI.cpp b/lumina-fm/MainUI.cpp index 1b01a855..fe3240dc 100644 --- a/lumina-fm/MainUI.cpp +++ b/lumina-fm/MainUI.cpp @@ -44,8 +44,10 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ worker = new BackgroundWorker; worker->moveToThread(workThread); if(DEBUG){ qDebug() << " - File System Model"; } - fsmod = new QFileSystemModel(this); + fsmod = new DDFileSystemModel(this); fsmod->setRootPath("/"); + //fsmod->setReadOnly(false); //required for DnD, but also enables a lot of other stuff + //qDebug() << "DnD options:" << fsmod->supportedDropActions(); ui->tree_dir_view->setModel(fsmod); ui->tree_dir_view->sortByColumn(0, Qt::AscendingOrder); ui->tree_dir_view->setColumnWidth(0,200); @@ -159,6 +161,7 @@ void MainUI::setupIcons(){ ui->actionScan->setIcon( LXDG::findIcon("system-search","") ); //Browser page + ui->tool_addNewFile->setIcon( LXDG::findIcon("document-new","")); ui->tool_addToDir->setIcon( LXDG::findIcon("folder-new","") ); ui->tool_goToImages->setIcon( LXDG::findIcon("fileview-preview","") ); ui->tool_goToPlayer->setIcon( LXDG::findIcon("applications-multimedia","") ); @@ -282,9 +285,11 @@ 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 + 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 + on_actionShow_Action_Buttons_triggered(); //make sure to update the UI + ui->actionShow_Thumbnails->setChecked( settings->value("showthumbnails", true).toBool() ); + iconProv->showthumbnails = ui->actionShow_Thumbnails->isChecked(); QString view = settings->value("viewmode","details").toString(); if(view=="icons"){ radio_view_icons->setChecked(true); } else if(view=="list"){ radio_view_list->setChecked(true); } @@ -417,6 +422,7 @@ void MainUI::setCurrentDir(QString dir){ //Update the directory viewer and update the line edit keepFocus = !currentDir->hasFocus(); currentDir->setWhatsThis(dir); //save the full path internally + fsmod->setRootPath(rawdir); if(radio_view_details->isChecked()){ ui->tree_dir_view->setRootIndex(fsmod->index(dir)); ui->tree_dir_view->selectionModel()->clearSelection(); @@ -442,6 +448,7 @@ void MainUI::setCurrentDir(QString dir){ if(isUserWritable){ ui->label_dir_stats->setText(""); } else{ ui->label_dir_stats->setText(tr("Limited Access Directory")); } ui->tool_addToDir->setVisible(isUserWritable); + ui->tool_addNewFile->setVisible(isUserWritable); ui->actionUpDir->setEnabled(dir!="/"); ui->actionBack->setEnabled(history.length() > 1); ui->actionBookMark->setEnabled( rawdir!=QDir::homePath() && settings->value("bookmarks", QStringList()).toStringList().filter("::::"+rawdir).length()<1 ); @@ -469,6 +476,40 @@ QFileInfoList MainUI::getSelectedItems(){ return out; } +/*QModelIndexList MainUI::getVisibleItems(){ + QModelIndexList out; + if(radio_view_details->isChecked()){ + QModelIndex index = ui->tree_dir_view->indexAt(QPoint(0,0)); + while( index.isValid()){ + if(index.column()!=0){ + //move on - multiple index's per row when we only need one + }else if(ui->tree_dir_view->viewport()->rect().contains( ui->tree_dir_view->visualRect(index) ) ){ + //index within the viewport - add it to the list + out << index; + }else{ + break; //index not in the viewport + } + index = ui->tree_dir_view->indexBelow(index); //go to the next + if(out.contains(index)){ break; } //end of the list + } + + }else{ + QModelIndex index = ui->list_dir_view->indexAt(QPoint(0,0)); + while( index.isValid()){ + if(ui->list_dir_view->viewport()->rect().contains( ui->list_dir_view->visualRect(index) ) ){ + //index within the viewport - add it to the list + out << index; + }else{ + break; //index not in the viewport + } + index = ui->list_dir_view->indexBelow(index); //go to the next + if(out.contains(index)){ break; } //end of the list + } + + } + return out; +}*/ + //============== // PRIVATE SLOTS //============== @@ -646,6 +687,18 @@ void MainUI::on_actionShow_Action_Buttons_triggered(){ ui->group_actions->setVisible(ui->actionShow_Action_Buttons->isChecked()); settings->setValue("showactions", ui->actionShow_Action_Buttons->isChecked()); } + +void MainUI::on_actionShow_Thumbnails_triggered(){ + //Now save this setting for later + settings->setValue("showthumbnails", ui->actionShow_Thumbnails->isChecked()); + //Set the value in the icon provider + iconProv->showthumbnails = ui->actionShow_Thumbnails->isChecked(); + //Now make sure the filesystem model knows to re-load the image data + fsmod->revert(); + //Re-load the view widget + setCurrentDir(getCurrentDir()); +} + void MainUI::goToBookmark(QAction *act){ if(act==ui->actionManage_Bookmarks){ BMMDialog dlg(this); @@ -759,6 +812,17 @@ void MainUI::reloadDirectory(){ setCurrentDir( getCurrentDir() ); } +/*void MainUI::viewportChanged(){ + if( !ui->actionsShow_Thumbnails->isChecked()){ return; } + QModelIndexList list = getVisibleItems(); + for(int i=0; i<list.length(); i++){ + if( !ui->actionsShow_Thumbnails->isChecked()){ return; } //break out as necessary + if( imgFilter.contains("*."+fsmod->filePath(list[i]).section("/",-1).section(".",-1).toLower()){ + fmod-> + } + } +}*/ + void MainUI::currentDirectoryLoaded(){ //The directory was just loaded: refresh the action buttons as neccesary ui->tool_goToPlayer->setVisible(false); @@ -788,6 +852,23 @@ void MainUI::on_tool_addToDir_clicked(){ } } +void MainUI::on_tool_addNewFile_clicked(){ + 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; } + QString full = getCurrentDir(); + 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.")); + } + +} + void MainUI::tabChanged(int tab){ //Load the directory contained in the new tab qDebug() << "Change to Tab:" << tab << tabBar->tabText(tab); diff --git a/lumina-fm/MainUI.h b/lumina-fm/MainUI.h index ccc85f72..40ef25ff 100644 --- a/lumina-fm/MainUI.h +++ b/lumina-fm/MainUI.h @@ -53,6 +53,7 @@ #include "BMMDialog.h" //bookmark manager dialog #include "MimeIconProvider.h" //icon provider for the view widgets #include "BackgroundWorker.h" +#include "DDFileSystemModel.h" namespace Ui{ class MainUI; @@ -76,7 +77,8 @@ private: //Internal non-ui widgets QTabBar *tabBar; QLineEdit *currentDir; - QFileSystemModel *fsmod, *snapmod; + DDFileSystemModel *fsmod; + QFileSystemModel *snapmod; //QFileSystemWatcher *fswatcher; MimeIconProvider *iconProv; QMenu *contextMenu; @@ -115,7 +117,8 @@ private: QString getCurrentDir(); void setCurrentDir(QString); QFileInfoList getSelectedItems(); - + //QModelIndexList getVisibleItems(); + private slots: void slotSingleInstance(QStringList in){ this->show(); @@ -141,6 +144,7 @@ private slots: void on_actionClose_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); @@ -157,7 +161,8 @@ private slots: void reloadDirectory(); //Update the widget with the dir contents void currentDirectoryLoaded(); //The file system model re-loaded the directory void on_tool_addToDir_clicked(); - void tabChanged(int tab); + void on_tool_addNewFile_clicked(); + void tabChanged(int tab); void tabClosed(int tab = -1); void prevTab(); void nextTab(); diff --git a/lumina-fm/MainUI.ui b/lumina-fm/MainUI.ui index 9dae7a56..4b2156c2 100644 --- a/lumina-fm/MainUI.ui +++ b/lumina-fm/MainUI.ui @@ -30,7 +30,7 @@ <item> <widget class="QStackedWidget" name="stackedWidget"> <property name="currentIndex"> - <number>2</number> + <number>0</number> </property> <widget class="QWidget" name="page_browser"> <layout class="QGridLayout" name="gridLayout"> @@ -69,10 +69,10 @@ <bool>true</bool> </property> <property name="dragDropMode"> - <enum>QAbstractItemView::NoDragDrop</enum> + <enum>QAbstractItemView::InternalMove</enum> </property> <property name="defaultDropAction"> - <enum>Qt::IgnoreAction</enum> + <enum>Qt::MoveAction</enum> </property> <property name="selectionMode"> <enum>QAbstractItemView::ExtendedSelection</enum> @@ -124,10 +124,10 @@ <bool>true</bool> </property> <property name="dragDropMode"> - <enum>QAbstractItemView::NoDragDrop</enum> + <enum>QAbstractItemView::InternalMove</enum> </property> <property name="defaultDropAction"> - <enum>Qt::IgnoreAction</enum> + <enum>Qt::MoveAction</enum> </property> <property name="selectionMode"> <enum>QAbstractItemView::ExtendedSelection</enum> @@ -422,6 +422,25 @@ </widget> </item> <item> + <widget class="QToolButton" name="tool_addNewFile"> + <property name="statusTip"> + <string>Create a new file</string> + </property> + <property name="text"> + <string>New &file</string> + </property> + <property name="popupMode"> + <enum>QToolButton::InstantPopup</enum> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> <widget class="QToolButton" name="tool_addToDir"> <property name="focusPolicy"> <enum>Qt::NoFocus</enum> @@ -1086,7 +1105,7 @@ <x>0</x> <y>0</y> <width>567</width> - <height>18</height> + <height>19</height> </rect> </property> <widget class="QMenu" name="menuFile"> @@ -1101,6 +1120,7 @@ <property name="title"> <string>View</string> </property> + <addaction name="actionShow_Thumbnails"/> <addaction name="actionView_Hidden_Files"/> <addaction name="actionShow_Action_Buttons"/> <addaction name="separator"/> @@ -1266,6 +1286,17 @@ <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> </widget> <resources/> <connections/> diff --git a/lumina-fm/MimeIconProvider.h b/lumina-fm/MimeIconProvider.h index 044ff7eb..344d6801 100644 --- a/lumina-fm/MimeIconProvider.h +++ b/lumina-fm/MimeIconProvider.h @@ -19,15 +19,19 @@ class MimeIconProvider : public QFileIconProvider{ public: + bool showthumbnails; MimeIconProvider() : QFileIconProvider(){ + showthumbnails = false; } ~MimeIconProvider(){} + + QIcon icon(const QFileInfo &info) const{ if(info.isDir()){ return LXDG::findIcon("folder",""); }else if(info.isFile()){ - if(info.suffix().toLower()=="png" || info.suffix().toLower()=="jpg"){ + if(showthumbnails && (info.suffix().toLower()=="png" || info.suffix().toLower()=="jpg") ){ //make sure to only load small versions of the files into memory: could have hundreds of them... return QIcon( QPixmap(info.absoluteFilePath()).scaledToHeight(64) ); }else{ diff --git a/lumina-fm/lumina-fm.pro b/lumina-fm/lumina-fm.pro index 8f01a93c..53e2dd2d 100644 --- a/lumina-fm/lumina-fm.pro +++ b/lumina-fm/lumina-fm.pro @@ -24,7 +24,8 @@ HEADERS += MainUI.h \ FODialog.h \ BMMDialog.h \ MimeIconProvider.h \ - BackgroundWorker.h + BackgroundWorker.h \ + DDFileSystemModel.h FORMS += MainUI.ui \ FODialog.ui \ diff --git a/lumina-search/MainUI.cpp b/lumina-search/MainUI.cpp index 2a17217d..6597f589 100644 --- a/lumina-search/MainUI.cpp +++ b/lumina-search/MainUI.cpp @@ -11,7 +11,7 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ ui->setupUi(this); //load the designer file - setupIcons(); + //setupIcons(); ui->radio_apps->setChecked(true); //always default to starting here ui->tool_stop->setVisible(false); //no search running initially ui->tool_configure->setVisible(false); //app search initially set @@ -50,6 +50,7 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ this->show(); workthread->start(); + QTimer::singleShot(0,this, SLOT(setupIcons()) ); } MainUI::~MainUI(){ diff --git a/lumina-search/main.cpp b/lumina-search/main.cpp index 3739cf70..305c388b 100644 --- a/lumina-search/main.cpp +++ b/lumina-search/main.cpp @@ -17,14 +17,6 @@ int main(int argc, char ** argv) //qDebug() << "Load Translations..."; a.setApplicationName("Search for..."); LUtils::LoadTranslation(&a, "lumina-search"); - /*QTranslator translator; - QLocale mylocale; - QString langCode = mylocale.name(); - - if ( ! QFile::exists(LOS::LuminaShare()+"i18n/lumina-search_" + langCode + ".qm" ) ) langCode.truncate(langCode.indexOf("_")); - translator.load( QString("lumina-search_") + langCode, LOS::LuminaShare()+"i18n/" ); - a.installTranslator( &translator ); - qDebug() << "Locale:" << langCode;*/ MainUI w; QObject::connect(&theme,SIGNAL(updateIcons()), &w, SLOT(setupIcons()) ); diff --git a/lumina-xconfig/MainUI.cpp b/lumina-xconfig/MainUI.cpp new file mode 100644 index 00000000..a4131649 --- /dev/null +++ b/lumina-xconfig/MainUI.cpp @@ -0,0 +1,191 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 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 <LuminaXDG.h> +#include <LuminaUtils.h> + +#include <QTimer> + +MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ + ui->setupUi(this); + loadIcons(); + //Fill the location list with the valid entries + ui->combo_location->clear(); + ui->combo_location->addItem(tr("Right Of"), "--right-of"); + ui->combo_location->addItem(tr("Left Of"), "--left-of"); + + connect(ui->push_close, SIGNAL(clicked()), this, SLOT(close()) ); + connect(ui->push_rescan, SIGNAL(clicked()), this, SLOT(UpdateScreens()) ); + connect(ui->push_activate, SIGNAL(clicked()), this, SLOT(ActivateScreen()) ); + connect(ui->tool_deactivate, SIGNAL(clicked()), this, SLOT(DeactivateScreen()) ); + connect(ui->tool_moveleft, SIGNAL(clicked()), this, SLOT(MoveScreenLeft()) ); + connect(ui->tool_moveright, SIGNAL(clicked()), this, SLOT(MoveScreenRight()) ); + connect(ui->list_screens, SIGNAL(itemSelectionChanged()),this, SLOT(ScreenSelected()) ); + QTimer::singleShot(0, this, SLOT(UpdateScreens()) ); +} + +MainUI::~MainUI(){ + +} + +void MainUI::loadIcons(){ + this->setWindowIcon( LXDG::findIcon("preferences-system-windows-actions","") ); + ui->tool_deactivate->setIcon( LXDG::findIcon("list-remove","") ); + ui->tool_moveleft->setIcon( LXDG::findIcon("arrow-left","") ); + ui->tool_moveright->setIcon( LXDG::findIcon("arrow-right","") ); + ui->push_activate->setIcon( LXDG::findIcon("list-add","") ); + ui->push_rescan->setIcon( LXDG::findIcon("view-refresh","") ); + ui->push_close->setIcon( LXDG::findIcon("window-close","") ); +} + +void MainUI::UpdateScreens(){ + //First probe the server for current screens + SCREENS.clear(); + QStringList info = LUtils::getCmdOutput("xrandr -q"); + ScreenInfo cscreen; + for(int i=0; i<info.length(); i++){ + if(info[i].contains("connected") ){ + //qDebug() << "xrandr info:" << info[i]; + if(!cscreen.ID.isEmpty()){ + SCREENS << cscreen; //current screen finished - save it into the array + cscreen = ScreenInfo(); //Now create a new structure + } + QString dev = info[i].section(" ",0,0); //device ID + QString devres = info[i].section("(",0,0).split(" ",QString::SkipEmptyParts).last(); + qDebug() << " - ID:" <<dev; + //qDebug() << " - Res:" << devres; + if( !devres.contains("x") || !devres.contains("+") ){ devres.clear(); } + //qDebug() << " - Res (modified):" << devres; + if(info[i].contains(" disconnected ") && !devres.isEmpty() ){ + //Disable this device and restart (disconnected, but still attached to the X server) + DeactivateScreen(dev); + UpdateScreens(); + return; + }else if( !devres.isEmpty() ){ + //Device that is connected and attached (has a resolution) + qDebug() << "Create new Screen entry:" << dev << devres; + cscreen.ID = dev; + //Note: devres format: "<width>x<height>+<xoffset>+<yoffset>" + cscreen.geom.setRect( devres.section("+",-2,-2).toInt(), devres.section("+",-1,-1).toInt(), devres.section("x",0,0).toInt(), devres.section("+",0,0).section("x",1,1).toInt() ); + + }else if(info[i].contains(" connected ")){ + //Device that is connected, but not attached + qDebug() << "Create new Screen entry:" << dev << "none"; + cscreen.ID = dev; + cscreen.order = -2; //flag this right now as a non-active screen + } + }else if( !cscreen.ID.isEmpty() && info[i].section("\t",0,0,QString::SectionSkipEmpty).contains("x")){ + //available resolution for a device + cscreen.resList << info[i].section("\t",0,0,QString::SectionSkipEmpty); + } + } + if(!cscreen.ID.isEmpty()){ SCREENS << cscreen; } //make sure to add the last screen to the array + + //Now go through the screens and arrange them in order from left->right in the UI + bool found = true; + int xoffset = 0; //start at 0 + int cnum = 0; + ui->list_screens->clear(); + while(found){ + found = false; //make sure to break out if a screen is not found + for(int i=0; i<SCREENS.length(); i++){ + if(SCREENS[i].order != -1){} //already evaluated - skip it + else if(SCREENS[i].geom.x()==xoffset){ + found = true; //make sure to look for the next one + xoffset = xoffset+SCREENS[i].geom.width(); //next number to look for + SCREENS[i].order = cnum; //assign the currrent order to it + cnum++; //get ready for the next one + QListWidgetItem *it = new QListWidgetItem(); + it->setTextAlignment(Qt::AlignCenter); + it->setText( SCREENS[i].ID+"\n ("+QString::number(SCREENS[i].geom.width())+"x"+QString::number(SCREENS[i].geom.height())+") " ); + it->setWhatsThis(SCREENS[i].ID); + ui->list_screens->addItem(it); + } + } + } + + //Now update the available/current screens in the UI + ui->combo_availscreens->clear(); + ui->combo_cscreens->clear(); + for(int i=0; i<SCREENS.length(); i++){ + if(SCREENS[i].order<0){ + ui->combo_availscreens->addItem(SCREENS[i].ID); + }else{ + ui->combo_cscreens->addItem(SCREENS[i].ID); + } + } + ui->group_avail->setVisible( ui->combo_availscreens->count()>0 ); + ScreenSelected(); //update buttons +} + +void MainUI::ScreenSelected(){ + QListWidgetItem *item = ui->list_screens->currentItem(); + if(item==0){ + //nothing selected + ui->tool_deactivate->setEnabled(false); + ui->tool_moveleft->setEnabled(false); + ui->tool_moveright->setEnabled(false); + }else{ + //Item selected + ui->tool_deactivate->setEnabled(ui->list_screens->count()>1); + ui->tool_moveleft->setEnabled(ui->list_screens->row(item) > 0); + ui->tool_moveright->setEnabled(ui->list_screens->row(item) < (ui->list_screens->count()-1)); + } +} + +void MainUI::MoveScreenLeft(){ + QListWidgetItem *item = ui->list_screens->currentItem(); + if(item==0){ return; } //no selection + //Get the current ID + QString CID = item->whatsThis(); + //Now get the ID of the one on the left + item = ui->list_screens->item( ui->list_screens->row(item)-1 ); + if(item == 0){ return; } //no item on the left (can't go left) + QString LID = item->whatsThis(); //left ID + //Now run the command + LUtils::runCmd("xrandr", QStringList() << "--output" << CID << "--left-of" << LID << "--auto"); + QTimer::singleShot(500, this, SLOT(UpdateScreens()) ); +} + +void MainUI::MoveScreenRight(){ + QListWidgetItem *item = ui->list_screens->currentItem(); + if(item==0){ return; } //no selection + //Get the current ID + QString CID = item->whatsThis(); + //Now get the ID of the one on the left + item = ui->list_screens->item( ui->list_screens->row(item)+1 ); + if(item == 0){ return; } //no item on the right (can't go right) + QString RID = item->whatsThis(); //right ID + //Now run the command + LUtils::runCmd("xrandr", QStringList() << "--output" << CID << "--right-of" << RID << "--auto"); + QTimer::singleShot(500, this, SLOT(UpdateScreens()) ); +} + +void MainUI::DeactivateScreen(QString device){ + if(device.isEmpty()){ + //Get the currently selected device + QListWidgetItem *item = ui->list_screens->currentItem(); + if(item==0){ return; } //no selection + //Get the current ID + device = item->whatsThis(); + } + if(device.isEmpty()){ return; } //nothing found + LUtils::runCmd("xrandr", QStringList() << "--output" << device << "--off"); + QTimer::singleShot(500, this, SLOT(UpdateScreens()) ); +} + +void MainUI::ActivateScreen(){ + //Assemble the command; + QString ID = ui->combo_availscreens->currentText(); + QString DID = ui->combo_cscreens->currentText(); + QString loc = ui->combo_location->currentData().toString(); + if(ID.isEmpty() || DID.isEmpty() || loc.isEmpty()){ return; } //invalid inputs + LUtils::runCmd("xrandr", QStringList() << "--output" << ID << loc << DID <<"--auto"); + QTimer::singleShot(500, this, SLOT(UpdateScreens()) ); +} diff --git a/lumina-xconfig/MainUI.h b/lumina-xconfig/MainUI.h new file mode 100644 index 00000000..d7b9f2ea --- /dev/null +++ b/lumina-xconfig/MainUI.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_SCREEN_CONFIG_DIALOG_H +#define _LUMINA_SCREEN_CONFIG_DIALOG_H + +#include <QMainWindow> +#include <QRect> +#include <QString> +#include <QList> + +class ScreenInfo{ + public: + QString ID; + QRect geom; //screen geometry + int order; //left to right + QStringList resList; + ScreenInfo(){ + order = -1; //initial value is invalid + } + ~ScreenInfo(){} +}; + +namespace Ui{ + class MainUI; +}; + +class MainUI : public QMainWindow{ + Q_OBJECT +public: + MainUI(); + ~MainUI(); + +public slots: + void slotSingleInstance(){ + this->raise(); + this->show(); + } + void loadIcons(); + +private: + Ui::MainUI *ui; + QList<ScreenInfo> SCREENS; + +private slots: + void UpdateScreens(); + void ScreenSelected(); + void MoveScreenLeft(); + void MoveScreenRight(); + void DeactivateScreen(QString device = ""); + void ActivateScreen(); +}; + +#endif diff --git a/lumina-xconfig/MainUI.ui b/lumina-xconfig/MainUI.ui new file mode 100644 index 00000000..02df4b94 --- /dev/null +++ b/lumina-xconfig/MainUI.ui @@ -0,0 +1,193 @@ +<?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>424</width> + <height>255</height> + </rect> + </property> + <property name="windowTitle"> + <string>Monitor Configuration</string> + </property> + <widget class="QWidget" name="centralwidget"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QListWidget" name="list_screens"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>100</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>100</height> + </size> + </property> + <property name="flow"> + <enum>QListView::LeftToRight</enum> + </property> + <property name="viewMode"> + <enum>QListView::ListMode</enum> + </property> + <property name="uniformItemSizes"> + <bool>true</bool> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + <property name="selectionRectVisible"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QToolButton" name="tool_deactivate"> + <property name="text"> + <string>...</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>0</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QToolButton" name="tool_moveleft"> + <property name="text"> + <string>...</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_moveright"> + <property name="text"> + <string>...</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QGroupBox" name="group_avail"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Available Screens</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QComboBox" name="combo_availscreens"> + <property name="toolTip"> + <string>Screen which is not in user</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QComboBox" name="combo_location"> + <property name="toolTip"> + <string>Location to insert the screen</string> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QComboBox" name="combo_cscreens"> + <property name="toolTip"> + <string>Current screens</string> + </property> + </widget> + </item> + <item row="1" column="2"> + <widget class="QPushButton" name="push_activate"> + <property name="text"> + <string>Activate Screen</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </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> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QPushButton" name="push_rescan"> + <property name="text"> + <string>Refresh Screens</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="push_close"> + <property name="text"> + <string>Close</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </widget> + <resources/> + <connections/> +</ui> diff --git a/lumina-xconfig/i18n/lumina-xconfig_af.ts b/lumina-xconfig/i18n/lumina-xconfig_af.ts new file mode 100644 index 00000000..6b7e234b --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_af.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="af_ZA"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_ar.ts b/lumina-xconfig/i18n/lumina-xconfig_ar.ts new file mode 100644 index 00000000..2e9eabf9 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_ar.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ar_EG"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_az.ts b/lumina-xconfig/i18n/lumina-xconfig_az.ts new file mode 100644 index 00000000..a0d853de --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_az.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="az_AZ"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_bg.ts b/lumina-xconfig/i18n/lumina-xconfig_bg.ts new file mode 100644 index 00000000..5e12aa5d --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_bg.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="bg_BG"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_bn.ts b/lumina-xconfig/i18n/lumina-xconfig_bn.ts new file mode 100644 index 00000000..996a21c8 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_bn.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="bn_BD"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_bs.ts b/lumina-xconfig/i18n/lumina-xconfig_bs.ts new file mode 100644 index 00000000..36253ae1 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_bs.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="bs_BA"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_ca.ts b/lumina-xconfig/i18n/lumina-xconfig_ca.ts new file mode 100644 index 00000000..94254056 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_ca.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ca_ES"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_cs.ts b/lumina-xconfig/i18n/lumina-xconfig_cs.ts new file mode 100644 index 00000000..80227e30 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_cs.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="cs_CZ"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_cy.ts b/lumina-xconfig/i18n/lumina-xconfig_cy.ts new file mode 100644 index 00000000..05487897 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_cy.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="cy_GB"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_da.ts b/lumina-xconfig/i18n/lumina-xconfig_da.ts new file mode 100644 index 00000000..f9fe4071 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_da.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="da_DK"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_de.ts b/lumina-xconfig/i18n/lumina-xconfig_de.ts new file mode 100644 index 00000000..1552582e --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_de.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="de_DE"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_el.ts b/lumina-xconfig/i18n/lumina-xconfig_el.ts new file mode 100644 index 00000000..d1fe6269 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_el.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="el_GR"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_en_GB.ts b/lumina-xconfig/i18n/lumina-xconfig_en_GB.ts new file mode 100644 index 00000000..942967a2 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_en_GB.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="en_GB"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_en_ZA.ts b/lumina-xconfig/i18n/lumina-xconfig_en_ZA.ts new file mode 100644 index 00000000..28ecea6e --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_en_ZA.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="en_ZA"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_es.ts b/lumina-xconfig/i18n/lumina-xconfig_es.ts new file mode 100644 index 00000000..04ecad3c --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_es.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="es_ES"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_et.ts b/lumina-xconfig/i18n/lumina-xconfig_et.ts new file mode 100644 index 00000000..8c9ea560 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_et.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="et_EE"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_eu.ts b/lumina-xconfig/i18n/lumina-xconfig_eu.ts new file mode 100644 index 00000000..43af96eb --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_eu.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="eu_ES"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_fa.ts b/lumina-xconfig/i18n/lumina-xconfig_fa.ts new file mode 100644 index 00000000..ec6d1a4e --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_fa.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="fa_IR"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_fi.ts b/lumina-xconfig/i18n/lumina-xconfig_fi.ts new file mode 100644 index 00000000..afaf9e44 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_fi.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="fi_FI"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_fr.ts b/lumina-xconfig/i18n/lumina-xconfig_fr.ts new file mode 100644 index 00000000..983be725 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_fr.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="fr_FR"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_fr_CA.ts b/lumina-xconfig/i18n/lumina-xconfig_fr_CA.ts new file mode 100644 index 00000000..7f4cf455 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_fr_CA.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="fr_CA"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_gl.ts b/lumina-xconfig/i18n/lumina-xconfig_gl.ts new file mode 100644 index 00000000..c67947fa --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_gl.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="gl_ES"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_he.ts b/lumina-xconfig/i18n/lumina-xconfig_he.ts new file mode 100644 index 00000000..71aaf886 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_he.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="he_IL"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_hi.ts b/lumina-xconfig/i18n/lumina-xconfig_hi.ts new file mode 100644 index 00000000..b5486bbb --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_hi.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="hi_IN"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_hr.ts b/lumina-xconfig/i18n/lumina-xconfig_hr.ts new file mode 100644 index 00000000..e182599b --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_hr.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="hr_HR"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_hu.ts b/lumina-xconfig/i18n/lumina-xconfig_hu.ts new file mode 100644 index 00000000..24721702 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_hu.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="hu_HU"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_id.ts b/lumina-xconfig/i18n/lumina-xconfig_id.ts new file mode 100644 index 00000000..5898f681 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_id.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="id_ID"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_is.ts b/lumina-xconfig/i18n/lumina-xconfig_is.ts new file mode 100644 index 00000000..c1800c9d --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_is.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="is_IS"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_it.ts b/lumina-xconfig/i18n/lumina-xconfig_it.ts new file mode 100644 index 00000000..61c04918 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_it.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="it_IT"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_ja.ts b/lumina-xconfig/i18n/lumina-xconfig_ja.ts new file mode 100644 index 00000000..0b5611e8 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_ja.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ja_JP"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_ka.ts b/lumina-xconfig/i18n/lumina-xconfig_ka.ts new file mode 100644 index 00000000..f1af1936 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_ka.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ka_GE"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_ko.ts b/lumina-xconfig/i18n/lumina-xconfig_ko.ts new file mode 100644 index 00000000..7d70aed2 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_ko.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ko_KR"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_lt.ts b/lumina-xconfig/i18n/lumina-xconfig_lt.ts new file mode 100644 index 00000000..4c461882 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_lt.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="lt_LT"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_lv.ts b/lumina-xconfig/i18n/lumina-xconfig_lv.ts new file mode 100644 index 00000000..8169c3ce --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_lv.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="lv_LV"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_mk.ts b/lumina-xconfig/i18n/lumina-xconfig_mk.ts new file mode 100644 index 00000000..c56764ee --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_mk.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="mk_MK"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_mn.ts b/lumina-xconfig/i18n/lumina-xconfig_mn.ts new file mode 100644 index 00000000..844219c9 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_mn.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="mn_MN"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_ms.ts b/lumina-xconfig/i18n/lumina-xconfig_ms.ts new file mode 100644 index 00000000..330af06c --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_ms.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ms_MY"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_mt.ts b/lumina-xconfig/i18n/lumina-xconfig_mt.ts new file mode 100644 index 00000000..5ef11dcc --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_mt.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="mt_MT"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_nb.ts b/lumina-xconfig/i18n/lumina-xconfig_nb.ts new file mode 100644 index 00000000..90a410ec --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_nb.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="nb_NO"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_nl.ts b/lumina-xconfig/i18n/lumina-xconfig_nl.ts new file mode 100644 index 00000000..9e739505 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_nl.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="nl_NL"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_pa.ts b/lumina-xconfig/i18n/lumina-xconfig_pa.ts new file mode 100644 index 00000000..6845fd1a --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_pa.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="pa_IN"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_pl.ts b/lumina-xconfig/i18n/lumina-xconfig_pl.ts new file mode 100644 index 00000000..fb60fbb0 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_pl.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="pl_PL"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_pt.ts b/lumina-xconfig/i18n/lumina-xconfig_pt.ts new file mode 100644 index 00000000..b3cbf875 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_pt.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="pt_BR"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_pt_BR.ts b/lumina-xconfig/i18n/lumina-xconfig_pt_BR.ts new file mode 100644 index 00000000..b3cbf875 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_pt_BR.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="pt_BR"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_ro.ts b/lumina-xconfig/i18n/lumina-xconfig_ro.ts new file mode 100644 index 00000000..73c6d1cd --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_ro.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ro_RO"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_ru.ts b/lumina-xconfig/i18n/lumina-xconfig_ru.ts new file mode 100644 index 00000000..f62cf2e1 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_ru.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ru_RU"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_sk.ts b/lumina-xconfig/i18n/lumina-xconfig_sk.ts new file mode 100644 index 00000000..899d9f46 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_sk.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="sk_SK"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_sl.ts b/lumina-xconfig/i18n/lumina-xconfig_sl.ts new file mode 100644 index 00000000..7f39524d --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_sl.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="sl_SI"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_sr.ts b/lumina-xconfig/i18n/lumina-xconfig_sr.ts new file mode 100644 index 00000000..1d02152a --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_sr.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="sr_RS"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_sv.ts b/lumina-xconfig/i18n/lumina-xconfig_sv.ts new file mode 100644 index 00000000..9a84441f --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_sv.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="sv_SE"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_sw.ts b/lumina-xconfig/i18n/lumina-xconfig_sw.ts new file mode 100644 index 00000000..0b71f0ef --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_sw.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="sw_TZ"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_ta.ts b/lumina-xconfig/i18n/lumina-xconfig_ta.ts new file mode 100644 index 00000000..134d2bbb --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_ta.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ta_IN"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_tg.ts b/lumina-xconfig/i18n/lumina-xconfig_tg.ts new file mode 100644 index 00000000..268fac8b --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_tg.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="tg_TJ"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_th.ts b/lumina-xconfig/i18n/lumina-xconfig_th.ts new file mode 100644 index 00000000..c6cff8e0 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_th.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="th_TH"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_tr.ts b/lumina-xconfig/i18n/lumina-xconfig_tr.ts new file mode 100644 index 00000000..86089945 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_tr.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="tr_TR"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_uk.ts b/lumina-xconfig/i18n/lumina-xconfig_uk.ts new file mode 100644 index 00000000..df16936b --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_uk.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="uk_UA"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_uz.ts b/lumina-xconfig/i18n/lumina-xconfig_uz.ts new file mode 100644 index 00000000..f1a84854 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_uz.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="uz_UZ"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_vi.ts b/lumina-xconfig/i18n/lumina-xconfig_vi.ts new file mode 100644 index 00000000..c3b761e4 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_vi.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="vi_VN"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_zh_CN.ts b/lumina-xconfig/i18n/lumina-xconfig_zh_CN.ts new file mode 100644 index 00000000..e5ca8aa9 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_zh_CN.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="zh_CN"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_zh_HK.ts b/lumina-xconfig/i18n/lumina-xconfig_zh_HK.ts new file mode 100644 index 00000000..1e2ff180 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_zh_HK.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="zh_HK"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_zh_TW.ts b/lumina-xconfig/i18n/lumina-xconfig_zh_TW.ts new file mode 100644 index 00000000..4b703e33 --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_zh_TW.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="zh_TW"> +</TS> diff --git a/lumina-xconfig/i18n/lumina-xconfig_zu.ts b/lumina-xconfig/i18n/lumina-xconfig_zu.ts new file mode 100644 index 00000000..6c7991fb --- /dev/null +++ b/lumina-xconfig/i18n/lumina-xconfig_zu.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="zu_ZA"> +</TS> diff --git a/lumina-xconfig/lumina-xconfig.pro b/lumina-xconfig/lumina-xconfig.pro new file mode 100644 index 00000000..9b15459b --- /dev/null +++ b/lumina-xconfig/lumina-xconfig.pro @@ -0,0 +1,106 @@ + +QT += core gui +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets network + +TARGET = lumina-xconfig +isEmpty(PREFIX) { + PREFIX = /usr/local +} +target.path = $$PREFIX/bin + +isEmpty(LIBPREFIX) { + LIBPREFIX = $$PREFIX/lib +} + +TEMPLATE = app + +SOURCES += main.cpp \ + mainUI.cpp + +HEADERS += mainUI.h + +FORMS += mainUI.ui + +# RESOURCES+= lumina-config.qrc + +INCLUDEPATH += ../libLumina $$PREFIX/include + +LIBS += -L../libLumina -L$$LIBPREFIX -lLuminaUtils + +isEmpty(QT5LIBDIR) { + QT5LIBDIR = $$PREFIX/lib/qt5 +} + +LRELEASE = $$QT5LIBDIR/bin/lrelease + + +QMAKE_LIBDIR = ../libLumina +DEPENDPATH += ../libLumina + +TRANSLATIONS = i18n/lumina-xconfig_af.ts \ + i18n/lumina-xconfig_ar.ts \ + i18n/lumina-xconfig_az.ts \ + i18n/lumina-xconfig_bg.ts \ + i18n/lumina-xconfig_bn.ts \ + i18n/lumina-xconfig_bs.ts \ + i18n/lumina-xconfig_ca.ts \ + i18n/lumina-xconfig_cs.ts \ + i18n/lumina-xconfig_cy.ts \ + i18n/lumina-xconfig_da.ts \ + i18n/lumina-xconfig_de.ts \ + i18n/lumina-xconfig_el.ts \ + i18n/lumina-xconfig_en_GB.ts \ + i18n/lumina-xconfig_en_ZA.ts \ + i18n/lumina-xconfig_es.ts \ + i18n/lumina-xconfig_et.ts \ + i18n/lumina-xconfig_eu.ts \ + i18n/lumina-xconfig_fa.ts \ + i18n/lumina-xconfig_fi.ts \ + i18n/lumina-xconfig_fr.ts \ + i18n/lumina-xconfig_fr_CA.ts \ + i18n/lumina-xconfig_gl.ts \ + i18n/lumina-xconfig_he.ts \ + i18n/lumina-xconfig_hi.ts \ + i18n/lumina-xconfig_hr.ts \ + i18n/lumina-xconfig_hu.ts \ + i18n/lumina-xconfig_id.ts \ + i18n/lumina-xconfig_is.ts \ + i18n/lumina-xconfig_it.ts \ + i18n/lumina-xconfig_ja.ts \ + i18n/lumina-xconfig_ka.ts \ + i18n/lumina-xconfig_ko.ts \ + i18n/lumina-xconfig_lt.ts \ + i18n/lumina-xconfig_lv.ts \ + i18n/lumina-xconfig_mk.ts \ + i18n/lumina-xconfig_mn.ts \ + i18n/lumina-xconfig_ms.ts \ + i18n/lumina-xconfig_mt.ts \ + i18n/lumina-xconfig_nb.ts \ + i18n/lumina-xconfig_nl.ts \ + i18n/lumina-xconfig_pa.ts \ + i18n/lumina-xconfig_pl.ts \ + i18n/lumina-xconfig_pt.ts \ + i18n/lumina-xconfig_pt_BR.ts \ + i18n/lumina-xconfig_ro.ts \ + i18n/lumina-xconfig_ru.ts \ + i18n/lumina-xconfig_sk.ts \ + i18n/lumina-xconfig_sl.ts \ + i18n/lumina-xconfig_sr.ts \ + i18n/lumina-xconfig_sv.ts \ + i18n/lumina-xconfig_sw.ts \ + i18n/lumina-xconfig_ta.ts \ + i18n/lumina-xconfig_tg.ts \ + i18n/lumina-xconfig_th.ts \ + i18n/lumina-xconfig_tr.ts \ + i18n/lumina-xconfig_uk.ts \ + i18n/lumina-xconfig_uz.ts \ + i18n/lumina-xconfig_vi.ts \ + i18n/lumina-xconfig_zh_CN.ts \ + i18n/lumina-xconfig_zh_HK.ts \ + i18n/lumina-xconfig_zh_TW.ts \ + i18n/lumina-xconfig_zu.ts + +dotrans.path=$$PREFIX/share/Lumina-DE/i18n/ +dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)$$PREFIX/share/Lumina-DE/i18n/ + +INSTALLS += target dotrans diff --git a/lumina-xconfig/main.cpp b/lumina-xconfig/main.cpp new file mode 100644 index 00000000..de8de504 --- /dev/null +++ b/lumina-xconfig/main.cpp @@ -0,0 +1,41 @@ +#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) +{ + /*QStringList in; + for(int i=1; i<argc; i++){ //skip the first arg (app binary) + QString path = argv[i]; + if(path=="."){ + //Insert the current working directory + in << QDir::currentPath(); + }else{ + if(!path.startsWith("/")){ path.prepend(QDir::currentPath()+"/"); } + in << path; + } + } + if(in.isEmpty()){ in << QDir::homePath(); }*/ + + LSingleApplication a(argc, argv, "lumina-xconfig"); //loads translations inside constructor + if( !a.isPrimaryProcess()){ return 0; } + //qDebug() << "Loaded QApplication"; + a.setApplicationName("Lumina Screen Configuration"); + LuminaThemeEngine themes(&a); + + //Start the UI + MainUI w; + QObject::connect(&a, SIGNAL(InputsAvailable(QStringList)), &w, SLOT(slotSingleInstance()) ); + QObject::connect(&themes, SIGNAL(updateIcons()), &w, SLOT(loadIcons()) ); + w.show(); + + int retCode = a.exec(); + return retCode; +} @@ -7,5 +7,6 @@ SUBDIRS+= libLumina \ lumina-fm \ lumina-screenshot \ lumina-search \ - lumina-info + lumina-info \ + lumina-xconfig diff --git a/port-files/pkg-plist b/port-files/pkg-plist index b1d86fd3..9bed5c74 100644 --- a/port-files/pkg-plist +++ b/port-files/pkg-plist @@ -5,6 +5,7 @@ bin/lumina-fm bin/lumina-screenshot bin/lumina-search bin/lumina-info +bin/lumina-xconfig etc/luminaDesktop.conf.dist lib/libLuminaUtils.so lib/libLuminaUtils.so.1 @@ -476,3 +477,65 @@ share/Lumina-DE/i18n/lumina-info_zh_CN.qm share/Lumina-DE/i18n/lumina-info_zh_HK.qm share/Lumina-DE/i18n/lumina-info_zh_TW.qm share/Lumina-DE/i18n/lumina-info_zu.qm +share/Lumina-DE/i18n/lumina-xconfig_af.qm +share/Lumina-DE/i18n/lumina-xconfig_ar.qm +share/Lumina-DE/i18n/lumina-xconfig_az.qm +share/Lumina-DE/i18n/lumina-xconfig_bg.qm +share/Lumina-DE/i18n/lumina-xconfig_bn.qm +share/Lumina-DE/i18n/lumina-xconfig_bs.qm +share/Lumina-DE/i18n/lumina-xconfig_ca.qm +share/Lumina-DE/i18n/lumina-xconfig_cs.qm +share/Lumina-DE/i18n/lumina-xconfig_cy.qm +share/Lumina-DE/i18n/lumina-xconfig_da.qm +share/Lumina-DE/i18n/lumina-xconfig_de.qm +share/Lumina-DE/i18n/lumina-xconfig_el.qm +share/Lumina-DE/i18n/lumina-xconfig_en_GB.qm +share/Lumina-DE/i18n/lumina-xconfig_en_ZA.qm +share/Lumina-DE/i18n/lumina-xconfig_es.qm +share/Lumina-DE/i18n/lumina-xconfig_et.qm +share/Lumina-DE/i18n/lumina-xconfig_eu.qm +share/Lumina-DE/i18n/lumina-xconfig_fa.qm +share/Lumina-DE/i18n/lumina-xconfig_fi.qm +share/Lumina-DE/i18n/lumina-xconfig_fr.qm +share/Lumina-DE/i18n/lumina-xconfig_fr_CA.qm +share/Lumina-DE/i18n/lumina-xconfig_gl.qm +share/Lumina-DE/i18n/lumina-xconfig_he.qm +share/Lumina-DE/i18n/lumina-xconfig_hi.qm +share/Lumina-DE/i18n/lumina-xconfig_hr.qm +share/Lumina-DE/i18n/lumina-xconfig_hu.qm +share/Lumina-DE/i18n/lumina-xconfig_id.qm +share/Lumina-DE/i18n/lumina-xconfig_is.qm +share/Lumina-DE/i18n/lumina-xconfig_it.qm +share/Lumina-DE/i18n/lumina-xconfig_ja.qm +share/Lumina-DE/i18n/lumina-xconfig_ka.qm +share/Lumina-DE/i18n/lumina-xconfig_ko.qm +share/Lumina-DE/i18n/lumina-xconfig_lt.qm +share/Lumina-DE/i18n/lumina-xconfig_lv.qm +share/Lumina-DE/i18n/lumina-xconfig_mk.qm +share/Lumina-DE/i18n/lumina-xconfig_mn.qm +share/Lumina-DE/i18n/lumina-xconfig_ms.qm +share/Lumina-DE/i18n/lumina-xconfig_mt.qm +share/Lumina-DE/i18n/lumina-xconfig_nb.qm +share/Lumina-DE/i18n/lumina-xconfig_nl.qm +share/Lumina-DE/i18n/lumina-xconfig_pa.qm +share/Lumina-DE/i18n/lumina-xconfig_pl.qm +share/Lumina-DE/i18n/lumina-xconfig_pt.qm +share/Lumina-DE/i18n/lumina-xconfig_pt_BR.qm +share/Lumina-DE/i18n/lumina-xconfig_ro.qm +share/Lumina-DE/i18n/lumina-xconfig_ru.qm +share/Lumina-DE/i18n/lumina-xconfig_sk.qm +share/Lumina-DE/i18n/lumina-xconfig_sl.qm +share/Lumina-DE/i18n/lumina-xconfig_sr.qm +share/Lumina-DE/i18n/lumina-xconfig_sv.qm +share/Lumina-DE/i18n/lumina-xconfig_sw.qm +share/Lumina-DE/i18n/lumina-xconfig_ta.qm +share/Lumina-DE/i18n/lumina-xconfig_tg.qm +share/Lumina-DE/i18n/lumina-xconfig_th.qm +share/Lumina-DE/i18n/lumina-xconfig_tr.qm +share/Lumina-DE/i18n/lumina-xconfig_uk.qm +share/Lumina-DE/i18n/lumina-xconfig_uz.qm +share/Lumina-DE/i18n/lumina-xconfig_vi.qm +share/Lumina-DE/i18n/lumina-xconfig_zh_CN.qm +share/Lumina-DE/i18n/lumina-xconfig_zh_HK.qm +share/Lumina-DE/i18n/lumina-xconfig_zh_TW.qm +share/Lumina-DE/i18n/lumina-xconfig_zu.qm |