Go to the documentation of this file.
6 #include <QApplication>
47 m_parentScreen(parentScreen)
234 LOG(VB_GENERAL, LOG_ERR, QString(
"MusicCommon: Got a bad saved visualizer: %1").arg(
m_currentVisual));
451 if (plview->Create())
469 auto *oldView = qobject_cast<PlaylistEditorView *>(
this);
471 oldView->saveTreePosition();
477 if (pleview->Create())
498 auto *oldView = qobject_cast<PlaylistEditorView *>(
this);
500 oldView->saveTreePosition();
504 auto *pleview =
new PlaylistEditorView(mainStack, parentScreen,
"gallery", restorePos);
506 if (pleview->Create())
524 auto *sview =
new SearchView(mainStack,
this);
558 auto *lview =
new LyricsView(mainStack,
this);
587 bool handled =
false;
604 for (
int i = 0; i < actions.size() && !handled; i++)
606 const QString&
action = actions[i];
633 else if (
action ==
"DOWN")
668 if (exit_action ==
"stop")
674 else if (exit_action ==
"play")
685 else if (
action ==
"THMBUP")
689 else if (
action ==
"THMBDOWN")
693 else if (
action ==
"NEXTTRACK")
700 else if (
action ==
"PREVTRACK")
707 else if (
action ==
"FFWD")
717 else if (
action ==
"RWND")
727 else if (
action ==
"PAUSE")
750 else if (
action ==
"PLAY")
757 else if (
action ==
"STOP")
765 else if (
action ==
"CYCLEVIS")
769 else if (
action ==
"BLANKSCR")
779 else if (
action ==
"VOLUMEDOWN")
783 else if (
action ==
"VOLUMEUP")
787 else if (
action ==
"SPEEDDOWN")
791 else if (
action ==
"SPEEDUP")
795 else if (
action ==
"MUTE")
799 else if (
action ==
"TOGGLEUPMIX")
837 else if (
action ==
"MENU")
841 else if (
action ==
"REFRESH")
846 else if (
action ==
"MARK")
897 else if (
action ==
"TOGGLESHUFFLE")
902 else if (
action ==
"TOGGLEREPEAT")
972 QString status = QString(
"%1%").arg((
int)(100.0 / ((
double)maxSize / (
double)available)));
985 int percentplayed = 1;
1044 unsigned int next_visualizer = 0;
1095 lcd->switchToTime();
1167 decoder->
seek(pos.count());
1191 float percent_heard =
m_maxTime <= 0s ? 0.0F : ((float)pos.count() /
1197 if (lcd_time_string.length() > lcd->getLCDWidth())
1198 lcd_time_string.remove(
' ');
1200 lcd->setMusicProgress(lcd_time_string, percent_heard);
1232 QString statusString;
1240 statusString = tr(
"Playing stream.");
1269 statusString = tr(
"Buffering stream.");
1273 statusString = tr(
"Stream paused.");
1302 std::chrono::seconds rs = 0s;
1326 0.0F:((float)rs.count() / (float)curMeta->
Length().count()) * 1000.0F;
1328 QString lcd_time_string = time_string;
1331 if (time_string.length() > lcd->getLCDWidth())
1332 lcd_time_string.remove(
' ');
1334 lcd->setMusicProgress(lcd_time_string, percent_heard);
1338 QString info_string;
1341 if (oe->bitrate() < 2000)
1343 info_string = QString(
"%1 "+tr(
"kbps")+
" %2 "+ tr(
"kHz")+
" %3 "+ tr(
"ch"))
1345 .arg(
static_cast<double>(oe->frequency()) / 1000.0,0,
'f',1,QChar(
'0'))
1346 .arg(oe->channels() > 1 ?
"2" :
"1");
1350 info_string = QString(
"%1 "+ tr(
"kHz")+
" %2 "+ tr(
"ch"))
1351 .arg(
static_cast<double>(oe->frequency()) / 1000.0,0,
'f',1,QChar(
'0'))
1352 .arg(oe->channels() > 1 ?
"2" :
"1");
1368 statusString = tr(
"Stream stopped.");
1395 if ((dce ==
nullptr) || (dce->GetResult() < 0))
1398 QString resultid = dce->
GetId();
1399 QString resulttext = dce->GetResultText();
1401 if (resultid ==
"mainmenu")
1403 if (resulttext == tr(
"Fullscreen Visualizer"))
1405 else if (resulttext == tr(
"Playlist Editor") ||
1406 resulttext == tr(
"Browse Music Library"))
1413 else if (resulttext == tr(
"Search for Music"))
1417 else if (resulttext == tr(
"Switch To Gallery View"))
1421 else if (resulttext == tr(
"Switch To Tree View"))
1425 else if (resulttext == tr(
"Lyrics"))
1430 else if (resultid ==
"submenu")
1432 if (resulttext == tr(
"Search List..."))
1435 else if (resultid ==
"playlistmenu")
1437 if (resulttext == tr(
"Sync List With Current Track"))
1441 else if (resulttext == tr(
"Remove Selected Track"))
1451 else if (resulttext == tr(
"Remove All Tracks"))
1459 else if (resulttext == tr(
"Save To New Playlist"))
1461 QString message = tr(
"Enter new playlist name");
1467 if (inputdialog->Create())
1469 inputdialog->SetReturnEvent(
this,
"addplaylist");
1477 else if (resulttext == tr(
"Save To Existing Playlist"))
1479 QString message = tr(
"Select the playlist to save to");
1486 if (searchdialog->Create())
1488 searchdialog->SetReturnEvent(
this,
"updateplaylist");
1492 else if (resulttext == tr(
"Switch To Move Mode"))
1500 else if (resulttext == tr(
"Switch To Select Mode"))
1517 else if (resultid ==
"repeatmenu")
1519 int mode = dce->GetData().toInt();
1523 else if (resultid ==
"shufflemenu")
1525 int mode = dce->GetData().toInt();
1529 else if (resultid ==
"exitmenu")
1531 if (resulttext == tr(
"No - Exit, Stop Playing"))
1537 else if (resulttext == tr(
"Yes - Exit, Continue Playing"))
1542 else if (resultid ==
"playermenu")
1544 if (resulttext == tr(
"Change Volume"))
1546 else if (resulttext == tr(
"Mute"))
1548 else if (resulttext == tr(
"Previous Track"))
1550 else if (resulttext == tr(
"Next Track"))
1552 else if (resulttext == tr(
"Jump Back"))
1554 else if (resulttext == tr(
"Jump Forward"))
1556 else if (resulttext == tr(
"Play"))
1558 else if (resulttext == tr(
"Stop"))
1560 else if (resulttext == tr(
"Pause"))
1563 else if (resultid ==
"quickplaylistmenu")
1565 if (resulttext == tr(
"All Tracks"))
1567 else if (resulttext == tr(
"From CD"))
1569 else if (resulttext == tr(
"Tracks By Current Artist"))
1571 else if (resulttext == tr(
"Tracks From Current Genre"))
1573 else if (resulttext == tr(
"Tracks From Current Album"))
1575 else if (resulttext == tr(
"Tracks From Current Year"))
1577 else if (resulttext == tr(
"Tracks With Same Title"))
1580 else if (resultid ==
"playlistoptionsmenu")
1582 if (resulttext == tr(
"Replace Tracks"))
1587 else if (resulttext == tr(
"Add Tracks"))
1592 else if (resulttext == tr(
"Play Now"))
1602 else if (resulttext == tr(
"Prefer Play Now"))
1606 else if (resulttext == tr(
"Prefer Add Tracks"))
1611 else if (resultid ==
"visualizermenu")
1613 if (dce->GetResult() >= 0)
1621 else if (resultid ==
"addplaylist")
1627 else if (resultid ==
"updateplaylist")
1651 if (
m_currentTrack >= 0 && m_currentTrack < m_currentPlaylist->GetCount())
1661 if (trackNo >= 0 && trackNo < m_currentPlaylist->GetCount())
1761 mdata->
toMap(metadataMap);
1764 QVariant::fromValue(mdata));
1766 item->SetTextFromMap(metadataMap);
1771 item->SetFontState(
"running");
1772 item->DisplayState(
"playing",
"playstate");
1776 item->SetFontState(
"normal");
1777 item->DisplayState(
"default",
"playstate");
1820 if (mdata && mdata->ID() == trackID)
1823 mdata->
toMap(metadataMap);
1826 item->
DisplayState(QString(
"%1").arg(mdata->Rating()),
"ratingstate");
1838 if (mdata && mdata->ID() == trackID)
1841 mdata->
toMap(metadataMap);
1869 if (mdata && mdata->ID() == trackID)
1875 if (artFile.isEmpty())
1882 item->
SetImage(mdata->getAlbumArtFile());
1883 item->
SetImage(mdata->getAlbumArtFile(),
"coverart");
1908 if (mdata && mdata->ID() == trackID)
1954 if (!editDialog->Create())
1969 metadata.
toMap(metadataMap);
1970 metadata.
toMap(metadataMap,
"next");
1997 mdata->
toMap(metadataMap);
2002 nextMetadata->
toMap(metadataMap,
"next");
2074 if (mdata && item->
GetText() ==
" ")
2079 if (artFile.isEmpty())
2086 item->
SetImage(mdata->getAlbumArtFile());
2087 item->
SetImage(mdata->getAlbumArtFile(),
"coverart");
2092 mdata->toMap(metadataMap);
2095 item->
DisplayState(QString(
"%1").arg(mdata->Rating()),
"ratingstate");
2122 QVariant::fromValue(mdata));
2124 item->SetText(mdata->
Artist() + mdata->
Album() + mdata->
Title(),
"**search**");
2125 item->SetFontState(
"normal");
2126 item->DisplayState(
"default",
"playstate");
2133 item->SetFontState(
"running");
2134 item->DisplayState(
"playing",
"playstate");
2138 item->SetFontState(
"idle");
2139 item->DisplayState(
"paused",
"playstate");
2143 item->SetFontState(
"normal");
2144 item->DisplayState(
"stopped",
"playstate");
2163 for (
int x = playedList.count(); x > 0; x--)
2167 QVariant::fromValue(mdata));
2170 mdata->
toMap(metadataMap);
2171 item->SetTextFromMap(metadataMap);
2173 item->SetFontState(
"normal");
2174 item->DisplayState(
"default",
"playstate");
2190 QString playlistcurrent = QLocale::system().toString(
m_currentTrack + 1);
2191 QString playlisttotal = QLocale::system().toString(trackCount);
2193 map[
"playlistposition"] = tr(
"%1 of %2").arg(playlistcurrent, playlisttotal);
2194 map[
"playlistcurrent"] = playlistcurrent;
2195 map[
"playlistcount"] = playlisttotal;
2200 if (playlistName ==
"default_playlist_storage")
2201 playlistName = tr(
"Default Playlist");
2202 else if (playlistName ==
"stream_playlist")
2203 playlistName = tr(
"Stream Playlist");
2204 map[
"playlistname"] = playlistName;
2211 map[
"playlistposition"] =
"";
2212 map[
"playlistcurrent"] =
"";
2213 map[
"playlistcount"] =
"";
2214 map[
"playlisttime"] =
"";
2215 map[
"playlistplayedtime"] =
"";
2216 map[
"playlisttotaltime"] =
"";
2217 map[
"playlistname"] =
"";
2218 map[
"playedtime"] =
"";
2219 map[
"totaltime"] =
"";
2220 map[
"trackspeed"] =
"";
2231 if (exTime > -1s && maxTime <= 0s)
2233 (exTime >= 1h) ?
"H:mm:ss" :
"mm:ss");
2235 QString fmt = (maxTime >= 1h) ?
"H:mm:ss" :
"mm:ss";
2239 QString speedstr =
"";
2240 if (lroundf(speed * 100.0F) != 100.0F)
2242 speedstr = QString(
"%1").arg(speed);
2243 out +=
", " + speedstr +
"X";
2267 auto *menuPopup =
new MythDialogBox(mainMenu, popupStack,
"actionmenu");
2269 if (menuPopup->Create())
2277 QString label = tr(
"View Actions");
2283 menu->AddItem(tr(
"Switch To Gallery View"));
2287 menu->AddItem(tr(
"Switch To Tree View"));
2293 menu->AddItem(tr(
"Browse Music Library"));
2296 QStringList screenList;
2300 screenList.append(screen->objectName());
2301 screen = qobject_cast<MusicCommon*>(screen)->m_parentScreen;
2304 if (!screenList.contains(
"searchview") && !screenList.contains(
"streamview"))
2305 menu->AddItem(tr(
"Search for Music"));
2307 if (!screenList.contains(
"visualizerview"))
2308 menu->AddItem(tr(
"Fullscreen Visualizer"));
2310 if (!screenList.contains(
"lyricsview"))
2311 menu->AddItem(tr(
"Lyrics"));
2320 QString label = tr(
"Actions");
2326 menu->AddItem(tr(
"Search List..."));
2348 QString label = tr(
"Playlist Options");
2350 auto *
menu =
new MythMenu(label,
this,
"playlistmenu");
2354 menu->AddItem(tr(
"Sync List With Current Track"));
2355 menu->AddItem(tr(
"Remove Selected Track"));
2358 menu->AddItem(tr(
"Remove All Tracks"));
2362 menu->AddItem(tr(
"Save To New Playlist"));
2363 menu->AddItem(tr(
"Save To Existing Playlist"));
2366 menu->AddItem(tr(
"Switch To Select Mode"));
2368 menu->AddItem(tr(
"Switch To Move Mode"));
2376 QString label = tr(
"Exiting Music Player.\n\n"
2377 "Do you want to continue playing in the background?");
2389 menu->SetReturnEvent(
this,
"exitmenu");
2391 menu->AddButton(tr(
"No - Exit, Stop Playing"));
2392 menu->AddButton(tr(
"Yes - Exit, Continue Playing"));
2393 menu->AddButton(tr(
"Cancel"));
2400 QString label = tr(
"Player Actions");
2404 menu->AddItem(tr(
"Change Volume"));
2405 menu->AddItem(tr(
"Mute"));
2406 menu->AddItem(tr(
"Previous Track"));
2407 menu->AddItem(tr(
"Next Track"));
2411 menu->AddItem(tr(
"Jump Back"));
2412 menu->AddItem(tr(
"Jump Forward"));
2415 menu->AddItem(tr(
"Play"));
2416 menu->AddItem(tr(
"Stop"));
2419 menu->AddItem(tr(
"Pause"));
2426 QString label = tr(
"Set Repeat Mode");
2441 QString label = tr(
"Set Shuffle Mode");
2458 QString label = tr(
"Quick Playlists");
2460 auto *
menu =
new MythMenu(label,
this,
"quickplaylistmenu");
2462 menu->AddItem(tr(
"All Tracks"));
2465 menu->AddItem(tr(
"From CD"));
2469 menu->AddItem(tr(
"Tracks By Current Artist"));
2470 menu->AddItem(tr(
"Tracks From Current Album"));
2471 menu->AddItem(tr(
"Tracks From Current Genre"));
2472 menu->AddItem(tr(
"Tracks From Current Year"));
2473 menu->AddItem(tr(
"Tracks With Same Title"));
2481 QString label = tr(
"Choose Visualizer");
2483 auto *
menu =
new MythMenu(label,
this,
"visualizermenu");
2495 QString label = tr(
"Add to Playlist Options");
2497 auto *
menu =
new MythMenu(label,
this,
"playlistoptionsmenu");
2501 menu->AddItem(tr(
"Play Now"));
2502 menu->AddItem(tr(
"Add Tracks"));
2503 menu->AddItem(tr(
"Replace Tracks"));
2504 menu->AddItem(tr(
"Prefer Add Tracks"));
2508 menu->AddItem(tr(
"Add Tracks"));
2509 menu->AddItem(tr(
"Play Now"));
2510 menu->AddItem(tr(
"Replace Tracks"));
2511 menu->AddItem(tr(
"Prefer Play Now"));
2519 m_whereClause =
"ORDER BY music_artists.artist_name, album_name, disc_number, track";
2548 m_whereClause =
"WHERE music_artists.artist_name = " + value +
2549 " ORDER BY album_name, disc_number, track";
2562 " ORDER BY disc_number, track";
2575 " ORDER BY music_artists.artist_name, album_name, disc_number, track";
2588 " ORDER BY music_artists.artist_name, album_name, disc_number, track";
2601 " ORDER BY music_artists.artist_name, album_name, disc_number, track";
2630 if (menuPopup->Create())
2638 int curTrackID = -1;
2668 if (
nullptr == playlist)
2728 bool foundTrack =
false;
2731 if (
nullptr == playlist)
2807 QStringList actions;
2810 for (
int i = 0; i < actions.size() && !handled; i++)
2812 const QString&
action = actions[i];
2906 QStringList actions;
2909 for (
int i = 0; i < actions.size() && !handled; i++)
2911 const 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.
@ PLAYMODE_TRACKSPLAYLIST
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)
@ MV_PLAYLISTEDITORGALLERY
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
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.
static eu8 clamp(eu8 value, eu8 low, eu8 high)
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
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)