bool CGUIDialogSelect::OnMessage(CGUIMessage& message) { switch ( message.GetMessage() ) { case GUI_MSG_WINDOW_DEINIT: { CGUIDialog::OnMessage(message); m_viewControl.Clear(); m_bButtonEnabled = false; m_useDetails = false; m_multiSelection = false; // construct selected items list m_selectedItems->Clear(); m_iSelected = -1; for (int i = 0 ; i < m_vecList->Size() ; i++) { CFileItemPtr item = m_vecList->Get(i); if (item->IsSelected()) { m_selectedItems->Add(item); if (m_iSelected == -1) m_iSelected = i; } } m_vecList->Clear(); m_buttonString = -1; SET_CONTROL_LABEL(CONTROL_BUTTON, ""); return true; } break; case GUI_MSG_WINDOW_INIT: { CGUIDialog::OnMessage(message); return true; } break; case GUI_MSG_CLICKED: { int iControl = message.GetSenderId(); if (m_viewControl.HasControl(CONTROL_LIST)) { int iAction = message.GetParam1(); if (ACTION_SELECT_ITEM == iAction || ACTION_MOUSE_LEFT_CLICK == iAction) { int iSelected = m_viewControl.GetSelectedItem(); if(iSelected >= 0 && iSelected < (int)m_vecList->Size()) { CFileItemPtr item(m_vecList->Get(iSelected)); if (m_multiSelection) item->Select(!item->IsSelected()); else { for (int i = 0 ; i < m_vecList->Size() ; i++) m_vecList->Get(i)->Select(false); item->Select(true); m_bConfirmed = true; Close(); } } } } if (CONTROL_BUTTON == iControl) { m_iSelected = -1; m_bButtonPressed = true; if (m_multiSelection) m_bConfirmed = true; Close(); } } break; case GUI_MSG_SETFOCUS: { // make sure the additional button is focused in case the list is empty // (otherwise it is impossible to navigate to the additional button) if (m_vecList->IsEmpty() && m_bButtonEnabled && m_viewControl.HasControl(message.GetControlId())) { SET_CONTROL_FOCUS(CONTROL_BUTTON, 0); return true; } if (m_viewControl.HasControl(message.GetControlId()) && m_viewControl.GetCurrentControl() != message.GetControlId()) { m_viewControl.SetFocused(); return true; } } break; } return CGUIDialog::OnMessage(message); }
void CGUIWindowMusicSongs::UpdateButtons() { CGUIWindowMusicBase::UpdateButtons(); bool bIsPlaying = g_application.IsPlayingAudio(); bool bCanRecord = false; bool bIsRecording = false; if (bIsPlaying) { bCanRecord = g_application.m_pPlayer->CanRecord(); bIsRecording = g_application.m_pPlayer->IsRecording(); } // Update Record button if (bIsPlaying && bCanRecord) { CONTROL_ENABLE(CONTROL_BTNREC); if (bIsRecording) { SET_CONTROL_LABEL(CONTROL_BTNREC, 265); //Stop Recording } else { SET_CONTROL_LABEL(CONTROL_BTNREC, 264); //Record } } else { SET_CONTROL_LABEL(CONTROL_BTNREC, 264); //Record CONTROL_DISABLE(CONTROL_BTNREC); } // Update CDDA Rip button if (g_mediaManager.IsAudio()) { CONTROL_ENABLE(CONTROL_BTNRIP); } else { CONTROL_DISABLE(CONTROL_BTNRIP); } // Disable scan button if shoutcast if (m_vecItems->IsVirtualDirectoryRoot() || m_vecItems->IsLastFM() || m_vecItems->IsMusicDb()) { CONTROL_DISABLE(CONTROL_BTNSCAN); } else { CONTROL_ENABLE(CONTROL_BTNSCAN); } if (g_application.IsMusicScanning()) { SET_CONTROL_LABEL(CONTROL_BTNSCAN, 14056); // Stop Scan } else { SET_CONTROL_LABEL(CONTROL_BTNSCAN, 102); // Scan } // Update object count label CStdString items; items.Format("%i %s", m_vecItems->GetObjectCount(), g_localizeStrings.Get(127).c_str()); SET_CONTROL_LABEL(CONTROL_LABELFILES, items); }