diff options
Diffstat (limited to 'src-qt5/desktop-utils/lumina-fm/widgets')
-rw-r--r-- | src-qt5/desktop-utils/lumina-fm/widgets/DDListWidgets.h | 40 | ||||
-rw-r--r-- | src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp | 30 |
2 files changed, 42 insertions, 28 deletions
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/DDListWidgets.h b/src-qt5/desktop-utils/lumina-fm/widgets/DDListWidgets.h index 8049600e..254362fd 100644 --- a/src-qt5/desktop-utils/lumina-fm/widgets/DDListWidgets.h +++ b/src-qt5/desktop-utils/lumina-fm/widgets/DDListWidgets.h @@ -24,7 +24,7 @@ #include <QUrl> #include <QDir> -#include <LuminaUtils.h> +#include <LUtils.h> //============== // LIST WIDGET @@ -45,6 +45,7 @@ public: this->setWrapping(true); this->setMouseTracking(true); this->setSortingEnabled(true); //This sorts *only* by name - type is not preserved + //this->setStyleSheet("QListWidget::item{ border: 1px solid transparent; border-radius: 5px; background-color: transparent;} QListWidget::item:hover{ border-color: black; } QListWidget::item:focus{ border-color: lightblue; }"); } ~DDListWidget(){} @@ -63,9 +64,10 @@ protected: 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)); + urilist << QUrl::fromLocalFile(items[i]->whatsThis()); } //Create the mime data + //qDebug() << "Start Drag:" << urilist; QMimeData *mime = new QMimeData; mime->setUrls(urilist); //Create the drag structure @@ -84,19 +86,23 @@ protected: 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); } + //qDebug() << "Drag Move:" << home << this->whatsThis(); + if( this->whatsThis().startsWith(home) ){ ev->setDropAction(Qt::MoveAction); this->setCursor(Qt::DragMoveCursor); } + else{ ev->setDropAction(Qt::CopyAction); this->setCursor(Qt::DragCopyCursor);} ev->acceptProposedAction(); //allow this to be dropped here + //this->setCursor(Qt::CrossCursor); }else{ + this->setCursor(Qt::ForbiddenCursor); ev->ignore(); } + this->update(); } void dropEvent(QDropEvent *ev){ @@ -107,7 +113,8 @@ protected: //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)); + //qDebug() << "Drop Item:" << it->whatsThis(); + QFileInfo info(it->whatsThis()); if(info.isDir() && info.isWritable()){ dirpath = info.absoluteFilePath(); } @@ -118,11 +125,13 @@ protected: 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; } + if(QFileInfo(filepath).isWritable() && (filepath.startsWith(home) && dirpath.startsWith(home))){ + if(filepath.section("/",0,-2)!=dirpath){ files << "cut::::"+filepath; } //don't "cut" a file into the same dir + }else{ files << "copy::::"+filepath; } } - //qDebug() << "Drop Event:" << dirpath; - emit DataDropped( dirpath, files ); + //qDebug() << "Drop Event:" << dirpath << files; + if(!files.isEmpty()){ emit DataDropped( dirpath, files ); } + this->setCursor(Qt::ArrowCursor); } void mouseReleaseEvent(QMouseEvent *ev){ @@ -175,7 +184,7 @@ protected: 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)); + urilist << QUrl::fromLocalFile(items[i]->whatsThis(0)); } //Create the mime data QMimeData *mime = new QMimeData; @@ -218,7 +227,7 @@ protected: //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)); + QFileInfo info(it->whatsThis(0)); if(info.isDir() && info.isWritable()){ dirpath = info.absoluteFilePath(); } @@ -229,9 +238,10 @@ protected: 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; } + //If the target file is modifiable, assume a move - otherwise copy + if(QFileInfo(filepath).isWritable() && (filepath.startsWith(home) && dirpath.startsWith(home))){ + if(filepath.section("/",0,-2)!=dirpath){ files << "cut::::"+filepath; } //don't "cut" a file into the same dir + }else{ files << "copy::::"+filepath; } } //qDebug() << "Drop Event:" << dirpath; emit DataDropped( dirpath, files ); diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp index f1037896..48ad6aa5 100644 --- a/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp +++ b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp @@ -19,11 +19,11 @@ #include <LuminaOS.h> #include <LuminaXDG.h> -#include <LuminaUtils.h> +#include <LUtils.h> #include "../ScrollDialog.h" -#define DEBUG 1 +#define DEBUG 0 DirWidget::DirWidget(QString objID, QWidget *parent) : QWidget(parent), ui(new Ui::DirWidget){ ui->setupUi(this); //load the designer file @@ -87,7 +87,7 @@ void DirWidget::cleanup(){ void DirWidget::ChangeDir(QString dirpath){ //stopload = true; //just in case it is still loading //emit LoadDirectory(ID, dirpath); - qDebug() << "ChangeDir:" << dirpath; + //qDebug() << "ChangeDir:" << dirpath; currentBrowser()->changeDirectory(dirpath); } @@ -100,7 +100,7 @@ QString DirWidget::id(){ } QString DirWidget::currentDir(){ - return currentBrowser()->currentDirectory(); + return currentBrowser()->currentDirectory(); } void DirWidget::setShowDetails(bool show){ @@ -126,7 +126,7 @@ void DirWidget::setThumbnailSize(int px){ void DirWidget::LoadSnaps(QString basedir, QStringList snaps){ //Save these value internally for use later - qDebug() << "ZFS Snapshots available:" << basedir << snaps; + //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 @@ -387,7 +387,7 @@ 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; + //qDebug() << "Dir Changed:" << dir; //Quick check to ensure the directory exists while(!QFile::exists(dir) && !dir.isEmpty()){ dir = dir.section("/",0,-2); //back up one additional dir @@ -477,7 +477,7 @@ void DirWidget::OpenContextMenu(){ void DirWidget::UpdateContextMenu(){ //First generate the context menu based on the selection - qDebug() << "Update context menu"; + //qDebug() << "Update context menu"; QStringList sel = currentBrowser()->currentSelection(); contextMenu->clear(); @@ -504,15 +504,18 @@ void DirWidget::currentDirectoryChanged(bool widgetonly){ QFileInfo info(cur); canmodify = info.isWritable(); if(widgetonly){ ui->label_status->setText(currentBrowser()->status()); } - else{ ui->label_status->setText(tr("Loading...")); } + else if( !currentBrowser()->isEnabled() ){ ui->label_status->setText(tr("Loading...")); } //qDebug() << "Start search for snapshots"; - if(!cur.contains("/.zfs/snapshot")){ + if(!cur.contains("/.zfs/snapshot") ){ normalbasedir = cur; ui->group_snaps->setVisible(false); emit findSnaps(ID, cur); + qDebug() << "Changed to directory:" << cur; }else{ //Re-assemble the normalbasedir variable (in case moving around within a snapshot) - normalbasedir = cur.replace( QRegExp("/\\.zfs/snapshot/(.)+/"), "/" ); + normalbasedir = cur; + normalbasedir.replace( QRegExp("\\/\\.zfs\\/snapshot/([^/]+)\\/"), "/" ); + qDebug() << "Changed to snapshot:" << cur << normalbasedir; } ui->actionBack->setEnabled( currentBrowser()->history().length()>1 ); line_dir->setText(normalbasedir); @@ -525,6 +528,7 @@ void DirWidget::dirStatusChanged(QString stat){ } void DirWidget::setCurrentBrowser(QString id){ + //qDebug() << "Set Current Browser:" << id; if(id==cBID){ return; } //no change cBID = id; currentDirectoryChanged(true); //update all the averarching widget elements (widget only) @@ -545,7 +549,7 @@ void DirWidget::createNewFile(){ &ok, 0, Qt::ImhFormattedNumbersOnly | Qt::ImhUppercaseOnly | Qt::ImhLowercaseOnly); if(!ok || newdocument.isEmpty()){ return; } //Create the empty file - QString full = BW->currentDirectory(); + QString full = currentBrowser()->currentDirectory(); if(!full.endsWith("/")){ full.append("/"); } //verify the new file does not already exist if(QFile::exists(full+newdocument)){ @@ -570,7 +574,7 @@ void DirWidget::createNewDir(){ &ok, 0, Qt::ImhFormattedNumbersOnly | Qt::ImhUppercaseOnly | Qt::ImhLowercaseOnly); if(!ok || newdir.isEmpty()){ return; } //Now create the new dir - QString full = BW->currentDirectory(); + QString full = currentBrowser()->currentDirectory(); if(!full.endsWith("/")){ full.append("/"); } QDir dir(full); //open the current dir full.append(newdir); //append the new name to the current dir @@ -594,7 +598,7 @@ void DirWidget::createNewXDGEntry(){ if(!ok || newdocument.isEmpty()){ return; } if(!newdocument.endsWith(".desktop")){ newdocument.append(".desktop"); } //Create the empty file - QString full = BW->currentDirectory(); + QString full = currentBrowser()->currentDirectory(); if(!full.endsWith("/")){ full.append("/"); } //Verify the file does not already exist if(QFile::exists(full+newdocument)){ |