summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--beetplayer.qrc1
-rw-r--r--home.pngbin0 -> 1720 bytes
-rw-r--r--playerwidget.cpp49
-rw-r--r--playerwidget.h5
4 files changed, 53 insertions, 2 deletions
diff --git a/beetplayer.qrc b/beetplayer.qrc
index 5525157..7237932 100644
--- a/beetplayer.qrc
+++ b/beetplayer.qrc
@@ -26,5 +26,6 @@
<file>gaping_ass.png</file>
<file>fill-color.png</file>
<file>bizarre_amputee.png</file>
+ <file>home.png</file>
</qresource>
</RCC>
diff --git a/home.png b/home.png
new file mode 100644
index 0000000..37119ae
--- /dev/null
+++ b/home.png
Binary files differ
diff --git a/playerwidget.cpp b/playerwidget.cpp
index c476f93..66ca04c 100644
--- a/playerwidget.cpp
+++ b/playerwidget.cpp
@@ -21,6 +21,7 @@
#include <QMessageBox>
#include <QInputDialog>
#include <QTimer>
+#include <QStackedLayout>
#include <QApplication>
#include <algorithm>
@@ -128,11 +129,36 @@ void PlayerWidget::setupGui(){
filterLayout->addWidget(searchTB);
filterGB->setLayout(filterLayout);
+ //directories
+ QGroupBox *dirGB = new QGroupBox(QString(tr("Current Directory")));
+ mDir = new QLineEdit;
+ mDir->setEnabled(false);
+ QToolBar *dirTB = new QToolBar;
+ QImage upImg(":/stomp.png");
+ upImg = upImg.mirrored();
+ QIcon upDirIcon = QPixmap::fromImage(upImg);
+ QAction *upDirA = new QAction(upDirIcon, tr("Up directory"), this);
+ connect(upDirA, &QAction::triggered, this, &PlayerWidget::dirUp);
+ dirTB->addAction(upDirA);
+ QAction *homeDirA = new QAction(QIcon(":/home.png"), tr("Go home"), this);
+ connect(homeDirA, &QAction::triggered, this, &PlayerWidget::dirHome);
+ dirTB->addAction(homeDirA);
+ dirTB->addAction(mRefreshA);
+ QHBoxLayout *dirLayout = new QHBoxLayout;
+ dirLayout->addWidget(mDir);
+ dirLayout->addWidget(dirTB);
+ dirGB->setLayout(dirLayout);
+
+ //stack it up!
+ mSearchDirStack = new QStackedLayout;
+ mSearchDirStack->addWidget(filterGB);
+ mSearchDirStack->addWidget(dirGB);
+
//left widget
QWidget *leftWidget = new QWidget;
QVBoxLayout *leftWidgetL = new QVBoxLayout;
- leftWidgetL->addWidget(filterGB);
- leftWidgetL->addWidget(mView);
+ leftWidgetL->addLayout(mSearchDirStack);
+ leftWidgetL->addWidget(mView, 999);
QHBoxLayout *selViewL = new QHBoxLayout;
selViewL->addWidget(new QLabel(tr("View by:")));
selViewL->addStretch();
@@ -608,11 +634,13 @@ void PlayerWidget::doModelChanged(){
mDeselectAllA->setEnabled(true);
mDeleteFilesA->setEnabled(true);
mRefreshA->setEnabled(true);
+ mSearchDirStack->setCurrentIndex(1);
}else{
mSelectFilesA->setEnabled(false);
mDeselectAllA->setEnabled(false);
mDeleteFilesA->setEnabled(false);
mRefreshA->setEnabled(false);
+ mSearchDirStack->setCurrentIndex(0);
}
}
@@ -626,6 +654,7 @@ void PlayerWidget::viewDoubleClicked(const QModelIndex &idx){
QFileInfo fi(fp);
if(fi.isDir()){
mCurDir = fp;
+ mDir->setText(fp);
doPopulateByFolder();
}else{
addToPlayList();
@@ -733,6 +762,20 @@ void PlayerWidget::volumeDown(){
adjustVolume(-2);
}
+void PlayerWidget::dirUp(){
+ QDir d(mCurDir);
+ d.cdUp();
+ mDir->setText(d.absolutePath());
+ mCurDir = d.absolutePath();
+ doPopulateByFolder();
+}
+
+void PlayerWidget::dirHome(){
+ mCurDir = QDir::homePath();
+ mDir->setText(mCurDir);
+ doPopulateByFolder();
+}
+
void PlayerWidget::showVolume(){
int volume = mVolumeSlider->value();
QString msg = QString(tr("Volume: %1%")).arg(volume, 3, 10, QChar('0'));
@@ -856,6 +899,7 @@ void PlayerWidget::doPopulateBySong(){
}
void PlayerWidget::doFilter(){
+ mSearchDirStack->setCurrentIndex(0);
QString filter = mSearch->text();
mSearchModel->clear();
mSearchModel->setHorizontalHeaderLabels(QStringList() << tr("Name"));
@@ -1116,6 +1160,7 @@ void PlayerWidget::readSettings(){
mVolumeSlider->setValue(vol);
QString dir = s.value("folderdir", QDir::homePath()).toString();
mCurDir = dir;
+ mDir->setText(mCurDir);
mStarting = false;
}
diff --git a/playerwidget.h b/playerwidget.h
index 6ef5dd1..3d08067 100644
--- a/playerwidget.h
+++ b/playerwidget.h
@@ -15,6 +15,7 @@ class QMediaPlayer;
class QToolBar;
class QAction;
class QTimer;
+class QStackedLayout;
class BeetPlayerProxy;
class BeetView;
class QSystemTrayIcon;
@@ -46,6 +47,8 @@ class PlayerWidget : public QWidget {
void doDeleteFiles();
void volumeUp();
void volumeDown();
+ void dirUp();
+ void dirHome();
void showVolume();
void doFilter();
void clearFilter();
@@ -92,6 +95,7 @@ class PlayerWidget : public QWidget {
void expandRecursive(const QModelIndex &idx);
void adjustVolume(int by);
QLineEdit *mSearch;
+ QLineEdit *mDir;
QMediaPlayer *mPlayer;
BeetView *mView;
QStandardItemModel *mViewModel;
@@ -124,6 +128,7 @@ class PlayerWidget : public QWidget {
QSystemTrayIcon *mTrayIcon;
QTimer *mVolumeTimer;
bool mStarting;
+ QStackedLayout *mSearchDirStack;
};
#endif // PLAYERWIDGET_H