diff --git a/mythplugins/mythmusic/mythmusic/musiccommon.cpp b/mythplugins/mythmusic/mythmusic/musiccommon.cpp index 96e8dcfa9b9..dc0fd082e9d 100644 --- a/mythplugins/mythmusic/mythmusic/musiccommon.cpp +++ b/mythplugins/mythmusic/mythmusic/musiccommon.cpp @@ -478,10 +478,7 @@ void MusicCommon::switchView(MusicView view) delete pleview; if (oldView) - { - disconnect(this, &MythScreenType::Exiting, nullptr, nullptr); Close(); - } break; } @@ -508,10 +505,7 @@ void MusicCommon::switchView(MusicView view) delete pleview; if (oldView) - { - disconnect(this, &MythScreenType::Exiting, nullptr, nullptr); Close(); - } break; } @@ -1349,7 +1343,8 @@ void MusicCommon::customEvent(QEvent *event) { if (resulttext == tr("Fullscreen Visualizer")) switchView(MV_VISUALIZER); - else if (resulttext == tr("Playlist Editor")) + else if (resulttext == tr("Playlist Editor") || + resulttext == tr("Browse Music Library")) { if (gCoreContext->GetSetting("MusicPlaylistEditorView", "tree") == "tree") switchView(MV_PLAYLISTEDITORTREE); @@ -1525,6 +1520,20 @@ void MusicCommon::customEvent(QEvent *event) m_playlistOptions.insertPLOption = PL_INSERTATEND; doUpdatePlaylist(); } + else if (resulttext == tr("Play Now")) + { // cancel shuffles and repeats to play only this now + gPlayer->setShuffleMode(MusicPlayer::SHUFFLE_OFF); + updateShuffleMode(); + gPlayer->setRepeatMode(MusicPlayer::REPEAT_OFF); + updateRepeatMode(); + m_playlistOptions.insertPLOption = PL_INSERTATEND; + m_playlistOptions.playPLOption = PL_FIRSTNEW; + doUpdatePlaylist(); + } + else if (resulttext == tr("Prefer Play Now")) + gPlayer->setPlayNow(true); + else if (resulttext == tr("Prefer Add Tracks")) + gPlayer->setPlayNow(false); } else if (resultid == "visualizermenu") { @@ -1627,7 +1636,8 @@ void MusicCommon::customEvent(QEvent *event) if (mdata && mdata->ID() == (MusicMetadata::IdType) trackID) { m_currentPlaylist->RemoveItem(item); - break; + x -= 1; // remove all entries, or: + // break; // remove only first entry } } } @@ -1707,6 +1717,7 @@ void MusicCommon::customEvent(QEvent *event) gPlayer->getCurrentPlaylist()->getStats(&m_playlistTrackCount, &m_playlistMaxTime, m_currentTrack, &m_playlistPlayedTime); + updateUIPlaylist(); // else album art doesn't update updatePlaylistStats(); updateTrackInfo(gPlayer->getCurrentMetadata()); } @@ -2174,11 +2185,19 @@ MythMenu* MusicCommon::createMainMenu(void) auto *menu = new MythMenu(label, this, "mainmenu"); if (m_currentView == MV_PLAYLISTEDITORTREE) + { menu->AddItem(tr("Switch To Gallery View")); + } else if (m_currentView == MV_PLAYLISTEDITORGALLERY) + { menu->AddItem(tr("Switch To Tree View")); + } else if (m_currentView == MV_PLAYLIST) - menu->AddItem(MusicCommon::tr("Playlist Editor")); + { + // menu->AddItem(tr("Playlist Editor")); // v33- + // this might be easier for new users to find / understand: + menu->AddItem(tr("Browse Music Library")); // v34+ + } QStringList screenList; MythScreenType *screen = this; @@ -2383,8 +2402,20 @@ MythMenu* MusicCommon::createPlaylistOptionsMenu(void) auto *menu = new MythMenu(label, this, "playlistoptionsmenu"); - menu->AddItem(tr("Replace Tracks")); - menu->AddItem(tr("Add Tracks")); + if (gPlayer->getPlayNow()) + { + menu->AddItem(tr("Play Now")); + menu->AddItem(tr("Add Tracks")); + menu->AddItem(tr("Replace Tracks")); + menu->AddItem(tr("Prefer Add Tracks")); + } + else + { + menu->AddItem(tr("Add Tracks")); + menu->AddItem(tr("Play Now")); + menu->AddItem(tr("Replace Tracks")); + menu->AddItem(tr("Prefer Play Now")); + } return menu; } @@ -2511,12 +2542,9 @@ void MusicCommon::showPlaylistOptionsMenu(bool addMainMenu) void MusicCommon::doUpdatePlaylist(void) { int curTrackID = -1; - int trackCount = 0; + int added = 0; int curPos = gPlayer->getCurrentTrackPos(); - if (gPlayer->getCurrentPlaylist()) - trackCount = gPlayer->getCurrentPlaylist()->getTrackCount(); - // store id of current track if (gPlayer->getCurrentMetadata()) curTrackID = gPlayer->getCurrentMetadata()->ID(); @@ -2524,17 +2552,17 @@ void MusicCommon::doUpdatePlaylist(void) if (!m_whereClause.isEmpty()) { // update playlist from quick playlist - gMusicData->m_all_playlists->getActive()->fillSonglistFromQuery( - m_whereClause, true, - m_playlistOptions.insertPLOption, curTrackID); + added = gMusicData->m_all_playlists->getActive()->fillSonglistFromQuery( + m_whereClause, true, + m_playlistOptions.insertPLOption, curTrackID); m_whereClause.clear(); } else if (!m_songList.isEmpty()) { // update playlist from song list (from the playlist editor) - gMusicData->m_all_playlists->getActive()->fillSonglistFromList( - m_songList, true, - m_playlistOptions.insertPLOption, curTrackID); + added = gMusicData->m_all_playlists->getActive()->fillSonglistFromList( + m_songList, true, + m_playlistOptions.insertPLOption, curTrackID); m_songList.clear(); } @@ -2543,9 +2571,9 @@ void MusicCommon::doUpdatePlaylist(void) updateUIPlaylist(); - if (m_currentTrack == -1) - playFirstTrack(); - else + // if (m_currentTrack == -1) // why? non-playing should also + // playFirstTrack(); // start playing per options -twitham + // else { switch (m_playlistOptions.playPLOption) { @@ -2572,7 +2600,7 @@ void MusicCommon::doUpdatePlaylist(void) case PL_INSERTATEND: { pause(); - if (!gPlayer->setCurrentTrackPos(trackCount)) + if (!gPlayer->setCurrentTrackPos(gPlayer->getCurrentPlaylist()->getTrackCount() - added)) playFirstTrack(); break; } diff --git a/mythplugins/mythmusic/mythmusic/musicplayer.cpp b/mythplugins/mythmusic/mythmusic/musicplayer.cpp index 2942150946a..178e4b16405 100644 --- a/mythplugins/mythmusic/mythmusic/musicplayer.cpp +++ b/mythplugins/mythmusic/mythmusic/musicplayer.cpp @@ -219,6 +219,16 @@ void MusicPlayer::loadSettings(void) m_lastplayDelay = gCoreContext->GetDurSetting("MusicLastPlayDelay", LASTPLAY_DELAY); m_autoShowPlayer = (gCoreContext->GetNumSetting("MusicAutoShowPlayer", 1) > 0); + +} + +void MusicPlayer::setPlayNow(bool PlayNow) +{ + gCoreContext->SaveBoolSetting("MusicPreferPlayNow", PlayNow); +} +bool MusicPlayer::getPlayNow(void) +{ + return gCoreContext->GetBoolSetting("MusicPreferPlayNow", false); } // this stops playing the playlist and plays the file pointed to by mdata diff --git a/mythplugins/mythmusic/mythmusic/musicplayer.h b/mythplugins/mythmusic/mythmusic/musicplayer.h index 022864bb0fc..accf931167e 100644 --- a/mythplugins/mythmusic/mythmusic/musicplayer.h +++ b/mythplugins/mythmusic/mythmusic/musicplayer.h @@ -119,6 +119,10 @@ class MusicPlayer : public QObject, public MythObservable void canShowPlayer(bool canShow) { m_canShowPlayer = canShow; } bool getCanShowPlayer(void) const { return m_canShowPlayer; } + /// whether we prefer Play Now over Add Tracks + void setPlayNow(bool PlayNow); + bool getPlayNow(void); + Decoder *getDecoder(void) { return m_decoderHandler ? m_decoderHandler->getDecoder() : nullptr; } DecoderHandler *getDecoderHandler(void) { return m_decoderHandler; } AudioOutput *getOutput(void) { return m_output; } diff --git a/mythplugins/mythmusic/mythmusic/playlist.cpp b/mythplugins/mythmusic/mythmusic/playlist.cpp index ac9315ddee5..ae38b166678 100644 --- a/mythplugins/mythmusic/mythmusic/playlist.cpp +++ b/mythplugins/mythmusic/mythmusic/playlist.cpp @@ -680,13 +680,14 @@ void Playlist::fillSongsFromSonglist(const QString& songList) gPlayer->activePlaylistChanged(-1, false); } -void Playlist::fillSonglistFromQuery(const QString& whereClause, - bool removeDuplicates, - InsertPLOption insertOption, - int currentTrackID) +int Playlist::fillSonglistFromQuery(const QString& whereClause, + bool removeDuplicates, + InsertPLOption insertOption, + int currentTrackID) { QString orig_songlist = toRawSonglist(); QString new_songlist; + int added = 0; disableSaves(); removeAllTracks(); @@ -716,17 +717,18 @@ void Playlist::fillSonglistFromQuery(const QString& whereClause, fillSongsFromSonglist(new_songlist); enableSaves(); changed(); - return; + return 0; } while (query.next()) { new_songlist += "," + query.value(0).toString(); + added++; } new_songlist.remove(0, 1); if (removeDuplicates && insertOption != PL_REPLACE) - new_songlist = removeDuplicateTracks(orig_songlist, new_songlist); + orig_songlist = removeDuplicateTracks(new_songlist, orig_songlist); switch (insertOption) { @@ -777,13 +779,14 @@ void Playlist::fillSonglistFromQuery(const QString& whereClause, enableSaves(); changed(); + return added; } // songList is a list of trackIDs to add -void Playlist::fillSonglistFromList(const QList &songList, - bool removeDuplicates, - InsertPLOption insertOption, - int currentTrackID) +int Playlist::fillSonglistFromList(const QList &songList, + bool removeDuplicates, + InsertPLOption insertOption, + int currentTrackID) { QString orig_songlist = toRawSonglist(); QString new_songlist; @@ -799,7 +802,7 @@ void Playlist::fillSonglistFromList(const QList &songList, new_songlist.remove(0, 1); if (removeDuplicates && insertOption != PL_REPLACE) - new_songlist = removeDuplicateTracks(orig_songlist, new_songlist); + orig_songlist = removeDuplicateTracks(new_songlist, orig_songlist); switch (insertOption) { @@ -851,6 +854,7 @@ void Playlist::fillSonglistFromList(const QList &songList, enableSaves(); changed(); + return songList.count(); } QString Playlist::toRawSonglist(bool shuffled, bool tracksOnly) @@ -892,10 +896,10 @@ QString Playlist::toRawSonglist(bool shuffled, bool tracksOnly) return rawList; } -void Playlist::fillSonglistFromSmartPlaylist(const QString& category, const QString& name, - bool removeDuplicates, - InsertPLOption insertOption, - int currentTrackID) +int Playlist::fillSonglistFromSmartPlaylist(const QString& category, const QString& name, + bool removeDuplicates, + InsertPLOption insertOption, + int currentTrackID) { MSqlQuery query(MSqlQuery::InitCon()); @@ -905,7 +909,7 @@ void Playlist::fillSonglistFromSmartPlaylist(const QString& category, const QStr { LOG(VB_GENERAL, LOG_WARNING, LOC + QString("Cannot find Smartplaylist Category: %1") .arg(category)); - return; + return 0; } // find smartplaylist @@ -934,13 +938,13 @@ void Playlist::fillSonglistFromSmartPlaylist(const QString& category, const QStr { LOG(VB_GENERAL, LOG_WARNING, LOC + QString("Cannot find smartplaylist: %1").arg(name)); - return; + return 0; } } else { MythDB::DBError("Find SmartPlaylist", query); - return; + return 0; } // get smartplaylist items @@ -980,8 +984,8 @@ void Playlist::fillSonglistFromSmartPlaylist(const QString& category, const QStr if (limitTo > 0) whereClause += " LIMIT " + QString::number(limitTo); - fillSonglistFromQuery(whereClause, removeDuplicates, - insertOption, currentTrackID); + return fillSonglistFromQuery(whereClause, removeDuplicates, + insertOption, currentTrackID); } void Playlist::changed(void) diff --git a/mythplugins/mythmusic/mythmusic/playlist.h b/mythplugins/mythmusic/mythmusic/playlist.h index 5c91d53a2af..f3b939e579f 100644 --- a/mythplugins/mythmusic/mythmusic/playlist.h +++ b/mythplugins/mythmusic/mythmusic/playlist.h @@ -62,18 +62,18 @@ class Playlist : public QObject void describeYourself(void) const; // debugging void fillSongsFromSonglist(const QString& songList); - void fillSonglistFromQuery(const QString& whereClause, - bool removeDuplicates = false, - InsertPLOption insertOption = PL_REPLACE, - int currentTrackID = 0); - void fillSonglistFromSmartPlaylist(const QString& category, const QString& name, - bool removeDuplicates = false, - InsertPLOption insertOption = PL_REPLACE, - int currentTrackID = 0); - void fillSonglistFromList(const QList &songList, - bool removeDuplicates, - InsertPLOption insertOption, - int currentTrackID); + int fillSonglistFromQuery(const QString& whereClause, + bool removeDuplicates = false, + InsertPLOption insertOption = PL_REPLACE, + int currentTrackID = 0); + int fillSonglistFromSmartPlaylist(const QString& category, const QString& name, + bool removeDuplicates = false, + InsertPLOption insertOption = PL_REPLACE, + int currentTrackID = 0); + int fillSonglistFromList(const QList &songList, + bool removeDuplicates, + InsertPLOption insertOption, + int currentTrackID); QString toRawSonglist(bool shuffled = false, bool tracksOnly = false); diff --git a/mythplugins/mythmusic/mythmusic/playlisteditorview.cpp b/mythplugins/mythmusic/mythmusic/playlisteditorview.cpp index 3722eba8cdc..b834d16c9dc 100644 --- a/mythplugins/mythmusic/mythmusic/playlisteditorview.cpp +++ b/mythplugins/mythmusic/mythmusic/playlisteditorview.cpp @@ -154,11 +154,17 @@ bool PlaylistEditorView::Create(void) m_playlistTree->AssignTree(m_rootNode); - if (m_restorePosition) + // if (m_restorePosition) // v33- only when switching gallery/tree + if (true) // v34+ always enter where we exited { QStringList route = gCoreContext->GetSetting("MusicTreeLastActive", "").split("\n"); restoreTreePosition(route); } + else // not used, could enter at any point like this + { + QStringList route = (QString("Root Music Node.Albums").split(".")); + restoreTreePosition(route); + } connect(m_playlistTree, &MythUIButtonTree::itemClicked, this, &PlaylistEditorView::treeItemClicked); @@ -297,16 +303,23 @@ void PlaylistEditorView::customEvent(QEvent *event) } else if (resulttext == tr("Replace Tracks")) { - m_playlistOptions.playPLOption = PL_CURRENT; m_playlistOptions.insertPLOption = PL_REPLACE; doUpdatePlaylist(); } else if (resulttext == tr("Add Tracks")) { - m_playlistOptions.playPLOption = PL_CURRENT; m_playlistOptions.insertPLOption = PL_INSERTATEND; doUpdatePlaylist(); } + else if (resulttext == tr("Play Now")) + { // cancel shuffles and repeats to play now + gPlayer->setShuffleMode(MusicPlayer::SHUFFLE_OFF); + gPlayer->setRepeatMode(MusicPlayer::REPEAT_OFF); + updateShuffleMode(true); + m_playlistOptions.insertPLOption = PL_INSERTATEND; + m_playlistOptions.playPLOption = PL_FIRSTNEW; + doUpdatePlaylist(); + } } else if (resultid == "treeplaylistmenu") { @@ -331,7 +344,6 @@ void PlaylistEditorView::customEvent(QEvent *event) } else if (resulttext == tr("Replace Tracks")) { - m_playlistOptions.playPLOption = PL_CURRENT; m_playlistOptions.insertPLOption = PL_REPLACE; doUpdatePlaylist(); } @@ -340,6 +352,15 @@ void PlaylistEditorView::customEvent(QEvent *event) m_playlistOptions.insertPLOption = PL_INSERTATEND; doUpdatePlaylist(); } + else if (resulttext == tr("Play Now")) + { // cancel shuffles and repeats to play now + gPlayer->setShuffleMode(MusicPlayer::SHUFFLE_OFF); + gPlayer->setRepeatMode(MusicPlayer::REPEAT_OFF); + updateShuffleMode(true); + m_playlistOptions.insertPLOption = PL_INSERTATEND; + m_playlistOptions.playPLOption = PL_FIRSTNEW; + doUpdatePlaylist(); + } } } @@ -641,7 +662,7 @@ void PlaylistEditorView::ShowMenu(void) { menu = createPlaylistMenu(); } - else if ((mnode->getAction() == "trackid") || + else if ( // (mnode->getAction() == "trackid") || (mnode->getAction() == "error")) { } @@ -687,8 +708,17 @@ MythMenu* PlaylistEditorView::createPlaylistMenu(void) if (mnode->getAction() == "playlist") { menu = new MythMenu(tr("Playlist Actions"), this, "treeplaylistmenu"); + if (gPlayer->getPlayNow()) + { + menu->AddItem(tr("Play Now")); + menu->AddItem(tr("Add Tracks")); + } + else + { + menu->AddItem(tr("Add Tracks")); + menu->AddItem(tr("Play Now")); + } menu->AddItem(tr("Replace Tracks")); - menu->AddItem(tr("Add Tracks")); menu->AddItem(tr("Remove Playlist")); } } @@ -719,8 +749,17 @@ MythMenu* PlaylistEditorView::createSmartPlaylistMenu(void) { menu = new MythMenu(tr("Smart Playlist Actions"), this, "smartplaylistmenu"); + if (gPlayer->getPlayNow()) + { + menu->AddItem(tr("Play Now")); + menu->AddItem(tr("Add Tracks")); + } + else + { + menu->AddItem(tr("Add Tracks")); + menu->AddItem(tr("Play Now")); + } menu->AddItem(tr("Replace Tracks")); - menu->AddItem(tr("Add Tracks")); menu->AddItem(tr("Edit Smart Playlist")); menu->AddItem(tr("New Smart Playlist")); @@ -818,6 +857,13 @@ void PlaylistEditorView::treeItemClicked(MythUIButtonListItem *item) gPlayer->removeTrack(mnode->getInt()); mnode->setCheck(MythUIButtonListItem::NotChecked); } + else if (gPlayer->getPlayNow()) + { + gPlayer->addTrack(mnode->getInt(), false); + gPlayer->setCurrentTrackPos(gPlayer->getCurrentPlaylist()->getTrackCount() - 1); + updateUIPlaylist(); + mnode->setCheck(MythUIButtonListItem::FullChecked); + } else { // add track to the current playlist diff --git a/mythplugins/mythmusic/mythmusic/searchview.cpp b/mythplugins/mythmusic/mythmusic/searchview.cpp index f42b0c6df65..5f264f43868 100644 --- a/mythplugins/mythmusic/mythmusic/searchview.cpp +++ b/mythplugins/mythmusic/mythmusic/searchview.cpp @@ -109,10 +109,8 @@ void SearchView::customEvent(QEvent *event) MusicCommon::customEvent(event); handled = true; - if (m_playTrack) + if (m_playTrack == 1 || (m_playTrack == -1 && gPlayer->getPlayNow())) { - m_playTrack = false; - if (event->type() == MusicPlayerEvent::kTrackAddedEvent) { // make the added track current and play it @@ -120,6 +118,7 @@ void SearchView::customEvent(QEvent *event) playlistItemClicked(m_currentPlaylist->GetItemCurrent()); } } + m_playTrack = -1; // use PlayNow preference or menu option } else if (event->type() == MusicPlayerEvent::kAllTracksRemovedEvent) { @@ -173,23 +172,27 @@ void SearchView::customEvent(QEvent *event) MythUIButtonListItem *item = m_tracksList->GetItemCurrent(); if (item) { - m_playTrack = false; + m_playTrack = 0; trackClicked(item); } } } - else if (resulttext == tr("Add To Playlist And Play")) + else if (resulttext == tr("Play Now")) { if (GetFocusWidget() == m_tracksList) { MythUIButtonListItem *item = m_tracksList->GetItemCurrent(); if (item) { - m_playTrack = true; + m_playTrack = 1; trackClicked(item); } } } + else if (resulttext == tr("Prefer Play Now")) + gPlayer->setPlayNow(true); + else if (resulttext == tr("Prefer Add Tracks")) + gPlayer->setPlayNow(false); else if (resulttext == tr("Search List...")) searchButtonList(); } @@ -238,7 +241,7 @@ bool SearchView::keyPressEvent(QKeyEvent *event) MythUIButtonListItem *item = m_tracksList->GetItemCurrent(); if (item) { - m_playTrack = true; + m_playTrack = 1; trackClicked(item); } } @@ -273,8 +276,18 @@ void SearchView::ShowMenu(void) menu->AddItem(tr("Remove From Playlist")); else { - menu->AddItem(tr("Add To Playlist")); - menu->AddItem(tr("Add To Playlist And Play")); + if (gPlayer->getPlayNow()) + { + menu->AddItem(tr("Play Now")); + menu->AddItem(tr("Add To Playlist")); + menu->AddItem(tr("Prefer Add To Playlist")); + } + else + { + menu->AddItem(tr("Add To Playlist")); + menu->AddItem(tr("Play Now")); + menu->AddItem(tr("Prefer Play Now")); + } } } } diff --git a/mythplugins/mythmusic/mythmusic/searchview.h b/mythplugins/mythmusic/mythmusic/searchview.h index 1b5e5507dc4..136b1712c4c 100644 --- a/mythplugins/mythmusic/mythmusic/searchview.h +++ b/mythplugins/mythmusic/mythmusic/searchview.h @@ -39,7 +39,7 @@ class SearchView : public MusicCommon static void trackVisible(MythUIButtonListItem *item); private: - bool m_playTrack {false}; + int m_playTrack {-1}; MythUIButtonList *m_fieldList {nullptr}; MythUITextEdit *m_criteriaEdit {nullptr}; MythUIText *m_matchesText {nullptr}; diff --git a/mythplugins/mythmusic/theme/default-wide/music-base.xml b/mythplugins/mythmusic/theme/default-wide/music-base.xml index d681c1c52b9..7cc536e6856 100644 --- a/mythplugins/mythmusic/theme/default-wide/music-base.xml +++ b/mythplugins/mythmusic/theme/default-wide/music-base.xml @@ -929,7 +929,7 @@ 40,25,1200,190 yes allcenter - You haven't selected any tracks to play + Press M (Menu) to add and play tracks diff --git a/mythplugins/mythmusic/theme/default-wide/music-ui.xml b/mythplugins/mythmusic/theme/default-wide/music-ui.xml index 6530abd7cd2..f4b3215e8f8 100644 --- a/mythplugins/mythmusic/theme/default-wide/music-ui.xml +++ b/mythplugins/mythmusic/theme/default-wide/music-ui.xml @@ -117,7 +117,7 @@ 35,20,1210,340 yes allcenter - You haven't selected any tracks to play + Press M (Menu) to add and play tracks diff --git a/mythplugins/mythmusic/theme/default/music-base.xml b/mythplugins/mythmusic/theme/default/music-base.xml index 5f26b7517c6..bf801baba2f 100644 --- a/mythplugins/mythmusic/theme/default/music-base.xml +++ b/mythplugins/mythmusic/theme/default/music-base.xml @@ -666,7 +666,7 @@ 35,25,730,190 yes allcenter - You haven't selected any tracks to play + Press M (Menu) to add and play tracks diff --git a/mythplugins/mythmusic/theme/default/music-ui.xml b/mythplugins/mythmusic/theme/default/music-ui.xml index 8f4c73c8de7..314289355b1 100644 --- a/mythplugins/mythmusic/theme/default/music-ui.xml +++ b/mythplugins/mythmusic/theme/default/music-ui.xml @@ -14,7 +14,7 @@ 15,15,770,210 yes allcenter - You haven't selected any tracks to play + Press M (Menu) to add and play tracks diff --git a/mythtv/themes/MythCenter-wide/music-base.xml b/mythtv/themes/MythCenter-wide/music-base.xml index dd499d1f190..d127f110649 100644 --- a/mythtv/themes/MythCenter-wide/music-base.xml +++ b/mythtv/themes/MythCenter-wide/music-base.xml @@ -849,7 +849,7 @@ 40,25,1200,190 yes allcenter - You haven't selected any tracks to play + Press M (Menu) to add and play tracks diff --git a/mythtv/themes/MythCenter-wide/music-ui.xml b/mythtv/themes/MythCenter-wide/music-ui.xml index 613f4218fcb..85eb733e1ac 100644 --- a/mythtv/themes/MythCenter-wide/music-ui.xml +++ b/mythtv/themes/MythCenter-wide/music-ui.xml @@ -117,7 +117,7 @@ 35,20,1210,340 yes allcenter - You haven't selected any tracks to play + Press M (Menu) to add and play tracks