summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--beetplayer.qrc1
-rw-r--r--dog_hood.pngbin0 -> 778 bytes
-rw-r--r--playerwidget.cpp35
-rw-r--r--playerwidget.h5
4 files changed, 40 insertions, 1 deletions
diff --git a/beetplayer.qrc b/beetplayer.qrc
index 4c41d40..beb3cd5 100644
--- a/beetplayer.qrc
+++ b/beetplayer.qrc
@@ -29,5 +29,6 @@
<file>home.png</file>
<file>sissyd.png</file>
<file>quadd.png</file>
+ <file>dog_hood.png</file>
</qresource>
</RCC>
diff --git a/dog_hood.png b/dog_hood.png
new file mode 100644
index 0000000..d25fc5e
--- /dev/null
+++ b/dog_hood.png
Binary files differ
diff --git a/playerwidget.cpp b/playerwidget.cpp
index 0810487..9d41b79 100644
--- a/playerwidget.cpp
+++ b/playerwidget.cpp
@@ -74,6 +74,7 @@ void PlayerWidget::setupGui(){
mView->setSelectionMode(QAbstractItemView::ExtendedSelection);
connect(mView, &BeetView::doubleClicked, this, &PlayerWidget::viewDoubleClicked);
mFolderModel = new QStandardItemModel;
+ mWebRadioModel = new QStandardItemModel;
mCurrentModel = mViewModel;
QToolBar *viewTB = new QToolBar;
QActionGroup *viewAG = new QActionGroup(this);
@@ -108,6 +109,11 @@ void PlayerWidget::setupGui(){
mSearchA->setCheckable(true);
viewAG->addAction(mSearchA);
connect(mSearchA, &QAction::triggered, this, &PlayerWidget::doFilter);
+ QAction *viewByWebradioA = new QAction(QIcon(":/dog_hood.png"), tr("Webradio"), this);
+ viewByWebradioA->setCheckable(true);
+ viewAG->addAction(Helper::createSeparator(this));
+ viewAG->addAction(viewByWebradioA);
+ connect(viewByWebradioA, &QAction::triggered, this, &PlayerWidget::doPopulateByWebradio);
viewTB->addActions(viewAG->actions());
mSelectFilesA = new QAction(QIcon(":/bizarre_amputee.png"), tr("Select files..."), this);
mSelectFilesA->setShortcut(tr("CTRL++"));
@@ -699,6 +705,24 @@ void PlayerWidget::populateByGenre(QStandardItem *parent, const QString &filter)
}
}
+void PlayerWidget::populateByWebradio(QStandardItem *parent){
+ QSqlDatabase db = QSqlDatabase::database("beetplayerdb");
+ QStandardItem *root = parent;
+ QIcon wrIcon(":/dog_hood.png");
+ QSqlQuery wrQ = QSqlQuery(db);
+ wrQ.prepare("SELECT tdescription, turl FROM webradio ORDER BY tdescription DESC");
+ wrQ.exec();
+ while(wrQ.next()){
+ QStandardItem *curWr = new QStandardItem;
+ curWr->setEditable(false);
+ curWr->setFont(QFont("courier"));
+ curWr->setText(wrQ.value(0).toString());
+ curWr->setIcon(wrIcon);
+ curWr->setData(wrQ.value(1), UrlRole);
+ root->appendRow(curWr);
+ }
+}
+
void PlayerWidget::doPopulateByFolder(){
mCurrentModel = mFolderModel;
mFolderModel->clear();
@@ -749,6 +773,17 @@ void PlayerWidget::doPopulateByFolder(){
emit modelChanged();
}
+void PlayerWidget::doPopulateByWebradio(){
+ mCurrentModel = mWebRadioModel;
+ mWebRadioModel->clear();
+ mWebRadioModel->setHorizontalHeaderLabels(QStringList() << tr("Description"));
+ QStandardItem *root = mWebRadioModel->invisibleRootItem();
+ populateByWebradio(root);
+ mView->setModel(mWebRadioModel);
+ emit viewModeChanged("WebRadio");
+ emit modelChanged();
+}
+
void PlayerWidget::doModelChanged(){
if(mCurrentModel == mFolderModel){
mSelectFilesA->setEnabled(true);
diff --git a/playerwidget.h b/playerwidget.h
index 4e27293..9489306 100644
--- a/playerwidget.h
+++ b/playerwidget.h
@@ -29,7 +29,7 @@ class PlayerWidget : public QWidget {
public:
enum ItemType { Artist, Album, Song, Genre };
enum PopulateType { FilterType, IdType, EmptyType };
- enum CustomRoles { TypeRole = Qt::UserRole + 1, IdRole = Qt::UserRole + 2, FullPathRole = Qt::UserRole + 3, GenreRole = Qt::UserRole + 4, ArtistRole = Qt::UserRole + 5, TitleRole = Qt::UserRole + 6, AlbumRole = Qt::UserRole + 7, LengthRole = Qt::UserRole + 8 };
+ enum CustomRoles { TypeRole = Qt::UserRole + 1, IdRole = Qt::UserRole + 2, FullPathRole = Qt::UserRole + 3, GenreRole = Qt::UserRole + 4, ArtistRole = Qt::UserRole + 5, TitleRole = Qt::UserRole + 6, AlbumRole = Qt::UserRole + 7, LengthRole = Qt::UserRole + 8, UrlRole = Qt::UserRole + 9 };
explicit PlayerWidget(QWidget *parent = 0);
~PlayerWidget();
const QMediaPlayer* player() const { return mPlayer; }
@@ -41,6 +41,7 @@ class PlayerWidget : public QWidget {
void doPopulateBySong();
void doPopulateByDate();
void doPopulateByFolder();
+ void doPopulateByWebradio();
void doModelChanged();
void viewDoubleClicked(const QModelIndex &idx);
void rightCurrentChanged(const QModelIndex &cur, const QModelIndex &prev);
@@ -101,6 +102,7 @@ class PlayerWidget : public QWidget {
void populateBySong(QStandardItem *parent, const QVariant &filter, int type);
void populateByDate(QStandardItem *parent);
void populateByGenre(QStandardItem *parent, const QString &filter);
+ void populateByWebradio(QStandardItem *parent);
void recurse(const QModelIndex &parent);
void addSong(const QModelIndex &idx);
void play(const QString &fullPath);
@@ -116,6 +118,7 @@ class PlayerWidget : public QWidget {
QStandardItemModel *mSearchModel;
QStandardItemModel *mCurrentModel;
QStandardItemModel *mFolderModel;
+ QStandardItemModel *mWebRadioModel;
QLabel *mNowPlayingL;
QSlider *mSongSlider;
QLabel *mPos;