From 381e8cfb5232fbcd8764cec45ccca5681b528272 Mon Sep 17 00:00:00 2001 From: David Hampton Date: Fri, 24 Apr 2020 13:40:11 -0400 Subject: [PATCH] Convert to std::array and std::string. (mythfrontend) --- .../mythfrontend/audiogeneralsettings.cpp | 8 +- .../mythfrontend/audiogeneralsettings.h | 2 +- .../programs/mythfrontend/globalsettings.cpp | 4 +- mythtv/programs/mythfrontend/guidegrid.h | 2 +- mythtv/programs/mythfrontend/playbackbox.cpp | 79 +++++++++++-------- mythtv/programs/mythfrontend/playbackbox.h | 4 +- mythtv/programs/mythfrontend/progfind.cpp | 49 +++--------- mythtv/programs/mythfrontend/progfind.h | 18 ++--- mythtv/programs/mythfrontend/proglist.cpp | 4 +- 9 files changed, 75 insertions(+), 95 deletions(-) diff --git a/mythtv/programs/mythfrontend/audiogeneralsettings.cpp b/mythtv/programs/mythfrontend/audiogeneralsettings.cpp index c6c84719f68..bca1ac5c72b 100644 --- a/mythtv/programs/mythfrontend/audiogeneralsettings.cpp +++ b/mythtv/programs/mythfrontend/audiogeneralsettings.cpp @@ -650,7 +650,7 @@ void AudioTestThread::run() { RunProlog(); m_interrupted = false; - int smptelayout[7][8] = { + std::array,7> smptelayout {{ { 0, 1, 1 }, //stereo { }, //not used { }, //not used @@ -658,7 +658,7 @@ void AudioTestThread::run() { 0, 2, 1, 5, 4, 3 }, //5.1 { 0, 2, 1, 6, 4, 5, 3 }, //6.1 { 0, 2, 1, 7, 5, 4, 6, 3 }, //7.1 - }; + }}; if (m_audioOutput) { @@ -1094,7 +1094,7 @@ HostComboBoxSetting *AudioConfigSettings::MixerDevice() return gc; } -const char* AudioConfigSettings::kMixerControlControls[] = +const std::array AudioConfigSettings::kMixerControlControls {QT_TR_NOOP("PCM"), QT_TR_NOOP("Master")}; @@ -1104,7 +1104,7 @@ HostComboBoxSetting *AudioConfigSettings::MixerControl() gc->setLabel(tr("Mixer controls")); - for (auto & control : kMixerControlControls) + for (const auto & control : kMixerControlControls) gc->addSelection(tr(control), control); gc->setHelpText(tr("Changing the volume adjusts the selected mixer.")); diff --git a/mythtv/programs/mythfrontend/audiogeneralsettings.h b/mythtv/programs/mythfrontend/audiogeneralsettings.h index 0746f30c328..2a2fc526f72 100644 --- a/mythtv/programs/mythfrontend/audiogeneralsettings.h +++ b/mythtv/programs/mythfrontend/audiogeneralsettings.h @@ -111,7 +111,7 @@ class AudioConfigSettings : public GroupSetting int m_maxSpeakers {0}; QString m_lastAudioDevice; - static const char *kMixerControlControls[]; + static const std::array kMixerControlControls; }; class AudioDeviceComboBox : public HostComboBoxSetting diff --git a/mythtv/programs/mythfrontend/globalsettings.cpp b/mythtv/programs/mythfrontend/globalsettings.cpp index 3c06a4ca54c..7b08a3d9957 100644 --- a/mythtv/programs/mythfrontend/globalsettings.cpp +++ b/mythtv/programs/mythfrontend/globalsettings.cpp @@ -1384,7 +1384,7 @@ void PlaybackSettings::CreateNewPlaybackProfileSlot(const QString &name) static HostComboBoxSetting *PlayBoxOrdering() { - QString str[4] = + std::array str { PlaybackSettings::tr("Sort all sub-titles/multi-titles Ascending"), PlaybackSettings::tr("Sort all sub-titles/multi-titles Descending"), @@ -1405,7 +1405,7 @@ static HostComboBoxSetting *PlayBoxOrdering() gc->setLabel(PlaybackSettings::tr("Episode sort orderings")); - for (int i = 0; i < 4; ++i) + for (size_t i = 0; i < str.size(); ++i) gc->addSelection(str[i], QString::number(i)); gc->setValue(3); diff --git a/mythtv/programs/mythfrontend/guidegrid.h b/mythtv/programs/mythfrontend/guidegrid.h index dde085348d6..c0016c1a2d1 100644 --- a/mythtv/programs/mythfrontend/guidegrid.h +++ b/mythtv/programs/mythfrontend/guidegrid.h @@ -34,7 +34,7 @@ class MythUIGuideGrid; using db_chan_list_t = vector ; using db_chan_list_list_t = vector; -using ProgInfoGuideArray = ProgramInfo *[MAX_DISPLAY_CHANS][MAX_DISPLAY_TIMES]; +using ProgInfoGuideArray = array,MAX_DISPLAY_CHANS>; class JumpToChannel; class JumpToChannelListener diff --git a/mythtv/programs/mythfrontend/playbackbox.cpp b/mythtv/programs/mythfrontend/playbackbox.cpp index 45947480d54..424083a69ab 100644 --- a/mythtv/programs/mythfrontend/playbackbox.cpp +++ b/mythtv/programs/mythfrontend/playbackbox.cpp @@ -1,5 +1,8 @@ #include "playbackbox.h" +// C++ +#include + // QT #include #include @@ -198,7 +201,7 @@ static bool comp_season_rev_less_than( return comp_season_rev(a, b) < 0; } -static const uint s_artDelay[] = +static const std::array s_artDelay { kArtworkFanTimeout, kArtworkBannerTimeout, kArtworkCoverTimeout,}; static PlaybackBox::ViewMask m_viewMaskToggle(PlaybackBox::ViewMask mask, @@ -758,13 +761,16 @@ void PlaybackBox::UpdateUIListItem(ProgramInfo *pginfo, } } -static const char *disp_flags[] = { "playlist", "watched", "preserve", - "cutlist", "autoexpire", "editing", - "bookmark", "inuse", "transcoded" }; +static const std::array disp_flags +{ + "playlist", "watched", "preserve", + "cutlist", "autoexpire", "editing", + "bookmark", "inuse", "transcoded" +}; void PlaybackBox::SetItemIcons(MythUIButtonListItem *item, ProgramInfo* pginfo) { - bool disp_flag_stat[sizeof(disp_flags)/sizeof(char*)]; + std::array disp_flag_stat {}; disp_flag_stat[0] = m_playList.contains(pginfo->GetRecordingID()); disp_flag_stat[1] = pginfo->IsWatched(); @@ -776,8 +782,9 @@ void PlaybackBox::SetItemIcons(MythUIButtonListItem *item, ProgramInfo* pginfo) disp_flag_stat[7] = pginfo->IsInUsePlaying(); disp_flag_stat[8] = ((pginfo->GetProgramFlags() & FL_TRANSCODED) != 0U); - for (size_t i = 0; i < sizeof(disp_flags) / sizeof(char*); ++i) - item->DisplayState(disp_flag_stat[i] ? "yes" : "no", disp_flags[i]); + for (size_t i = 0; i < disp_flags.size(); ++i) + item->DisplayState(disp_flag_stat[i] ? "yes" : "no", + QString::fromStdString(disp_flags[i])); } void PlaybackBox::UpdateUIListItem(MythUIButtonListItem *item, @@ -3114,6 +3121,28 @@ MythMenu* PlaybackBox::createRecordingMenu(void) return menu; } +static constexpr int kMaxJobs {7}; +static const std::array kJobs +{ + JOB_TRANSCODE, + JOB_COMMFLAG, + JOB_METADATA, + JOB_USERJOB1, + JOB_USERJOB2, + JOB_USERJOB3, + JOB_USERJOB4, +}; +static const std::array kMySlots +{ // stop start + SLOT(doBeginTranscoding()), SLOT(createTranscodingProfilesMenu()), + SLOT(doBeginFlagging()), SLOT(doBeginFlagging()), + SLOT(doBeginLookup()), SLOT(doBeginLookup()), + SLOT(doBeginUserJob1()), SLOT(doBeginUserJob1()), + SLOT(doBeginUserJob2()), SLOT(doBeginUserJob2()), + SLOT(doBeginUserJob3()), SLOT(doBeginUserJob3()), + SLOT(doBeginUserJob4()), SLOT(doBeginUserJob4()), +}; + MythMenu* PlaybackBox::createJobMenu() { ProgramInfo *pginfo = GetCurrentProgram(); @@ -3126,7 +3155,7 @@ MythMenu* PlaybackBox::createJobMenu() QString command; - bool add[7] = + const std::array add { true, true, @@ -3136,17 +3165,7 @@ MythMenu* PlaybackBox::createJobMenu() !gCoreContext->GetSetting("UserJob3", "").isEmpty(), !gCoreContext->GetSetting("UserJob4", "").isEmpty(), }; - int jobs[7] = - { - JOB_TRANSCODE, - JOB_COMMFLAG, - JOB_METADATA, - JOB_USERJOB1, - JOB_USERJOB2, - JOB_USERJOB3, - JOB_USERJOB4, - }; - QString desc[14] = + const std::array desc { // stop start tr("Stop Transcoding"), tr("Begin Transcoding"), @@ -3157,18 +3176,8 @@ MythMenu* PlaybackBox::createJobMenu() "3", "3", "4", "4", }; - const char *myslots[14] = - { // stop start - SLOT(doBeginTranscoding()), SLOT(createTranscodingProfilesMenu()), - SLOT(doBeginFlagging()), SLOT(doBeginFlagging()), - SLOT(doBeginLookup()), SLOT(doBeginLookup()), - SLOT(doBeginUserJob1()), SLOT(doBeginUserJob1()), - SLOT(doBeginUserJob2()), SLOT(doBeginUserJob2()), - SLOT(doBeginUserJob3()), SLOT(doBeginUserJob3()), - SLOT(doBeginUserJob4()), SLOT(doBeginUserJob4()), - }; - for (size_t i = 0; i < sizeof(add) / sizeof(bool); i++) + for (size_t i = 0; i < kMaxJobs; i++) { if (!add[i]) continue; @@ -3185,10 +3194,10 @@ MythMenu* PlaybackBox::createJobMenu() } bool running = JobQueue::IsJobQueuedOrRunning( - jobs[i], pginfo->GetChanID(), pginfo->GetRecordingStartTime()); + kJobs[i], pginfo->GetChanID(), pginfo->GetRecordingStartTime()); - const char *slot = myslots[i * 2 + (running ? 0 : 1)]; - MythMenu *submenu = (slot == myslots[1] ? createTranscodingProfilesMenu() : nullptr); + const char *slot = kMySlots[i * 2 + (running ? 0 : 1)]; + MythMenu *submenu = (slot == kMySlots[1] ? createTranscodingProfilesMenu() : nullptr); menu->AddItem((running) ? stop_desc : start_desc, slot, submenu); } @@ -3675,9 +3684,9 @@ ProgramInfo *PlaybackBox::FindProgramInUILists(uint recordingID, const QString& recgroup) { // LiveTV ProgramInfo's are not in the aggregated list - ProgramList::iterator _it[2] = { + std::array _it { m_progLists[tr("Live TV").toLower()].begin(), m_progLists[""].begin() }; - ProgramList::iterator _end[2] = { + std::array _end { m_progLists[tr("Live TV").toLower()].end(), m_progLists[""].end() }; if (recgroup != "LiveTV") diff --git a/mythtv/programs/mythfrontend/playbackbox.h b/mythtv/programs/mythfrontend/playbackbox.h index 94791bba3d7..9bf0744dc78 100644 --- a/mythtv/programs/mythfrontend/playbackbox.h +++ b/mythtv/programs/mythfrontend/playbackbox.h @@ -351,8 +351,8 @@ class PlaybackBox : public ScheduleCommon QString m_artHostOverride; constexpr static int kNumArtImages = 3; - MythUIImage *m_artImage[kNumArtImages] {}; - QTimer *m_artTimer[kNumArtImages] {}; + std::array m_artImage {}; + std::array m_artTimer {}; InfoMap m_currentMap; diff --git a/mythtv/programs/mythfrontend/progfind.cpp b/mythtv/programs/mythfrontend/progfind.cpp index 9fe7ee2a874..ebbb990b5b3 100644 --- a/mythtv/programs/mythfrontend/progfind.cpp +++ b/mythtv/programs/mythfrontend/progfind.cpp @@ -703,7 +703,7 @@ void ProgFinder::restoreSelectedData(QString &data) // Japanese specific program finder // japanese HIRAGANA list and more -const QChar JaProgFinder::kSearchChars[] = +const std::vector JaProgFinder::kSearchChars { // "あ", "か", "さ", "た", QChar(0x3042), QChar(0x304b), QChar(0x3055), QChar(0x305f), @@ -711,23 +711,13 @@ const QChar JaProgFinder::kSearchChars[] = QChar(0x306a), QChar(0x306f), QChar(0x307e), QChar(0x3084), // "ら", "わ", "英", "数", QChar(0x3089), QChar(0x308f), QChar(0x82f1), QChar(0x6570), - 0, }; -JaProgFinder::JaProgFinder(MythScreenStack *parentStack, bool gg, - TV *player, bool embedVideo) - : ProgFinder(parentStack, gg, player, embedVideo) -{ - for (m_numberOfSearchChars = 0; !kSearchChars[m_numberOfSearchChars].isNull(); - ++m_numberOfSearchChars) - ; -} - void JaProgFinder::initAlphabetList() { - for (int charNum = 0; charNum < m_numberOfSearchChars; ++charNum) + for (auto search_char : kSearchChars) { - new MythUIButtonListItem(m_alphabetList, QString(kSearchChars[charNum])); + new MythUIButtonListItem(m_alphabetList, QString(search_char)); } } @@ -818,7 +808,7 @@ void JaProgFinder::restoreSelectedData(QString& data) // Hebrew specific program finder // Hebrew alphabet list and more -const QChar HeProgFinder::kSearchChars[] = +const std::vector HeProgFinder::kSearchChars { // "א", "ב", "ג", "ד", QChar(0x5d0), QChar(0x5d1), QChar(0x5d2), QChar(0x5d3), @@ -832,23 +822,13 @@ const QChar HeProgFinder::kSearchChars[] = QChar(0x5e4), QChar(0x5e6), QChar(0x5e7), QChar(0x5e8), // "ש", "ת", "E", "#", QChar(0x5e9), QChar(0x5ea), QChar('E'), QChar('#'), - QChar(0), }; -HeProgFinder::HeProgFinder(MythScreenStack *parentStack, bool gg, - TV *player, bool embedVideo) - : ProgFinder(parentStack, gg, player, embedVideo) -{ - for (m_numberOfSearchChars = 0; !kSearchChars[m_numberOfSearchChars].isNull(); - ++m_numberOfSearchChars) - ; -} - void HeProgFinder::initAlphabetList() { - for (int charNum = 0; charNum < m_numberOfSearchChars; ++charNum) + for (auto search_char : kSearchChars) { - new MythUIButtonListItem(m_alphabetList, QString(kSearchChars[charNum])); + new MythUIButtonListItem(m_alphabetList, QString(search_char)); } } @@ -916,7 +896,7 @@ void HeProgFinder::restoreSelectedData(QString& data) // Cyrrilic specific program finder // Cyrrilic alphabet list and more -const QChar RuProgFinder::kSearchChars[] = +const std::vector RuProgFinder::kSearchChars { // "А", "Б", "В", "Г", QChar(0x410), QChar(0x411), QChar(0x412), QChar(0x413), @@ -944,23 +924,14 @@ const QChar RuProgFinder::kSearchChars[] = QChar('M'), QChar('N'), QChar('O'), QChar('P'), QChar('Q'), QChar('R'), QChar('S'), QChar('T'), QChar('U'), QChar('V'), QChar('W'), QChar('X'), - QChar('Y'), QChar('Z'), 0 + QChar('Y'), QChar('Z') }; -RuProgFinder::RuProgFinder(MythScreenStack *parentStack, bool gg, - TV *player, bool embedVideo) - : ProgFinder(parentStack, gg, player, embedVideo) -{ - for (m_numberOfSearchChars = 0; !kSearchChars[m_numberOfSearchChars].isNull(); - ++m_numberOfSearchChars) - ; -} - void RuProgFinder::initAlphabetList() { - for (int charNum = 0; charNum < m_numberOfSearchChars; ++charNum) + for (auto search_char : kSearchChars) { - new MythUIButtonListItem(m_alphabetList, kSearchChars[charNum]); + new MythUIButtonListItem(m_alphabetList, search_char); } } diff --git a/mythtv/programs/mythfrontend/progfind.h b/mythtv/programs/mythfrontend/progfind.h index d24ed6fd850..5fdb3a2c6e0 100644 --- a/mythtv/programs/mythfrontend/progfind.h +++ b/mythtv/programs/mythfrontend/progfind.h @@ -93,7 +93,8 @@ class JaProgFinder : public ProgFinder { public: explicit JaProgFinder(MythScreenStack *parentStack, bool gg = false, - TV *player = nullptr, bool embedVideo = false); + TV *player = nullptr, bool embedVideo = false) + : ProgFinder(parentStack, gg, player, embedVideo) {} protected: void initAlphabetList() override; // ProgFinder @@ -103,15 +104,15 @@ class JaProgFinder : public ProgFinder void whereClauseGetSearchData(QString &where, MSqlBindings &bindings) override; // ProgFinder private: - static const QChar kSearchChars[]; - int m_numberOfSearchChars; + static const std::vector kSearchChars; }; class HeProgFinder : public ProgFinder { public: explicit HeProgFinder(MythScreenStack *parentStack, bool gg = false, - TV *player = nullptr, bool embedVideo = false); + TV *player = nullptr, bool embedVideo = false) + : ProgFinder(parentStack, gg, player, embedVideo) {} protected: void initAlphabetList() override; // ProgFinder @@ -121,15 +122,15 @@ class HeProgFinder : public ProgFinder void whereClauseGetSearchData(QString &where, MSqlBindings &bindings) override; // ProgFinder private: - static const QChar kSearchChars[]; - int m_numberOfSearchChars; + static const std::vector kSearchChars; }; /////////////////////////////// class RuProgFinder : public ProgFinder { public: explicit RuProgFinder(MythScreenStack *parentStack, bool gg = false, - TV *player = nullptr, bool embedVideo = false); + TV *player = nullptr, bool embedVideo = false) + : ProgFinder(parentStack, gg, player, embedVideo) {} protected: void initAlphabetList() override; // ProgFinder @@ -139,8 +140,7 @@ class RuProgFinder : public ProgFinder void whereClauseGetSearchData(QString &where, MSqlBindings &bindings) override; // ProgFinder private: - static const QChar kSearchChars[]; - int m_numberOfSearchChars; + static const std::vector kSearchChars; }; /////////////////////////////////// diff --git a/mythtv/programs/mythfrontend/proglist.cpp b/mythtv/programs/mythfrontend/proglist.cpp index 74e45e5e136..d5f0a0ccc8f 100644 --- a/mythtv/programs/mythfrontend/proglist.cpp +++ b/mythtv/programs/mythfrontend/proglist.cpp @@ -537,7 +537,7 @@ bool ProgLister::PowerStringToSQL( return false; }; - static const QString kBindingList[6] = + static const std::array kBindingList { ":POWERTITLE", ":POWERSUB", @@ -547,7 +547,7 @@ bool ProgLister::PowerStringToSQL( ":POWERCALLSIGN", }; - static const QString kOutputList[6] = + static const std::array kOutputList { "program.title LIKE :POWERTITLE ", "program.subtitle LIKE :POWERSUB ",