ROVLib2
RISCOSC++applicationdevelopmentlibrary
menuitem.cpp
1 #include "menuitem.h"
2 #include "menu.h"
3 #include "window.h"
4 #include <string.h>
5 
6 namespace rov2
7 {
8 
10  m_bTicked(false),
11  m_bDotted(false),
12  m_pmSubmenu(NULL),
13  m_pwWindow(NULL)
14 {
15 }
16 
18 {
19 }
20 
21 tCoordinate
23 {
24  ::memset(pmiItem, sizeof(tMenuItem), 1);
25  pmiItem->uiMenuFlags = 0;
26  pmiItem->mfMenuFlags.mfDisplayTick = m_bTicked ? 1 : 0;
27  pmiItem->mfMenuFlags.mfDottedLine = m_bDotted ? 1 : 0;
28  pmiItem->mSubmenu = (tMenu*) -1;
29 
30  return 128;
31 }
32 
33 eMenuHandled
34 CMenuItem::Clicked(const bool kbAdjust, void* pContext)
35 {
36  if (kbAdjust)
37  {
39  return mhHandledKeepOpen;
40  }
41 
42  return mhUnhandled;
43 }
44 
45 void
47 {
48  m_pwWindow = pwWindow;
49 }
50 
51 void
53 {
54  m_pmSubmenu = pmMenu;
55 }
56 
57 CTextMenuItem::CTextMenuItem(const std::string& rksText)
58  : m_sText(rksText)
59 {
60 }
61 
62 tCoordinate
64 {
65  CMenuItem::PopulateMenu(pmiItem);
66  pmiItem->uiMenuIconFlags = 0x07000001;
67  if (m_sText.size() < 12)
68  {
69  ::strcpy(pmiItem->idMenuIconData.caIconData, m_sText.c_str());
70  }
71  else
72  {
73  pmiItem->ifMenuIconFlags.ifDataIndirected = 1;
74  pmiItem->idMenuIconData.indirectedText.iBufferLength = m_sText.size();
75  pmiItem->idMenuIconData.indirectedText.pcaTextbuffer = const_cast<char*>(m_sText.c_str());
76  pmiItem->idMenuIconData.indirectedText.kpcaValidationString = (char*)-1;
77  }
78 
79  if (m_pmSubmenu != NULL)
80  {
82  pmiItem->mSubmenu = &(m_pmSubmenu->GetMenu()->mMenu);
83  }
84  else if (m_pwWindow != NULL)
85  {
86  pmiItem->whWindow = m_pwWindow->Handle();
87  }
88 
89  return m_sText.size() * 16 + 32;
90 }
91 
92 }
CTextMenuItem(const std::string &rksText)
Definition: menuitem.cpp:57
CWindow * m_pwWindow
Definition: menuitem.h:69
tMenu mMenu
Definition: menu.h:23
const tCheckedMenu * GetMenu()
Definition: menu.h:61
virtual eMenuHandled Clicked(const bool bAdjust, void *pContext)
Definition: menuitem.cpp:34
bool m_bTicked
Definition: menuitem.h:30
virtual tCoordinate PopulateMenu(tMenuItem *pmiItem)
Definition: menuitem.cpp:63
const tWindowHandle Handle() const
Definition: window.h:35
CMenu * m_pmSubmenu
Definition: menuitem.h:66
bool m_bDotted
Definition: menuitem.h:33
void AttachSubmenu(CMenu *pmMenu)
Definition: menuitem.cpp:52
virtual tLocation PopulateMenu()
Definition: menu.cpp:57
virtual tCoordinate PopulateMenu(tMenuItem *pmiItem)
Definition: menuitem.cpp:22