From 295114f77a4ed6ed8957485c0ceaf5c6d38b3485 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 25 Aug 2018 03:58:36 +0200 Subject: Add delete to CollectionFoldersView --- collectionfoldersview.cpp | 28 ++++++++++++++++++++++++++++ collectionfoldersview.h | 1 + playerwidget.cpp | 8 ++++++++ 3 files changed, 37 insertions(+) diff --git a/collectionfoldersview.cpp b/collectionfoldersview.cpp index 2dfb32f..e1a96b2 100644 --- a/collectionfoldersview.cpp +++ b/collectionfoldersview.cpp @@ -2,10 +2,13 @@ #include #include #include +#include +#include #include #include "collectionfoldersview.h" +#include "collectionwidgetproxy.h" CollectionFoldersView::CollectionFoldersView(QWidget *parent) : CollectionWidget(parent){ readSettings(); @@ -71,3 +74,28 @@ void CollectionFoldersView::itemDoubleCliced(const QModelIndex &idx){ mCurrentFolder = d.absolutePath(); populate(); } + +void CollectionFoldersView::deleteCurrent(){ + QString toDel = QDir::toNativeSeparators(mCurrentFolder); + toDel.append(QDir::separator()); + toDel.append(view()->currentIndex().data().toString()); + QString msg = QString(tr("Really delete %1?")).arg(toDel); + CollectionWidgetProxy *proxy = static_cast(view()->model()); + int retval = QMessageBox::question(this, tr("Delete"), msg); + if(retval == QMessageBox::Yes){ + QFileInfo fi(toDel); + bool success = false; + if(fi.isDir()){ + QDir d(toDel); + success = d.removeRecursively(); + }else if(fi.isFile()){ + success = QFile::remove(toDel); + } + if(success){ + proxy->removeRow(view()->currentIndex().row()); + }else{ + QString msg = QString(tr("Deleting %1 failed!")).arg(toDel); + QMessageBox::critical(this, tr("Error"), msg); + } + } +} diff --git a/collectionfoldersview.h b/collectionfoldersview.h index dae87cf..d803c06 100644 --- a/collectionfoldersview.h +++ b/collectionfoldersview.h @@ -12,6 +12,7 @@ class CollectionFoldersView : public CollectionWidget { virtual void populate(); virtual void readSettings(); void itemDoubleCliced(const QModelIndex &idx); + void deleteCurrent(); private: QString mCurrentFolder; diff --git a/playerwidget.cpp b/playerwidget.cpp index 30efedc..4564b35 100644 --- a/playerwidget.cpp +++ b/playerwidget.cpp @@ -162,6 +162,7 @@ void PlayerWidget::setupGui(QSplashScreen *splash){ for(int i = 0; i < mCollectionStack->count(); ++i){ CollectionWidget *curW = qobject_cast(mCollectionStack->widget(i)); const QString name = curW->objectName(); + // special case webradio if(name == "webradio"){ QAction *playA = new QAction(QIcon(":/play.png"), tr("Play"), this); connect(playA, &QAction::triggered, [this, curW] { playUrl(curW->view()->selectionModel()->currentIndex()); }); @@ -198,6 +199,13 @@ void PlayerWidget::setupGui(QSplashScreen *splash){ curW->view()->addAction(collapseA); curW->view()->addAction(Helper::createSeparator(this)); } + // special case file view -> add delete + if(name == "foldersview"){ + QAction *deleteItemA = new QAction(QIcon(":/delete.png"), tr("Delete..."), this); + connect(deleteItemA, &QAction::triggered, foldersView, &CollectionFoldersView::deleteCurrent); + curW->view()->addAction(deleteItemA); + curW->view()->addAction(Helper::createSeparator(this)); + } QAction *refreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh view"), this); connect(refreshA, &QAction::triggered, [curW] { qApp->setOverrideCursor(Qt::BusyCursor); -- cgit v1.2.3-70-g09d2