本文整理汇总了C++中CGUIButtonControl类的典型用法代码示例。如果您正苦于以下问题:C++ CGUIButtonControl类的具体用法?C++ CGUIButtonControl怎么用?C++ CGUIButtonControl使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CGUIButtonControl类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: msg
void CGUIWindowBoxeeWizardNetwork::GetUserConfiguration(CStdString& interfaceName, CStdString& essId, CStdString& key, EncMode& enc)
{
// Get current settings from the GUI components
CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_INTERFACES);
OnMessage(msg);
int iItem = msg.GetParam1();
CNetworkInterface* interface = m_interfaces[iItem];
interfaceName = interface->GetName();
if (interface->IsWireless())
{
CGUIMessage msg2(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_WIRELESS);
OnMessage(msg2);
int iItem = msg2.GetParam1();
essId = m_networkItems[iItem]->GetLabel();
CGUIButtonControl* passwordButton = (CGUIButtonControl*) GetControl(CONTROL_PASSWORD);
key = passwordButton->GetLabel();
CGUIButtonControl* encSelectionButton = (CGUIButtonControl*) GetControl(CONTROL_ENC_SELECTION);
CStdString encStr = encSelectionButton->GetLabel();
for (int i = 0; i < 5; i++)
{
if (strcasecmp(encStr.c_str(), ENC_LABELS[i]) == 0)
{
enc = ENC_MODES[i];
break;
}
}
}
}
示例2: CGUIButtonControl
int CGUIDialogContextMenu::AddButton(const CStdString &strLabel)
{ // add a button to our control
CGUIButtonControl *pButtonTemplate = (CGUIButtonControl *)GetFirstFocusableControl(BUTTON_TEMPLATE);
if (!pButtonTemplate) pButtonTemplate = (CGUIButtonControl *)GetControl(BUTTON_TEMPLATE);
if (!pButtonTemplate) return 0;
CGUIButtonControl *pButton = new CGUIButtonControl(*pButtonTemplate);
if (!pButton) return 0;
// set the button's ID and position
m_iNumButtons++;
int id = BUTTON_TEMPLATE + m_iNumButtons;
pButton->SetID(id);
pButton->SetPosition(pButtonTemplate->GetXPosition(), (m_iNumButtons - 1)*(pButtonTemplate->GetHeight() + SPACE_BETWEEN_BUTTONS));
pButton->SetVisible(true);
pButton->SetNavigation(id - 1, id + 1, id, id);
pButton->SetLabel(strLabel);
AddControl(pButton);
// and update the size of our menu
CGUIControl *pControl = (CGUIControl *)GetControl(BACKGROUND_IMAGE);
if (pControl)
{
pControl->SetHeight(m_iNumButtons*(pButtonTemplate->GetHeight() + SPACE_BETWEEN_BUTTONS));
CGUIControl *pControl2 = (CGUIControl *)GetControl(BACKGROUND_BOTTOM);
if (pControl2)
pControl2->SetPosition(pControl2->GetXPosition(), pControl->GetYPosition() + pControl->GetHeight());
}
return m_iNumButtons;
}
示例3: CGUIButtonControl
CGUIControl* ControlButton::Create()
{
CLabelInfo label;
label.font = g_fontManager.GetFont(strFont);
label.textColor = textColor;
label.disabledColor = disabledColor;
label.shadowColor = shadowColor;
label.focusedColor = focusedColor;
label.align = align;
label.offsetX = (float)textOffsetX;
label.offsetY = (float)textOffsetY;
label.angle = (float)-iAngle;
pGUIControl = new CGUIButtonControl(
iParentId,
iControlId,
(float)dwPosX,
(float)dwPosY,
(float)dwWidth,
(float)dwHeight,
CTextureInfo(strTextureFocus),
CTextureInfo(strTextureNoFocus),
label);
CGUIButtonControl* pGuiButtonControl =
(CGUIButtonControl*)pGUIControl;
pGuiButtonControl->SetLabel(strText);
pGuiButtonControl->SetLabel2(strText2);
return pGUIControl;
}
示例4: GetFocusedControl
void CGUIDialogButtonMenu::FrameMove()
{
// get the label control
CGUILabelControl *pLabel = (CGUILabelControl *)GetControl(CONTROL_BUTTON_LABEL);
if (pLabel)
{
// get the active window, and put it's label into the label control
const CGUIControl *pControl = GetFocusedControl();
if (pControl && (pControl->GetControlType() == CGUIControl::GUICONTROL_BUTTON || pControl->GetControlType() == CGUIControl::GUICONTROL_TOGGLEBUTTON))
{
CGUIButtonControl *pButton = (CGUIButtonControl *)pControl;
pLabel->SetLabel(pButton->GetLabel());
}
}
CGUIDialog::FrameMove();
}
示例5: GetLabel
void Interface_GUIControlButton::GetLabel(void* kodiBase, void* handle, char &label, unsigned int &iMaxStringSize)
{
CAddonDll* addon = static_cast<CAddonDll*>(kodiBase);
if (!addon)
{
CLog::Log(LOGERROR, "ADDON::Interface_GUIControlButton::%s - invalid data", __FUNCTION__);
return;
}
if (!handle)
{
CLog::Log(LOGERROR, "ADDON::Interface_GUIControlButton::%s - invalid handler data on addon '%s'", __FUNCTION__, addon->ID().c_str());
return;
}
CGUIButtonControl* pButton = static_cast<CGUIButtonControl *>(handle);
std::string text = pButton->GetLabel();
strncpy(&label, text.c_str(), iMaxStringSize);
iMaxStringSize = text.length();
}
示例6: FreeSections
void CGUIDialogAddonSettings::CreateSections()
{
CGUIControlGroupList *group = dynamic_cast<CGUIControlGroupList *>(GetControl(CONTROL_SECTION_AREA));
CGUIButtonControl *originalButton = dynamic_cast<CGUIButtonControl *>(GetControl(CONTROL_DEFAULT_SECTION_BUTTON));
if (!m_addon)
return;
if (originalButton)
originalButton->SetVisible(false);
// clear the category group
FreeSections();
// grab our categories
const TiXmlElement *category = m_addon->GetSettingsXML()->FirstChildElement("category");
if (!category) // add a default one...
category = m_addon->GetSettingsXML();
int buttonID = CONTROL_START_SECTION;
while (category)
{ // add a category
CGUIButtonControl *button = originalButton ? originalButton->Clone() : NULL;
std::string label = GetString(category->Attribute("label"));
if (label.empty())
label = g_localizeStrings.Get(128);
if (buttonID >= CONTROL_START_SETTING)
{
CLog::Log(LOGERROR, "%s - cannot have more than %d categories - simplify your addon!", __FUNCTION__, CONTROL_START_SETTING - CONTROL_START_SECTION);
break;
}
// add the category button
if (button && group)
{
button->SetID(buttonID++);
button->SetLabel(label);
button->SetVisible(true);
group->AddControl(button);
}
// grab a local copy of all the settings in this category
const TiXmlElement *setting = category->FirstChildElement("setting");
while (setting)
{
const std::string id = XMLUtils::GetAttribute(setting, "id");
if (!id.empty())
m_settings[id] = m_addon->GetSetting(id);
setting = setting->NextSiblingElement("setting");
}
category = category->NextSiblingElement("category");
}
m_totalSections = buttonID - CONTROL_START_SECTION;
}
示例7: FreeControls
void CGUIWindowSettingsCategory::SetupControls(bool createSettings /* = true */)
{
// cleanup first, if necessary
FreeControls();
m_pOriginalSpin = (CGUISpinControlEx*)GetControl(CONTROL_DEFAULT_SPIN);
m_pOriginalRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_DEFAULT_RADIOBUTTON);
m_pOriginalCategoryButton = (CGUIButtonControl *)GetControl(CONTROL_DEFAULT_CATEGORY_BUTTON);
m_pOriginalButton = (CGUIButtonControl *)GetControl(CONTROL_DEFAULT_BUTTON);
m_pOriginalImage = (CGUIImage *)GetControl(CONTROL_DEFAULT_SEPARATOR);
if (!m_pOriginalCategoryButton || !m_pOriginalSpin || !m_pOriginalRadioButton || !m_pOriginalButton)
return ;
m_pOriginalEdit = (CGUIEditControl *)GetControl(CONTROL_DEFAULT_EDIT);
if (!m_pOriginalEdit || m_pOriginalEdit->GetControlType() != CGUIControl::GUICONTROL_EDIT)
{
delete m_pOriginalEdit;
m_pOriginalEdit = new CGUIEditControl(*m_pOriginalButton);
newOriginalEdit = true;
}
m_pOriginalSpin->SetVisible(false);
m_pOriginalRadioButton->SetVisible(false);
m_pOriginalButton->SetVisible(false);
m_pOriginalCategoryButton->SetVisible(false);
m_pOriginalEdit->SetVisible(false);
if (m_pOriginalImage) m_pOriginalImage->SetVisible(false);
// setup our control groups...
CGUIControlGroupList *group = (CGUIControlGroupList *)GetControl(CATEGORY_GROUP_ID);
if (!group)
return;
CSettingSection *section = GetSection(m_iSection);
if (section == NULL)
return;
// update the screen string
SET_CONTROL_LABEL(CONTROL_SETTINGS_LABEL, section->GetLabel());
SET_CONTROL_LABEL(CONTRL_BTN_LEVELS, 10036 + (int)CViewStateSettings::Get().GetSettingLevel());
// get the categories we need
m_categories = section->GetCategories(CViewStateSettings::Get().GetSettingLevel());
if (m_categories.empty())
m_categories.push_back(m_dummyCategory);
// go through the categories and create the necessary buttons
int buttonIdOffset = 0;
for (SettingCategoryList::const_iterator category = m_categories.begin(); category != m_categories.end(); ++category)
{
CGUIButtonControl *pButton = NULL;
if (m_pOriginalCategoryButton->GetControlType() == CGUIControl::GUICONTROL_TOGGLEBUTTON)
pButton = new CGUIToggleButtonControl(*(CGUIToggleButtonControl *)m_pOriginalCategoryButton);
else
pButton = new CGUIButtonControl(*m_pOriginalCategoryButton);
pButton->SetLabel(g_localizeStrings.Get((*category)->GetLabel()));
pButton->SetID(CONTROL_START_BUTTONS + buttonIdOffset);
pButton->SetVisible(true);
pButton->AllocResources();
group->AddControl(pButton);
buttonIdOffset++;
}
if (createSettings)
CreateSettings();
// set focus correctly
m_defaultControl = CONTROL_START_BUTTONS;
}
示例8: CGUIButtonControl
void CGUIDialogContextMenu::SetupButtons()
{
if (!m_buttons.size())
return;
// disable the template button control
CGUIButtonControl *pButtonTemplate = dynamic_cast<CGUIButtonControl *>(GetFirstFocusableControl(BUTTON_TEMPLATE));
if (!pButtonTemplate)
pButtonTemplate = dynamic_cast<CGUIButtonControl *>(GetControl(BUTTON_TEMPLATE));
if (!pButtonTemplate)
return;
pButtonTemplate->SetVisible(false);
CGUIControlGroupList* pGroupList = dynamic_cast<CGUIControlGroupList *>(GetControl(GROUP_LIST));
// add our buttons
for (unsigned int i = 0; i < m_buttons.size(); i++)
{
CGUIButtonControl *pButton = new CGUIButtonControl(*pButtonTemplate);
if (pButton)
{ // set the button's ID and position
int id = BUTTON_START + i;
pButton->SetID(id);
pButton->SetVisible(true);
pButton->SetLabel(m_buttons[i].second);
if (pGroupList)
{
pButton->SetPosition(pButtonTemplate->GetXPosition(), pButtonTemplate->GetYPosition());
// try inserting context buttons at position specified by template
// button, if template button is not in grouplist fallback to adding
// new buttons at the end of grouplist
if (!pGroupList->InsertControl(pButton, pButtonTemplate))
pGroupList->AddControl(pButton);
}
}
}
// fix up background images placement and size
CGUIControl *pControl = (CGUIControl *)GetControl(BACKGROUND_IMAGE);
if (pControl)
{
// first set size of background image
if (pGroupList)
{
if (pGroupList->GetOrientation() == VERTICAL)
{
// keep gap between bottom edges of grouplist and background image
pControl->SetHeight(m_backgroundImageSize - pGroupList->Size() + pGroupList->GetHeight());
}
else
{
// keep gap between right edges of grouplist and background image
pControl->SetWidth(m_backgroundImageSize - pGroupList->Size() + pGroupList->GetWidth());
}
}
}
// update our default control
if (pGroupList)
m_defaultControl = pGroupList->GetID();
}
示例9: SET_CONTROL_LABEL
void CGUIDialogPluginSettings::CreateControls()
{
CGUISpinControlEx *pOriginalSpin = (CGUISpinControlEx*)GetControl(CONTROL_DEFAULT_SPIN);
CGUIRadioButtonControl *pOriginalRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_DEFAULT_RADIOBUTTON);
CGUIButtonControl *pOriginalButton = (CGUIButtonControl *)GetControl(CONTROL_DEFAULT_BUTTON);
CGUIImage *pOriginalImage = (CGUIImage *)GetControl(CONTROL_DEFAULT_SEPARATOR);
CGUILabelControl *pOriginalLabel = (CGUILabelControl *)GetControl(CONTROL_DEFAULT_LABEL_SEPARATOR);
if (!pOriginalSpin || !pOriginalRadioButton || !pOriginalButton || !pOriginalImage)
return;
pOriginalSpin->SetVisible(false);
pOriginalRadioButton->SetVisible(false);
pOriginalButton->SetVisible(false);
pOriginalImage->SetVisible(false);
if (pOriginalLabel)
pOriginalLabel->SetVisible(false);
// clear the category group
CGUIControlGroupList *group = (CGUIControlGroupList *)GetControl(CONTROL_AREA);
if (!group)
return;
// set our dialog heading
SET_CONTROL_LABEL(CONTROL_HEADING_LABEL, m_strHeading);
// Create our base path, used for type "fileenum" settings
CStdString basepath = "Q:\\plugins\\";
CUtil::AddFileToFolder(basepath, m_url.GetHostName(), basepath);
CUtil::AddFileToFolder(basepath, m_url.GetFileName(), basepath);
CGUIControl* pControl = NULL;
int controlId = CONTROL_START_CONTROL;
TiXmlElement *setting = m_settings.GetPluginRoot()->FirstChildElement("setting");
while (setting)
{
const char *type = setting->Attribute("type");
const char *option = setting->Attribute("option");
const char *id = setting->Attribute("id");
CStdString values;
if (setting->Attribute("values"))
values = setting->Attribute("values");
CStdString lvalues;
if (setting->Attribute("lvalues"))
lvalues = setting->Attribute("lvalues");
CStdString entries;
if (setting->Attribute("entries"))
entries = setting->Attribute("entries");
CStdString label;
if (setting->Attribute("label") && atoi(setting->Attribute("label")) > 0)
label.Format("$LOCALIZE[%s]", setting->Attribute("label"));
else
label = setting->Attribute("label");
if (type)
{
if (strcmpi(type, "text") == 0 || strcmpi(type, "ipaddress") == 0 ||
strcmpi(type, "integer") == 0 || strcmpi(type, "video") == 0 ||
strcmpi(type, "music") == 0 || strcmpi(type, "pictures") == 0 ||
strcmpi(type, "folder") == 0 || strcmpi(type, "programs") == 0 ||
strcmpi(type, "files") == 0 || strcmpi(type, "action") == 0)
{
pControl = new CGUIButtonControl(*pOriginalButton);
if (!pControl) return;
((CGUIButtonControl *)pControl)->SettingsCategorySetTextAlign(XBFONT_CENTER_Y);
((CGUIButtonControl *)pControl)->SetLabel(label);
if (id)
((CGUIButtonControl *)pControl)->SetLabel2(m_settings.Get(id));
if (option && strcmpi(option, "hidden") == 0)
((CGUIButtonControl *)pControl)->SetHidden(true);
}
else if (strcmpi(type, "bool") == 0)
{
pControl = new CGUIRadioButtonControl(*pOriginalRadioButton);
if (!pControl) return;
((CGUIRadioButtonControl *)pControl)->SetLabel(label);
((CGUIRadioButtonControl *)pControl)->SetSelected(m_settings.Get(id) == "true");
}
else if (strcmpi(type, "enum") == 0 || strcmpi(type, "labelenum") == 0)
{
vector<CStdString> valuesVec;
vector<CStdString> entryVec;
pControl = new CGUISpinControlEx(*pOriginalSpin);
if (!pControl) return;
((CGUISpinControlEx *)pControl)->SetText(label);
if (!lvalues.IsEmpty())
CUtil::Tokenize(lvalues, valuesVec, "|");
else
CUtil::Tokenize(values, valuesVec, "|");
if (!entries.IsEmpty())
CUtil::Tokenize(entries, entryVec, "|");
for (unsigned int i = 0; i < valuesVec.size(); i++)
{
int iAdd = i;
if (entryVec.size() > i)
iAdd = atoi(entryVec[i]);
if (!lvalues.IsEmpty())
//.........这里部分代码省略.........
示例10: OnOkay
void CGUIDialogSettings::OnClick(int iID)
{
if (iID == CONTROL_OKAY_BUTTON)
{
OnOkay();
Close();
return;
}
if (iID == CONTROL_CANCEL_BUTTON)
{
OnCancel();
Close();
return;
}
unsigned int settingNum = iID - CONTROL_START;
if (settingNum >= m_settings.size()) return;
SettingInfo &setting = m_settings.at(settingNum);
if (setting.type == SettingInfo::SPIN)
{
CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(iID);
if (setting.data) *(int *)setting.data = pControl->GetValue();
}
else if (setting.type == SettingInfo::BUTTON_DIALOG)
{
CGUIButtonControl *pControl = (CGUIButtonControl *)GetControl(iID);
if (setting.data) *(CStdString *)setting.data = pControl->GetLabel2();
}
else if (setting.type == SettingInfo::EDIT)
{
CGUIEditControl *pControl = (CGUIEditControl *)GetControl(iID);
if (setting.data) *(CStdString *)setting.data = pControl->GetLabel2();
}
else if (setting.type == SettingInfo::EDIT_NUM)
{
CGUIEditControl *pControl = (CGUIEditControl *)GetControl(iID);
if (setting.data) {
CStdString strIndex = pControl->GetLabel2();
*(int *)setting.data = atol(strIndex.c_str());
}
}
else if (setting.type == SettingInfo::CHECK)
{
CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(iID);
if (setting.data) *(bool *)setting.data = pControl->IsSelected();
}
else if (setting.type == SettingInfo::CHECK_UCHAR)
{
CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(iID);
if (setting.data) *(unsigned char*)setting.data = pControl->IsSelected() ? 1 : 0;
}
else if (setting.type == SettingInfo::SLIDER)
{
CGUISettingsSliderControl *pControl = (CGUISettingsSliderControl *)GetControl(iID);
if (setting.data) *(float *)setting.data = pControl->GetFloatValue();
if (setting.formatFunction) pControl->SetTextValue(setting.formatFunction(pControl->GetFloatValue(), setting.interval));
}
else if (setting.type == SettingInfo::BUTTON && m_usePopupSliders && setting.data)
{ // we're using popup sliders
CGUIDialogSlider::ShowAndGetInput(setting.name, *(float *)setting.data, setting.min, setting.interval, setting.max, this, &setting);
if (setting.formatFunction)
SET_CONTROL_LABEL2(iID, setting.formatFunction(*(float *)setting.data, setting.interval));
}
OnSettingChanged(setting);
}
示例11: if
void CGUIDialogSettings::UpdateSetting(unsigned int id)
{
unsigned int settingNum = (unsigned int)-1;
for (unsigned int i = 0; i < m_settings.size(); i++)
{
if (m_settings[i].id == id)
{
settingNum = i;
break;
}
}
if(settingNum == (unsigned int)-1)
return;
SettingInfo &setting = m_settings.at(settingNum);
unsigned int controlID = settingNum + CONTROL_START;
if (setting.type == SettingInfo::SPIN)
{
CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(controlID);
if (pControl && setting.data) pControl->SetValue(*(int *)setting.data);
}
else if (setting.type == SettingInfo::CHECK)
{
CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(controlID);
if (pControl && setting.data) pControl->SetSelected(*(bool *)setting.data);
}
else if (setting.type == SettingInfo::CHECK_UCHAR)
{
CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(controlID);
if (pControl && setting.data) pControl->SetSelected(*(unsigned char*)setting.data ? true : false);
}
else if (setting.type == SettingInfo::SLIDER)
{
CGUISettingsSliderControl *pControl = (CGUISettingsSliderControl *)GetControl(controlID);
float value = *(float *)setting.data;
if (pControl && setting.data)
{
pControl->SetFloatValue(value);
if (setting.formatFunction) pControl->SetTextValue(setting.formatFunction(value, setting.interval));
}
}
else if (setting.type == SettingInfo::BUTTON_DIALOG)
{
SET_CONTROL_LABEL(controlID,setting.name);
CGUIButtonControl *pControl = (CGUIButtonControl *)GetControl(controlID);
if (pControl && setting.data) pControl->SetLabel2(*(CStdString *)setting.data);
}
else if (setting.type == SettingInfo::EDIT)
{
CGUIEditControl *pControl = (CGUIEditControl *)GetControl(controlID);
if (pControl && setting.data) pControl->SetLabel2(*(CStdString *)setting.data);
}
else if (setting.type == SettingInfo::EDIT_NUM)
{
CGUIEditControl *pControl = (CGUIEditControl *)GetControl(controlID);
if (pControl && setting.data) {
CStdString strIndex;
strIndex.Format("%i", *(int *)setting.data);
pControl->SetLabel2(strIndex);
}
}
if (setting.enabled)
{
CONTROL_ENABLE(controlID);
}
else
{
CONTROL_DISABLE(controlID);
}
}
示例12: GetControl
void CGUIDialogContextMenu::SetupButtons()
{
if (!m_buttons.size())
return;
// disable the template button control
CGUIButtonControl *pButtonTemplate = (CGUIButtonControl *)GetFirstFocusableControl(BUTTON_TEMPLATE);
if (!pButtonTemplate) pButtonTemplate = (CGUIButtonControl *)GetControl(BUTTON_TEMPLATE);
if (!pButtonTemplate)
return;
pButtonTemplate->SetVisible(false);
CGUIControlGroupList* pGroupList = NULL;
{
const CGUIControl* pControl = GetControl(GROUP_LIST);
if (pControl && pControl->GetControlType() == GUICONTROL_GROUPLIST)
pGroupList = (CGUIControlGroupList*)pControl;
}
// add our buttons
for (unsigned int i = 0; i < m_buttons.size(); i++)
{
CGUIButtonControl *pButton = new CGUIButtonControl(*pButtonTemplate);
if (pButton)
{ // set the button's ID and position
int id = BUTTON_START + i;
pButton->SetID(id);
pButton->SetVisible(true);
pButton->SetLabel(m_buttons[i].second);
if (pGroupList)
{
pButton->SetPosition(pButtonTemplate->GetXPosition(), pButtonTemplate->GetYPosition());
pGroupList->AddControl(pButton);
}
#if PRE_SKIN_VERSION_11_COMPATIBILITY
else
{
pButton->SetPosition(pButtonTemplate->GetXPosition(), i*(pButtonTemplate->GetHeight() + SPACE_BETWEEN_BUTTONS));
pButton->SetNavigation(id - 1, id + 1, id, id);
AddControl(pButton);
}
#endif
}
}
CGUIControl *pControl = NULL;
#if PRE_SKIN_VERSION_11_COMPATIBILITY
if (!pGroupList)
{
// if we don't have grouplist update the navigation of the first and last buttons
pControl = (CGUIControl *)GetControl(BUTTON_START);
if (pControl)
pControl->SetNavigation(BUTTON_END, pControl->GetControlIdDown(), pControl->GetControlIdLeft(), pControl->GetControlIdRight());
pControl = (CGUIControl *)GetControl(BUTTON_END);
if (pControl)
pControl->SetNavigation(pControl->GetControlIdUp(), BUTTON_START, pControl->GetControlIdLeft(), pControl->GetControlIdRight());
}
#endif
// fix up background images placement and size
pControl = (CGUIControl *)GetControl(BACKGROUND_IMAGE);
if (pControl)
{
// first set size of background image
if (pGroupList)
{
if (pGroupList->GetOrientation() == VERTICAL)
{
// keep gap between bottom edges of grouplist and background image
pControl->SetHeight(pControl->GetHeight() - pGroupList->Size() + pGroupList->GetHeight());
}
else
{
// keep gap between right edges of grouplist and background image
pControl->SetWidth(pControl->GetWidth() - pGroupList->Size() + pGroupList->GetWidth());
}
}
#if PRE_SKIN_VERSION_11_COMPATIBILITY
else
pControl->SetHeight(m_buttons.size() * (pButtonTemplate->GetHeight() + SPACE_BETWEEN_BUTTONS));
if (pGroupList && pGroupList->GetOrientation() == HORIZONTAL)
{
// if there is grouplist control with horizontal orientation - adjust width of top and bottom background
CGUIControl* pControl2 = (CGUIControl *)GetControl(BACKGROUND_TOP);
if (pControl2)
pControl2->SetWidth(pControl->GetWidth());
pControl2 = (CGUIControl *)GetControl(BACKGROUND_BOTTOM);
if (pControl2)
pControl2->SetWidth(pControl->GetWidth());
}
else
{
// adjust position of bottom background
CGUIControl* pControl2 = (CGUIControl *)GetControl(BACKGROUND_BOTTOM);
if (pControl2)
pControl2->SetPosition(pControl2->GetXPosition(), pControl->GetYPosition() + pControl->GetHeight());
}
#endif
//.........这里部分代码省略.........
示例13: FreeControls
void CGUIDialogAddonSettings::CreateControls()
{
FreeControls();
CGUISpinControlEx *pOriginalSpin = dynamic_cast<CGUISpinControlEx*>(GetControl(CONTROL_DEFAULT_SPIN));
CGUIRadioButtonControl *pOriginalRadioButton = dynamic_cast<CGUIRadioButtonControl *>(GetControl(CONTROL_DEFAULT_RADIOBUTTON));
CGUIButtonControl *pOriginalButton = dynamic_cast<CGUIButtonControl *>(GetControl(CONTROL_DEFAULT_BUTTON));
CGUIImage *pOriginalImage = dynamic_cast<CGUIImage *>(GetControl(CONTROL_DEFAULT_SEPARATOR));
CGUILabelControl *pOriginalLabel = dynamic_cast<CGUILabelControl *>(GetControl(CONTROL_DEFAULT_LABEL_SEPARATOR));
CGUISettingsSliderControl *pOriginalSlider = dynamic_cast<CGUISettingsSliderControl *>(GetControl(CONTROL_DEFAULT_SLIDER));
if (!m_addon || !pOriginalSpin || !pOriginalRadioButton || !pOriginalButton || !pOriginalImage
|| !pOriginalLabel || !pOriginalSlider)
return;
pOriginalSpin->SetVisible(false);
pOriginalRadioButton->SetVisible(false);
pOriginalButton->SetVisible(false);
pOriginalImage->SetVisible(false);
pOriginalLabel->SetVisible(false);
pOriginalSlider->SetVisible(false);
CGUIControlGroupList *group = dynamic_cast<CGUIControlGroupList *>(GetControl(CONTROL_SETTINGS_AREA));
if (!group)
return;
// set our dialog heading
SET_CONTROL_LABEL(CONTROL_HEADING_LABEL, m_strHeading);
CGUIControl* pControl = NULL;
int controlId = CONTROL_START_SETTING;
const TiXmlElement *setting = GetFirstSetting();
while (setting)
{
const std::string type = XMLUtils::GetAttribute(setting, "type");
const std::string id = XMLUtils::GetAttribute(setting, "id");
const std::string values = XMLUtils::GetAttribute(setting, "values");
const std::string lvalues = XMLUtils::GetAttribute(setting, "lvalues");
const std::string entries = XMLUtils::GetAttribute(setting, "entries");
const std::string defaultVal = XMLUtils::GetAttribute(setting, "default");
const std::string subsetting = XMLUtils::GetAttribute(setting, "subsetting");
const std::string label = GetString(setting->Attribute("label"), subsetting == "true");
bool bSort = XMLUtils::GetAttribute(setting, "sort") == "yes";
if (!type.empty())
{
bool isAddonSetting = false;
if (type == "text" || type == "ipaddress"
|| type == "number" || type == "video"
|| type == "audio" || type == "image"
|| type == "folder" || type == "executable"
|| type == "file" || type == "action"
|| type == "date" || type == "time"
|| type == "select" || (isAddonSetting = type == "addon"))
{
pControl = new CGUIButtonControl(*pOriginalButton);
if (!pControl) return;
((CGUIButtonControl *)pControl)->SetLabel(label);
if (!id.empty())
{
std::string value = m_settings[id];
m_buttonValues[id] = value;
// get any option to test for hidden
const std::string option = XMLUtils::GetAttribute(setting, "option");
if (option == "urlencoded")
value = CURL::Decode(value);
else if (option == "hidden")
{
std::string hiddenText;
hiddenText.append(value.size(), L'*');
((CGUIButtonControl *)pControl)->SetLabel2(hiddenText);
}
else
{
if (isAddonSetting)
((CGUIButtonControl *)pControl)->SetLabel2(GetAddonNames(value));
else if (type == "select" && !lvalues.empty())
{
vector<string> valuesVec = StringUtils::Split(lvalues, '|');
int selected = atoi(value.c_str());
if (selected >= 0 && selected < (int)valuesVec.size())
{
std::string label = m_addon->GetString(atoi(valuesVec[selected].c_str()));
if (label.empty())
label = g_localizeStrings.Get(atoi(valuesVec[selected].c_str()));
((CGUIButtonControl *)pControl)->SetLabel2(label);
}
}
else
((CGUIButtonControl *)pControl)->SetLabel2(value);
}
}
else
((CGUIButtonControl *)pControl)->SetLabel2(defaultVal);
}
else if (type == "bool" && !id.empty())
{
pControl = new CGUIRadioButtonControl(*pOriginalRadioButton);
if (!pControl) return;
((CGUIRadioButtonControl *)pControl)->SetLabel(label);
//.........这里部分代码省略.........
示例14: GetFocusedControlID
bool CGUIWindowBoxeeWizardNetwork::OnAction(const CAction &action)
{
int iControl = GetFocusedControlID();
if (action.wID == ACTION_PREVIOUS_MENU || (action.wID == ACTION_SELECT_ITEM && iControl == CONTROL_BACK))
{
Close();
}
else if (action.wID == ACTION_SELECT_ITEM && iControl == CONTROL_INTERFACES)
{
ShowWirelessNetworksIfNeeded();
CGUIListContainer *pList = (CGUIListContainer *)GetControl(CONTROL_INTERFACES);
if (pList)
pList->SetSingleSelectedItem();
return true;
}
else if (action.wID == ACTION_MOVE_LEFT && iControl == CONTROL_WIRELESS)
{
ShowInterfaces();
SET_CONTROL_FOCUS(CONTROL_INTERFACES, 0);
CGUIListContainer *pList = (CGUIListContainer *)GetControl(CONTROL_WIRELESS);
if (pList)
pList->SetSingleSelectedItem();
return true;
}
else if (action.wID == ACTION_SELECT_ITEM && iControl == CONTROL_WIRELESS)
{
ShowPasswordIfNeeded();
CGUIListContainer *pList = (CGUIListContainer *)GetControl(CONTROL_WIRELESS);
if (pList)
pList->SetSingleSelectedItem();
return true;
}
else if (action.wID == ACTION_SELECT_ITEM && iControl == CONTROL_PASSWORD)
{
CGUIButtonControl* passwordButton = (CGUIButtonControl*) GetControl(iControl);
CStdString password = passwordButton->GetLabel();
if (CGUIDialogKeyboard::ShowAndGetInput(password, g_localizeStrings.Get(789), false))
{
passwordButton->SetLabel(password);
CONTROL_ENABLE(CONTROL_NEXT);
SET_CONTROL_FOCUS(CONTROL_NEXT, 0);
}
return true;
}
else if (action.wID == ACTION_SELECT_ITEM && iControl == CONTROL_ENC)
{
CGUIButtonControl* encSelectionButton = (CGUIButtonControl*) GetControl(CONTROL_ENC_SELECTION);
CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_ENC);
OnMessage(msg);
int iItem = msg.GetParam1();
encSelectionButton->SetLabel(ENC_LABELS[iItem]);
SET_CONTROL_HIDDEN(CONTROL_ENC);
if (iItem == ENC_NONE)
{
SET_CONTROL_HIDDEN(CONTROL_PASSWORD_GROUP);
SET_CONTROL_FOCUS(CONTROL_NEXT, 0);
}
else
{
SET_CONTROL_FOCUS(CONTROL_PASSWORD, 0);
}
return true;
}
else if (action.wID == ACTION_MOVE_LEFT && (iControl == CONTROL_ENC_SELECTION || iControl == CONTROL_PASSWORD))
{
SET_CONTROL_HIDDEN(CONTROL_ENC_GROUP);
SET_CONTROL_HIDDEN(CONTROL_PASSWORD_GROUP);
SET_CONTROL_FOCUS(CONTROL_WIRELESS, 0);
return true;
}
else if (action.wID == ACTION_MOVE_DOWN && iControl == CONTROL_ENC_SELECTION)
{
if (GetControl(CONTROL_PASSWORD_GROUP)->IsVisible())
{
SET_CONTROL_FOCUS(CONTROL_PASSWORD, 0);
}
else if (!GetControl(CONTROL_NEXT)->IsDisabled())
{
SET_CONTROL_FOCUS(CONTROL_NEXT, 0);
}
return true;
}
else if (action.wID == ACTION_MOVE_UP && (iControl == CONTROL_NEXT || iControl == CONTROL_BACK))
{
if (GetControl(CONTROL_PASSWORD_GROUP)->IsVisible())
{
SET_CONTROL_FOCUS(CONTROL_PASSWORD, 0);
}
else if (GetControl(CONTROL_ENC_GROUP)->IsVisible())
{
SET_CONTROL_FOCUS(CONTROL_ENC_SELECTION, 0);
}
else
{
//.........这里部分代码省略.........
示例15: if
bool CGUIDialogAudioDSPManager::OnContextButton(int itemNumber, CONTEXT_BUTTON button, int listType)
{
CFileItemPtr pItem;
int listSize = 0;
if (listType == LIST_ACTIVE)
{
pItem = m_activeItems[m_iCurrentType]->Get(itemNumber);
listSize = m_activeItems[m_iCurrentType]->Size();
}
else if (listType == LIST_AVAILABLE)
{
pItem = m_availableItems[m_iCurrentType]->Get(itemNumber);
listSize = m_availableItems[m_iCurrentType]->Size();
}
/* Check file item is in list range and get his pointer */
if (!pItem || itemNumber < 0 || itemNumber >= listSize)
{
return false;
}
if (button == CONTEXT_BUTTON_ACTIVATE)
{
/*!
* Deactivate selected processing mode
*/
if (pItem->GetProperty("ActiveMode").asBoolean())
{
// remove mode from active mode list and add it to available mode list
CFileItemPtr newItem(dynamic_cast<CFileItem*>(pItem->Clone()));
newItem->SetProperty("ActiveMode", false);
newItem->SetProperty("Changed", true);
m_activeItems[m_iCurrentType]->Remove(itemNumber);
m_availableItems[m_iCurrentType]->Add(newItem);
}
else
{
/*!
* Activate selected processing mode
*/
if ((m_iCurrentType == AE_DSP_MODE_TYPE_INPUT_RESAMPLE || m_iCurrentType == AE_DSP_MODE_TYPE_OUTPUT_RESAMPLE) && m_activeItems[m_iCurrentType]->Size() > 0)
{ // if there is already an active resampler, now we remove it
CFileItemPtr activeResampler = m_activeItems[m_iCurrentType]->Get(0);
if (activeResampler)
{
CFileItemPtr newItem(dynamic_cast<CFileItem*>(activeResampler->Clone()));
newItem->SetProperty("ActiveMode", false);
newItem->SetProperty("Changed", true);
m_availableItems[m_iCurrentType]->Add(newItem);
// clear active list, because only one active resampling mode is supported by ActiveAEDSP
m_activeItems[m_iCurrentType]->Clear();
}
}
// remove mode from available mode list and add it to active mode list
CFileItemPtr newItem(dynamic_cast<CFileItem*>(pItem->Clone()));
newItem->SetProperty("Number", (int)m_activeItems[m_iCurrentType]->Size() +1);
newItem->SetProperty("Changed", true);
newItem->SetProperty("ActiveMode", true);
m_availableItems[m_iCurrentType]->Remove(itemNumber);
m_activeItems[m_iCurrentType]->Add(newItem);
}
m_bContainsChanges = true;
if (m_bContinuousSaving)
{
SaveList();
}
// reorder available mode list, so that the mode order is always consistent
m_availableItems[m_iCurrentType]->ClearSortState();
m_availableItems[m_iCurrentType]->Sort(SortByLabel, SortOrderAscending);
// update active and available mode list
Renumber();
m_availableViewControl.SetItems(*m_availableItems[m_iCurrentType]);
m_activeViewControl.SetItems(*m_activeItems[m_iCurrentType]);
}
else if (button == CONTEXT_BUTTON_MOVE)
{
m_bMovingMode = true;
pItem->Select(true);
CGUIListContainer *modeList = dynamic_cast<CGUIListContainer*>(GetControl(CONTROL_LIST_MODE_SELECTION));
CGUIButtonControl *applyButton = dynamic_cast<CGUIButtonControl*>(GetControl(CONTROL_BUTTON_APPLY_CHANGES));
CGUIButtonControl *clearActiveModesButton = dynamic_cast<CGUIButtonControl*>(GetControl(CONTROL_BUTTON_CLEAR_ACTIVE_MODES));
if (!modeList || !applyButton || !clearActiveModesButton)
{
helper_LogError(__FUNCTION__);
return false;
}
// if we are in MovingMode all buttons and mode selection list will be disabled!
modeList->SetEnabled(false);
clearActiveModesButton->SetEnabled(false);
if (!m_bContinuousSaving)
{
//.........这里部分代码省略.........