bool CGUIDialogFavourites::OnMessage(CGUIMessage &message) { if (message.GetMessage() == GUI_MSG_CLICKED) { if (message.GetSenderId() == FAVOURITES_LIST) { int item = GetSelectedItem(); int action = message.GetParam1(); if (action == ACTION_SELECT_ITEM || action == ACTION_MOUSE_LEFT_CLICK) OnClick(item); else if (action == ACTION_MOVE_ITEM_UP) OnMoveItem(item, -1); else if (action == ACTION_MOVE_ITEM_DOWN) OnMoveItem(item, 1); else if (action == ACTION_CONTEXT_MENU || action == ACTION_MOUSE_RIGHT_CLICK) OnPopupMenu(item); else if (action == ACTION_DELETE_ITEM) OnDelete(item); else return false; return true; } } else if (message.GetMessage() == GUI_MSG_WINDOW_DEINIT) { CGUIDialog::OnMessage(message); // clear our favourites CGUIMessage message(GUI_MSG_LABEL_RESET, GetID(), FAVOURITES_LIST); OnMessage(message); m_favourites->Clear(); return true; } return CGUIDialog::OnMessage(message); }
void CGUIWindowMusicPlaylistEditor::OnPlaylistContext() { int item = GetCurrentPlaylistItem(); if (item >= 0) m_playlist->Get(item)->Select(true); if (!OnPopupMenu(-1) && item >= 0 && item < m_playlist->Size()) m_playlist->Get(item)->Select(false); }
bool CGUIWindowLoginScreen::OnMessage(CGUIMessage& message) { switch ( message.GetMessage() ) { case GUI_MSG_WINDOW_DEINIT: { m_vecItems->Clear(); } break; case GUI_MSG_CLICKED: { int iControl = message.GetSenderId(); if (iControl == CONTROL_BIG_LIST) { int iAction = message.GetParam1(); // iItem is checked for validity inside these routines if (iAction == ACTION_CONTEXT_MENU || iAction == ACTION_MOUSE_RIGHT_CLICK) { int iItem = m_viewControl.GetSelectedItem(); bool bResult = OnPopupMenu(m_viewControl.GetSelectedItem()); if (bResult) { Update(); CGUIMessage msg(GUI_MSG_ITEM_SELECT,GetID(),CONTROL_BIG_LIST,iItem); OnMessage(msg); } return bResult; } else if (iAction == ACTION_SELECT_ITEM || iAction == ACTION_MOUSE_LEFT_CLICK) { int iItem = m_viewControl.GetSelectedItem(); bool bCanceled; bool bOkay = g_passwordManager.IsProfileLockUnlocked(iItem, bCanceled); if (bOkay) { LoadProfile(iItem); } else { if (!bCanceled && iItem != 0) CGUIDialogOK::ShowAndGetInput(20068,20117,20022,20022); } } } } break; case GUI_MSG_SETFOCUS: { if (m_viewControl.HasControl(message.GetControlId()) && m_viewControl.GetCurrentControl() != message.GetControlId()) { m_viewControl.SetFocused(); return true; } } default: break; } return CGUIWindow::OnMessage(message); }
//////////////// // Mouse events void BaseGrid::OnMouseEvent(wxMouseEvent &event) { // Window size int w,h; GetClientSize(&w,&h); // Modifiers bool shift = event.m_shiftDown; bool alt = event.m_altDown; bool ctrl = event.m_controlDown; // Row that mouse is over bool click = event.ButtonDown(wxMOUSE_BTN_LEFT); bool dclick = event.LeftDClick(); int row = event.GetY()/lineHeight + yPos - 1; if (holding && !click) { row = MID(0,row,GetRows()-1); } bool validRow = row >= 0 && row < GetRows(); if (!validRow) row = -1; // Get focus if (event.ButtonDown()) { if (Options.AsBool(_T("Grid Allow Focus"))) { SetFocus(); } } // Click type if (click && !holding && validRow) { holding = true; CaptureMouse(); } if (!event.ButtonIsDown(wxMOUSE_BTN_LEFT) && holding) { holding = false; ReleaseMouse(); } // Scroll to keep visible if (holding) { // Find direction int minVis = yPos+1; int maxVis = yPos+h/lineHeight-3; int delta = 0; if (row < minVis) delta = -1; if (row > maxVis) delta = +1; // Scroll ScrollTo(yPos+delta*3); } // Click if ((click || holding || dclick) && validRow) { // Disable extending extendRow = -1; // Toggle selected if (click && ctrl && !shift && !alt) { SelectRow(row,true,!IsInSelection(row,0)); parentFrame->UpdateToolbar(); return; } // Normal click if ((click || dclick) && !shift && !ctrl && !alt) { if (editBox->linen != row) editBox->SetToLine(row); if (dclick) video->JumpToFrame(VFR_Output.GetFrameAtTime(GetDialogue(row)->Start.GetMS(),true)); SelectRow(row,false); parentFrame->UpdateToolbar(); lastRow = row; return; } // Keep selection if (click && !shift && !ctrl && alt) { editBox->SetToLine(row); return; } // Block select if ((click && shift && !ctrl && !alt) || (holding && !ctrl && !alt && !shift)) { if (lastRow != -1) { // Set boundaries int i1 = row; int i2 = lastRow; if (i1 > i2) { int aux = i1; i1 = i2; i2 = aux; } // Toggle each bool notFirst = false; for (int i=i1;i<=i2;i++) { SelectRow(i,notFirst,true); notFirst = true; } parentFrame->UpdateToolbar(); } return; } return; } // Popup if (event.ButtonDown(wxMOUSE_BTN_RIGHT)) { OnPopupMenu(); } // Mouse wheel if (event.GetWheelRotation() != 0) { int step = 3 * event.GetWheelRotation() / event.GetWheelDelta(); ScrollTo(yPos - step); return; } event.Skip(); }