Go to the documentation of this file.
6 #include <QApplication>
49 m_parentScreen(parentScreen)
236 LOG(VB_GENERAL, LOG_ERR, QString(
"MusicCommon: Got a bad saved visualizer: %1").arg(
m_currentVisual));
453 if (plview->Create())
471 auto *oldView = qobject_cast<PlaylistEditorView *>(
this);
473 oldView->saveTreePosition();
479 if (pleview->Create())
500 auto *oldView = qobject_cast<PlaylistEditorView *>(
this);
502 oldView->saveTreePosition();
506 auto *pleview =
new PlaylistEditorView(mainStack, parentScreen,
"gallery", restorePos);
508 if (pleview->Create())
526 auto *sview =
new SearchView(mainStack,
this);
560 auto *lview =
new LyricsView(mainStack,
this);
589 bool handled =
false;
606 for (
int i = 0; i < actions.size() && !handled; i++)
608 const QString&
action = actions[i];
635 else if (
action ==
"DOWN")
670 if (exit_action ==
"stop")
676 else if (exit_action ==
"play")
687 else if (
action ==
"THMBUP")
691 else if (
action ==
"THMBDOWN")
695 else if (
action ==
"NEXTTRACK")
702 else if (
action ==
"PREVTRACK")
709 else if (
action ==
"FFWD")
719 else if (
action ==
"RWND")
729 else if (
action ==
"PAUSE")
752 else if (
action ==
"PLAY")
759 else if (
action ==
"STOP")
767 else if (
action ==
"CYCLEVIS")
771 else if (
action ==
"BLANKSCR")
781 else if (
action ==
"VOLUMEDOWN")
785 else if (
action ==
"VOLUMEUP")
789 else if (
action ==
"SPEEDDOWN")
793 else if (
action ==
"SPEEDUP")
797 else if (
action ==
"MUTE")
801 else if (
action ==
"TOGGLEUPMIX")
839 else if (
action ==
"MENU")
843 else if (
action ==
"REFRESH")
848 else if (
action ==
"MARK")
899 else if (
action ==
"TOGGLESHUFFLE")
904 else if (
action ==
"TOGGLEREPEAT")
974 QString status = QString(
"%1%").arg((
int)(100.0 / ((
double)maxSize / (
double)available)));
987 int percentplayed = 1;
1046 unsigned int next_visualizer = 0;
1097 lcd->switchToTime();
1169 decoder->
seek(pos.count());
1193 float percent_heard =
m_maxTime <= 0s ? 0.0F : ((float)pos.count() /
1199 if (lcd_time_string.length() > lcd->getLCDWidth())
1200 lcd_time_string.remove(
' ');
1202 lcd->setMusicProgress(lcd_time_string, percent_heard);
1234 QString statusString;
1242 statusString = tr(
"Playing stream.");
1271 statusString = tr(
"Buffering stream.");
1275 statusString = tr(
"Stream paused.");
1304 std::chrono::seconds rs = 0s;
1328 0.0F:((float)rs.count() / (float)curMeta->
Length().count()) * 1000.0F;
1330 QString lcd_time_string = time_string;
1333 if (time_string.length() > lcd->getLCDWidth())
1334 lcd_time_string.remove(
' ');
1336 lcd->setMusicProgress(lcd_time_string, percent_heard);
1340 QString info_string;
1343 if (oe->bitrate() < 2000)
1345 info_string = QString(
"%1 "+tr(
"kbps")+
" %2 "+ tr(
"kHz")+
" %3 "+ tr(
"ch"))
1347 .arg(
static_cast<double>(oe->frequency()) / 1000.0,0,
'f',1,QChar(
'0'))
1348 .arg(oe->channels() > 1 ?
"2" :
"1");
1352 info_string = QString(
"%1 "+ tr(
"kHz")+
" %2 "+ tr(
"ch"))
1353 .arg(
static_cast<double>(oe->frequency()) / 1000.0,0,
'f',1,QChar(
'0'))
1354 .arg(oe->channels() > 1 ?
"2" :
"1");
1370 statusString = tr(
"Stream stopped.");
1397 if ((dce ==
nullptr) || (dce->GetResult() < 0))
1400 QString resultid = dce->
GetId();
1401 QString resulttext = dce->GetResultText();
1403 if (resultid ==
"mainmenu")
1405 if (resulttext == tr(
"Fullscreen Visualizer"))
1407 else if (resulttext == tr(
"Playlist Editor") ||
1408 resulttext == tr(
"Browse Music Library"))
1415 else if (resulttext == tr(
"Search for Music"))
1419 else if (resulttext == tr(
"Switch To Gallery View"))
1423 else if (resulttext == tr(
"Switch To Tree View"))
1427 else if (resulttext == tr(
"Lyrics"))
1432 else if (resultid ==
"submenu")
1434 if (resulttext == tr(
"Search List..."))
1437 else if (resultid ==
"playlistmenu")
1439 if (resulttext == tr(
"Sync List With Current Track"))
1443 else if (resulttext == tr(
"Remove Selected Track"))
1453 else if (resulttext == tr(
"Remove All Tracks"))
1461 else if (resulttext == tr(
"Save To New Playlist"))
1463 QString message = tr(
"Enter new playlist name");
1469 if (inputdialog->Create())
1471 inputdialog->SetReturnEvent(
this,
"addplaylist");
1479 else if (resulttext == tr(
"Save To Existing Playlist"))
1481 QString message = tr(
"Select the playlist to save to");
1488 if (searchdialog->Create())
1490 searchdialog->SetReturnEvent(
this,
"updateplaylist");
1494 else if (resulttext == tr(
"Switch To Move Mode"))
1502 else if (resulttext == tr(
"Switch To Select Mode"))
1519 else if (resultid ==
"repeatmenu")
1521 int mode = dce->GetData().toInt();
1525 else if (resultid ==
"shufflemenu")
1527 int mode = dce->GetData().toInt();
1531 else if (resultid ==
"exitmenu")
1533 if (resulttext == tr(
"No - Exit, Stop Playing"))
1539 else if (resulttext == tr(
"Yes - Exit, Continue Playing"))
1544 else if (resultid ==
"playermenu")
1546 if (resulttext == tr(
"Change Volume"))
1548 else if (resulttext == tr(
"Mute"))
1550 else if (resulttext == tr(
"Previous Track"))
1552 else if (resulttext == tr(
"Next Track"))
1554 else if (resulttext == tr(
"Jump Back"))
1556 else if (resulttext == tr(
"Jump Forward"))
1558 else if (resulttext == tr(
"Play"))
1560 else if (resulttext == tr(
"Stop"))
1562 else if (resulttext == tr(
"Pause"))
1565 else if (resultid ==
"quickplaylistmenu")
1567 if (resulttext == tr(
"All Tracks"))
1569 else if (resulttext == tr(
"From CD"))
1571 else if (resulttext == tr(
"Tracks By Current Artist"))
1573 else if (resulttext == tr(
"Tracks From Current Genre"))
1575 else if (resulttext == tr(
"Tracks From Current Album"))
1577 else if (resulttext == tr(
"Tracks From Current Year"))
1579 else if (resulttext == tr(
"Tracks With Same Title"))
1582 else if (resultid ==
"playlistoptionsmenu")
1584 if (resulttext == tr(
"Replace Tracks"))
1589 else if (resulttext == tr(
"Add Tracks"))
1594 else if (resulttext == tr(
"Play Now"))
1604 else if (resulttext == tr(
"Prefer Play Now"))
1608 else if (resulttext == tr(
"Prefer Add Tracks"))
1613 else if (resultid ==
"visualizermenu")
1615 if (dce->GetResult() >= 0)
1623 else if (resultid ==
"addplaylist")
1629 else if (resultid ==
"updateplaylist")
1653 if (
m_currentTrack >= 0 && m_currentTrack < m_currentPlaylist->GetCount())
1663 if (trackNo >= 0 && trackNo < m_currentPlaylist->GetCount())
1763 mdata->
toMap(metadataMap);
1766 QVariant::fromValue(mdata));
1768 item->SetTextFromMap(metadataMap);
1773 item->SetFontState(
"running");
1774 item->DisplayState(
"playing",
"playstate");
1778 item->SetFontState(
"normal");
1779 item->DisplayState(
"default",
"playstate");
1822 if (mdata && mdata->ID() == trackID)
1825 mdata->
toMap(metadataMap);
1828 item->
DisplayState(QString(
"%1").arg(mdata->Rating()),
"ratingstate");
1840 if (mdata && mdata->ID() == trackID)
1843 mdata->
toMap(metadataMap);
1871 if (mdata && mdata->ID() == trackID)
1877 if (artFile.isEmpty())
1884 item->
SetImage(mdata->getAlbumArtFile());
1885 item->
SetImage(mdata->getAlbumArtFile(),
"coverart");
1910 if (mdata && mdata->ID() == trackID)
1956 if (!editDialog->Create())
1971 metadata.
toMap(metadataMap);
1972 metadata.
toMap(metadataMap,
"next");
1999 mdata->
toMap(metadataMap);
2004 nextMetadata->
toMap(metadataMap,
"next");
2076 if (mdata && item->
GetText() ==
" ")
2081 if (artFile.isEmpty())
2088 item->
SetImage(mdata->getAlbumArtFile());
2089 item->
SetImage(mdata->getAlbumArtFile(),
"coverart");
2094 mdata->toMap(metadataMap);
2097 item->
DisplayState(QString(
"%1").arg(mdata->Rating()),
"ratingstate");
2124 QVariant::fromValue(mdata));
2126 item->SetText(mdata->
Artist() + mdata->
Album() + mdata->
Title(),
"**search**");
2127 item->SetFontState(
"normal");
2128 item->DisplayState(
"default",
"playstate");
2135 item->SetFontState(
"running");
2136 item->DisplayState(
"playing",
"playstate");
2140 item->SetFontState(
"idle");
2141 item->DisplayState(
"paused",
"playstate");
2145 item->SetFontState(
"normal");
2146 item->DisplayState(
"stopped",
"playstate");
2165 for (
int x = playedList.count(); x > 0; x--)
2169 QVariant::fromValue(mdata));
2172 mdata->
toMap(metadataMap);
2173 item->SetTextFromMap(metadataMap);
2175 item->SetFontState(
"normal");
2176 item->DisplayState(
"default",
"playstate");
2192 QString playlistcurrent = QLocale::system().toString(
m_currentTrack + 1);
2193 QString playlisttotal = QLocale::system().toString(trackCount);
2195 map[
"playlistposition"] = tr(
"%1 of %2").arg(playlistcurrent, playlisttotal);
2196 map[
"playlistcurrent"] = playlistcurrent;
2197 map[
"playlistcount"] = playlisttotal;
2202 if (playlistName ==
"default_playlist_storage")
2203 playlistName = tr(
"Default Playlist");
2204 else if (playlistName ==
"stream_playlist")
2205 playlistName = tr(
"Stream Playlist");
2206 map[
"playlistname"] = playlistName;
2213 map[
"playlistposition"] =
"";
2214 map[
"playlistcurrent"] =
"";
2215 map[
"playlistcount"] =
"";
2216 map[
"playlisttime"] =
"";
2217 map[
"playlistplayedtime"] =
"";
2218 map[
"playlisttotaltime"] =
"";
2219 map[
"playlistname"] =
"";
2220 map[
"playedtime"] =
"";
2221 map[
"totaltime"] =
"";
2222 map[
"trackspeed"] =
"";
2233 if (exTime > -1s && maxTime <= 0s)
2235 (exTime >= 1h) ?
"H:mm:ss" :
"mm:ss");
2237 QString fmt = (maxTime >= 1h) ?
"H:mm:ss" :
"mm:ss";
2241 QString speedstr =
"";
2242 if (lroundf(speed * 100.0F) != 100.0F)
2244 speedstr = QString(
"%1").arg(speed);
2245 out +=
", " + speedstr +
"X";
2269 auto *menuPopup =
new MythDialogBox(mainMenu, popupStack,
"actionmenu");
2271 if (menuPopup->Create())
2279 QString label = tr(
"View Actions");
2285 menu->AddItem(tr(
"Switch To Gallery View"));
2289 menu->AddItem(tr(
"Switch To Tree View"));
2292 QStringList screenList;
2296 screenList.append(screen->objectName());
2297 screen = qobject_cast<MusicCommon*>(screen)->m_parentScreen;
2300 if (!screenList.contains(
"visualizerview"))
2301 menu->AddItem(tr(
"Fullscreen Visualizer"));
2304 menu->AddItem(tr(
"Browse Music Library"));
2307 if (!screenList.contains(
"searchview") && !screenList.contains(
"streamview"))
2308 menu->AddItem(tr(
"Search for Music"));
2310 if (!screenList.contains(
"lyricsview"))
2311 menu->AddItem(tr(
"Lyrics"));
2321 QString label = tr(
"Actions");
2327 menu->AddItem(tr(
"Search List..."));
2349 QString label = tr(
"Playlist Options");
2351 auto *
menu =
new MythMenu(label,
this,
"playlistmenu");
2355 menu->AddItem(tr(
"Sync List With Current Track"));
2356 menu->AddItem(tr(
"Remove Selected Track"));
2359 menu->AddItem(tr(
"Remove All Tracks"));
2363 menu->AddItem(tr(
"Save To New Playlist"));
2364 menu->AddItem(tr(
"Save To Existing Playlist"));
2367 menu->AddItem(tr(
"Switch To Select Mode"));
2369 menu->AddItem(tr(
"Switch To Move Mode"));
2377 QString label = tr(
"Exiting Music Player.\n\n"
2378 "Do you want to continue playing in the background?");
2390 menu->SetReturnEvent(
this,
"exitmenu");
2392 menu->AddButton(tr(
"No - Exit, Stop Playing"));
2393 menu->AddButton(tr(
"Yes - Exit, Continue Playing"));
2394 menu->AddButton(tr(
"Cancel"));
2401 QString label = tr(
"Player Actions");
2405 menu->AddItem(tr(
"Change Volume"));
2406 menu->AddItem(tr(
"Mute"));
2407 menu->AddItem(tr(
"Previous Track"));
2408 menu->AddItem(tr(
"Next Track"));
2412 menu->AddItem(tr(
"Jump Back"));
2413 menu->AddItem(tr(
"Jump Forward"));
2416 menu->AddItem(tr(
"Play"));
2417 menu->AddItem(tr(
"Stop"));
2420 menu->AddItem(tr(
"Pause"));
2427 QString label = tr(
"Set Repeat Mode");
2442 QString label = tr(
"Set Shuffle Mode");
2459 QString label = tr(
"Quick Playlists");
2461 auto *
menu =
new MythMenu(label,
this,
"quickplaylistmenu");
2463 menu->AddItem(tr(
"All Tracks"));
2466 menu->AddItem(tr(
"From CD"));
2470 menu->AddItem(tr(
"Tracks By Current Artist"));
2471 menu->AddItem(tr(
"Tracks From Current Album"));
2472 menu->AddItem(tr(
"Tracks From Current Genre"));
2473 menu->AddItem(tr(
"Tracks From Current Year"));
2474 menu->AddItem(tr(
"Tracks With Same Title"));
2482 QString label = tr(
"Choose Visualizer");
2484 auto *
menu =
new MythMenu(label,
this,
"visualizermenu");
2496 QString label = tr(
"Add to Playlist Options");
2498 auto *
menu =
new MythMenu(label,
this,
"playlistoptionsmenu");
2502 menu->AddItem(tr(
"Play Now"));
2503 menu->AddItem(tr(
"Add Tracks"));
2504 menu->AddItem(tr(
"Replace Tracks"));
2505 menu->AddItem(tr(
"Prefer Add Tracks"));
2509 menu->AddItem(tr(
"Add Tracks"));
2510 menu->AddItem(tr(
"Play Now"));
2511 menu->AddItem(tr(
"Replace Tracks"));
2512 menu->AddItem(tr(
"Prefer Play Now"));
2520 m_whereClause =
"ORDER BY music_artists.artist_name, album_name, disc_number, track";
2549 m_whereClause =
"WHERE music_artists.artist_name = " + value +
2550 " ORDER BY album_name, disc_number, track";
2563 " ORDER BY disc_number, track";
2576 " ORDER BY music_artists.artist_name, album_name, disc_number, track";
2589 " ORDER BY music_artists.artist_name, album_name, disc_number, track";
2602 " ORDER BY music_artists.artist_name, album_name, disc_number, track";
2631 if (menuPopup->Create())
2639 int curTrackID = -1;
2669 if (
nullptr == playlist)
2729 bool foundTrack =
false;
2732 if (
nullptr == playlist)
2808 QStringList actions;
2811 for (
int i = 0; i < actions.size() && !handled; i++)
2813 const QString&
action = actions[i];
2907 QStringList actions;
2910 for (
int i = 0; i < actions.size() && !handled; i++)
2912 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)