本文整理汇总了C++中BaseSettingControlPtr::GetSetting方法的典型用法代码示例。如果您正苦于以下问题:C++ BaseSettingControlPtr::GetSetting方法的具体用法?C++ BaseSettingControlPtr::GetSetting怎么用?C++ BaseSettingControlPtr::GetSetting使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BaseSettingControlPtr
的用法示例。
在下文中一共展示了BaseSettingControlPtr::GetSetting方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnClick
void CGUIWindowSettingsCategory::OnClick(BaseSettingControlPtr pSettingControl)
{
if (pSettingControl->GetSetting()->GetId() == RESET_SETTING_ID)
{
OnAction(CAction(ACTION_SETTINGS_RESET));
return;
}
// we need to first set the delayed setting and then execute OnClick()
// because OnClick() triggers OnSettingChanged() and there we need to
// know if the changed setting is delayed or not
if (pSettingControl->IsDelayed())
{
m_delayedSetting = pSettingControl;
if (m_delayedTimer.IsRunning())
m_delayedTimer.Restart();
else
m_delayedTimer.Start(SETTING_DELAY);
return;
}
// if changing the setting fails
// we need to restore the proper state
if (!pSettingControl->OnClick())
pSettingControl->Update();
}
示例2: UpdateSettings
void CGUIWindowSettingsCategory::UpdateSettings()
{
for (vector<BaseSettingControlPtr>::iterator it = m_settingControls.begin(); it != m_settingControls.end(); it++)
{
BaseSettingControlPtr pSettingControl = *it;
CSetting *pSetting = pSettingControl->GetSetting();
CGUIControl *pControl = pSettingControl->GetControl();
if (pSetting == NULL || pControl == NULL)
continue;
// update the setting's control's state (enabled/disabled etc)
const SettingDependencies &deps = pSetting->GetDependencies();
for (SettingDependencies::const_iterator dep = deps.begin(); dep != deps.end(); dep++)
{
// don't check "update" dependencies here as all the controls are already
// setup properly based on the existing values
if (dep->GetType() == SettingDependencyTypeUpdate)
continue;
CheckDependency(pSettingControl, *dep);
}
pSettingControl->Update();
}
}
示例3: CheckDependency
void CGUIWindowSettingsCategory::CheckDependency(BaseSettingControlPtr pSettingControl, const CSettingDependency &dependency)
{
if (pSettingControl == NULL || pSettingControl->GetControl() == NULL)
return;
CSetting *pSetting = pSettingControl->GetSetting();
if (pSetting == NULL)
return;
switch (dependency.GetType())
{
case SettingDependencyTypeEnable:
pSettingControl->SetEnabled(dependency.Check());
break;
case SettingDependencyTypeUpdate:
{
FillControl(pSetting, pSettingControl->GetControl());
break;
}
case SettingDependencyTypeNone:
default:
break;
}
}
示例4: UpdateControl
void CGUIWindowSettingsCategory::UpdateControl(const std::string &dependingSetting, const CSettingDependency &dependency)
{
if (dependingSetting.empty())
return;
BaseSettingControlPtr pControl = GetSettingControl(dependingSetting);
if (pControl == NULL)
return;
CSetting *pSetting = pControl->GetSetting();
if (pSetting == NULL)
return;
CheckDependency(pControl, dependency);
const SettingDependencyMap& deps = m_settings.GetDependencies(pSetting->GetId());
for (SettingDependencyMap::const_iterator depsIt = deps.begin(); depsIt != deps.end(); depsIt++)
{
for (SettingDependencies::const_iterator depIt = depsIt->second.begin(); depIt != depsIt->second.end(); depIt++)
UpdateControl(depsIt->first, *depIt);
}
// update GUI of the changed setting as the change could have been triggered by something else
pControl->Update();
}
示例5: UpdateSettings
void CGUIDialogSettingsBase::UpdateSettings()
{
for (vector<BaseSettingControlPtr>::iterator it = m_settingControls.begin(); it != m_settingControls.end(); it++)
{
BaseSettingControlPtr pSettingControl = *it;
CSetting *pSetting = pSettingControl->GetSetting();
CGUIControl *pControl = pSettingControl->GetControl();
if (pSetting == NULL || pControl == NULL)
continue;
pSettingControl->Update();
}
}
示例6: OnClick
void CGUIDialogSettingsBase::OnClick(BaseSettingControlPtr pSettingControl)
{
if (AllowResettingSettings() &&
pSettingControl->GetSetting()->GetId() == SETTINGS_RESET_SETTING_ID)
{
OnAction(CAction(ACTION_SETTINGS_RESET));
return;
}
// we need to first set the delayed setting and then execute OnClick()
// because OnClick() triggers OnSettingChanged() and there we need to
// know if the changed setting is delayed or not
if (pSettingControl->IsDelayed())
{
m_delayedSetting = pSettingControl;
// for some controls we need to update its displayed data/text before
// OnClick() is called after the delay timer has expired because
// otherwise the displayed value of the control does not match with
// the user's interaction
pSettingControl->Update(true);
// either start or restart the delay timer which will result in a call to
// the control's OnClick() method to update the setting's value
if (m_delayedTimer.IsRunning())
m_delayedTimer.Restart();
else
m_delayedTimer.Start(GetDelayMs());
return;
}
// if changing the setting fails
// we need to restore the proper state
if (!pSettingControl->OnClick())
pSettingControl->Update();
}
示例7: OnMessage
bool CGUIDialogSettingsBase::OnMessage(CGUIMessage &message)
{
switch (message.GetMessage())
{
case GUI_MSG_WINDOW_INIT:
{
m_delayedSetting.reset();
if (message.GetParam1() != WINDOW_INVALID)
{ // coming to this window first time (ie not returning back from some other window)
// so we reset our section and control states
m_iCategory = 0;
ResetControlStates();
}
if (AllowResettingSettings())
{
m_resetSetting = new CSettingAction(SETTINGS_RESET_SETTING_ID);
m_resetSetting->SetLabel(10041);
m_resetSetting->SetHelp(10045);
m_resetSetting->SetControl(CreateControl("button"));
}
m_dummyCategory = new CSettingCategory(SETTINGS_EMPTY_CATEGORY_ID);
m_dummyCategory->SetLabel(10046);
m_dummyCategory->SetHelp(10047);
break;
}
case GUI_MSG_WINDOW_DEINIT:
{
// cancel any delayed changes
if (m_delayedSetting != NULL)
{
m_delayedTimer.Stop();
CGUIMessage message(GUI_MSG_UPDATE_ITEM, GetID(), m_delayedSetting->GetID());
OnMessage(message);
}
CGUIDialog::OnMessage(message);
FreeControls();
return true;
}
case GUI_MSG_FOCUSED:
{
CGUIDialog::OnMessage(message);
int focusedControl = GetFocusedControlID();
// cancel any delayed changes
if (m_delayedSetting != NULL && m_delayedSetting->GetID() != focusedControl)
{
m_delayedTimer.Stop();
CGUIMessage message(GUI_MSG_UPDATE_ITEM, GetID(), m_delayedSetting->GetID(), 1); // param1 = 1 for "reset the control if it's invalid"
g_windowManager.SendThreadMessage(message, GetID());
}
// update the value of the previous setting (in case it was invalid)
else if (m_iSetting >= CONTROL_SETTINGS_START_CONTROL && m_iSetting < (int)(CONTROL_SETTINGS_START_CONTROL + m_settingControls.size()))
{
BaseSettingControlPtr control = GetSettingControl(m_iSetting);
if (control != NULL && control->GetSetting() != NULL && !control->IsValid())
{
CGUIMessage message(GUI_MSG_UPDATE_ITEM, GetID(), m_iSetting, 1); // param1 = 1 for "reset the control if it's invalid"
g_windowManager.SendThreadMessage(message, GetID());
}
}
CVariant description;
// check if we have changed the category and need to create new setting controls
if (focusedControl >= CONTROL_SETTINGS_START_BUTTONS && focusedControl < (int)(CONTROL_SETTINGS_START_BUTTONS + m_categories.size()))
{
int categoryIndex = focusedControl - CONTROL_SETTINGS_START_BUTTONS;
const CSettingCategory* category = m_categories.at(categoryIndex);
if (categoryIndex != m_iCategory)
{
if (!category->CanAccess())
{
// unable to go to this category - focus the previous one
SET_CONTROL_FOCUS(CONTROL_SETTINGS_START_BUTTONS + m_iCategory, 0);
return false;
}
m_iCategory = categoryIndex;
CreateSettings();
}
description = category->GetHelp();
}
else if (focusedControl >= CONTROL_SETTINGS_START_CONTROL && focusedControl < (int)(CONTROL_SETTINGS_START_CONTROL + m_settingControls.size()))
{
m_iSetting = focusedControl;
CSetting *setting = GetSettingControl(focusedControl)->GetSetting();
if (setting != NULL)
description = setting->GetHelp();
}
// set the description of the currently focused category/setting
if (description.isInteger() ||
(description.isString() && !description.empty()))
SetDescription(description);
//.........这里部分代码省略.........
示例8: OnMessage
bool CGUIWindowSettingsCategory::OnMessage(CGUIMessage &message)
{
switch (message.GetMessage())
{
case GUI_MSG_WINDOW_INIT:
{
m_delayedSetting.reset();
if (message.GetParam1() != WINDOW_INVALID && !m_returningFromSkinLoad)
{ // coming to this window first time (ie not returning back from some other window)
// so we reset our section and control states
m_iCategory = 0;
ResetControlStates();
}
m_iSection = (int)message.GetParam2() - (int)CGUIWindow::GetID();
CGUIWindow::OnMessage(message);
m_returningFromSkinLoad = false;
return true;
}
case GUI_MSG_WINDOW_DEINIT:
{
// cancel any delayed changes
if (m_delayedSetting != NULL)
{
m_delayedTimer.Stop();
CGUIMessage message(GUI_MSG_UPDATE_ITEM, GetID(), GetID());
OnMessage(message);
}
CGUIWindow::OnMessage(message);
FreeControls();
return true;
}
case GUI_MSG_FOCUSED:
{
CGUIWindow::OnMessage(message);
if (!m_returningFromSkinLoad)
{
int focusedControl = GetFocusedControlID();
// cancel any delayed changes if the focused control has changed
if (m_delayedSetting != NULL && m_delayedSetting->GetID() != focusedControl)
{
m_delayedTimer.Stop();
CGUIMessage message(GUI_MSG_UPDATE_ITEM, GetID(), GetID(), 1); // param1 = 1 for "reset the control if it's invalid"
g_windowManager.SendThreadMessage(message, GetID());
}
// check if we have changed the category and need to create new setting controls
if (focusedControl >= CONTROL_START_BUTTONS && focusedControl < (int)(CONTROL_START_BUTTONS + m_categories.size()))
{
int categoryIndex = focusedControl - CONTROL_START_BUTTONS;
if (categoryIndex != m_iCategory)
{
if (!m_categories[categoryIndex]->CanAccess())
{
// unable to go to this category - focus the previous one
SET_CONTROL_FOCUS(CONTROL_START_BUTTONS + m_iCategory, 0);
return false;
}
m_iCategory = categoryIndex;
CreateSettings();
}
}
else if (focusedControl >= CONTROL_START_CONTROL && focusedControl < (int)(CONTROL_START_CONTROL + m_settingControls.size()))
{
CSetting *setting = GetSettingControl(focusedControl)->GetSetting();
if (setting != NULL)
SetDescription(setting->GetHelp());
}
}
return true;
}
case GUI_MSG_CLICKED:
{
BaseSettingControlPtr control = GetSettingControl(message.GetSenderId());
if (control != NULL)
OnClick(control);
break;
}
case GUI_MSG_LOAD_SKIN:
{
if (IsActive())
m_returningFromSkinLoad = true;
break;
}
case GUI_MSG_UPDATE_ITEM:
{
if (m_delayedSetting != NULL)
{
// first get the delayed setting and reset its member variable
// to avoid handling the delayed setting twice in case the OnClick()
// performed later causes the window to be deinitialized (e.g. when
//.........这里部分代码省略.........