From 0e0d7944883fd7aad7c8334c9d7cc636d84a0630 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 19 Jan 2019 21:51:51 +0100 Subject: Always show an existing directory When the current directory was deleted otherwhere while in CollectionFoldersView, a refresh left the user with no choice at all. Set mCurrentFolder to default (QSetting->folderdir) and say so in the status bar. For the latter add a signal to CollectionWidget and connect it to PlayerWidget::message. --- collectionfoldersview.cpp | 6 ++++++ collectionwidget.h | 3 +++ playerwidget.cpp | 1 + 3 files changed, 10 insertions(+) diff --git a/collectionfoldersview.cpp b/collectionfoldersview.cpp index e1a96b2..483f42c 100644 --- a/collectionfoldersview.cpp +++ b/collectionfoldersview.cpp @@ -21,6 +21,12 @@ void CollectionFoldersView::populate(){ model()->setHorizontalHeaderLabels(headers()); QStandardItem *root = model()->invisibleRootItem(); QDir d(mCurrentFolder); + if(!d.exists()){ + QString msg = QString("%1 vanished from under us!").arg(mCurrentFolder); + emit message(msg); + readSettings(); + d.setPath(mCurrentFolder); + } QMimeDatabase db; QIcon songIcon(":/song.png"); QIcon otherIcon(":/belly_right_and_clear.png"); diff --git a/collectionwidget.h b/collectionwidget.h index fe4a086..e910e57 100644 --- a/collectionwidget.h +++ b/collectionwidget.h @@ -24,6 +24,9 @@ class CollectionWidget : public QWidget { void enableSorting(int column = 0, Qt::SortOrder sortOrder = Qt::AscendingOrder); QActionGroup *customActions() { return mCustomActions; } + signals: + void message(const QString &msg); + public slots: virtual void populate() { return; } virtual void expandFirst(QSortFilterProxyModel *proxy); diff --git a/playerwidget.cpp b/playerwidget.cpp index c9e8214..54a1f50 100644 --- a/playerwidget.cpp +++ b/playerwidget.cpp @@ -161,6 +161,7 @@ void PlayerWidget::setupGui(QSplashScreen *splash){ } for(int i = 0; i < mCollectionStack->count(); ++i){ CollectionWidget *curW = qobject_cast(mCollectionStack->widget(i)); + connect(curW, &CollectionWidget::message, this, &PlayerWidget::message); const QString name = curW->objectName(); // special case webradio if(name == "webradio"){ -- cgit v1.2.3-70-g09d2