Go to the documentation of this file.
6 #include <QApplication>
47 m_parentScreen(parentScreen)
231 LOG(VB_GENERAL, LOG_ERR, QString(
"MusicCommon: Got a bad saved visualizer: %1").arg(
m_currentVisual));
448 if (plview->Create())
464 auto *oldView = qobject_cast<PlaylistEditorView *>(
this);
466 oldView->saveTreePosition();
472 if (pleview->Create())
491 auto *oldView = qobject_cast<PlaylistEditorView *>(
this);
493 oldView->saveTreePosition();
497 auto *pleview =
new PlaylistEditorView(mainStack, parentScreen,
"gallery", restorePos);
499 if (pleview->Create())
515 auto *sview =
new SearchView(mainStack,
this);
545 auto *lview =
new LyricsView(mainStack,
this);
572 bool handled =
false;
589 for (
int i = 0; i < actions.size() && !handled; i++)
591 QString
action = actions[i];
618 else if (
action ==
"DOWN")
653 if (exit_action ==
"stop")
659 else if (exit_action ==
"play")
666 else if (
action ==
"THMBUP")
668 else if (
action ==
"THMBDOWN")
670 else if (
action ==
"NEXTTRACK")
677 else if (
action ==
"PREVTRACK")
684 else if (
action ==
"FFWD")
694 else if (
action ==
"RWND")
704 else if (
action ==
"PAUSE")
727 else if (
action ==
"PLAY")
734 else if (
action ==
"STOP")
742 else if (
action ==
"CYCLEVIS")
744 else if (
action ==
"BLANKSCR")
754 else if (
action ==
"VOLUMEDOWN")
756 else if (
action ==
"VOLUMEUP")
758 else if (
action ==
"SPEEDDOWN")
760 else if (
action ==
"SPEEDUP")
762 else if (
action ==
"MUTE")
764 else if (
action ==
"TOGGLEUPMIX")
800 else if (
action ==
"MENU")
802 else if (
action ==
"REFRESH")
807 else if (
action ==
"MARK")
846 else if (
action ==
"TOGGLESHUFFLE")
851 else if (
action ==
"TOGGLEREPEAT")
919 QString status = QString(
"%1%").arg((
int)(100.0 / ((
double)maxSize / (
double)available)));
932 int percentplayed = 1;
991 unsigned int next_visualizer = 0;
1042 lcd->switchToTime();
1090 nextTime = std::clamp(nextTime, 0s,
m_maxTime);
1102 nextTime = std::clamp(nextTime, 1s,
m_maxTime);
1114 decoder->
seek(pos.count());
1138 float percent_heard =
m_maxTime <= 0s ? 0.0F : ((float)pos.count() /
1144 if (lcd_time_string.length() > (
int)lcd->getLCDWidth())
1145 lcd_time_string.remove(
' ');
1147 lcd->setMusicProgress(lcd_time_string, percent_heard);
1179 QString statusString;
1187 statusString = tr(
"Playing stream.");
1216 statusString = tr(
"Buffering stream.");
1220 statusString = tr(
"Stream paused.");
1249 std::chrono::seconds rs = 0s;
1271 0.0F:((float)rs.count() / (float)curMeta->
Length().count()) * 1000.0F;
1273 QString lcd_time_string = time_string;
1276 if (time_string.length() > (int)lcd->getLCDWidth())
1277 lcd_time_string.remove(
' ');
1279 lcd->setMusicProgress(lcd_time_string, percent_heard);
1283 QString info_string;
1286 if (oe->bitrate() < 2000)
1288 info_string = QString(
"%1 "+tr(
"kbps")+
" %2 "+ tr(
"kHz")+
" %3 "+ tr(
"ch"))
1290 .arg(
static_cast<double>(oe->frequency()) / 1000.0,0,
'f',1,QChar(
'0'))
1291 .arg(oe->channels() > 1 ?
"2" :
"1");
1295 info_string = QString(
"%1 "+ tr(
"kHz")+
" %2 "+ tr(
"ch"))
1296 .arg(
static_cast<double>(oe->frequency()) / 1000.0,0,
'f',1,QChar(
'0'))
1297 .arg(oe->channels() > 1 ?
"2" :
"1");
1313 statusString = tr(
"Stream stopped.");
1340 if ((dce ==
nullptr) || (dce->GetResult() < 0))
1343 QString resultid = dce->
GetId();
1344 QString resulttext = dce->GetResultText();
1346 if (resultid ==
"mainmenu")
1348 if (resulttext == tr(
"Fullscreen Visualizer"))
1350 else if (resulttext == tr(
"Playlist Editor") ||
1351 resulttext == tr(
"Browse Music Library"))
1358 else if (resulttext == tr(
"Search for Music"))
1360 else if (resulttext == tr(
"Switch To Gallery View"))
1362 else if (resulttext == tr(
"Switch To Tree View"))
1364 else if (resulttext == tr(
"Lyrics"))
1367 else if (resultid ==
"submenu")
1369 if (resulttext == tr(
"Search List..."))
1372 else if (resultid ==
"playlistmenu")
1374 if (resulttext == tr(
"Sync List With Current Track"))
1378 else if (resulttext == tr(
"Remove Selected Track"))
1388 else if (resulttext == tr(
"Remove All Tracks"))
1396 else if (resulttext == tr(
"Save To New Playlist"))
1398 QString message = tr(
"Enter new playlist name");
1404 if (inputdialog->Create())
1406 inputdialog->SetReturnEvent(
this,
"addplaylist");
1412 else if (resulttext == tr(
"Save To Existing Playlist"))
1414 QString message = tr(
"Select the playlist to save to");
1421 if (searchdialog->Create())
1423 searchdialog->SetReturnEvent(
this,
"updateplaylist");
1427 else if (resulttext == tr(
"Switch To Move Mode"))
1435 else if (resulttext == tr(
"Switch To Select Mode"))
1452 else if (resultid ==
"repeatmenu")
1454 int mode = dce->GetData().toInt();
1458 else if (resultid ==
"shufflemenu")
1460 int mode = dce->GetData().toInt();
1464 else if (resultid ==
"exitmenu")
1466 if (resulttext == tr(
"No - Exit, Stop Playing"))
1472 else if (resulttext == tr(
"Yes - Exit, Continue Playing"))
1477 else if (resultid ==
"playermenu")
1479 if (resulttext == tr(
"Change Volume"))
1481 else if (resulttext == tr(
"Mute"))
1483 else if (resulttext == tr(
"Previous Track"))
1485 else if (resulttext == tr(
"Next Track"))
1487 else if (resulttext == tr(
"Jump Back"))
1489 else if (resulttext == tr(
"Jump Forward"))
1491 else if (resulttext == tr(
"Play"))
1493 else if (resulttext == tr(
"Stop"))
1495 else if (resulttext == tr(
"Pause"))
1498 else if (resultid ==
"quickplaylistmenu")
1500 if (resulttext == tr(
"All Tracks"))
1502 else if (resulttext == tr(
"From CD"))
1504 else if (resulttext == tr(
"Tracks By Current Artist"))
1506 else if (resulttext == tr(
"Tracks From Current Genre"))
1508 else if (resulttext == tr(
"Tracks From Current Album"))
1510 else if (resulttext == tr(
"Tracks From Current Year"))
1512 else if (resulttext == tr(
"Tracks With Same Title"))
1515 else if (resultid ==
"playlistoptionsmenu")
1517 if (resulttext == tr(
"Replace Tracks"))
1522 else if (resulttext == tr(
"Add Tracks"))
1527 else if (resulttext == tr(
"Play Now"))
1537 else if (resulttext == tr(
"Prefer Play Now"))
1539 else if (resulttext == tr(
"Prefer Add Tracks"))
1542 else if (resultid ==
"visualizermenu")
1544 if (dce->GetResult() >= 0)
1552 else if (resultid ==
"addplaylist")
1558 else if (resultid ==
"updateplaylist")
1582 if (
m_currentTrack >= 0 && m_currentTrack < m_currentPlaylist->GetCount())
1592 if (trackNo >= 0 && trackNo < m_currentPlaylist->GetCount())
1692 mdata->
toMap(metadataMap);
1695 QVariant::fromValue(mdata));
1697 item->SetTextFromMap(metadataMap);
1702 item->SetFontState(
"running");
1703 item->DisplayState(
"playing",
"playstate");
1707 item->SetFontState(
"normal");
1708 item->DisplayState(
"default",
"playstate");
1751 if (mdata && mdata->ID() == trackID)
1754 mdata->
toMap(metadataMap);
1757 item->
DisplayState(QString(
"%1").arg(mdata->Rating()),
"ratingstate");
1769 if (mdata && mdata->ID() == trackID)
1772 mdata->
toMap(metadataMap);
1800 if (mdata && mdata->ID() == trackID)
1806 if (artFile.isEmpty())
1813 item->
SetImage(mdata->getAlbumArtFile());
1814 item->
SetImage(mdata->getAlbumArtFile(),
"coverart");
1839 if (mdata && mdata->ID() == trackID)
1885 if (!editDialog->Create())
1900 metadata.
toMap(metadataMap);
1901 metadata.
toMap(metadataMap,
"next");
1928 mdata->
toMap(metadataMap);
1933 nextMetadata->
toMap(metadataMap,
"next");
2001 if (mdata && item->
GetText() ==
" ")
2006 if (artFile.isEmpty())
2013 item->
SetImage(mdata->getAlbumArtFile());
2014 item->
SetImage(mdata->getAlbumArtFile(),
"coverart");
2019 mdata->toMap(metadataMap);
2022 item->
DisplayState(QString(
"%1").arg(mdata->Rating()),
"ratingstate");
2049 QVariant::fromValue(mdata));
2051 item->SetText(mdata->
Artist() + mdata->
Album() + mdata->
Title(),
"**search**");
2052 item->SetFontState(
"normal");
2053 item->DisplayState(
"default",
"playstate");
2060 item->SetFontState(
"running");
2061 item->DisplayState(
"playing",
"playstate");
2065 item->SetFontState(
"idle");
2066 item->DisplayState(
"paused",
"playstate");
2070 item->SetFontState(
"normal");
2071 item->DisplayState(
"stopped",
"playstate");
2090 for (
int x = playedList.count(); x > 0; x--)
2094 QVariant::fromValue(mdata));
2097 mdata->
toMap(metadataMap);
2098 item->SetTextFromMap(metadataMap);
2100 item->SetFontState(
"normal");
2101 item->DisplayState(
"default",
"playstate");
2117 QString playlistcurrent = QLocale::system().toString(
m_currentTrack + 1);
2118 QString playlisttotal = QLocale::system().toString(trackCount);
2120 map[
"playlistposition"] = tr(
"%1 of %2").arg(playlistcurrent, playlisttotal);
2121 map[
"playlistcurrent"] = playlistcurrent;
2122 map[
"playlistcount"] = playlisttotal;
2127 if (playlistName ==
"default_playlist_storage")
2128 playlistName = tr(
"Default Playlist");
2129 else if (playlistName ==
"stream_playlist")
2130 playlistName = tr(
"Stream Playlist");
2131 map[
"playlistname"] = playlistName;
2138 map[
"playlistposition"] =
"";
2139 map[
"playlistcurrent"] =
"";
2140 map[
"playlistcount"] =
"";
2141 map[
"playlisttime"] =
"";
2142 map[
"playlistplayedtime"] =
"";
2143 map[
"playlisttotaltime"] =
"";
2144 map[
"playlistname"] =
"";
2145 map[
"playedtime"] =
"";
2146 map[
"totaltime"] =
"";
2147 map[
"trackspeed"] =
"";
2158 if (exTime > -1s && maxTime <= 0s)
2160 (exTime >= 1h) ?
"H:mm:ss" :
"mm:ss");
2162 QString fmt = (maxTime >= 1h) ?
"H:mm:ss" :
"mm:ss";
2166 QString speedstr =
"";
2167 if (lroundf(speed * 100.0F) != 100.0F)
2169 speedstr = QString(
"%1").arg(speed);
2170 out +=
", " + speedstr +
"X";
2194 auto *menuPopup =
new MythDialogBox(mainMenu, popupStack,
"actionmenu");
2196 if (menuPopup->Create())
2204 QString label = tr(
"View Actions");
2210 menu->AddItem(tr(
"Switch To Gallery View"));
2214 menu->AddItem(tr(
"Switch To Tree View"));
2220 menu->AddItem(tr(
"Browse Music Library"));
2223 QStringList screenList;
2227 screenList.append(screen->objectName());
2228 screen = qobject_cast<MusicCommon*>(screen)->m_parentScreen;
2231 if (!screenList.contains(
"searchview") && !screenList.contains(
"streamview"))
2232 menu->AddItem(tr(
"Search for Music"));
2234 if (!screenList.contains(
"visualizerview"))
2235 menu->AddItem(tr(
"Fullscreen Visualizer"));
2237 if (!screenList.contains(
"lyricsview"))
2238 menu->AddItem(tr(
"Lyrics"));
2247 QString label = tr(
"Actions");
2253 menu->AddItem(tr(
"Search List..."));
2275 QString label = tr(
"Playlist Options");
2277 auto *
menu =
new MythMenu(label,
this,
"playlistmenu");
2281 menu->AddItem(tr(
"Sync List With Current Track"));
2282 menu->AddItem(tr(
"Remove Selected Track"));
2285 menu->AddItem(tr(
"Remove All Tracks"));
2289 menu->AddItem(tr(
"Save To New Playlist"));
2290 menu->AddItem(tr(
"Save To Existing Playlist"));
2293 menu->AddItem(tr(
"Switch To Select Mode"));
2295 menu->AddItem(tr(
"Switch To Move Mode"));
2303 QString label = tr(
"Exiting Music Player.\n\n"
2304 "Do you want to continue playing in the background?");
2316 menu->SetReturnEvent(
this,
"exitmenu");
2318 menu->AddButton(tr(
"No - Exit, Stop Playing"));
2319 menu->AddButton(tr(
"Yes - Exit, Continue Playing"));
2320 menu->AddButton(tr(
"Cancel"));
2327 QString label = tr(
"Player Actions");
2331 menu->AddItem(tr(
"Change Volume"));
2332 menu->AddItem(tr(
"Mute"));
2333 menu->AddItem(tr(
"Previous Track"));
2334 menu->AddItem(tr(
"Next Track"));
2338 menu->AddItem(tr(
"Jump Back"));
2339 menu->AddItem(tr(
"Jump Forward"));
2342 menu->AddItem(tr(
"Play"));
2343 menu->AddItem(tr(
"Stop"));
2346 menu->AddItem(tr(
"Pause"));
2353 QString label = tr(
"Set Repeat Mode");
2368 QString label = tr(
"Set Shuffle Mode");
2385 QString label = tr(
"Quick Playlists");
2387 auto *
menu =
new MythMenu(label,
this,
"quickplaylistmenu");
2389 menu->AddItem(tr(
"All Tracks"));
2392 menu->AddItem(tr(
"From CD"));
2396 menu->AddItem(tr(
"Tracks By Current Artist"));
2397 menu->AddItem(tr(
"Tracks From Current Album"));
2398 menu->AddItem(tr(
"Tracks From Current Genre"));
2399 menu->AddItem(tr(
"Tracks From Current Year"));
2400 menu->AddItem(tr(
"Tracks With Same Title"));
2408 QString label = tr(
"Choose Visualizer");
2410 auto *
menu =
new MythMenu(label,
this,
"visualizermenu");
2422 QString label = tr(
"Add to Playlist Options");
2424 auto *
menu =
new MythMenu(label,
this,
"playlistoptionsmenu");
2428 menu->AddItem(tr(
"Play Now"));
2429 menu->AddItem(tr(
"Add Tracks"));
2430 menu->AddItem(tr(
"Replace Tracks"));
2431 menu->AddItem(tr(
"Prefer Add Tracks"));
2435 menu->AddItem(tr(
"Add Tracks"));
2436 menu->AddItem(tr(
"Play Now"));
2437 menu->AddItem(tr(
"Replace Tracks"));
2438 menu->AddItem(tr(
"Prefer Play Now"));
2446 m_whereClause =
"ORDER BY music_artists.artist_name, album_name, disc_number, track";
2475 m_whereClause =
"WHERE music_artists.artist_name = " + value +
2476 " ORDER BY album_name, disc_number, track";
2489 " ORDER BY disc_number, track";
2502 " ORDER BY music_artists.artist_name, album_name, disc_number, track";
2515 " ORDER BY music_artists.artist_name, album_name, disc_number, track";
2528 " ORDER BY music_artists.artist_name, album_name, disc_number, track";
2557 if (menuPopup->Create())
2565 int curTrackID = -1;
2653 bool foundTrack =
false;
2728 QStringList actions;
2731 for (
int i = 0; i < actions.size() && !handled; i++)
2733 QString
action = actions[i];
2827 QStringList actions;
2830 for (
int i = 0; i < actions.size() && !handled; i++)
2832 QString
action = actions[i];
void addVisual(MainVisual *visual)
MythUIStateType * m_movingTracksState
Decoder * getDecoder(void)
MythScreenStack * GetMainStack()
void init(bool startPlayback=true)
static void editTrackInfo(MusicMetadata *mdata)
MythUIText * m_trackProgressText
AudioOutput * getOutput(void)
Provide a dialog to quickly find an entry in a list.
MusicMetadata * getSongAt(int pos) const
QString formattedFieldValue(const QVariant &value)
bool setCurrentTrackPos(int pos)
RepeatMode getRepeatMode(void)
Image widget, displays a single image or multiple images in sequence.
MythUIStateType * m_repeatState
void Reset(void) override
Reset the widget to it's original state, should not reset changes made by the theme.
static void setTrackOnLCD(MusicMetadata *mdata)
MythUIButton * m_playButton
void toMap(InfoMap &infoMap) const
MythUIText * m_trackSpeedText
MythUIButton * m_ffButton
void switchView(MusicView view)
virtual void ResetMap(const InfoMap &infoMap)
MythMenu * createPlaylistOptionsMenu(void)
bool keyPressEvent(QKeyEvent *e) override
Key event handler.
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
MythUIType * GetChild(const QString &name) const
Get a named child of this UIType.
void showPlaylistOptionsMenu(bool addMainMenu=false)
void playlistItemClicked(MythUIButtonListItem *item)
MythMenu * createVisualizerMenu(void)
MythUIStateType * m_muteState
bool Load(bool allowLoadInBackground=true, bool forceStat=false)
Load the image(s), wraps ImageLoader::LoadImage()
MythMenu * createSubMenu(void)
InsertPLOption insertPLOption
void toggleMute(void) const
static bool getPlayNow(void)
void updatePlaylistStats(void)
static constexpr std::chrono::milliseconds MUSICVOLUMEPOPUPTIME
QString formatTime(std::chrono::milliseconds msecs, QString fmt)
Format a milliseconds time value.
void setShuffleMode(ShuffleMode mode)
void doUpdatePlaylist(void)
~MusicCommon(void) override
static void playFirstTrack()
int getCurrentTrackPos(void) const
bool isPlaying(void) const
MythUIStateType * m_ratingState
MythUIButton * m_rewButton
void copyNewPlaylist(const QString &name)
static void showTrackInfo(MusicMetadata *mdata)
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
MythUIButton * m_pauseButton
Screen in which all other widgets are contained and rendered.
static void show(uint8_t *buf, int length)
MythMenu * createPlaylistMenu(void)
static const Type kMetadataChangedEvent
void switchVisualizer(const QString &visual)
QStringList getPlaylistNames(void)
Playlist * getCurrentPlaylist(void)
void Reset(void) override
Reset the image back to the default defined in the theme.
void removeListener(QObject *listener)
static void startPlayback(void)
void prepare(void) override
void setPlayMode(PlayMode mode)
PlayMode getPlayMode(void)
QString toRawSonglist(bool shuffled=false, bool tracksOnly=false)
void changeSpeed(bool up)
static const Type kAllTracksRemovedEvent
void changeCurrentTrack(int trackNo)
change the current track to the given track
MusicMetadata * getCDMetadata(int m_the_track)
MythUIType * GetFocusWidget(void) const
int fillSonglistFromQuery(const QString &whereClause, bool removeDuplicates=false, InsertPLOption insertOption=PL_REPLACE, int currentTrackID=0)
void setVisual(const QString &name)
Playlist * getActive(void)
QStringList m_visualModes
PlaylistOptions m_playlistOptions
QHash< QString, QString > InfoMap
void sendTrackStatsChangedEvent(int trackID)
MusicMetadata * getCurrentMetadata(void)
get the metadata for the current track in the playlist
static void showVolume(void)
std::chrono::seconds m_currentTime
static const Type kStopped
static QString getTimeString(std::chrono::seconds exTime, std::chrono::seconds maxTime)
RepeatMode toggleRepeatMode(void)
unsigned int m_currentVisual
void removeVisual(MainVisual *visual)
std::chrono::seconds m_maxTime
virtual void unlock(void)
bool TranslateKeyPress(const QString &Context, QKeyEvent *Event, QStringList &Actions, bool AllowJumps=true)
Get a list of actions for a keypress in the given context.
uint m_playlistTrackCount
ShuffleMode toggleShuffleMode(void)
static const Type kTrackChangeEvent
MythUIProgressBar * m_playlistProgress
static void playlistItemVisible(MythUIButtonListItem *item)
Basic menu dialog, message and a list of options.
static MythThemedMenu * menu
MythUIButton * m_prevButton
MythMenu * createQuickPlaylistsMenu(void)
std::chrono::seconds m_playlistMaxTime
static const Type kTrackStatsChangedEvent
virtual void SetTextFromMap(const InfoMap &infoMap)
Playlist * getPlaylist(int id)
MythUIButtonList * m_currentPlaylist
@ MV_PLAYLISTEDITORGALLERY
void updateProgressBar(void)
void stopVisualizer(void)
int getCDTrackCount(void) const
MainVisual * m_mainvisual
MythMenu * createRepeatMenu(void)
ShuffleMode getShuffleMode(void)
void playlistChanged(int playlistID)
MusicMetadata * getMetadata(int an_id)
void removeTrack(int trackID)
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
PlaylistContainer * m_all_playlists
void updateUIPlayedList(void)
void updateRepeatMode(void)
MythUIStateType * m_trackState
MythMenu * createShuffleMenu(void)
MythUIImage * m_coverartImage
static bool Assign(ContainerType *container, UIType *&item, const QString &name, bool *err=nullptr)
MusicMetadata * m_metadata
static const Type kPlaying
MythUIVideo * m_visualizerVideo
MythMenu * createPlayerMenu(void)
bool GetBoolSetting(const QString &key, bool defaultval=false)
static void changeRating(bool increase)
static const Type kTrackUnavailableEvent
MythUIButton * m_stopButton
@ PLAYMODE_TRACKSPLAYLIST
MusicMetadata * getNextMetadata(void)
get the metadata for the next track in the playlist
QStringList getVisualizations(void)
int getCurrentVisual(void) const
void updateTrackInfo(MusicMetadata *mdata)
QList< MusicMetadata * > & getPlayedTracksList(void)
MythUIProgressBar * m_trackProgress
MythMenu * createMainMenu(void)
All purpose text widget, displays a text string.
void updateShuffleMode(bool updateUIList=false)
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
void activePlaylistChanged(int trackID, bool deleted)
void setRepeatMode(RepeatMode mode)
static bool LoadWindowFromXML(const QString &xmlfile, const QString &windowname, MythUIType *parent)
void searchButtonList(void)
void cycleVisualizer(void)
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
static void showSpeed(bool show)
void SetTextFromMap(const InfoMap &map)
void getStats(uint *trackCount, std::chrono::seconds *totalLength, uint currentTrack=0, std::chrono::seconds *playedLength=nullptr) const
virtual void SetText(const QString &text)
virtual void SetVisible(bool visible)
static const Type kEventType
void changeVolume(bool up) const
void startVisualizer(void)
MythMainWindow * GetMythMainWindow(void)
std::chrono::seconds m_playlistPlayedTime
bool isRunning(void) const
void setAllowRestorePos(bool allow)
MythUIButtonList * m_playedTracksList
static const Type kTrackRemovedEvent
void switchToMusic(const QString &artist, const QString &album, const QString &track)
PlayPLOption playPLOption
void restorePosition(void)
MythScreenStack * GetStack(const QString &Stackname)
static const Type kTrackAddedEvent
MusicCommon(MythScreenStack *parent, MythScreenType *parentScreen, const QString &name)
void updateUIPlaylist(void)
static const Type kVolumeChangeEvent
void fillSongsFromSonglist(const QString &songList)
void removeAllTracks(void)
void stop(bool stopAll=false)
static const Type kBuffering
MythUIText * m_volumeText
Dialog prompting the user to enter a text string.
void getBufferStatus(int *bufferAvailable, int *bufferSize) const
void SetFilename(const QString &filename)
Must be followed by a call to Load() to load the image.
MythUIStateType * m_shuffleState
static void setPlayNow(bool PlayNow)
whether we prefer Play Now over Add Tracks
MythUIText * m_visualText
virtual void seek(double)=0
int fillSonglistFromList(const QList< int > &songList, bool removeDuplicates, InsertPLOption insertOption, int currentTrackID)
MythUIText * m_noTracksText
uint getVolume(void) const
MythScreenType * m_parentScreen
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
void seek(std::chrono::seconds pos)
bool restorePosition(int trackID)
uint32_t MythRandom()
generate 32 random bits
virtual bool ToggleUpmix(void)
void customEvent(QEvent *event) override
bool Create(void) override
MythUIButton * m_nextButton
This widget is used for grouping other widgets for display when a particular named state is called....
virtual bool IsPaused(void) const =0
void addListener(QObject *listener)
static void toggleUpmix(void)
bool DisplayState(const QString &name)
static const Type kPaused
void ShowMenu(void) override
virtual void SetTimecode(std::chrono::milliseconds timecode)=0
QString GetSetting(const QString &key, const QString &defaultval="")
static const Type kAlbumArtChangedEvent
void moveTrackUpDown(bool moveUp, int whichTrack)