summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--collectionfoldersview.cpp28
-rw-r--r--collectionfoldersview.h1
-rw-r--r--playerwidget.cpp8
3 files changed, 37 insertions, 0 deletions
diff --git a/collectionfoldersview.cpp b/collectionfoldersview.cpp
index 2dfb32f..e1a96b2 100644
--- a/collectionfoldersview.cpp
+++ b/collectionfoldersview.cpp
@@ -2,10 +2,13 @@
#include <QStandardItem>
#include <QDir>
#include <QMimeDatabase>
+#include <QMessageBox>
+#include <QFileInfo>
#include <taglib/fileref.h>
#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<CollectionWidgetProxy*>(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<CollectionWidget*>(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);