diff options
-rw-r--r-- | beetplayer.qrc | 1 | ||||
-rw-r--r-- | home.png | bin | 0 -> 1720 bytes | |||
-rw-r--r-- | playerwidget.cpp | 49 | ||||
-rw-r--r-- | playerwidget.h | 5 |
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 Binary files differnew file mode 100644 index 0000000..37119ae --- /dev/null +++ b/home.png 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 |