void CGUIWindowJukeboxSongs::UpdateButtons() { CGUIWindowJukeboxBase::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); } CGUIDialogMusicScan *musicScan = (CGUIDialogMusicScan *) g_windowManager.GetWindow(WINDOW_DIALOG_MUSIC_SCAN); if (musicScan && musicScan->IsScanning()) { 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); }
void CGUIDialogMediaFilter::UpdateControls() { for (std::map<std::string, Filter>::iterator itFilter = m_filters.begin(); itFilter != m_filters.end(); itFilter++) { if (itFilter->second.controlType != "list") continue; std::vector<std::string> items; int size = GetItems(itFilter->second, items, true); std::string label = g_localizeStrings.Get(itFilter->second.label); BaseSettingControlPtr control = GetSettingControl(itFilter->second.setting->GetId()); if (control == NULL) continue; if (size <= 0 || (size == 1 && itFilter->second.field != FieldSet && itFilter->second.field != FieldTag)) CONTROL_DISABLE(control->GetID()); else { CONTROL_ENABLE(control->GetID()); label = StringUtils::Format(g_localizeStrings.Get(21470).c_str(), label.c_str(), size); } SET_CONTROL_LABEL(control->GetID(), label); } }
void CGUIWindowSettingsScreenCalibration::ResetControls() { // disable the video control, so that our other controls take mouse clicks etc. CONTROL_DISABLE(CONTROL_VIDEO); // disable the UI calibration for our controls // and set their limits // also, set them to invisible if they don't have focus CGUIMoverControl *pControl = dynamic_cast<CGUIMoverControl*>(GetControl(CONTROL_TOP_LEFT)); RESOLUTION_INFO info = g_graphicsContext.GetResInfo(m_Res[m_iCurRes]); if (pControl) { pControl->SetLimits( -info.iWidth / 4, -info.iHeight / 4, info.iWidth / 4, info.iHeight / 4); pControl->SetPosition((float)info.Overscan.left, (float)info.Overscan.top); pControl->SetLocation(info.Overscan.left, info.Overscan.top, false); } pControl = dynamic_cast<CGUIMoverControl*>(GetControl(CONTROL_BOTTOM_RIGHT)); if (pControl) { pControl->SetLimits(info.iWidth*3 / 4, info.iHeight*3 / 4, info.iWidth*5 / 4, info.iHeight*5 / 4); pControl->SetPosition((float)info.Overscan.right - (int)pControl->GetWidth(), (float)info.Overscan.bottom - (int)pControl->GetHeight()); pControl->SetLocation(info.Overscan.right, info.Overscan.bottom, false); } // Subtitles and OSD controls can only move up and down pControl = dynamic_cast<CGUIMoverControl*>(GetControl(CONTROL_SUBTITLES)); if (pControl) { pControl->SetLimits(0, info.iHeight*3 / 4, 0, info.iHeight*5 / 4); pControl->SetPosition((info.iWidth - pControl->GetWidth()) * 0.5f, info.iSubtitles - pControl->GetHeight()); pControl->SetLocation(0, info.iSubtitles, false); } // lastly the pixel ratio control... CGUIResizeControl *pResize = dynamic_cast<CGUIResizeControl*>(GetControl(CONTROL_PIXEL_RATIO)); if (pResize) { pResize->SetLimits(info.iWidth*0.25f, info.iHeight*0.5f, info.iWidth*0.75f, info.iHeight*0.5f); pResize->SetHeight(info.iHeight * 0.5f); pResize->SetWidth(pResize->GetHeight() / info.fPixelRatio); pResize->SetPosition((info.iWidth - pResize->GetWidth()) / 2, (info.iHeight - pResize->GetHeight()) / 2); } // Enable the default control EnableControl(m_iControl); }
std::vector<std::pair<std::string, int>> CGUIDialogSmartPlaylistRule::GetValidOperators(const CSmartPlaylistRule& rule) { std::vector< std::pair<std::string, int> > labels; switch (rule.GetFieldType(rule.m_field)) { case CDatabaseQueryRule::TEXT_FIELD: // text fields - add the usual comparisons labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_EQUALS)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_DOES_NOT_EQUAL)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_CONTAINS)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_DOES_NOT_CONTAIN)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_STARTS_WITH)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_ENDS_WITH)); break; case CDatabaseQueryRule::REAL_FIELD: case CDatabaseQueryRule::NUMERIC_FIELD: case CDatabaseQueryRule::SECONDS_FIELD: // numerical fields - less than greater than labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_EQUALS)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_DOES_NOT_EQUAL)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_GREATER_THAN)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_LESS_THAN)); break; case CDatabaseQueryRule::DATE_FIELD: // date field labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_AFTER)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_BEFORE)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_IN_THE_LAST)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_NOT_IN_THE_LAST)); break; case CDatabaseQueryRule::PLAYLIST_FIELD: CONTROL_ENABLE(CONTROL_BROWSE); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_EQUALS)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_DOES_NOT_EQUAL)); break; case CDatabaseQueryRule::BOOLEAN_FIELD: CONTROL_DISABLE(CONTROL_VALUE); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_TRUE)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_FALSE)); break; case CDatabaseQueryRule::TEXTIN_FIELD: labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_EQUALS)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_DOES_NOT_EQUAL)); break; } return labels; }
void CGUIDialogPlayEject::OnInitWindow() { if (g_mediaManager.IsDiscInDrive()) { m_defaultControl = ID_BUTTON_PLAY; } else { CONTROL_DISABLE(ID_BUTTON_PLAY); m_defaultControl = ID_BUTTON_EJECT; } CGUIDialogYesNo::OnInitWindow(); }
void CGUIDialogSmartPlaylistRule::UpdateButtons() { if (m_rule.m_field == 0) m_rule.m_field = CSmartPlaylistRule::GetFields(m_type)[0]; SET_CONTROL_LABEL(CONTROL_FIELD, CSmartPlaylistRule::GetLocalizedField(m_rule.m_field)); CONTROL_ENABLE(CONTROL_VALUE); if (CSmartPlaylistRule::IsFieldBrowseable(m_rule.m_field)) CONTROL_ENABLE(CONTROL_BROWSE); else CONTROL_DISABLE(CONTROL_BROWSE); SET_CONTROL_LABEL(CONTROL_OPERATOR, std::get<0>(OperatorLabel(m_rule.m_operator))); // update label2 appropriately SET_CONTROL_LABEL2(CONTROL_VALUE, m_rule.GetParameter()); CGUIEditControl::INPUT_TYPE type = CGUIEditControl::INPUT_TYPE_TEXT; CDatabaseQueryRule::FIELD_TYPE fieldType = m_rule.GetFieldType(m_rule.m_field); switch (fieldType) { case CDatabaseQueryRule::TEXT_FIELD: case CDatabaseQueryRule::PLAYLIST_FIELD: case CDatabaseQueryRule::TEXTIN_FIELD: case CDatabaseQueryRule::REAL_FIELD: case CDatabaseQueryRule::NUMERIC_FIELD: type = CGUIEditControl::INPUT_TYPE_TEXT; break; case CDatabaseQueryRule::DATE_FIELD: if (m_rule.m_operator == CDatabaseQueryRule::OPERATOR_IN_THE_LAST || m_rule.m_operator == CDatabaseQueryRule::OPERATOR_NOT_IN_THE_LAST) type = CGUIEditControl::INPUT_TYPE_TEXT; else type = CGUIEditControl::INPUT_TYPE_DATE; break; case CDatabaseQueryRule::SECONDS_FIELD: type = CGUIEditControl::INPUT_TYPE_SECONDS; break; case CDatabaseQueryRule::BOOLEAN_FIELD: type = CGUIEditControl::INPUT_TYPE_NUMBER; break; } SendMessage(GUI_MSG_SET_TYPE, CONTROL_VALUE, type, 21420); }
void CGUIDialogSmartPlaylistEditor::UpdateButtons() { CONTROL_ENABLE(CONTROL_OK); // always enabled since we can have no rules -> match everything (as we do with default partymode playlists) // if there's no rule available, add a dummy one the user can edit if (m_playlist.m_ruleCombination.m_rules.size() <= 0) m_playlist.m_ruleCombination.AddRule(CSmartPlaylistRule()); // name if (m_mode == "partyvideo" || m_mode == "partymusic") { SET_CONTROL_LABEL2(CONTROL_NAME, g_localizeStrings.Get(16035)); CONTROL_DISABLE(CONTROL_NAME); } else SET_CONTROL_LABEL2(CONTROL_NAME, m_playlist.m_playlistName); UpdateRuleControlButtons(); CONTROL_ENABLE_ON_CONDITION(CONTROL_MATCH, m_playlist.m_ruleCombination.m_rules.size() > 1); int currentItem = GetSelectedItem(); CGUIMessage msgReset(GUI_MSG_LABEL_RESET, GetID(), CONTROL_RULE_LIST); OnMessage(msgReset); m_ruleLabels->Clear(); for (unsigned int i = 0; i < m_playlist.m_ruleCombination.m_rules.size(); i++) { CFileItemPtr item(new CFileItem("", false)); if (m_playlist.m_ruleCombination.m_rules[i]->m_field == FieldNone) item->SetLabel(g_localizeStrings.Get(21423)); else item->SetLabel(std::static_pointer_cast<CSmartPlaylistRule>(m_playlist.m_ruleCombination.m_rules[i])->GetLocalizedRule()); m_ruleLabels->Add(item); } CGUIMessage msg(GUI_MSG_LABEL_BIND, GetID(), CONTROL_RULE_LIST, 0, 0, m_ruleLabels); OnMessage(msg); SendMessage(GUI_MSG_ITEM_SELECT, GetID(), CONTROL_RULE_LIST, currentItem); if (m_playlist.m_orderDirection != SortOrderDescending) { CONTROL_SELECT(CONTROL_ORDER_DIRECTION); } else { CONTROL_DESELECT(CONTROL_ORDER_DIRECTION); } // sort out the order fields std::vector< std::pair<std::string, int> > labels; std::vector<SortBy> orders = CSmartPlaylistRule::GetOrders(m_playlist.GetType()); for (unsigned int i = 0; i < orders.size(); i++) labels.push_back(make_pair(g_localizeStrings.Get(SortUtils::GetSortLabel(orders[i])), orders[i])); SET_CONTROL_LABELS(CONTROL_ORDER_FIELD, m_playlist.m_orderField, &labels); // setup groups labels.clear(); std::vector<Field> groups = CSmartPlaylistRule::GetGroups(m_playlist.GetType()); Field currentGroup = CSmartPlaylistRule::TranslateGroup(m_playlist.GetGroup().c_str()); for (unsigned int i = 0; i < groups.size(); i++) labels.push_back(make_pair(CSmartPlaylistRule::GetLocalizedGroup(groups[i]), groups[i])); SET_CONTROL_LABELS(CONTROL_GROUP_BY, currentGroup, &labels); if (m_playlist.IsGroupMixed()) CONTROL_SELECT(CONTROL_GROUP_MIXED); else CONTROL_DESELECT(CONTROL_GROUP_MIXED); // disable the group controls if there's no group // or only one group which can't be mixed if (groups.empty() || (groups.size() == 1 && !CSmartPlaylistRule::CanGroupMix(groups[0]))) { CONTROL_DISABLE(CONTROL_GROUP_BY); CONTROL_DISABLE(CONTROL_GROUP_MIXED); } else { CONTROL_ENABLE(CONTROL_GROUP_BY); CONTROL_ENABLE_ON_CONDITION(CONTROL_GROUP_MIXED, CSmartPlaylistRule::CanGroupMix(currentGroup)); } }
void CGUIDialogSmartPlaylistRule::UpdateButtons() { // update the field control SendMessage(GUI_MSG_ITEM_SELECT, CONTROL_FIELD, m_rule.m_field); CGUIMessage msg2(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_FIELD); OnMessage(msg2); m_rule.m_field = (Field)msg2.GetParam1(); // and now update the operator set SendMessage(GUI_MSG_LABEL_RESET, CONTROL_OPERATOR); CONTROL_ENABLE(CONTROL_VALUE); if (CSmartPlaylistRule::IsFieldBrowseable(m_rule.m_field)) CONTROL_ENABLE(CONTROL_BROWSE); else CONTROL_DISABLE(CONTROL_BROWSE); std::vector< std::pair<std::string, int> > labels; switch (m_rule.GetFieldType(m_rule.m_field)) { case CDatabaseQueryRule::TEXT_FIELD: // text fields - add the usual comparisons labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_EQUALS)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_DOES_NOT_EQUAL)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_CONTAINS)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_DOES_NOT_CONTAIN)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_STARTS_WITH)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_ENDS_WITH)); break; case CDatabaseQueryRule::NUMERIC_FIELD: case CDatabaseQueryRule::SECONDS_FIELD: // numerical fields - less than greater than labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_EQUALS)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_DOES_NOT_EQUAL)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_GREATER_THAN)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_LESS_THAN)); break; case CDatabaseQueryRule::DATE_FIELD: // date field labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_AFTER)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_BEFORE)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_IN_THE_LAST)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_NOT_IN_THE_LAST)); break; case CDatabaseQueryRule::PLAYLIST_FIELD: CONTROL_ENABLE(CONTROL_BROWSE); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_EQUALS)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_DOES_NOT_EQUAL)); break; case CDatabaseQueryRule::BOOLEAN_FIELD: CONTROL_DISABLE(CONTROL_VALUE); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_TRUE)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_FALSE)); break; case CDatabaseQueryRule::TEXTIN_FIELD: labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_EQUALS)); labels.push_back(OperatorLabel(CDatabaseQueryRule::OPERATOR_DOES_NOT_EQUAL)); break; } SET_CONTROL_LABELS(CONTROL_OPERATOR, m_rule.m_operator, &labels); // check our operator is valid, and update if not CGUIMessage selected(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_OPERATOR); OnMessage(selected); m_rule.m_operator = (CDatabaseQueryRule::SEARCH_OPERATOR)selected.GetParam1(); // update the parameter edit control appropriately SET_CONTROL_LABEL2(CONTROL_VALUE, m_rule.GetParameter()); CGUIEditControl::INPUT_TYPE type = CGUIEditControl::INPUT_TYPE_TEXT; CDatabaseQueryRule::FIELD_TYPE fieldType = m_rule.GetFieldType(m_rule.m_field); switch (fieldType) { case CDatabaseQueryRule::TEXT_FIELD: case CDatabaseQueryRule::PLAYLIST_FIELD: case CDatabaseQueryRule::TEXTIN_FIELD: case CDatabaseQueryRule::NUMERIC_FIELD: type = CGUIEditControl::INPUT_TYPE_TEXT; break; case CDatabaseQueryRule::DATE_FIELD: if (m_rule.m_operator == CDatabaseQueryRule::OPERATOR_IN_THE_LAST || m_rule.m_operator == CDatabaseQueryRule::OPERATOR_NOT_IN_THE_LAST) type = CGUIEditControl::INPUT_TYPE_TEXT; else type = CGUIEditControl::INPUT_TYPE_DATE; break; case CDatabaseQueryRule::SECONDS_FIELD: type = CGUIEditControl::INPUT_TYPE_SECONDS; break; case CDatabaseQueryRule::BOOLEAN_FIELD: type = CGUIEditControl::INPUT_TYPE_NUMBER; break; } SendMessage(GUI_MSG_SET_TYPE, CONTROL_VALUE, type, 21420); }
bool CGUIDialogFileStacking::OnMessage(CGUIMessage& message) { switch ( message.GetMessage() ) { case GUI_MSG_WINDOW_DEINIT: CGUIDialog::OnMessage(message); if (m_stackItems) m_stackItems->Clear(); return true; case GUI_MSG_WINDOW_INIT: { CGUIDialog::OnMessage(message); m_iSelectedFile = -1; #ifdef PRE_SKIN_VERSION_2_1_COMPATIBILITY m_iFrames = 0; // enable the CD's for (int i = 1; i <= m_iNumberOfFiles; ++i) { CONTROL_ENABLE(i); SET_CONTROL_VISIBLE(i); } // disable CD's we dont use for (int i = m_iNumberOfFiles + 1; i <= 40; ++i) { SET_CONTROL_HIDDEN(i); CONTROL_DISABLE(i); } #endif if (GetControl(STACK_LIST)) { // have the new stack list instead - fill it up CGUIMessage msg(GUI_MSG_LABEL_RESET, GetID(), STACK_LIST); OnMessage(msg); for (int i = 0; i < m_iNumberOfFiles; i++) { CStdString label; label.Format("Part %i", i+1); CFileItem *item = new CFileItem(label); m_stackItems->Add(item); CGUIMessage msg(GUI_MSG_LABEL_ADD, GetID(), STACK_LIST, 0, 0, item); OnMessage(msg); } } return true; } break; case GUI_MSG_CLICKED: { #ifdef PRE_SKIN_VERSION_2_1_COMPATIBILITY if (message.GetSenderId() != STACK_LIST) m_iSelectedFile = message.GetSenderId(); else if (message.GetParam1() == ACTION_SELECT_ITEM) { // grab the selected item CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), STACK_LIST); OnMessage(msg); m_iSelectedFile = msg.GetParam1() + 1; } #endif Close(); return true; } break; } return CGUIDialog::OnMessage(message); }