/**************************************************************************** * Copyright (C) 2015 Dimok * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . ****************************************************************************/ #ifndef _MAIN_DRC_BUTTONS_FRAME_H_ #define _MAIN_DRC_BUTTONS_FRAME_H_ #include "gui/Gui.h" #include "resources/Resources.h" class MainDrcButtonsFrame : public GuiFrame, public sigslot::has_slots<> { public: MainDrcButtonsFrame(int32_t w, int32_t h) : GuiFrame(w, h), buttonClickSound(Resources::GetSound("settings_click_2.mp3")), screenSwitchSound(Resources::GetSound("screenSwitchSound.mp3")), switchIconData(Resources::GetImageData("layoutSwitchButton.png")), settingsIconData(Resources::GetImageData("settingsButton.png")), switchIcon(switchIconData), settingsIcon(settingsIconData), switchLayoutButton(switchIcon.getWidth(), switchIcon.getHeight()), settingsButton(settingsIcon.getWidth(), settingsIcon.getHeight()), gameListFilterButton(w, h), touchTrigger(GuiTrigger::CHANNEL_1, GuiTrigger::VPAD_TOUCH), wpadTouchTrigger(GuiTrigger::CHANNEL_2 | GuiTrigger::CHANNEL_3 | GuiTrigger::CHANNEL_4 | GuiTrigger::CHANNEL_5, GuiTrigger::BUTTON_A), settingsTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_ZL, true), switchLayoutTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_ZR, true), plusTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_PLUS, true) { settingsButton.setClickable(true); settingsButton.setImage(&settingsIcon); settingsButton.setTrigger(&touchTrigger); settingsButton.setTrigger(&wpadTouchTrigger); settingsButton.setTrigger(&settingsTrigger); settingsButton.setAlignment(ALIGN_LEFT | ALIGN_BOTTOM); settingsButton.setSoundClick(buttonClickSound); settingsButton.setEffectGrow(); settingsButton.clicked.connect(this, &MainDrcButtonsFrame::OnSettingsButtonClick); append(&settingsButton); switchLayoutButton.setClickable(true); switchLayoutButton.setImage(&switchIcon); switchLayoutButton.setTrigger(&touchTrigger); switchLayoutButton.setTrigger(&wpadTouchTrigger); switchLayoutButton.setTrigger(&switchLayoutTrigger); switchLayoutButton.setAlignment(ALIGN_RIGHT | ALIGN_BOTTOM); switchLayoutButton.setSoundClick(screenSwitchSound); switchLayoutButton.setEffectGrow(); switchLayoutButton.clicked.connect(this, &MainDrcButtonsFrame::OnLayoutSwithClick); append(&switchLayoutButton); gameListFilterButton.setClickable(true); gameListFilterButton.setSoundClick(buttonClickSound); gameListFilterButton.setTrigger(&plusTrigger); gameListFilterButton.clicked.connect(this, &MainDrcButtonsFrame::OnGameListFilterButtonClicked); append(&gameListFilterButton); } virtual ~MainDrcButtonsFrame() { Resources::RemoveImageData(switchIconData); Resources::RemoveImageData(settingsIconData); Resources::RemoveSound(buttonClickSound); Resources::RemoveSound(screenSwitchSound); } sigslot::signal1 settingsButtonClicked; sigslot::signal1 layoutSwitchClicked; sigslot::signal1 gameListFilterClicked; private: void OnSettingsButtonClick(GuiButton *button, const GuiController *controller, GuiTrigger *) { settingsButtonClicked(this); } void OnLayoutSwithClick(GuiButton *button, const GuiController *controller, GuiTrigger *) { layoutSwitchClicked(this); } void OnGameListFilterButtonClicked(GuiButton *button, const GuiController *controller, GuiTrigger *) { gameListFilterClicked(this); } GuiSound *buttonClickSound; GuiSound *screenSwitchSound; GuiImageData *switchIconData; GuiImageData *settingsIconData; GuiImage switchIcon; GuiImage settingsIcon; GuiButton switchLayoutButton; GuiButton settingsButton; GuiButton gameListFilterButton; GuiTrigger touchTrigger; GuiTrigger wpadTouchTrigger; GuiTrigger settingsTrigger; GuiTrigger switchLayoutTrigger; GuiTrigger plusTrigger; }; #endif //_SETTINGS_WINDOW_H_