MythTV  master
proginfolist.cpp
Go to the documentation of this file.
1 
2  // MythTV
4 #include "libmythbase/mythdate.h"
5 
6 // MythFrontend
7 #include "proginfolist.h"
8 
14 bool ProgInfoList::Create(bool focusable)
15 {
16  bool err = false;
17  UIUtilE::Assign(&m_screen, m_btnList, "infolist", &err);
18  if (err)
19  return false;
20 
21  m_btnList->SetVisible(true);
22 
23  m_btnList->SetCanTakeFocus(focusable);
24  return true;
25 }
26 
32 {
33  // Only focusable lists have an extra 'full' state as they can
34  // be scrolled to view it all
35  if (m_btnList->CanTakeFocus())
36  {
37  // Start showing basic info then toggle between basic/full
39  }
40  else if (m_infoVisible == kLevel1) // Toggle between off/basic
41  {
43  m_btnList->SetVisible(false);
44  return;
45  }
46  else
48 
49  Clear();
50 
51  m_btnList->SetVisible(true);
52 }
53 
54 
60 {
61  // Only handle event if info currently displayed
62  bool handled = (m_btnList && m_infoVisible != kNone);
64 
65  if (m_btnList)
66  m_btnList->SetVisible(false);
67 
68  return handled;
69 }
70 
71 
77 void ProgInfoList::CreateButton(const QString& name, const QString& value)
78 {
79  if (value.isEmpty())
80  return;
81 
82  auto *item = new MythUIButtonListItem(m_btnList, "");
83 
84  InfoMap infoMap;
85  infoMap.insert("name", name);
86  infoMap.insert("value", value);
87 
88  item->SetTextFromMap(infoMap);
89 }
90 
91 
97 {
98  Clear();
99 
100  // Create buttons for each data pair
101  for (const auto & pi : std::as_const(data))
102  {
103  if (m_infoVisible != kNone && std::get<2>(pi) <= m_infoVisible)
104  CreateButton(std::get<0>(pi), std::get<1>(pi));
105  }
106 
107  // Only give list focus if requested
108  if (m_btnList->CanTakeFocus())
110 }
ProgInfoList::kNone
@ kNone
Definition: proginfolist.h:17
MythUIType::CanTakeFocus
bool CanTakeFocus(void) const
Return if this widget can accept input focus.
Definition: mythuitype.cpp:351
ProgInfoList::kLevel1
@ kLevel1
Definition: proginfolist.h:17
mythcoreutil.h
MythUIType::SetCanTakeFocus
void SetCanTakeFocus(bool set=true)
Set whether this widget can take focus.
Definition: mythuitype.cpp:359
proginfolist.h
The info/details overlay.
InfoMap
QHash< QString, QString > InfoMap
Definition: mythtypes.h:15
MythUIButtonListItem
Definition: mythuibuttonlist.h:41
mythdate.h
ProgInfoList::Create
bool Create(bool focusable)
Initialise buttonlist from XML.
Definition: proginfolist.cpp:14
ProgInfoList::Toggle
void Toggle(void)
Toggle infolist state. Focusable widgets toggle between Basic & Full info. Non-focusable widgets togg...
Definition: proginfolist.cpp:31
MythScreenType::SetFocusWidget
bool SetFocusWidget(MythUIType *widget=nullptr)
Definition: mythscreentype.cpp:118
ProgInfoList::kLevel2
@ kLevel2
Definition: proginfolist.h:17
ProgInfoList::m_infoVisible
VisibleLevel m_infoVisible
Info list state.
Definition: proginfolist.h:44
ProgInfoList::Display
void Display(const DataList &data)
Build list of key:value buttons.
Definition: proginfolist.cpp:96
UIUtilDisp::Assign
static bool Assign(ContainerType *container, UIType *&item, const QString &name, bool *err=nullptr)
Definition: mythuiutils.h:27
ProgInfoList::DataList
QList< DataItem > DataList
Definition: proginfolist.h:21
ProgInfoList::CreateButton
void CreateButton(const QString &name, const QString &value)
Populate a buttonlist item with name & value.
Definition: proginfolist.cpp:77
MythUIType::SetVisible
virtual void SetVisible(bool visible)
Definition: mythuitype.cpp:1110
ProgInfoList::Clear
void Clear()
Definition: proginfolist.h:37
ProgInfoList::m_btnList
MythUIButtonList * m_btnList
Overlay buttonlist.
Definition: proginfolist.h:43
ProgInfoList::Hide
bool Hide(void)
Remove infolist from display.
Definition: proginfolist.cpp:59
ProgInfoList::m_screen
MythScreenType & m_screen
Parent screen.
Definition: proginfolist.h:42