mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-08-28 16:01:10 +02:00
Origin commit data
------------------
Commit: 5a34b06137
Author: vanhofen <vanhofen@gmx.de>
Date: 2018-01-03 (Wed, 03 Jan 2018)
Origin message was:
------------------
- infoicons: avoid extern CInfoIcons; use getInstance() instead of this
217 lines
7.6 KiB
C++
217 lines
7.6 KiB
C++
/*
|
|
infoicons_setup
|
|
|
|
(C) 2009-2016 NG-Team
|
|
(C) 2016 NI-Team
|
|
|
|
License: GPL
|
|
|
|
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 2 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, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
*/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
#include <gui/infoicons_setup.h>
|
|
|
|
#include <global.h>
|
|
#include <neutrino.h>
|
|
#include <mymenu.h>
|
|
#include <neutrino_menue.h>
|
|
#include <gui/widget/hintbox.h>
|
|
#include <system/helpers.h>
|
|
|
|
#include <driver/screen_max.h>
|
|
|
|
#include <gui/infoicons.h>
|
|
|
|
typedef struct menu_data_t
|
|
{
|
|
neutrino_locale_t caption;
|
|
neutrino_locale_t caption_hint;
|
|
const char * action;
|
|
} menu_data_struct;
|
|
|
|
const menu_data_t menu_settings[MODE_ICONS_NR_OF_ENTRIES]=
|
|
{
|
|
{LOCALE_INFOICONS_FLAG_NAME0, LOCALE_MENU_HINT_INFOICONS_FLAG_NAME0, "del_flag0"},
|
|
{LOCALE_INFOICONS_FLAG_NAME1, LOCALE_MENU_HINT_INFOICONS_FLAG_NAME1, "del_flag1"},
|
|
{LOCALE_INFOICONS_FLAG_NAME2, LOCALE_MENU_HINT_INFOICONS_FLAG_NAME2, "del_flag2"},
|
|
{LOCALE_INFOICONS_FLAG_NAME3, LOCALE_MENU_HINT_INFOICONS_FLAG_NAME3, "del_flag3"},
|
|
{LOCALE_INFOICONS_FLAG_NAME4, LOCALE_MENU_HINT_INFOICONS_FLAG_NAME4, "del_flag4"},
|
|
{LOCALE_INFOICONS_FLAG_NAME5, LOCALE_MENU_HINT_INFOICONS_FLAG_NAME5, "del_flag5"},
|
|
{LOCALE_INFOICONS_FLAG_NAME6, LOCALE_MENU_HINT_INFOICONS_FLAG_NAME6, "del_flag6"},
|
|
{LOCALE_INFOICONS_FLAG_NAME7, LOCALE_MENU_HINT_INFOICONS_FLAG_NAME7, "del_flag7"}
|
|
};
|
|
|
|
#define OPTIONS_INFOICONS_MODE_OPTION_COUNT 3
|
|
const CMenuOptionChooser::keyval OPTIONS_INFOICONS_MODE_OPTIONS[OPTIONS_INFOICONS_MODE_OPTION_COUNT] =
|
|
{
|
|
{ INFOICONS_STATIC, LOCALE_INFOICONS_STATIC },
|
|
{ INFOICONS_INFOVIEWER, LOCALE_INFOICONS_INFOVIEWER },
|
|
{ INFOICONS_POPUP, LOCALE_INFOICONS_POPUP }
|
|
};
|
|
|
|
CInfoIconsSetup::CInfoIconsSetup()
|
|
{
|
|
width = 40;
|
|
}
|
|
|
|
CInfoIconsSetup::~CInfoIconsSetup()
|
|
{
|
|
}
|
|
|
|
int CInfoIconsSetup::exec(CMenuTarget* parent, const std::string &actionKey)
|
|
{
|
|
std::string str;
|
|
int res = menu_return::RETURN_REPAINT;
|
|
|
|
|
|
if(parent != NULL)
|
|
parent->hide();
|
|
|
|
if (actionKey.empty())
|
|
{
|
|
res = menu();
|
|
}
|
|
else if(actionKey.substr(0,7)=="del_all")
|
|
{
|
|
for(int i=0 ; i < MODE_ICONS_NR_OF_ENTRIES; i++)
|
|
{
|
|
remove(g_settings.mode_icons_flag[i].c_str());
|
|
}
|
|
ShowHint(LOCALE_INFOICONS_FLAG_DEL_HEAD, g_Locale->getText(LOCALE_INFOICONS_FLAG_DELALL), 450,3);
|
|
res = menu_return::RETURN_EXIT;
|
|
}
|
|
else if(actionKey.substr(0,8)=="del_flag")
|
|
{
|
|
int i = atoi(actionKey.substr(8,1).c_str());
|
|
remove(g_settings.mode_icons_flag[i].c_str());
|
|
ShowHint(LOCALE_INFOICONS_FLAG_DEL_HEAD, g_Locale->getText(LOCALE_INFOICONS_FLAG_DEL), 450,3);
|
|
res = menu_return::RETURN_EXIT;
|
|
}
|
|
else if(actionKey.substr(0,18) == "infoicons_switch") {
|
|
CInfoIcons::getInstance()->switchInfoIconsOnOff();
|
|
res = menu_return::RETURN_EXIT_ALL;
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
bool CInfoIconsSetup::changeNotify(const neutrino_locale_t OptionName, void *data)
|
|
{
|
|
int val = 0;
|
|
if(data)
|
|
val = (*(int *)data);
|
|
|
|
if(ARE_LOCALES_EQUAL(OptionName, LOCALE_INFOICONS_SKIN))
|
|
{
|
|
if(val == INFOICONS_INFOVIEWER)
|
|
oj_modeicon->setActive(false);
|
|
else
|
|
oj_modeicon->setActive(true);
|
|
}
|
|
else if(ARE_LOCALES_EQUAL(OptionName, LOCALE_INFOICONS_MODEICON))
|
|
{
|
|
if(val == 0) {
|
|
oj_skin->setActive(true);
|
|
printf("CInfoIconsSetup::changeNotify: stop InfoIcons\n");
|
|
}
|
|
else {
|
|
oj_skin->setActive(false);
|
|
printf("CInfoIconsSetup::changeNotify: start InfoIcons\n");
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
int CInfoIconsSetup::menu()
|
|
{
|
|
int shortcut = 1;
|
|
int shortcut_delflag = 0;
|
|
int shortcut_flagname = 0;
|
|
|
|
CMenuWidget* infoiconsMenu = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_INFOICONS);
|
|
infoiconsMenu->addIntroItems(LOCALE_INFOICONS_HEAD);
|
|
|
|
//FIXME if Iconbar is active, set selected from LOCALE_INFOICONS_SKIN to LOCALE_INFOICONS_MODEICON
|
|
if(g_settings.mode_icons && (infoiconsMenu->getSelected() == 4))
|
|
infoiconsMenu->setSelected(5);
|
|
|
|
oj_skin = new CMenuOptionChooser(LOCALE_INFOICONS_SKIN, &g_settings.mode_icons_skin, OPTIONS_INFOICONS_MODE_OPTIONS, OPTIONS_INFOICONS_MODE_OPTION_COUNT, !g_settings.mode_icons, this, CRCInput::convertDigitToKey(shortcut++));
|
|
oj_skin->setHint(NEUTRINO_ICON_HINT_IMAGELOGO, LOCALE_MENU_HINT_INFOICONS_SKIN);
|
|
infoiconsMenu->addItem(oj_skin);
|
|
|
|
oj_modeicon = new CMenuOptionChooser(LOCALE_INFOICONS_MODEICON, &g_settings.mode_icons, OPTIONS_START0_STOP1_OPTIONS, OPTIONS_START0_STOP1_OPTION_COUNT, g_settings.mode_icons_skin != INFOICONS_INFOVIEWER, this, CRCInput::convertDigitToKey(shortcut++));
|
|
oj_modeicon->setHint(NEUTRINO_ICON_HINT_IMAGELOGO, LOCALE_MENU_HINT_INFOICONS_MODEICON);
|
|
infoiconsMenu->addItem(oj_modeicon);
|
|
|
|
infoiconsMenu->addItem(GenericMenuSeparatorLine);
|
|
|
|
CMenuWidget* delFlagMenu = new CMenuWidget(LOCALE_INFOICONS_MODEICON, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_INFOICONS_DELFLAG);
|
|
delFlagMenu->addIntroItems(LOCALE_INFOICONS_FLAG_DEL_HEAD);
|
|
|
|
CMenuForwarder * mf = new CMenuForwarder(LOCALE_INFOICONS_FLAG_ALL, true, NULL, this , "del_all", CRCInput::RC_red);
|
|
mf->setHint(NEUTRINO_ICON_HINT_IMAGELOGO, LOCALE_MENU_HINT_INFOICONS_FLAG_ALL);
|
|
delFlagMenu->addItem(mf);
|
|
|
|
for(int i=0 ; i < MODE_ICONS_NR_OF_ENTRIES; i++)
|
|
{
|
|
mf = new CMenuForwarder(menu_settings[i].caption, file_exists(g_settings.mode_icons_flag[i]), NULL, this , menu_settings[i].action, CRCInput::convertDigitToKey(shortcut_delflag++));
|
|
mf->setHint(NEUTRINO_ICON_HINT_IMAGELOGO, menu_settings[i].caption_hint);
|
|
delFlagMenu->addItem(mf);
|
|
}
|
|
|
|
mf = new CMenuForwarder(LOCALE_INFOICONS_FLAG_DEL_HEAD, true, NULL, delFlagMenu, "", CRCInput::convertDigitToKey(shortcut++));
|
|
mf->setHint(NEUTRINO_ICON_HINT_IMAGELOGO, LOCALE_MENU_HINT_INFOICONS_FLAG_DEL_HEAD);
|
|
infoiconsMenu->addItem(mf);
|
|
|
|
for(int i=0 ; i < MODE_ICONS_NR_OF_ENTRIES; i++) {
|
|
flagchooser[i] = new CStringInputSMS(menu_settings[i].caption, &g_settings.mode_icons_flag[i], 30, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE,"abcdefghijklmnopqrstuvwxyz0123456789-_.:/ ");
|
|
}
|
|
|
|
CMenuWidget* flagMenu = new CMenuWidget(LOCALE_INFOICONS_HEAD, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_INFOICONS_SETFLAG);
|
|
flagMenu->addIntroItems(LOCALE_INFOICONS_FLAG_HEAD);
|
|
|
|
for(int i=0 ; i < MODE_ICONS_NR_OF_ENTRIES; i++)
|
|
{
|
|
mforwarder[i] = new CMenuForwarder(menu_settings[i].caption , true , g_settings.mode_icons_flag[i], flagchooser[i], "", CRCInput::convertDigitToKey(shortcut_flagname++));
|
|
mforwarder[i]->setHint(NEUTRINO_ICON_HINT_IMAGELOGO, menu_settings[i].caption_hint);
|
|
flagMenu->addItem(mforwarder[i]);
|
|
}
|
|
|
|
mf = new CMenuForwarder(LOCALE_INFOICONS_FLAG_HEAD, true, NULL, flagMenu, "", CRCInput::convertDigitToKey(shortcut++));
|
|
mf->setHint(NEUTRINO_ICON_HINT_IMAGELOGO, LOCALE_MENU_HINT_INFOICONS_FLAG_HEAD);
|
|
infoiconsMenu->addItem(mf);
|
|
|
|
infoiconsMenu->addItem(GenericMenuSeparatorLine);
|
|
|
|
CMenuOptionChooser *mc = new CMenuOptionChooser(LOCALE_INFOICONS_BACKGROUND, &g_settings.mode_icons_background, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this, CRCInput::convertDigitToKey(shortcut++));
|
|
mc->setHint(NEUTRINO_ICON_HINT_IMAGELOGO, LOCALE_MENU_HINT_INFOICONS_BACKGROUND);
|
|
infoiconsMenu->addItem(mc);
|
|
|
|
int res = infoiconsMenu->exec(NULL,"");
|
|
infoiconsMenu->hide();
|
|
delete infoiconsMenu;
|
|
delete delFlagMenu;
|
|
for (int i = 0 ; i < MODE_ICONS_NR_OF_ENTRIES; i++)
|
|
delete flagchooser[i];
|
|
delete flagMenu;
|
|
return res;
|
|
}
|