本文整理汇总了C++中CGUIListContainer类的典型用法代码示例。如果您正苦于以下问题:C++ CGUIListContainer类的具体用法?C++ CGUIListContainer怎么用?C++ CGUIListContainer使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CGUIListContainer类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetSelectedItem
int CGUIWindowFileManager::GetSelectedItem(int iControl)
{
if (iControl < 0 || iControl > 1) return -1;
CGUIListContainer *pControl = (CGUIListContainer *)GetControl(iControl + CONTROL_LEFT_LIST);
if (!pControl || !m_vecItems[iControl]->Size()) return -1;
return pControl->GetSelectedItem();
}
示例2: OnPopupMenu
bool CGUIDialogAudioDSPManager::OnClickListActive(CGUIMessage &message)
{
if (!m_bMovingMode)
{
int iAction = message.GetParam1();
int iItem = m_activeViewControl.GetSelectedItem();
/* Check file item is in list range and get his pointer */
if (iItem < 0 || iItem >= (int)m_activeItems[m_iCurrentType]->Size()) return true;
/* Process actions */
if (iAction == ACTION_SELECT_ITEM || iAction == ACTION_CONTEXT_MENU || iAction == ACTION_MOUSE_LEFT_CLICK || iAction == ACTION_MOUSE_RIGHT_CLICK)
{
/* Show Contextmenu */
OnPopupMenu(iItem, LIST_ACTIVE);
return true;
}
}
else
{
CFileItemPtr pItem = m_activeItems[m_iCurrentType]->Get(m_iSelected[LIST_ACTIVE]);
if (pItem)
{
pItem->Select(false);
pItem->SetProperty("Changed", true);
m_bMovingMode = false;
m_bContainsChanges = true;
if (m_bContinousSaving)
{
SaveList();
}
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;
}
// reenable all buttons and mode selection list
modeList->SetEnabled(true);
clearActiveModesButton->SetEnabled(true);
if (!m_bContinousSaving)
{
applyButton->SetEnabled(true);
}
return true;
}
}
return false;
}
示例3: switch
bool CGUIDialogVisualisationPresetList::OnMessage(CGUIMessage &message)
{
switch (message.GetMessage())
{
case GUI_MSG_CLICKED:
{
if (message.GetSenderId() == CONTROL_LIST && (message.GetParam1() == ACTION_SELECT_ITEM ||
message.GetParam1() == ACTION_MOUSE_LEFT_CLICK))
{
//clicked - ask for the preset to be changed to the new one
CGUIListContainer *pList = (CGUIListContainer *)GetControl(CONTROL_LIST);
if (pList)
{
int iItem = pList->GetSelectedItem();
if (m_viz)
m_viz->OnAction(VIS_ACTION_LOAD_PRESET, (void *)&iItem);
}
return true;
}
}
break;
case GUI_MSG_WINDOW_INIT:
{
CGUIDialog::OnMessage(message);
CGUIMessage msg(GUI_MSG_GET_VISUALISATION, 0, 0);
g_windowManager.SendMessage(msg);
SetVisualisation((CVisualisation*)msg.GetPointer());
return true;
}
break;
case GUI_MSG_WINDOW_DEINIT:
case GUI_MSG_VISUALISATION_UNLOADING:
{
m_viz = NULL;
CGUIMessage msg(GUI_MSG_LABEL_RESET, GetID(), CONTROL_LIST);
OnMessage(msg);
Update();
}
break;
case GUI_MSG_VISUALISATION_LOADED:
{
SetVisualisation((CVisualisation*)message.GetPointer());
}
break;
}
return CGUIDialog::OnMessage(message);
}
示例4: switch
bool CGUIDialogAudioDSPManager::OnMessage(CGUIMessage& message)
{
unsigned int iMessage = message.GetMessage();
switch (iMessage)
{
case GUI_MSG_CLICKED:
return OnMessageClick(message);
case GUI_MSG_ITEM_SELECT:
{
int focusedControl = GetFocusedControlID();
if (focusedControl == CONTROL_LIST_MODE_SELECTION)
{
CGUIListContainer *modeListPtr = dynamic_cast<CGUIListContainer*>(GetControl(CONTROL_LIST_MODE_SELECTION));
if (modeListPtr)
{
CGUIListItemPtr modeListItem = modeListPtr->GetListItem(0); // get current selected list item
if (modeListItem)
{
std::string currentModeString = modeListItem->GetProperty("currentMode").asString();
int newModeType = helper_TranslateModeType(currentModeString);
if (m_iCurrentType != newModeType)
{
m_iCurrentType = newModeType;
SetSelectedModeType();
}
}
}
}
}
}
return CGUIDialog::OnMessage(message);
}
示例5: if
//.........这里部分代码省略.........
{
/*!
* 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_bContinousSaving)
{
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_bContinousSaving)
{
applyButton->SetEnabled(false);
}
}
else if (button == CONTEXT_BUTTON_SETTINGS)
{
int hookId = (int)pItem->GetProperty("SettingsDialog").asInteger();
if (hookId > 0)
{
AE_DSP_ADDON addon;
if (CServiceBroker::GetADSP().GetAudioDSPAddon((int)pItem->GetProperty("AddonId").asInteger(), addon))
{
AE_DSP_MENUHOOK hook;
AE_DSP_MENUHOOK_DATA hookData;
hook.category = AE_DSP_MENUHOOK_ALL;
hook.iHookId = hookId;
hook.iRelevantModeId = (unsigned int)pItem->GetProperty("AddonModeNumber").asInteger();
hookData.category = AE_DSP_MENUHOOK_ALL;
hookData.data.iStreamId = -1;
/*!
* @note the addon dialog becomes always opened on the back of Kodi ones for this reason a
* "<animation effect="fade" start="100" end="0" time="400" condition="Window.IsVisible(Addon)">Conditional</animation>"
* on skin is needed to hide dialog.
*/
addon->CallMenuHook(hook, hookData);
}
}
else
{
CGUIDialogOK::ShowAndGetInput(19033, 0, 15040, 0);
}
}
return true;
}
示例6: 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
{
//.........这里部分代码省略.........
示例7: CXRandR
void CGUIWindowBoxeeWizardResolution::OnInitWindow()
{
CGUIWindow::OnInitWindow();
delete m_xrandr;
m_xrandr = new CXRandR();
if (!m_wizardCompletedOnce)
{
CONTROL_DISABLE(CONTROL_NEXT);
}
if (m_afterResolutionChange)
{
CGUIListContainer *pList = (CGUIListContainer *)GetControl(CONTROL_SD_HD);
if (pList)
pList->SetSingleSelectedItem();
ShowResolutionsList(IsResolutionHD(m_newResolution), &m_newResolution);
CStdString origHz;
origHz.Format("%.2f", m_originalResolution.hz);
CStdString newHz;
newHz.Format("%.2f", m_newResolution.hz);
if (m_newResolution.name != m_originalResolution.name || origHz != newHz)
{
CGUIDialogYesNo *pDlgYesNo = (CGUIDialogYesNo*)m_gWindowManager.GetWindow(WINDOW_DIALOG_YES_NO);
pDlgYesNo->SetHeading("Resolution Change");
pDlgYesNo->SetLine(0, "Do you want to keep this resolution");
pDlgYesNo->SetLine(1, "(will revert automatically in 6 seconds)");
pDlgYesNo->SetLine(2, "");
pDlgYesNo->SetLine(3, "");
pDlgYesNo->SetChoice(0, "Revert");
pDlgYesNo->SetChoice(1, "Keep");
pDlgYesNo->SetDefaultChoice(0);
pDlgYesNo->SetAutoClose(6000);
pDlgYesNo->DoModal();
if (!pDlgYesNo->IsConfirmed())
{
m_afterResolutionChange = false;
// Set the requested resolution
g_graphicsContext.SetVideoResolution(m_originalResolutionId, TRUE);
// Reload the fonts to they will scale correctly
g_fontManager.ReloadTTFFonts();
// Close the dialog and restart it so it will re-set the size of the labels to
// fit for the new resolutions
Close();
m_gWindowManager.ActivateWindow(WINDOW_BOXEE_WIZARD_RESOLUTION);
}
else
{
int xbmcResolutionId = GetXBMCResolutionId();
if (xbmcResolutionId != -1)
{
g_guiSettings.SetInt("videoscreen.resolution", xbmcResolutionId);
g_guiSettings.SetInt("videoplayer.displayresolution", xbmcResolutionId);
g_guiSettings.SetInt("pictures.displayresolution", xbmcResolutionId);
g_settings.Save();
delete m_xrandr;
m_xrandr = new CXRandR();
}
m_wizardCompletedOnce = true;
CONTROL_ENABLE(CONTROL_NEXT);
SET_CONTROL_FOCUS(CONTROL_NEXT, 0);
}
}
else
{
m_wizardCompletedOnce = true;
CONTROL_ENABLE(CONTROL_NEXT);
SET_CONTROL_FOCUS(CONTROL_NEXT, 0);
}
}
else if (m_resolutionChangedOnce || m_wizardCompletedOnce)
{
XOutput output = GetCurrentOutput();
XMode currentResolution = m_xrandr->GetCurrentMode(output.name);
ShowResolutionsList(IsResolutionHD(currentResolution), ¤tResolution);
}
else
{
XOutput output = GetCurrentOutput();
XMode currentResolution = m_xrandr->GetCurrentMode(output.name);
CGUIMessage msg(GUI_MSG_ITEM_SELECT, GetID(), CONTROL_SD_HD, IsResolutionHD(currentResolution) ? VALUE_HD : VALUE_SD);
OnMessage(msg);
}
}
示例8: msg
void CGUIWindowBoxeeWizardResolution::ShowResolutionsList(bool HD, XMode* selectedMode)
{
// Set either HD/SD according to the selected mode
if (selectedMode != NULL)
{
CGUIMessage msg(GUI_MSG_ITEM_SELECT, GetID(), CONTROL_SD_HD, IsResolutionHD(*selectedMode) ? VALUE_HD : VALUE_SD);
OnMessage(msg);
}
SET_CONTROL_VISIBLE(CONTROL_RESOLUTIONS);
// Clear the list first
CGUIMessage msgReset(GUI_MSG_LABEL_RESET, GetID(), CONTROL_RESOLUTIONS);
OnMessage(msgReset);
for (unsigned int i = 0; i < m_resolutions.size(); i++)
delete m_resolutions[i];
m_resolutions.clear();
m_resolutionNames.clear();
// Go over all the resolutions and display them
int iSelectedItem = 0;
XOutput output = GetCurrentOutput();
for (unsigned int i = 0; i < output.modes.size(); i++)
{
// skip modes with similar names (but different Hz)
//if (i > 0 && output.modes[i].name == output.modes[i-1].name)
// continue;
if (IsResolutionHD(output.modes[i]) && IsResolutionValid(output.modes[i]))
{
CStdString name;
name.Format("%s / %.0fHz", output.modes[i].name.c_str(), output.modes[i].hz);
CFileItem *item = new CFileItem(name);
item->SetProperty("resolutionName", output.modes[i].name);
item->SetProperty("resolutionHz", (int) output.modes[i].hz);
CGUIMessage msg(GUI_MSG_LABEL_ADD, GetID(), CONTROL_RESOLUTIONS, 0, 0, item);
OnMessage(msg);
m_resolutions.push_back(item);
CStdString resolutionName;
resolutionName.Format("%s: %s @ %.2fHz", output.name.c_str(), output.modes[i].name, output.modes[i].hz);
m_resolutionNames.push_back(resolutionName);
CStdString modeHz;
modeHz.Format("%.2f", output.modes[i].hz);
CStdString selectedHz;
selectedHz.Format("%.2f", selectedMode->hz);
if (selectedMode != NULL && output.modes[i].name == selectedMode->name && modeHz == selectedHz)
iSelectedItem = m_resolutions.size() - 1;
}
}
CGUIMessage msg(GUI_MSG_ITEM_SELECT, GetID(), CONTROL_RESOLUTIONS, iSelectedItem);
OnMessage(msg);
CGUIListContainer *pList = (CGUIListContainer *)GetControl(CONTROL_RESOLUTIONS);
if (pList)
pList->SetSingleSelectedItem();
SET_CONTROL_FOCUS(CONTROL_RESOLUTIONS, 0);
}
示例9: GetFocusedControlID
bool CGUIWindowBoxeeWizardResolution::OnAction(const CAction &action)
{
int iControl = GetFocusedControlID();
if (action.wID == ACTION_PREVIOUS_MENU || (action.wID == ACTION_SELECT_ITEM && iControl == CONTROL_BACK))
{
Close();
return true;
}
else if (action.wID == ACTION_MOVE_LEFT && iControl == CONTROL_RESOLUTIONS)
{
SET_CONTROL_HIDDEN(CONTROL_RESOLUTIONS);
SET_CONTROL_FOCUS(CONTROL_SD_HD, 0);
return true;
}
else if (action.wID == ACTION_SELECT_ITEM && iControl == CONTROL_SD_HD)
{
SET_CONTROL_VISIBLE(CONTROL_RESOLUTIONS);
CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_SD_HD);
OnMessage(msg);
int iItem = msg.GetParam1();
CGUIListContainer *pList = (CGUIListContainer *)GetControl(CONTROL_SD_HD);
if (pList)
pList->SetSingleSelectedItem();
XOutput output = GetCurrentOutput();
XMode currentResolution = m_xrandr->GetCurrentMode(output.name);
ShowResolutionsList(iItem == VALUE_HD, ¤tResolution);
return true;
}
else if (action.wID == ACTION_SELECT_ITEM && iControl == CONTROL_RESOLUTIONS)
{
CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_RESOLUTIONS);
OnMessage(msg);
int iItem = msg.GetParam1();
CGUIListContainer *pList = (CGUIListContainer *)GetControl(CONTROL_RESOLUTIONS);
if (pList)
pList->SetSingleSelectedItem();
XOutput output = GetCurrentOutput();
m_originalResolution = m_xrandr->GetCurrentMode(output.name);
m_originalResolutionId = g_graphicsContext.GetVideoResolution();
for (unsigned int i = 0; i < output.modes.size(); i++)
{
if (output.modes[i].name == m_resolutions[iItem]->GetProperty("resolutionName") &&
(int)output.modes[i].hz == m_resolutions[iItem]->GetPropertyInt("resolutionHz"))
{
m_newResolution = output.modes[i];
CStdString origHz;
origHz.Format("%.2f", m_originalResolution.hz);
CStdString newHz;
newHz.Format("%.2f", m_newResolution.hz);
if (m_newResolution.name != m_originalResolution.name || newHz != origHz)
{
// Set the requested resolution
RESOLUTION res = (RESOLUTION) GetXBMCResolutionId();
g_graphicsContext.SetVideoResolution(res, TRUE);
// Reload the fonts to they will scale correctly
g_fontManager.ReloadTTFFonts();
}
m_afterResolutionChange = true;
m_resolutionChangedOnce = true;
// Close the dialog and restart it so it will re-set the size of the labels to
// fit for the new resolutions
Close();
m_gWindowManager.ActivateWindow(WINDOW_BOXEE_WIZARD_RESOLUTION);
break;
}
}
return true;
}
else if (action.wID == ACTION_MOVE_UP && (iControl == CONTROL_NEXT || iControl == CONTROL_BACK))
{
if (GetControl(CONTROL_RESOLUTIONS)->IsVisible())
{
SET_CONTROL_FOCUS(CONTROL_RESOLUTIONS, 0);
}
else
{
SET_CONTROL_FOCUS(CONTROL_SD_HD, 0);
}
return true;
}
return CGUIWindow::OnAction(action);
}
示例10: 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)
{
//.........这里部分代码省略.........