EVENT_RESULT CGUIScrollBar::OnMouseEvent(const CPoint &point, const CMouseEvent &event) { if (event.m_id == ACTION_MOUSE_DRAG) { if (event.m_state == 1) { // we want exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, GetID(), GetParentID()); SendWindowMessage(msg); } else if (event.m_state == 3) { // we're done with exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, 0, GetParentID()); SendWindowMessage(msg); } SetFromPosition(point); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_LEFT_CLICK && m_guiBackground.HitTest(point)) { SetFromPosition(point); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_WHEEL_UP) { Move(-1); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_WHEEL_DOWN) { Move(1); return EVENT_RESULT_HANDLED; } return EVENT_RESULT_UNHANDLED; }
void CGUISpinControl::PageUp() { switch (m_iType) { case SPIN_CONTROL_TYPE_INT: { if (m_iValue - 10 >= m_iStart) m_iValue -= 10; else m_iValue = m_iStart; CGUIMessage msg(GUI_MSG_CLICKED, GetID(), GetParentID()); SendWindowMessage(msg); return ; } break; case SPIN_CONTROL_TYPE_PAGE: ChangePage(-10); break; case SPIN_CONTROL_TYPE_TEXT: { if (m_iValue - 10 >= 0) m_iValue -= 10; else m_iValue = 0; CGUIMessage msg(GUI_MSG_CLICKED, GetID(), GetParentID()); SendWindowMessage(msg); return ; } break; } }
EVENT_RESULT CGUISliderControl::OnMouseEvent(const CPoint &point, const CMouseEvent &event) { m_dragging = false; if (event.m_id == ACTION_MOUSE_DRAG) { m_dragging = true; bool guessSelector = false; if (event.m_state == 1) { // grab exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, GetID(), GetParentID()); SendWindowMessage(msg); guessSelector = true; } else if (event.m_state == 3) { // release exclusive access m_dragging = false; CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, 0, GetParentID()); SendWindowMessage(msg); } SetFromPosition(point, guessSelector); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_LEFT_CLICK && m_guiBackground.HitTest(point)) { SetFromPosition(point, true); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_WHEEL_UP) { Move(10); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_WHEEL_DOWN) { Move(-10); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_NOTIFY) { return EVENT_RESULT_PAN_HORIZONTAL_WITHOUT_INERTIA; } else if (event.m_id == ACTION_GESTURE_BEGIN) { // grab exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, GetID(), GetParentID()); SendWindowMessage(msg); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_PAN) { // do the drag SetFromPosition(point); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_END) { // release exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, 0, GetParentID()); SendWindowMessage(msg); return EVENT_RESULT_HANDLED; } return EVENT_RESULT_UNHANDLED; }
void CGUISpinControl::PageDown() { switch (m_iType) { case SPIN_CONTROL_TYPE_INT: { if (m_iValue + 10 <= m_iEnd) m_iValue += 10; else m_iValue = m_iEnd; CGUIMessage msg(GUI_MSG_CLICKED, GetID(), GetParentID()); SendWindowMessage(msg); return ; } break; case SPIN_CONTROL_TYPE_PAGE: ChangePage(10); break; case SPIN_CONTROL_TYPE_TEXT: { if (m_iValue + 10 < (int)m_vecLabels.size() ) m_iValue += 10; CGUIMessage msg(GUI_MSG_CLICKED, GetID(), GetParentID()); SendWindowMessage(msg); } break; } }
EVENT_RESULT CGUIBaseContainer::OnMouseEvent(const CPoint &point, const CMouseEvent &event) { if (event.m_id >= ACTION_MOUSE_LEFT_CLICK && event.m_id <= ACTION_MOUSE_DOUBLE_CLICK) { if (SelectItemFromPoint(point - CPoint(m_posX, m_posY))) { OnClick(event.m_id); return EVENT_RESULT_HANDLED; } } else if (event.m_id == ACTION_MOUSE_WHEEL_UP) { Scroll(-1); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_WHEEL_DOWN) { Scroll(1); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_NOTIFY) { return (m_orientation == HORIZONTAL) ? EVENT_RESULT_PAN_HORIZONTAL : EVENT_RESULT_PAN_VERTICAL; } else if (event.m_id == ACTION_GESTURE_BEGIN) { // grab exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, GetID(), GetParentID()); SendWindowMessage(msg); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_PAN) { // do the drag and validate our offset (corrects for end of scroll) m_scroller.SetValue(m_scroller.GetValue() - ((m_orientation == HORIZONTAL) ? event.m_offsetX : event.m_offsetY)); float size = (m_layout) ? m_layout->Size(m_orientation) : 10.0f; int offset = (int)MathUtils::round_int(m_scroller.GetValue() / size); m_lastScrollStartTimer.Stop(); m_scrollTimer.Start(); SetOffset(offset); ValidateOffset(); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_END) { // release exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, 0, GetParentID()); SendWindowMessage(msg); m_scrollTimer.Stop(); // and compute the nearest offset from this and scroll there float size = (m_layout) ? m_layout->Size(m_orientation) : 10.0f; float offset = m_scroller.GetValue() / size; int toOffset = (int)MathUtils::round_int(offset); if (toOffset < offset) SetOffset(toOffset+1); else SetOffset(toOffset-1); ScrollToOffset(toOffset); return EVENT_RESULT_HANDLED; } return EVENT_RESULT_UNHANDLED; }
EVENT_RESULT CGUIScrollBar::OnMouseEvent(const CPoint &point, const CMouseEvent &event) { if (event.m_id == ACTION_MOUSE_DRAG) { if (event.m_state == 1) { // we want exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, GetID(), GetParentID()); SendWindowMessage(msg); } else if (event.m_state == 3) { // we're done with exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, 0, GetParentID()); SendWindowMessage(msg); } SetFromPosition(point); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_LEFT_CLICK && m_guiBackground.HitTest(point)) { SetFromPosition(point); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_WHEEL_UP) { Move(-1); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_WHEEL_DOWN) { Move(1); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_NOTIFY) { return (m_orientation == HORIZONTAL) ? EVENT_RESULT_PAN_HORIZONTAL_WITHOUT_INERTIA : EVENT_RESULT_PAN_VERTICAL_WITHOUT_INERTIA; } else if (event.m_id == ACTION_GESTURE_BEGIN) { // grab exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, GetID(), GetParentID()); SendWindowMessage(msg); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_PAN) { // do the drag SetFromPosition(point); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_END) { // release exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, 0, GetParentID()); SendWindowMessage(msg); return EVENT_RESULT_HANDLED; } return EVENT_RESULT_UNHANDLED; }
void CGUIControlGroupList::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions) { if (m_scroller.Update(currentTime)) MarkDirtyRegion(); // first we update visibility of all our items, to ensure our size and // alignment computations are correct. for (iControls it = m_children.begin(); it != m_children.end(); ++it) { CGUIControl *control = *it; GUIPROFILER_VISIBILITY_BEGIN(control); control->UpdateVisibility(); GUIPROFILER_VISIBILITY_END(control); } ValidateOffset(); if (m_pageControl && m_lastScrollerValue != m_scroller.GetValue()) { CGUIMessage message(GUI_MSG_LABEL_RESET, GetParentID(), m_pageControl, (int)Size(), (int)m_totalSize); SendWindowMessage(message); CGUIMessage message2(GUI_MSG_ITEM_SELECT, GetParentID(), m_pageControl, (int)m_scroller.GetValue()); SendWindowMessage(message2); m_lastScrollerValue = m_scroller.GetValue(); } // we run through the controls, rendering as we go int index = 0; float pos = GetAlignOffset(); for (iControls it = m_children.begin(); it != m_children.end(); ++it) { // note we render all controls, even if they're offscreen, as then they'll be updated // with respect to animations CGUIControl *control = *it; if (m_orientation == VERTICAL) g_graphicsContext.SetOrigin(m_posX, m_posY + pos - m_scroller.GetValue()); else g_graphicsContext.SetOrigin(m_posX + pos - m_scroller.GetValue(), m_posY); control->DoProcess(currentTime, dirtyregions); if (control->IsVisible()) { if (IsControlOnScreen(pos, control)) { if (control->HasFocus()) m_focusedPosition = index; index++; } pos += Size(control) + m_itemGap; } g_graphicsContext.RestoreOrigin(); } CGUIControl::Process(currentTime, dirtyregions); }
void CGUIControlGroupList::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions) { if (m_scrollSpeed != 0) { MarkDirtyRegion(); m_offset += m_scrollSpeed * (currentTime - m_scrollLastTime); if ((m_scrollSpeed < 0 && m_offset < m_scrollOffset) || (m_scrollSpeed > 0 && m_offset > m_scrollOffset)) { m_offset = m_scrollOffset; m_scrollSpeed = 0; } } m_scrollLastTime = currentTime; // first we update visibility of all our items, to ensure our size and // alignment computations are correct. for (iControls it = m_children.begin(); it != m_children.end(); ++it) { CGUIControl *control = *it; GUIPROFILER_VISIBILITY_BEGIN(control); control->UpdateVisibility(); GUIPROFILER_VISIBILITY_END(control); } ValidateOffset(); if (m_pageControl) { CGUIMessage message(GUI_MSG_LABEL_RESET, GetParentID(), m_pageControl, (int)m_height, (int)m_totalSize); SendWindowMessage(message); CGUIMessage message2(GUI_MSG_ITEM_SELECT, GetParentID(), m_pageControl, (int)m_offset); SendWindowMessage(message2); } // we run through the controls, rendering as we go float pos = GetAlignOffset(); for (iControls it = m_children.begin(); it != m_children.end(); ++it) { // note we render all controls, even if they're offscreen, as then they'll be updated // with respect to animations CGUIControl *control = *it; if (m_orientation == VERTICAL) g_graphicsContext.SetOrigin(m_posX, m_posY + pos - m_offset); else g_graphicsContext.SetOrigin(m_posX + pos - m_offset, m_posY); control->DoProcess(currentTime, dirtyregions); if (control->IsVisible()) pos += Size(control) + m_itemGap; g_graphicsContext.RestoreOrigin(); } CGUIControl::Process(currentTime, dirtyregions); }
void CGUISpinControl::MoveDown(bool bTestReverse) { if (bTestReverse && m_bReverse) { // actually should move up. MoveUp(false); return ; } switch (m_iType) { case SPIN_CONTROL_TYPE_INT: { if (m_iValue + 1 <= m_iEnd) m_iValue++; else if (m_iValue == m_iEnd) m_iValue = m_iStart; CGUIMessage msg(GUI_MSG_CLICKED, GetID(), GetParentID()); SendWindowMessage(msg); return ; } break; case SPIN_CONTROL_TYPE_PAGE: ChangePage(1); break; case SPIN_CONTROL_TYPE_FLOAT: { if (m_fValue + m_fInterval <= m_fEnd) m_fValue += m_fInterval; else if (m_fValue + m_fInterval > m_fEnd) m_fValue = m_fStart; CGUIMessage msg(GUI_MSG_CLICKED, GetID(), GetParentID()); SendWindowMessage(msg); return ; } break; case SPIN_CONTROL_TYPE_TEXT: { if (m_iValue + 1 < (int)m_vecLabels.size() ) m_iValue++; else if (m_iValue == (int)m_vecLabels.size() - 1) m_iValue = 0; CGUIMessage msg(GUI_MSG_CLICKED, GetID(), GetParentID()); SendWindowMessage(msg); return ; } break; } }
bool CGUIBaseContainer::OnClick(int actionID) { int subItem = 0; if (actionID == ACTION_SELECT_ITEM || actionID == ACTION_MOUSE_LEFT_CLICK) { if (m_listProvider) { // "select" action int selected = GetSelectedItem(); if (selected >= 0 && selected < (int)m_items.size()) { if (m_clickActions.HasActionsMeetingCondition()) m_clickActions.ExecuteActions(0, GetParentID(), m_items[selected]); else m_listProvider->OnClick(m_items[selected]); } return true; } // grab the currently focused subitem (if applicable) CGUIListItemLayout *focusedLayout = GetFocusedLayout(); if (focusedLayout) subItem = focusedLayout->GetFocusedItem(); } else if (actionID == ACTION_MOUSE_RIGHT_CLICK) { if (OnContextMenu()) return true; } // Don't know what to do, so send to our parent window. CGUIMessage msg(GUI_MSG_CLICKED, GetID(), GetParentID(), actionID, subItem); return SendWindowMessage(msg); }
void CGUIBaseContainer::SetPageControlRange() { if (m_pageControl) { CGUIMessage msg(GUI_MSG_LABEL_RESET, GetID(), m_pageControl, m_itemsPerPage, GetRows()); SendWindowMessage(msg); } }
void CGUIBaseContainer::UpdatePageControl(int offset) { if (m_pageControl) { // tell our pagecontrol (scrollbar or whatever) to update (offset it by our cursor position) CGUIMessage msg(GUI_MSG_ITEM_SELECT, GetID(), m_pageControl, offset); SendWindowMessage(msg); } }
void CGUITextBox::UpdatePageControl() { if (m_pageControl) { CGUIMessage msg(GUI_MSG_LABEL_RESET, GetID(), m_pageControl, m_itemsPerPage, m_lines.size()); SendWindowMessage(msg); } }
EVENT_RESULT CGUIControlGroupList::OnMouseEvent(const CPoint &point, const CMouseEvent &event) { if (event.m_id == ACTION_MOUSE_WHEEL_UP || event.m_id == ACTION_MOUSE_WHEEL_DOWN) { // find the current control and move to the next or previous float offset = 0; for (ciControls it = m_children.begin(); it != m_children.end(); ++it) { CGUIControl *control = *it; if (!control->IsVisible()) continue; float nextOffset = offset + Size(control) + m_itemGap; if (event.m_id == ACTION_MOUSE_WHEEL_DOWN && nextOffset > m_scroller.GetValue() && m_scroller.GetValue() < m_totalSize - Size()) // past our current offset { ScrollTo(nextOffset); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_WHEEL_UP && nextOffset >= m_scroller.GetValue() && m_scroller.GetValue() > 0) // at least at our current offset { ScrollTo(offset); return EVENT_RESULT_HANDLED; } offset = nextOffset; } } else if (event.m_id == ACTION_GESTURE_BEGIN) { // grab exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, GetID(), GetParentID()); SendWindowMessage(msg); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_END) { // release exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, 0, GetParentID()); SendWindowMessage(msg); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_GESTURE_PAN) { // do the drag and validate our offset (corrects for end of scroll) m_scroller.SetValue(CLAMP(m_scroller.GetValue() - ((m_orientation == HORIZONTAL) ? event.m_offsetX : event.m_offsetY), 0, m_totalSize - Size())); SetInvalid(); return EVENT_RESULT_HANDLED; } return EVENT_RESULT_UNHANDLED; }
bool CGUIControl::Navigate(int direction) const { if (HasFocus()) { CGUIMessage msg(GUI_MSG_MOVE, GetParentID(), GetID(), direction); return SendWindowMessage(msg); } return false; }
void CGUIScrollBar::Move(int numSteps) { m_offset += numSteps * m_pageSize; if (m_offset > m_numItems - m_pageSize) m_offset = m_numItems - m_pageSize; if (m_offset < 0) m_offset = 0; CGUIMessage message(GUI_MSG_NOTIFY_ALL, GetParentID(), GetID(), GUI_MSG_PAGE_CHANGE, m_offset); SendWindowMessage(message); SetInvalid(); }
void CGUISpinControl::ChangePage(int amount) { m_currentItem += amount * m_itemsPerPage; if (m_currentItem > m_numItems - m_itemsPerPage) m_currentItem = m_numItems - m_itemsPerPage; if (m_currentItem < 0) m_currentItem = 0; CGUIMessage message(GUI_MSG_NOTIFY_ALL, GetParentID(), GetID(), GUI_MSG_PAGE_CHANGE, m_currentItem); SendWindowMessage(message); }
EVENT_RESULT CGUIMoverControl::OnMouseEvent(const CPoint &point, const CMouseEvent &event) { if (event.m_id == ACTION_MOUSE_DRAG) { if (event.m_state == 1) { // grab exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, GetID(), GetParentID()); SendWindowMessage(msg); } else if (event.m_state == 3) { // release exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, 0, GetParentID()); SendWindowMessage(msg); } Move((int)event.m_offsetX, (int)event.m_offsetY); return EVENT_RESULT_HANDLED; } return EVENT_RESULT_UNHANDLED; }
DWORD HCNMain(LPVOID pData) { MSG msg; HANDLE hMainFrame = NULL; __WINDOW_MESSAGE wmsg; //Create hello world's window. hMainFrame = CreateWindow(WS_WITHBORDER | WS_WITHCAPTION, "Help information for Hello China V1.75", 150, 150, 600, 400, HCNHelpWndProc, //Window procedure. NULL, NULL, 0x00FFFFFF, //Window's background color. NULL); if(NULL == hMainFrame) { MessageBox(NULL,"Can not create the main frame window.","Error",MB_OK); goto __TERMINAL; } //Message loop of this application. while(TRUE) { if(GetMessage(&msg)) { switch(msg.wCommand) { case KERNEL_MESSAGE_TIMER: wmsg.hWnd = (HANDLE)msg.dwParam; wmsg.message = WM_TIMER; SendWindowMessage(wmsg.hWnd,&wmsg); break; case KERNEL_MESSAGE_WINDOW: DispatchWindowMessage((__WINDOW_MESSAGE*)msg.dwParam); break; case KERNEL_MESSAGE_TERMINAL: //Post by PostQuitMessage. goto __TERMINAL; default: break; } } } __TERMINAL: if(hMainFrame) { DestroyWindow(hMainFrame); } return 0; }
bool CGUICheckMarkControl::OnAction(const CAction &action) { if (action.GetID() == ACTION_SELECT_ITEM) { m_bSelected = !m_bSelected; CGUIMessage msg(GUI_MSG_CLICKED, GetID(), GetParentID(), action.GetID()); SendWindowMessage(msg); return true; } return CGUIControl::OnAction(action); }
void CGUIButtonControl::OnClick() { // Save values, as the click message may deactivate the window int controlID = GetID(); int parentID = GetParentID(); CGUIAction clickActions = m_clickActions; // button selected, send a message CGUIMessage msg(GUI_MSG_CLICKED, controlID, parentID, 0); SendWindowMessage(msg); clickActions.ExecuteActions(controlID, parentID); }
//Entry point of Hello World. DWORD HelloWorld(LPVOID pData) { HANDLE hFrameWnd = (HANDLE)pData; //pData is the handle of screen window,it is all application's parent window. MSG msg; HANDLE hHello; __WINDOW_MESSAGE wmsg; //Create hello world's window. hHello = CreateWindow(WS_WITHBORDER | WS_WITHCAPTION, "Hello world window", 150, 150, 600, 400, HelloWorldProc, hFrameWnd, NULL, GlobalParams.COLOR_WINDOW, NULL); if(NULL == hHello) { MessageBox(hFrameWnd,"Can not create the hello world window.","Error",MB_OK); goto __TERMINAL; } //Message loop of this application. while(TRUE) { if(GetMessage(&msg)) { switch(msg.wCommand) { case KERNEL_MESSAGE_TIMER: wmsg.hWnd = (HANDLE)msg.dwParam; wmsg.message = WM_TIMER; SendWindowMessage(wmsg.hWnd,&wmsg); break; case KERNEL_MESSAGE_WINDOW: DispatchWindowMessage((__WINDOW_MESSAGE*)msg.dwParam); break; case KERNEL_MESSAGE_TERMINAL: //Post by PostQuitMessage. goto __TERMINAL; default: break; } } } __TERMINAL: return 0; }
void CGUIScrollBar::SetFromPosition(const CPoint &point) { float fPercent; if (m_orientation == VERTICAL) fPercent = (point.y - m_guiBackground.GetYPosition() - 0.5f*m_guiBarFocus.GetHeight()) / m_guiBackground.GetHeight(); else fPercent = (point.x - m_guiBackground.GetXPosition() - 0.5f*m_guiBarFocus.GetWidth()) / m_guiBackground.GetWidth(); if (fPercent < 0) fPercent = 0; if (fPercent > 1) fPercent = 1; m_offset = (int)(floor(fPercent * m_numItems + 0.5f)); CGUIMessage message(GUI_MSG_NOTIFY_ALL, GetParentID(), GetID(), GUI_MSG_PAGE_CHANGE, m_offset); SendWindowMessage(message); SetInvalid(); }
EVENT_RESULT CGUISliderControl::OnMouseEvent(const CPoint &point, const CMouseEvent &event) { m_dragging = false; if (event.m_id == ACTION_MOUSE_DRAG) { m_dragging = true; if (event.m_state == 1) { // grab exclusive access CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, GetID(), GetParentID()); SendWindowMessage(msg); } else if (event.m_state == 3) { // release exclusive access m_dragging = false; CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, 0, GetParentID()); SendWindowMessage(msg); } SetFromPosition(point); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_LEFT_CLICK && m_guiBackground.HitTest(point)) { SetFromPosition(point); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_WHEEL_UP) { Move(10); return EVENT_RESULT_HANDLED; } else if (event.m_id == ACTION_MOUSE_WHEEL_DOWN) { Move(-10); return EVENT_RESULT_HANDLED; } return EVENT_RESULT_UNHANDLED; }
bool CGUIScrollBar::Move(int numSteps) { if (numSteps < 0 && m_offset == 0) // we are at the beginning - can't scroll up/left anymore return false; if (numSteps > 0 && m_offset == std::max(m_numItems - m_pageSize, 0)) // we are at the end - we can't scroll down/right anymore return false; m_offset += numSteps * m_pageSize; if (m_offset > m_numItems - m_pageSize) m_offset = m_numItems - m_pageSize; if (m_offset < 0) m_offset = 0; CGUIMessage message(GUI_MSG_NOTIFY_ALL, GetParentID(), GetID(), GUI_MSG_PAGE_CHANGE, m_offset); SendWindowMessage(message); SetInvalid(); return true; }
bool CGUIResizeControl::OnAction(const CAction &action) { if (action.wID == ACTION_SELECT_ITEM) { // button selected - send message to parent CGUIMessage message(GUI_MSG_CLICKED, GetID(), GetParentID()); SendWindowMessage(message); return true; } if (action.wID == ACTION_ANALOG_MOVE) { Resize(m_fAnalogSpeed*action.fAmount1, -m_fAnalogSpeed*action.fAmount2); return true; } return CGUIControl::OnAction(action); }
void CGUIEditControl::ValidateInput() { // validate the input bool invalid = !ValidateInput(m_text2); // nothing to do if still valid/invalid if (invalid != m_invalidInput) { // the validity state has changed so we need to update the control m_invalidInput = invalid; // let the window/dialog know that the validity has changed CGUIMessage msg(GUI_MSG_VALIDITY_CHANGED, GetID(), GetID(), m_invalidInput ? 0 : 1); SendWindowMessage(msg); SetInvalid(); } }
bool CGUISelectButtonControl::OnAction(const CAction &action) { if (!m_bShowSelect) { if (action.GetID() == ACTION_SELECT_ITEM) { // Enter selection mode m_bShowSelect = true; SetInvalid(); // Start timer, if user doesn't select an item // or moves left/right. The control will // automatically select the current item. m_ticks = CTimeUtils::GetFrameTime(); return true; } else return CGUIButtonControl::OnAction(action); } else { if (action.GetID() == ACTION_SELECT_ITEM) { // User has selected an item, disable selection mode... m_bShowSelect = false; SetInvalid(); // ...and send a message. CGUIMessage message(GUI_MSG_CLICKED, GetID(), GetParentID() ); SendWindowMessage(message); return true; } if (action.GetID() == ACTION_MOVE_UP || action.GetID() == ACTION_MOVE_DOWN ) { // Disable selection mode when moving up or down m_bShowSelect = false; m_iCurrentItem = m_iDefaultItem; SetInvalid(); } // call the base class return CGUIButtonControl::OnAction(action); } }
//Entry routine of GUI module. DWORD GuiShellEntry(LPVOID) { MSG Msg; WORD x = 0; //Mouse x scale. WORD y = 0; //Mouse y scale. __WINDOW_MESSAGE wmsg; if(!InitGuiShell()) { return 0; } MouseManager.DrawMouse(&MouseManager, &Video,0,0); //Show mouse arrow in screen. //Added by garry in 2009.04.22. //BmpShowArray(&Video, 200, 200, 14, 14, DataBlue, DataGreen, DataRed); while(TRUE) { if(GetMessage(&Msg)) { switch(Msg.wCommand) { case KERNEL_MESSAGE_TIMER: //Only one timer can be set for one window. wmsg.hWnd = (HANDLE)Msg.dwParam; wmsg.message = WM_TIMER; wmsg.wParam = 0; wmsg.lParam = 0; SendWindowMessage(wmsg.hWnd,&wmsg); break; case KERNEL_MESSAGE_WINDOW: DispatchWindowMessage((__WINDOW_MESSAGE*)Msg.dwParam); break; case KERNEL_MESSAGE_TERMINAL: //System terminal message. goto __TERMINAL; default: break; } } } __TERMINAL: return 0; }
bool CGUIMoverControl::OnAction(const CAction &action) { if (action.GetID() == ACTION_SELECT_ITEM) { // button selected - send message to parent CGUIMessage message(GUI_MSG_CLICKED, GetID(), GetParentID()); SendWindowMessage(message); return true; } if (action.GetID() == ACTION_ANALOG_MOVE) { // if (m_dwAllowedDirections == ALLOWED_DIRECTIONS_UPDOWN) // Move(0, (int)(-m_fAnalogSpeed*action.GetAmount(1))); // else if (m_dwAllowedDirections == ALLOWED_DIRECTIONS_LEFTRIGHT) // Move((int)(m_fAnalogSpeed*action.GetAmount()), 0); // else // ALLOWED_DIRECTIONS_ALL Move((int)(m_fAnalogSpeed*action.GetAmount()), (int)( -m_fAnalogSpeed*action.GetAmount(1))); return true; } // base class return CGUIControl::OnAction(action); }