void CGUIDialogAudioDSPSettings::Save() { if (!g_passwordManager.CheckSettingLevelLock(SettingLevelExpert) && CProfilesManager::GetInstance().GetMasterProfile().getLockMode() != LOCK_MODE_EVERYONE) return; // prompt user if they are sure if (!CGUIDialogYesNo::ShowAndGetInput(CVariant{12376}, CVariant{12377})) return; // reset the settings CActiveAEDSPDatabase db; if (!db.Open()) return; db.EraseActiveDSPSettings(); db.Close(); CMediaSettings::GetInstance().GetDefaultAudioSettings() = CMediaSettings::GetInstance().GetCurrentAudioSettings(); CMediaSettings::GetInstance().GetDefaultAudioSettings().m_MasterStreamType = AE_DSP_ASTREAM_AUTO; CSettings::GetInstance().Save(); }
bool CGUIDialogAudioDSPManager::UpdateDatabase(CGUIDialogBusy* pDlgBusy) { CActiveAEDSPDatabase db; if (!db.Open()) { CLog::Log(LOGERROR, "DSP Manager - %s - Could not open DSP database for update!", __FUNCTION__); return false; } // calculate available items int maxItems = 0; for (int i = 0; i < AE_DSP_MODE_TYPE_MAX; i++) { maxItems += m_activeItems[i]->Size() + m_availableItems[i]->Size(); } int processedItems = 0; for (int i = 0; i < AE_DSP_MODE_TYPE_MAX; i++) { for (int iListPtr = 0; iListPtr < m_activeItems[i]->Size(); iListPtr++) { CFileItemPtr pItem = m_activeItems[i]->Get(iListPtr); if (pItem->GetProperty("Changed").asBoolean()) { bool success = db.UpdateMode( i, pItem->GetProperty("ActiveMode").asBoolean(), (int)pItem->GetProperty("AddonId").asInteger(), (int)pItem->GetProperty("AddonModeNumber").asInteger(), (int)pItem->GetProperty("Number").asInteger()); if (!success) { CLog::Log(LOGERROR, "DSP Manager - Could not update DSP database for active mode %i - %s!", (int)pItem->GetProperty("AddonModeNumber").asInteger(), pItem->GetProperty("Name").asString().c_str()); } } processedItems++; if (pDlgBusy) { pDlgBusy->SetProgress((float)(processedItems * 100 / maxItems)); if (pDlgBusy->IsCanceled()) { return false; } } ProcessRenderLoop(false); } for (int iListPtr = 0; iListPtr < m_availableItems[i]->Size(); iListPtr++) { CFileItemPtr pItem = m_availableItems[i]->Get(iListPtr); if (pItem && pItem->GetProperty("Changed").asBoolean()) { bool success = db.UpdateMode( i, pItem->GetProperty("ActiveMode").asBoolean(), (int)pItem->GetProperty("AddonId").asInteger(), (int)pItem->GetProperty("AddonModeNumber").asInteger(), (int)pItem->GetProperty("Number").asInteger()); if (!success) { CLog::Log(LOGERROR, "DSP Manager - Could not update DSP database for available mode %i - %s!", (int)pItem->GetProperty("AddonModeNumber").asInteger(), pItem->GetProperty("Name").asString().c_str()); } } processedItems++; if (pDlgBusy) { pDlgBusy->SetProgress((float)(processedItems * 100 / maxItems)); if (pDlgBusy->IsCanceled()) { return false; } } ProcessRenderLoop(false); } } db.Close(); return true; }
void CGUIDialogAudioDSPManager::Update() { CGUIDialogBusy* pDlgBusy = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY); if (!pDlgBusy) { helper_LogError(__FUNCTION__); return; } pDlgBusy->Open(); Clear(); AE_DSP_MODELIST modes; CActiveAEDSPDatabase db; if (!db.Open()) { pDlgBusy->Close(); CLog::Log(LOGERROR, "DSP Manager - %s - Could not open DSP database for update!", __FUNCTION__); return; } // construct a CFileItemList to pass 'em on to the list CFileItemList items; for (int i = 0; i < AE_DSP_MODE_TYPE_MAX; ++i) { int iModeType = dsp_mode_types[i].iModeType; modes.clear(); db.GetModes(modes, iModeType); // No modes available, nothing to do. if (!modes.empty()) { CFileItemPtr item(new CFileItem()); item->SetLabel(g_localizeStrings.Get(dsp_mode_types[i].iName)); item->SetLabel2(g_localizeStrings.Get(dsp_mode_types[i].iDescription)); item->SetProperty("currentMode", dsp_mode_types[i].sModeType); items.Add(item); AE_DSP_MENUHOOK_CAT menuHook = helper_GetMenuHookCategory(iModeType); int continuesNo = 1; for (unsigned int iModePtr = 0; iModePtr < modes.size(); iModePtr++) { CFileItem *listItem = helper_CreateModeListItem(modes[iModePtr].first, menuHook, &continuesNo); if (listItem) { CFileItemPtr pItem(listItem); if (pItem->GetProperty("ActiveMode").asBoolean()) { m_activeItems[iModeType]->Add(pItem); } else { m_availableItems[iModeType]->Add(pItem); } } ProcessRenderLoop(false); } m_availableItems[iModeType]->Sort(SortByLabel, SortOrderAscending); if (iModeType == AE_DSP_MODE_TYPE_MASTER_PROCESS) { m_activeItems[iModeType]->Sort(SortByLabel, SortOrderAscending); } } } CGUIMessage msg(GUI_MSG_LABEL_BIND, GetID(), CONTROL_LIST_MODE_SELECTION, 0, 0, &items); OnMessage(msg); db.Close(); pDlgBusy->Close(); }
void CGUIDialogAudioDSPManager::Update() { CGUIDialogBusy* pDlgBusy = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY); if (!pDlgBusy) { helper_LogError(__FUNCTION__); return; } pDlgBusy->Open(); Clear(); AE_DSP_MODELIST modes; CActiveAEDSPDatabase db; if (!db.Open()) { pDlgBusy->Close(); CLog::Log(LOGERROR, "DSP Manager - %s - Could not open DSP database for update!", __FUNCTION__); return; } for (int iModeType = 0; iModeType < AE_DSP_MODE_TYPE_MAX; iModeType++) { modes.clear(); db.GetModes(modes, iModeType); // No modes available, nothing to do. if (!modes.empty()) { AE_DSP_MENUHOOK_CAT menuHook = helper_GetMenuHookCategory(iModeType); int continuesNo = 1; for (unsigned int iModePtr = 0; iModePtr < modes.size(); iModePtr++) { CFileItem *listItem = helper_CreateModeListItem(modes[iModePtr].first, menuHook, &continuesNo); if (listItem) { CFileItemPtr pItem(listItem); if (pItem->GetProperty("ActiveMode").asBoolean()) { m_activeItems[iModeType]->Add(pItem); } else { m_availableItems[iModeType]->Add(pItem); } } g_windowManager.ProcessRenderLoop(false); } m_availableItems[iModeType]->Sort(SortByLabel, SortOrderAscending); if (iModeType == AE_DSP_MODE_TYPE_MASTER_PROCESS) { m_activeItems[iModeType]->Sort(SortByLabel, SortOrderAscending); } } } db.Close(); pDlgBusy->Close(); }