diff options
author | Weblate <noreply@weblate.org> | 2017-11-24 19:26:13 +0000 |
---|---|---|
committer | Weblate <noreply@weblate.org> | 2017-11-24 19:26:13 +0000 |
commit | 56890dfdacb3272808dfaedee7f4d9208f6d5acc (patch) | |
tree | 2da40ddecdc429da1e495b3136d0c9dc61ef56c3 /src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp | |
parent | Translated using Weblate (Hungarian) (diff) | |
parent | Merge pull request #512 from schnitzeltony/master (diff) | |
download | lumina-56890dfdacb3272808dfaedee7f4d9208f6d5acc.tar.gz lumina-56890dfdacb3272808dfaedee7f4d9208f6d5acc.tar.bz2 lumina-56890dfdacb3272808dfaedee7f4d9208f6d5acc.zip |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp')
-rw-r--r-- | src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp | 92 |
1 files changed, 73 insertions, 19 deletions
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp index 5c6f9ef5..d3b0ae2b 100644 --- a/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp +++ b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp @@ -23,8 +23,10 @@ #include <LuminaXDG.h> #include <LUtils.h> #include <ExternalProcess.h> +#include <QFileDialog> #include "../ScrollDialog.h" +#include <XDGMime.h> #define DEBUG 0 extern bool rootmode; @@ -62,7 +64,7 @@ DirWidget::DirWidget(QString objID, QSettings *settings, QWidget *parent) : QWid RCBW = 0; //right column browser is unavailable initially BW = new BrowserWidget("", this); ui->browser_layout->addWidget(BW); - connect(BW, SIGNAL(dirChange(QString, bool)), this, SLOT(currentDirectoryChanged()) ); + connect(BW, SIGNAL(dirChange(QString, bool)), this, SLOT(currentDirectoryChanged(QString)) ); connect(BW, SIGNAL(itemsActivated()), this, SLOT(runFiles()) ); connect(BW, SIGNAL(DataDropped(QString, QStringList)), this, SIGNAL(PasteFiles(QString, QStringList)) ); connect(BW, SIGNAL(contextMenuRequested()), this, SLOT(OpenContextMenu()) ); @@ -85,7 +87,7 @@ DirWidget::DirWidget(QString objID, QSettings *settings, QWidget *parent) : QWid //Now update the rest of the UI canmodify = false; //initial value contextMenu = new QMenu(this); - cNewMenu = cOpenMenu = cFModMenu = cFViewMenu = cOpenWithMenu = 0; //not created yet + cNewMenu = cOpenMenu = cFModMenu = cFViewMenu = cOpenWithMenu = cArchiveMenu =0; //not created yet connect(contextMenu, SIGNAL(aboutToShow()), this, SLOT(UpdateContextMenu()) ); connect(ui->splitter, SIGNAL(splitterMoved(int,int)), this, SLOT(splitterMoved()) ); @@ -245,7 +247,7 @@ void DirWidget::createShortcuts(){ kPaste= new QShortcut(QKeySequence(QKeySequence::Paste),this); kRename= new QShortcut(QKeySequence(Qt::Key_F2),this); kExtract= new QShortcut(QKeySequence(Qt::CTRL+Qt::Key_E), this); - //kArchive= new QShortcut(QKeySequence(Qt::CTRL+Qt::Key_R), this); + kArchive= new QShortcut(QKeySequence(Qt::CTRL+Qt::Key_R), this); kFav= new QShortcut(QKeySequence(Qt::Key_F3),this); kDel= new QShortcut(QKeySequence(QKeySequence::Delete),this); kOpSS= new QShortcut(QKeySequence(Qt::Key_F6),this); @@ -287,7 +289,14 @@ void DirWidget::createMenus(){ cOpenMenu->addAction(LXDG::findIcon("utilities-terminal",""), tr("Open Current Dir in a Terminal"), this, SLOT(openTerminal()), kOpTerm->key()); cOpenMenu->addAction(LXDG::findIcon("media-slideshow",""), tr("SlideShow"), this, SLOT(openInSlideshow()), kOpSS->key()); cOpenMenu->addAction(LXDG::findIcon("media-playback-start-circled","media-playback-start"), tr("Multimedia Player"), this, SLOT(openMultimedia()), kOpMM->key()); - if(LUtils::isValidBinary("qsudo")){ cOpenMenu->addAction(LXDG::findIcon("", ""), tr("Open Current Dir as Root"), this, SLOT(openRootFM())); + if(LUtils::isValidBinary("qsudo")){ + cOpenMenu->addAction(LXDG::findIcon("", ""), tr("Open Current Dir as Root"), this, SLOT(openRootFM())); + } + + if(cArchiveMenu==0){ cArchiveMenu = new QMenu(this); } + cArchiveMenu->setTitle(tr("Archive Options")); + cArchiveMenu->setIcon( LXDG::findIcon("utilities-file-archiver","application-x-compressed-tar") ); + /* if(cFModMenu==0){ cFModMenu = new QMenu(this); } else{ cFModMenu->clear(); } @@ -320,9 +329,6 @@ void DirWidget::createMenus(){ if(LUtils::isValidBinary("lumina-fileinfo")){ cFViewMenu->addAction(LXDG::findIcon("edit-find-replace",""), tr("Properties"), this, SLOT(fileProperties()) ); } - -} - } BrowserWidget* DirWidget::currentBrowser(){ @@ -477,7 +483,7 @@ void DirWidget::on_actionDualColumn_triggered(bool checked){ if(RCBW!=0){ return; } //nothing to do RCBW = new BrowserWidget("rc", this); ui->browser_layout->addWidget(RCBW); - connect(RCBW, SIGNAL(dirChange(QString, bool)), this, SLOT(currentDirectoryChanged()) ); + connect(RCBW, SIGNAL(dirChange(QString, bool)), this, SLOT(currentDirectoryChanged(QString)) ); connect(RCBW, SIGNAL(itemsActivated()), this, SLOT(runFiles()) ); connect(RCBW, SIGNAL(DataDropped(QString, QStringList)), this, SIGNAL(PasteFiles(QString, QStringList)) ); connect(RCBW, SIGNAL(contextMenuRequested()), this, SLOT(OpenContextMenu()) ); @@ -550,6 +556,14 @@ void DirWidget::UpdateContextMenu(){ contextMenu->addAction(LXDG::findIcon("system-run",""), tr("Open"), this, SLOT(runFiles()) ); //contextMenu->addAction(LXDG::findIcon("system-run-with",""), tr("Open With..."), this, SLOT(runWithFiles()) ); contextMenu->addMenu(cOpenWithMenu); + bool ok = (QString(getenv("XDG_CURRENT_DESKTOP"))=="Lumina"); + if(ok){ + static QStringList imageformats = LUtils::imageExtensions(); + for(int i=0; i<sel.length() && ok; i++){ + ok = imageformats.contains(sel[i].section(".",-1)); + } + contextMenu->addAction(LXDG::findIcon("preferences-desktop-wallpaper","preferences-desktop"), tr("Set as Wallpaper"), this, SLOT(setAsWallpaper()) )->setEnabled(ok); + } } contextMenu->addSection(LXDG::findIcon("unknown",""), tr("File Operations")); // contextMenu->addMenu(cFModMenu); @@ -559,9 +573,6 @@ void DirWidget::UpdateContextMenu(){ contextMenu->addAction(LXDG::findIcon("edit-rename",""), tr("Rename..."), this, SLOT(renameFiles()), kRename->key() )->setEnabled(canmodify); contextMenu->addAction(LXDG::findIcon("edit-cut",""), tr("Cut Selection"), this, SLOT(cutFiles()), kCut->key() )->setEnabled(canmodify); contextMenu->addAction(LXDG::findIcon("edit-copy",""), tr("Copy Selection"), this, SLOT(copyFiles()), kCopy->key() )->setEnabled(canmodify); - if(LUtils::isValidBinary("lumina-archiver") && sel.length() ==1){ contextMenu->addAction(LXDG::findIcon("archive",""), tr("Auto-Extract"), this, SLOT(autoExtractFiles()), kExtract->key() )->setEnabled(canmodify); } - //if(LUtils::isValidBinary("lumina-archiver") && sel.length() ==1){ contextMenu->addAction(LXDG::findIcon("archive",""), tr("Auto-Archive"), this, SLOT(autoArchiveFiles()), kArchive->key() )->setEnabled(canmodify); } - } if( QApplication::clipboard()->mimeData()->hasFormat("x-special/lumina-copied-files") ){ contextMenu->addAction(LXDG::findIcon("edit-paste",""), tr("Paste"), this, SLOT(pasteFiles()), QKeySequence(Qt::CTRL+Qt::Key_V) )->setEnabled(canmodify); @@ -571,6 +582,22 @@ void DirWidget::UpdateContextMenu(){ contextMenu->addAction(LXDG::findIcon("edit-delete",""), tr("Delete Selection"), this, SLOT(removeFiles()), kDel->key() )->setEnabled(canmodify); contextMenu->addSeparator(); } + if(LUtils::isValidBinary("lumina-archiver") && sel.length() >=1 && canmodify){ + cArchiveMenu->clear(); + if(sel.length()==1 && ( XDGMime::fromFileName(sel[0]).endsWith("-tar") || + XDGMime::fromFileName(sel[0]).endsWith("-image") || + ( XDGMime::fromFileName(sel[0]).contains("zip") && + !XDGMime::fromFileName(sel[0]).endsWith("epub+zip") && + !XDGMime::fromFileName(sel[0]).endsWith("vnd.comicbook+zip" ) + ) + ) + ){ + cArchiveMenu->addAction(LXDG::findIcon("archive",""), tr("Extract Here"), this, SLOT(autoExtractFiles()), kExtract->key() ); + }else{ + cArchiveMenu->addAction(LXDG::findIcon("archive",""), tr("Archive Selection"), this, SLOT(autoArchiveFiles()), kArchive->key() ); + } + contextMenu->addMenu(cArchiveMenu); + } contextMenu->addMenu(cFViewMenu); cFViewMenu->setEnabled(!sel.isEmpty()); @@ -626,8 +653,8 @@ void DirWidget::UpdateContextMenu(){ cOpenWithMenu->addAction(LXDG::findIcon("system-run-with",""), tr("Other..."), this, SLOT(runWithFiles()) ); } -void DirWidget::currentDirectoryChanged(bool widgetonly){ - QString cur = currentBrowser()->currentDirectory(); +void DirWidget::currentDirectoryChanged(QString cur, bool widgetonly){ + //qDebug() << "Got current directory changed:" << cur << widgetonly; QFileInfo info(cur); canmodify = info.isWritable(); if(widgetonly){ ui->label_status->setText(currentBrowser()->status()); } @@ -649,7 +676,13 @@ void DirWidget::currentDirectoryChanged(bool widgetonly){ emit TabNameChanged(ID, normalbasedir.section("/",-1)); QModelIndex index = dirtreeModel->index(normalbasedir,0); ui->folderViewPane->setCurrentIndex( index ); - ui->folderViewPane->scrollTo(index); + ui->folderViewPane->scrollTo(index, QAbstractItemView::PositionAtCenter); +} + +void DirWidget::currentDirectoryChanged(bool widgetonly){ + //overload for the more expansive slot above + QString cur = currentBrowser()->currentDirectory(); + currentDirectoryChanged(cur, widgetonly); } void DirWidget::dirStatusChanged(QString stat){ @@ -855,6 +888,8 @@ void DirWidget::OpenWithApp(QAction* act){ //Now we need to open the app file, and create the process XDGDesktop desk(act->whatsThis()); QString exec = desk.generateExec(sel); + //qDebug() << "Launch App with selection:" << act->whatsThis() << sel; + //qDebug() << "Generating exec:" << exec; ExternalProcess::launch(exec); } @@ -864,13 +899,32 @@ void DirWidget::autoExtractFiles(){ ExternalProcess::launch("lumina-archiver", QStringList() << "--ax" << files); } -/* - * void DirWidget::autoArchiveFiles(){ + +void DirWidget::autoArchiveFiles(){ + QStringList files = currentBrowser()->currentSelection(); + QString archive = QFileDialog::getSaveFileName(this, tr("Select Archive"), currentBrowser()->currentDirectory()+"/archive-"+QDateTime::currentDateTime().toString("yyyyMMdd_hhmm")+".tar.gz", currentBrowser()->currentDirectory()); + if(archive.isEmpty()){ return; } //cancelled + qDebug() << "Starting auto-archival:" << archive << files; + ExternalProcess::launch("lumina-archiver", QStringList() << "--aa" << archive << files); +} + +void DirWidget::setAsWallpaper(){ QStringList files = currentBrowser()->currentSelection(); - qDebug() << "Starting auto-archival:" << files; - ExternalProcess::launch("lumina-archiver", QStringList() << "--aa" << files); + //Get the screen for the wallpaper + QList<QScreen*> screens = QApplication::screens(); + QString screenID; + if(screens.length()>1){ + QStringList opts; + for(int i=0; i<screens.length(); i++){ opts << screens[i]->name(); } + screenID = QInputDialog::getItem(this, tr("Set Wallpaper on Screen"), tr("Screen"), opts, 0, false); + if(screenID.isEmpty()){ return; } + }else{ + screenID = screens[0]->name(); + } + //Now save this to the settings + QSettings deskset("lumina-desktop","desktopsettings"); + deskset.setValue("desktop-"+screenID+"/background/filelist" , files); } -*/ //==================== // PROTECTED |