Пример #1
0
//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
Пример #2
0
//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