2010-11-13 23:34:53 +01:00
|
|
|
/****************************************************************************
|
|
|
|
* Copyright (C) 2010
|
|
|
|
* by Dimok
|
|
|
|
*
|
|
|
|
* This software is provided 'as-is', without any express or implied
|
|
|
|
* warranty. In no event will the authors be held liable for any
|
|
|
|
* damages arising from the use of this software.
|
|
|
|
*
|
|
|
|
* Permission is granted to anyone to use this software for any
|
|
|
|
* purpose, including commercial applications, and to alter it and
|
|
|
|
* redistribute it freely, subject to the following restrictions:
|
|
|
|
*
|
|
|
|
* 1. The origin of this software must not be misrepresented; you
|
|
|
|
* must not claim that you wrote the original software. If you use
|
|
|
|
* this software in a product, an acknowledgment in the product
|
|
|
|
* documentation would be appreciated but is not required.
|
|
|
|
*
|
|
|
|
* 2. Altered source versions must be plainly marked as such, and
|
|
|
|
* must not be misrepresented as being the original software.
|
|
|
|
*
|
|
|
|
* 3. This notice may not be removed or altered from any source
|
|
|
|
* distribution.
|
|
|
|
***************************************************************************/
|
|
|
|
#include <unistd.h>
|
|
|
|
#include "SettingsMenu.hpp"
|
|
|
|
#include "themes/CTheme.h"
|
|
|
|
#include "language/gettext.h"
|
|
|
|
|
|
|
|
SettingsMenu::SettingsMenu(const char * title, OptionList * opts, int returnTo)
|
|
|
|
: GuiWindow(screenwidth, screenheight)
|
|
|
|
{
|
|
|
|
Options = opts;
|
|
|
|
returnToMenu = returnTo;
|
|
|
|
backBtn = NULL;
|
|
|
|
trigA = NULL;
|
|
|
|
trigB = NULL;
|
|
|
|
backBtnTxt = NULL;
|
|
|
|
backBtnImg = NULL;
|
|
|
|
backBtn = NULL;
|
|
|
|
btnOutline = NULL;
|
|
|
|
|
|
|
|
//! Skipping back button if there is no menu defined to go back to
|
|
|
|
if(returnToMenu != MENU_NONE)
|
|
|
|
{
|
|
|
|
btnOutline = Resources::GetImageData("button_dialogue_box.png");
|
|
|
|
|
|
|
|
trigA = new GuiTrigger();
|
|
|
|
trigA->SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
|
|
|
|
|
|
|
trigB = new GuiTrigger();
|
|
|
|
trigB->SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
|
|
|
|
|
|
|
|
backBtnTxt = new GuiText(tr("Back"), 22, (GXColor){0, 0, 0, 255});
|
|
|
|
backBtnImg = new GuiImage(btnOutline);
|
|
|
|
backBtn = new GuiButton(backBtnImg, backBtnImg, 2, 3, -180, 400, trigA, btnSoundOver, btnSoundClick2, 1);
|
|
|
|
backBtn->SetLabel(backBtnTxt);
|
|
|
|
backBtn->SetTrigger(trigB);
|
|
|
|
Append(backBtn);
|
|
|
|
}
|
|
|
|
|
2010-11-14 16:19:42 +01:00
|
|
|
optionBrowser = new GuiCustomOptionBrowser(396, 280, Options, "bg_options_settings.png");
|
2010-11-13 23:34:53 +01:00
|
|
|
optionBrowser->SetPosition(0, 90);
|
|
|
|
optionBrowser->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
|
|
|
|
|
|
titleTxt = new GuiText(title, 28, (GXColor) {0, 0, 0, 255});
|
|
|
|
titleTxt->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
|
|
titleTxt->SetPosition(0, 40);
|
2010-11-14 16:19:42 +01:00
|
|
|
titleTxt->SetMaxWidth(310, SCROLL_HORIZONTAL);
|
2010-11-13 23:34:53 +01:00
|
|
|
|
|
|
|
Append(optionBrowser);
|
|
|
|
Append(titleTxt);
|
|
|
|
|
|
|
|
SetEffect(EFFECT_FADE, 50);
|
|
|
|
}
|
|
|
|
|
|
|
|
SettingsMenu::~SettingsMenu()
|
|
|
|
{
|
|
|
|
ResumeGui();
|
|
|
|
|
|
|
|
SetEffect(EFFECT_FADE, -50);
|
|
|
|
while(this->GetEffect() > 0)
|
|
|
|
usleep(100);
|
|
|
|
|
|
|
|
HaltGui();
|
|
|
|
if(parentElement)
|
|
|
|
((GuiWindow *) parentElement)->Remove(this);
|
|
|
|
|
|
|
|
RemoveAll();
|
|
|
|
|
|
|
|
if(btnOutline)
|
|
|
|
delete btnOutline;
|
|
|
|
|
|
|
|
if(backBtnTxt)
|
|
|
|
delete backBtnTxt;
|
|
|
|
if(backBtnImg)
|
|
|
|
delete backBtnImg;
|
|
|
|
if(backBtn)
|
|
|
|
delete backBtn;
|
|
|
|
|
|
|
|
if(trigA)
|
|
|
|
delete trigA;
|
|
|
|
if(trigB)
|
|
|
|
delete trigB;
|
|
|
|
|
|
|
|
delete titleTxt;
|
|
|
|
|
|
|
|
delete optionBrowser;
|
|
|
|
|
|
|
|
ResumeGui();
|
|
|
|
}
|
|
|
|
|
|
|
|
int SettingsMenu::GetClickedOption()
|
|
|
|
{
|
|
|
|
if(!optionBrowser)
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
return optionBrowser->GetClickedOption();
|
|
|
|
}
|
|
|
|
|
|
|
|
int SettingsMenu::GetMenu()
|
|
|
|
{
|
|
|
|
if(backBtn && backBtn->GetState() == STATE_CLICKED)
|
|
|
|
return returnToMenu;
|
|
|
|
|
|
|
|
return GetMenuInternal();
|
|
|
|
}
|