//Run bool Menu::Run (bool *pbQuit) { Err fErr (m_Err, L"Run"); if (pbQuit == NULL) { return fErr.Set (sERR_ARGUMENTS); } *pbQuit = true; m_bClose = false; while (!m_bClose) { if (!m_pCurrentScreen->Run ()) { return false; } if (m_pCurrentScreen->IsQuit ()) { m_bClose = true; *pbQuit = true; break; } Screen *pPreviousScreen = m_pCurrentScreen; if (!ChooseScreen (pbQuit) || !pPreviousScreen->Reset ()) { return false; } } return true; }//Run
//ManageProfileScreens bool Menu::ManageProfileScreens () { Err fErr (m_Err, L"ManageProfileScreens"); Screen Overview; if (!InitProfilesScreen (&Overview)) { return false; } unsigned int nAction; do { if (!Overview.Run ()) { return false; } if (Overview.IsQuit ()) { m_bClose = true; break; } if (!Overview.GetSelectId (&nAction)) { return false; } wstring sName; if (!Overview.Get (eProfilesListChoice, &sName)) { return false; } switch (nAction) { case (eProfilesButtonEdit): { bool bModified; if (!RunEditProfile (sName, &bModified)) { return false; } if (bModified && !m_pProfiles->Reload ()) { return false; } } break; case (eProfilesButtonCreate): { wstring sName; if (!Overview.Get (eProfilesEditCreateName, &sName)) { return false; } if (sName.empty ()) { fErr.Set (L"The given profile name is empty"); } if (!AddProfile (sName) || !InitProfilesScreen (&Overview)) { return false; } } break; case (eProfilesButtonDelete): if (!m_pProfiles->DeleteProfile (sName) || !InitProfilesScreen (&Overview)) { return false; } break; } if (!Overview.Reset ()) { return false; } } while (!m_bClose && nAction != eProfilesButtonAbort); return true; }//ManageProfileScreens