Merge branch 'ni/tuxbox' into ni/mp/tuxbox
Origin commit data
------------------
Commit: b72cda244d
Author: vanhofen <vanhofen@gmx.de>
Date: 2017-09-14 (Thu, 14 Sep 2017)
@@ -1,9 +1,9 @@
|
|||||||
installdir = $(ICONSDIR)
|
installdir = $(ICONSDIR)
|
||||||
|
|
||||||
install_DATA = \
|
install_DATA = \
|
||||||
volumebody.png \
|
slider_alpha.png \
|
||||||
volumeslider2.png \
|
slider_blue.png \
|
||||||
volumeslider2alpha.png \
|
slider_body.png \
|
||||||
volumeslider2blue.png \
|
slider_green.png \
|
||||||
volumeslider2green.png \
|
slider_inactive.png \
|
||||||
volumeslider2red.png
|
slider_red.png
|
||||||
|
BIN
data/icons/slider/slider_alpha.png
Normal file
After Width: | Height: | Size: 238 B |
BIN
data/icons/slider/slider_blue.png
Normal file
After Width: | Height: | Size: 256 B |
Before Width: | Height: | Size: 132 B After Width: | Height: | Size: 132 B |
BIN
data/icons/slider/slider_green.png
Normal file
After Width: | Height: | Size: 261 B |
BIN
data/icons/slider/slider_inactive.png
Normal file
After Width: | Height: | Size: 239 B |
BIN
data/icons/slider/slider_red.png
Normal file
After Width: | Height: | Size: 259 B |
Before Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 209 B |
@@ -59,8 +59,8 @@ CComponentsSlider::CComponentsSlider( const int& x_pos, const int& y_pos, const
|
|||||||
csl_body_obj = NULL;
|
csl_body_obj = NULL;
|
||||||
csl_slider_obj = NULL;
|
csl_slider_obj = NULL;
|
||||||
|
|
||||||
csl_body_icon = NEUTRINO_ICON_VOLUMEBODY;
|
csl_body_icon = NEUTRINO_ICON_SLIDER_BODY;
|
||||||
csl_slider_icon =NEUTRINO_ICON_VOLUMESLIDER2;
|
csl_slider_icon =NEUTRINO_ICON_SLIDER_INACTIVE;
|
||||||
|
|
||||||
initCCSlItems();
|
initCCSlItems();
|
||||||
initParent(parent);
|
initParent(parent);
|
||||||
|
@@ -1,32 +1,22 @@
|
|||||||
/*
|
/*
|
||||||
Neutrino-GUI - DBoxII-Project
|
Based up Neutrino-GUI - Tuxbox-Project
|
||||||
|
|
||||||
Copyright (C) 2001 Steffen Hehn 'McClean'
|
Copyright (C) 2001 Steffen Hehn 'McClean'
|
||||||
Homepage: http://dbox.cyberphoria.org/
|
|
||||||
|
|
||||||
Kommentar:
|
|
||||||
|
|
||||||
Diese GUI wurde von Grund auf neu programmiert und sollte nun vom
|
|
||||||
Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert
|
|
||||||
auf der Client-Server Idee, diese GUI ist also von der direkten DBox-
|
|
||||||
Steuerung getrennt. Diese wird dann von Daemons uebernommen.
|
|
||||||
|
|
||||||
|
|
||||||
License: GPL
|
License: GPL
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or
|
||||||
it under the terms of the GNU General Public License as published by
|
modify it under the terms of the GNU General Public
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
License as published by the Free Software Foundation; either
|
||||||
(at your option) any later version.
|
version 2 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
GNU General Public License for more details.
|
General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
@@ -46,55 +36,67 @@
|
|||||||
#include <gui/widget/msgbox.h>
|
#include <gui/widget/msgbox.h>
|
||||||
#include <gui/widget/icons.h>
|
#include <gui/widget/icons.h>
|
||||||
|
|
||||||
|
static const char * const icon_names[VALUES] =
|
||||||
#define VALUE_R 0
|
{
|
||||||
#define VALUE_G 1
|
NEUTRINO_ICON_SLIDER_RED,
|
||||||
#define VALUE_B 2
|
NEUTRINO_ICON_SLIDER_GREEN,
|
||||||
#define VALUE_ALPHA 3
|
NEUTRINO_ICON_SLIDER_BLUE,
|
||||||
|
NEUTRINO_ICON_SLIDER_ALPHA
|
||||||
static const char * const iconnames[4] = {
|
|
||||||
NEUTRINO_ICON_VOLUMESLIDER2RED,
|
|
||||||
NEUTRINO_ICON_VOLUMESLIDER2GREEN,
|
|
||||||
NEUTRINO_ICON_VOLUMESLIDER2BLUE,
|
|
||||||
NEUTRINO_ICON_VOLUMESLIDER2ALPHA
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const neutrino_locale_t colorchooser_names[4] =
|
static const neutrino_locale_t colorchooser_names[VALUES] =
|
||||||
{
|
{
|
||||||
LOCALE_COLORCHOOSER_RED ,
|
LOCALE_COLORCHOOSER_RED,
|
||||||
LOCALE_COLORCHOOSER_GREEN,
|
LOCALE_COLORCHOOSER_GREEN,
|
||||||
LOCALE_COLORCHOOSER_BLUE ,
|
LOCALE_COLORCHOOSER_BLUE,
|
||||||
LOCALE_COLORCHOOSER_ALPHA
|
LOCALE_COLORCHOOSER_ALPHA
|
||||||
};
|
};
|
||||||
|
|
||||||
CColorChooser::CColorChooser(const neutrino_locale_t Name, unsigned char *R, unsigned char *G, unsigned char *B, unsigned char* Alpha, CChangeObserver* Observer) // UTF-8
|
CColorChooser::CColorChooser(const neutrino_locale_t Name, unsigned char *R, unsigned char *G, unsigned char *B, unsigned char* A, CChangeObserver* Observer)
|
||||||
{
|
{
|
||||||
frameBuffer = CFrameBuffer::getInstance();
|
frameBuffer = CFrameBuffer::getInstance();
|
||||||
hheight = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getHeight();
|
header_height = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getHeight();
|
||||||
mheight = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight();
|
item_height = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight();
|
||||||
font_info = SNeutrinoSettings::FONT_TYPE_MENU;
|
|
||||||
observer = Observer;
|
observer = Observer;
|
||||||
name = Name;
|
name = Name;
|
||||||
|
|
||||||
//calculate max width of LOCALS
|
// calculate max width of locals
|
||||||
offset = 0;
|
text_width = 0;
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < VALUES; i++)
|
||||||
int tmpoffset = g_Font[font_info]->getRenderWidth(g_Locale->getText(colorchooser_names[i]));
|
{
|
||||||
if (tmpoffset > offset) {
|
int tmp_text_width = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(g_Locale->getText(colorchooser_names[i]));
|
||||||
offset = tmpoffset;
|
if (tmp_text_width > text_width)
|
||||||
}
|
text_width = tmp_text_width;
|
||||||
}
|
}
|
||||||
|
|
||||||
width = w_max((offset + (162 + mheight*4 + 10)), 0);
|
// assuming all sliders have same dimensions
|
||||||
height = h_max(hheight+ mheight* 4, 0);
|
int dummy;
|
||||||
|
frameBuffer->getIconSize(NEUTRINO_ICON_SLIDER_ALPHA, &slider_width, &dummy);
|
||||||
|
|
||||||
x = frameBuffer->getScreenX() + ((frameBuffer->getScreenWidth()-width) >> 1);
|
bar_width = frameBuffer->scale2Res(150);
|
||||||
y = frameBuffer->getScreenY() + ((frameBuffer->getScreenHeight()-height)>>1);
|
/*
|
||||||
|
We have a half slider_width before and after the bar
|
||||||
|
to get the middle of the slider at the point of choise
|
||||||
|
*/
|
||||||
|
bar_offset = slider_width/2;
|
||||||
|
bar_full = bar_width + slider_width;
|
||||||
|
|
||||||
value[VALUE_R] = R;
|
preview_w = VALUES*item_height;
|
||||||
value[VALUE_G] = G;
|
preview_h = VALUES*item_height;
|
||||||
value[VALUE_B] = B;
|
|
||||||
value[VALUE_ALPHA] = Alpha;
|
width = w_max((text_width + bar_full + preview_w + 4*OFFSET_INNER_MID), 0);
|
||||||
|
height = h_max((header_height + VALUES*item_height + 2*OFFSET_INNER_SMALL), 0);
|
||||||
|
|
||||||
|
x = getScreenStartX(width);
|
||||||
|
y = getScreenStartY(height);
|
||||||
|
|
||||||
|
preview_x = x + text_width + bar_full + 3*OFFSET_INNER_MID;
|
||||||
|
preview_y = y + header_height + OFFSET_INNER_SMALL;
|
||||||
|
|
||||||
|
value[VALUE_R] = R;
|
||||||
|
value[VALUE_G] = G;
|
||||||
|
value[VALUE_B] = B;
|
||||||
|
value[VALUE_A] = A;
|
||||||
|
|
||||||
chooser_gradient = gradient_none;
|
chooser_gradient = gradient_none;
|
||||||
}
|
}
|
||||||
@@ -102,13 +104,10 @@ CColorChooser::CColorChooser(const neutrino_locale_t Name, unsigned char *R, uns
|
|||||||
void CColorChooser::setColor()
|
void CColorChooser::setColor()
|
||||||
{
|
{
|
||||||
fb_pixel_t col = getColor();
|
fb_pixel_t col = getColor();
|
||||||
int x_col = x+offset+160;
|
|
||||||
int y_col = y+hheight+5;
|
|
||||||
int w_col = mheight*4;
|
|
||||||
int h_col = mheight*4-10;
|
|
||||||
|
|
||||||
if ((g_settings.theme.menu_Head_gradient) && ((chooser_gradient == gradient_head_body) || (chooser_gradient == gradient_head_text))) {
|
if ((g_settings.theme.menu_Head_gradient) && ((chooser_gradient == gradient_head_body) || (chooser_gradient == gradient_head_text)))
|
||||||
CComponentsHeader header(x_col, y_col+((h_col-hheight)/2), w_col, hheight, "Head");
|
{
|
||||||
|
CComponentsHeader header(preview_x, preview_y+((preview_h-header_height)/2), preview_w, header_height, "Head");
|
||||||
if (chooser_gradient == gradient_head_body)
|
if (chooser_gradient == gradient_head_body)
|
||||||
header.setColorBody(col);
|
header.setColorBody(col);
|
||||||
else if (chooser_gradient == gradient_head_text)
|
else if (chooser_gradient == gradient_head_text)
|
||||||
@@ -116,15 +115,20 @@ void CColorChooser::setColor()
|
|||||||
header.paint(CC_SAVE_SCREEN_NO);
|
header.paint(CC_SAVE_SCREEN_NO);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
frameBuffer->paintBoxRel(x_col+2, y_col+2, w_col-4 , h_col-4, col);
|
{
|
||||||
|
CComponentsShapeSquare preview(preview_x, preview_y, preview_w, preview_h, NULL, false, COL_FRAME_PLUS_0, col);
|
||||||
|
preview.setFrameThickness(1);
|
||||||
|
preview.setCorner(RADIUS_SMALL);
|
||||||
|
preview.paint(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fb_pixel_t CColorChooser::getColor()
|
fb_pixel_t CColorChooser::getColor()
|
||||||
{
|
{
|
||||||
int color = convertSetupColor2RGB(*(value[VALUE_R]), *(value[VALUE_G]), *(value[VALUE_B]));
|
int color = convertSetupColor2RGB(*(value[VALUE_R]), *(value[VALUE_G]), *(value[VALUE_B]));
|
||||||
int tAlpha = (value[VALUE_ALPHA]) ? (convertSetupAlpha2Alpha(*(value[VALUE_ALPHA]))) : 0xFF;
|
int alpha = (value[VALUE_A]) ? (convertSetupAlpha2Alpha(*(value[VALUE_A]))) : 0xFF;
|
||||||
|
|
||||||
return (((tAlpha << 24) & 0xFF000000) | color);
|
return (((alpha << 24) & 0xFF000000) | color);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CColorChooser::exec(CMenuTarget* parent, const std::string &)
|
int CColorChooser::exec(CMenuTarget* parent, const std::string &)
|
||||||
@@ -136,91 +140,94 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &)
|
|||||||
if (parent)
|
if (parent)
|
||||||
parent->hide();
|
parent->hide();
|
||||||
|
|
||||||
unsigned char r_alt= *value[VALUE_R];
|
unsigned char r_alt = *value[VALUE_R];
|
||||||
unsigned char g_alt= *value[VALUE_G];
|
unsigned char g_alt = *value[VALUE_G];
|
||||||
unsigned char b_alt= *value[VALUE_B];
|
unsigned char b_alt = *value[VALUE_B];
|
||||||
unsigned char a_null = 0;
|
unsigned char a_null = 0;
|
||||||
unsigned char a_alt = (value[VALUE_ALPHA]) ? (*(value[VALUE_ALPHA])) : a_null;
|
unsigned char a_alt = (value[VALUE_A]) ? (*(value[VALUE_A])) : a_null;
|
||||||
|
|
||||||
paint();
|
paint();
|
||||||
setColor();
|
setColor();
|
||||||
|
|
||||||
int selected = 0;
|
int selected = 0;
|
||||||
|
|
||||||
uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings
|
uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]);
|
||||||
::TIMING_MENU]);
|
|
||||||
|
|
||||||
bool loop=true;
|
bool loop=true;
|
||||||
while (loop) {
|
while (loop) {
|
||||||
g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd, true);
|
g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd, true);
|
||||||
|
|
||||||
if ( msg <= CRCInput::RC_MaxRC )
|
if ( msg <= CRCInput::RC_MaxRC )
|
||||||
timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings
|
timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]);
|
||||||
::TIMING_MENU]);
|
|
||||||
|
|
||||||
int val = (*value[selected]);
|
int val = (*value[selected]);
|
||||||
switch ( msg ) {
|
switch ( msg ) {
|
||||||
case CRCInput::RC_down:
|
case CRCInput::RC_down:
|
||||||
|
{
|
||||||
|
if (selected < ((value[VALUE_A]) ? 3 : 2))
|
||||||
{
|
{
|
||||||
if (selected < ((value[VALUE_ALPHA]) ? 3 : 2))
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], false);
|
||||||
{
|
selected++;
|
||||||
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], false);
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
|
||||||
selected++;
|
|
||||||
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true);
|
|
||||||
} else {
|
|
||||||
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], false);
|
|
||||||
selected = 0;
|
|
||||||
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], false);
|
||||||
|
selected = 0;
|
||||||
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
case CRCInput::RC_up:
|
case CRCInput::RC_up:
|
||||||
|
{
|
||||||
|
if (selected > 0)
|
||||||
{
|
{
|
||||||
if (selected > 0)
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], false);
|
||||||
{
|
selected--;
|
||||||
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], false);
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
|
||||||
selected--;
|
|
||||||
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true);
|
|
||||||
} else {
|
|
||||||
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], false);
|
|
||||||
selected = ((value[VALUE_ALPHA]) ? 3 : 2);
|
|
||||||
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], false);
|
||||||
|
selected = ((value[VALUE_A]) ? 3 : 2);
|
||||||
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case CRCInput::RC_right:
|
case CRCInput::RC_right:
|
||||||
|
{
|
||||||
|
if (val < 100)
|
||||||
{
|
{
|
||||||
if (val < 100)
|
if (val < 98)
|
||||||
{
|
val += 2;
|
||||||
if (val < 98)
|
else
|
||||||
val += 2;
|
val = 100;
|
||||||
else
|
(*value[selected]) = (uint8_t)val;
|
||||||
val = 100;
|
|
||||||
(*value[selected]) = (uint8_t)val;
|
|
||||||
|
|
||||||
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true);
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
|
||||||
setColor();
|
setColor();
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case CRCInput::RC_left:
|
case CRCInput::RC_left:
|
||||||
|
{
|
||||||
|
if (val > 0)
|
||||||
{
|
{
|
||||||
if (val > 0)
|
if (val > 2)
|
||||||
{
|
val -= 2;
|
||||||
if (val > 2)
|
else
|
||||||
val -= 2;
|
val = 0;
|
||||||
else
|
(*value[selected]) = (uint8_t)val;
|
||||||
val = 0;
|
|
||||||
(*value[selected]) = (uint8_t)val;
|
|
||||||
|
|
||||||
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true);
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
|
||||||
setColor();
|
setColor();
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case CRCInput::RC_home:
|
case CRCInput::RC_home:
|
||||||
if (((*value[VALUE_R] != r_alt) || (*value[VALUE_G] != g_alt) || (*value[VALUE_B] != b_alt) || ((value[VALUE_ALPHA]) && (*(value[VALUE_ALPHA]) != a_alt))) &&
|
{
|
||||||
|
if (((*value[VALUE_R] != r_alt) || (*value[VALUE_G] != g_alt) || (*value[VALUE_B] != b_alt) || ((value[VALUE_A]) && (*(value[VALUE_A]) != a_alt))) &&
|
||||||
(ShowMsg(name, LOCALE_MESSAGEBOX_DISCARD, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbCancel) == CMsgBox::mbrCancel))
|
(ShowMsg(name, LOCALE_MESSAGEBOX_DISCARD, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbCancel) == CMsgBox::mbrCancel))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -228,15 +235,19 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &)
|
|||||||
*value[VALUE_R] = r_alt;
|
*value[VALUE_R] = r_alt;
|
||||||
*value[VALUE_G] = g_alt;
|
*value[VALUE_G] = g_alt;
|
||||||
*value[VALUE_B] = b_alt;
|
*value[VALUE_B] = b_alt;
|
||||||
if (value[VALUE_ALPHA])
|
if (value[VALUE_A])
|
||||||
*value[VALUE_ALPHA] = a_alt;
|
*value[VALUE_A] = a_alt;
|
||||||
loop = false;
|
loop = false;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case CRCInput::RC_timeout:
|
case CRCInput::RC_timeout:
|
||||||
case CRCInput::RC_ok:
|
case CRCInput::RC_ok:
|
||||||
|
{
|
||||||
loop = false;
|
loop = false;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
|
{
|
||||||
if (CNeutrinoApp::getInstance()->listModeKey(msg))
|
if (CNeutrinoApp::getInstance()->listModeKey(msg))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
@@ -246,12 +257,13 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &)
|
|||||||
loop = false;
|
loop = false;
|
||||||
res = menu_return::RETURN_EXIT_ALL;
|
res = menu_return::RETURN_EXIT_ALL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hide();
|
hide();
|
||||||
|
|
||||||
if(observer)
|
if (observer)
|
||||||
observer->changeNotify(name, NULL);
|
observer->changeNotify(name, NULL);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
@@ -259,33 +271,37 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &)
|
|||||||
|
|
||||||
void CColorChooser::hide()
|
void CColorChooser::hide()
|
||||||
{
|
{
|
||||||
frameBuffer->paintBackgroundBoxRel(x,y, width,height);
|
frameBuffer->paintBackgroundBoxRel(x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CColorChooser::paint()
|
void CColorChooser::paint()
|
||||||
{
|
{
|
||||||
CComponentsHeader header(x, y, width, hheight, g_Locale->getText(name));
|
CComponentsHeader header(x, y, width, header_height, g_Locale->getText(name));
|
||||||
|
header.enableShadow(CC_SHADOW_RIGHT | CC_SHADOW_CORNER_TOP_RIGHT | CC_SHADOW_CORNER_BOTTOM_RIGHT);
|
||||||
header.paint(CC_SAVE_SCREEN_NO);
|
header.paint(CC_SAVE_SCREEN_NO);
|
||||||
|
|
||||||
frameBuffer->paintBoxRel(x,y+hheight, width,height-hheight, COL_MENUCONTENT_PLUS_0, RADIUS_MID, CORNER_BOTTOM);//round
|
PaintBoxRel(x, y + header_height, width, height - header_height, COL_MENUCONTENT_PLUS_0, RADIUS_LARGE, CORNER_BOTTOM, CC_SHADOW_ON);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < VALUES; i++)
|
||||||
paintSlider(x + 10, y + hheight + mheight * i, value[i], colorchooser_names[i], iconnames[i], (i == 0));
|
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + i*item_height, value[i], colorchooser_names[i], icon_names[i], (i == 0));
|
||||||
|
|
||||||
if ((!g_settings.theme.menu_Head_gradient) || ((chooser_gradient != gradient_head_body) && (chooser_gradient != gradient_head_text))) {
|
|
||||||
//color preview
|
|
||||||
frameBuffer->paintBoxRel(x+offset+160,y+hheight+5, mheight*4, mheight*4-10, COL_MENUHEAD_PLUS_0);
|
|
||||||
frameBuffer->paintBoxRel(x+offset+162,y+hheight+2+5, mheight*4-4 ,mheight*4-4-10, 254);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CColorChooser::paintSlider(int px, int py, unsigned char *spos, const neutrino_locale_t text, const char * const iconname, const bool selected)
|
void CColorChooser::paintSlider(int px, int py, unsigned char *spos, const neutrino_locale_t text, const char * const iconname, const bool selected)
|
||||||
{
|
{
|
||||||
if (!spos)
|
if (!spos)
|
||||||
return;
|
return;
|
||||||
frameBuffer->paintBoxRel(px+offset+10,py,120,mheight, COL_MENUCONTENT_PLUS_0);
|
|
||||||
frameBuffer->paintIcon(NEUTRINO_ICON_VOLUMEBODY,px+offset+10,py+2+mheight/4);
|
|
||||||
frameBuffer->paintIcon(selected ? iconname : NEUTRINO_ICON_VOLUMESLIDER2,px+offset+13+(*spos),py+mheight/4);
|
|
||||||
|
|
||||||
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(px,py+mheight, width, g_Locale->getText(text), COL_MENUCONTENT_TEXT);
|
// clear area
|
||||||
|
frameBuffer->paintBoxRel(px + text_width + 2*OFFSET_INNER_MID, py, bar_full, item_height, COL_MENUCONTENT_PLUS_0);
|
||||||
|
// paint bar
|
||||||
|
/*
|
||||||
|
NEUTRINO_ICON_SLIDER_BODY should be scaled to bar_width.
|
||||||
|
So long we paint a simple frame. This is more save on higher resolutions.
|
||||||
|
*/
|
||||||
|
//frameBuffer->paintIcon(NEUTRINO_ICON_SLIDER_BODY, px + text_width + 2*OFFSET_INNER_MID + bar_offset, py, item_height);
|
||||||
|
frameBuffer->paintBoxFrame(px + text_width + 2*OFFSET_INNER_MID + bar_offset, py + item_height/3, bar_width, item_height/3, 1, COL_FRAME_PLUS_0);
|
||||||
|
// paint slider
|
||||||
|
frameBuffer->paintIcon(selected ? iconname : NEUTRINO_ICON_SLIDER_INACTIVE, px + text_width + 2*OFFSET_INNER_MID + ((*spos)*bar_width / 100), py, item_height);
|
||||||
|
|
||||||
|
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(px + OFFSET_INNER_MID, py + item_height, text_width, g_Locale->getText(text), COL_MENUCONTENT_TEXT);
|
||||||
}
|
}
|
||||||
|
@@ -1,32 +1,22 @@
|
|||||||
/*
|
/*
|
||||||
Neutrino-GUI - DBoxII-Project
|
Based up Neutrino-GUI - Tuxbox-Project
|
||||||
|
|
||||||
Copyright (C) 2001 Steffen Hehn 'McClean'
|
Copyright (C) 2001 Steffen Hehn 'McClean'
|
||||||
Homepage: http://dbox.cyberphoria.org/
|
|
||||||
|
|
||||||
Kommentar:
|
|
||||||
|
|
||||||
Diese GUI wurde von Grund auf neu programmiert und sollte nun vom
|
|
||||||
Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert
|
|
||||||
auf der Client-Server Idee, diese GUI ist also von der direkten DBox-
|
|
||||||
Steuerung getrennt. Diese wird dann von Daemons uebernommen.
|
|
||||||
|
|
||||||
|
|
||||||
License: GPL
|
License: GPL
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or
|
||||||
it under the terms of the GNU General Public License as published by
|
modify it under the terms of the GNU General Public
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
License as published by the Free Software Foundation; either
|
||||||
(at your option) any later version.
|
version 2 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
GNU General Public License for more details.
|
General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -38,21 +28,40 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
enum {
|
||||||
|
VALUE_R = 0, // red
|
||||||
|
VALUE_G = 1, // green
|
||||||
|
VALUE_B = 2, // blue
|
||||||
|
VALUE_A = 3, // alpha
|
||||||
|
|
||||||
|
VALUES
|
||||||
|
};
|
||||||
|
|
||||||
class CFrameBuffer;
|
class CFrameBuffer;
|
||||||
class CColorChooser : public CMenuTarget
|
class CColorChooser : public CMenuTarget
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
CFrameBuffer *frameBuffer;
|
CFrameBuffer *frameBuffer;
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
int hheight,mheight; // head/menu font height
|
int header_height;
|
||||||
int offset;
|
int item_height;
|
||||||
int font_info;
|
int text_width;
|
||||||
|
int bar_width;
|
||||||
|
int bar_offset;
|
||||||
|
int bar_full;
|
||||||
|
int slider_width;
|
||||||
|
int slider_step;
|
||||||
|
int preview_x;
|
||||||
|
int preview_y;
|
||||||
|
int preview_w;
|
||||||
|
int preview_h;
|
||||||
|
|
||||||
int chooser_gradient;
|
int chooser_gradient;
|
||||||
|
|
||||||
unsigned char * value[4]; // r, g, b, alpha
|
unsigned char * value[VALUES];
|
||||||
|
|
||||||
neutrino_locale_t name;
|
neutrino_locale_t name;
|
||||||
|
|
||||||
@@ -63,8 +72,7 @@ class CColorChooser : public CMenuTarget
|
|||||||
void paintSlider(int x, int y, unsigned char *spos, const neutrino_locale_t text, const char * const iconname, const bool selected);
|
void paintSlider(int x, int y, unsigned char *spos, const neutrino_locale_t text, const char * const iconname, const bool selected);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
CColorChooser(const neutrino_locale_t Name, unsigned char *R, unsigned char *G, unsigned char *B, unsigned char* A, CChangeObserver* Observer = NULL);
|
||||||
CColorChooser(const neutrino_locale_t Name, unsigned char *R, unsigned char *G, unsigned char *B, unsigned char* Alpha, CChangeObserver* Observer = NULL); // UTF-8
|
|
||||||
|
|
||||||
void hide();
|
void hide();
|
||||||
int exec(CMenuTarget* parent, const std::string & actionKey);
|
int exec(CMenuTarget* parent, const std::string & actionKey);
|
||||||
@@ -78,6 +86,4 @@ class CColorChooser : public CMenuTarget
|
|||||||
void setGradient(int gradient = gradient_none) { chooser_gradient = gradient; };
|
void setGradient(int gradient = gradient_none) { chooser_gradient = gradient; };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -131,12 +131,6 @@
|
|||||||
#define NEUTRINO_ICON_UPDATE "softupdate"
|
#define NEUTRINO_ICON_UPDATE "softupdate"
|
||||||
#define NEUTRINO_ICON_UPNP "upnp"
|
#define NEUTRINO_ICON_UPNP "upnp"
|
||||||
#define NEUTRINO_ICON_VIDEO "video"
|
#define NEUTRINO_ICON_VIDEO "video"
|
||||||
#define NEUTRINO_ICON_VOLUMEBODY "volumebody"
|
|
||||||
#define NEUTRINO_ICON_VOLUMESLIDER2 "volumeslider2"
|
|
||||||
#define NEUTRINO_ICON_VOLUMESLIDER2ALPHA "volumeslider2alpha"
|
|
||||||
#define NEUTRINO_ICON_VOLUMESLIDER2BLUE "volumeslider2blue"
|
|
||||||
#define NEUTRINO_ICON_VOLUMESLIDER2GREEN "volumeslider2green"
|
|
||||||
#define NEUTRINO_ICON_VOLUMESLIDER2RED "volumeslider2red"
|
|
||||||
#define NEUTRINO_ICON_VTXT "vtxt"
|
#define NEUTRINO_ICON_VTXT "vtxt"
|
||||||
#define NEUTRINO_ICON_VTXT_GREY "vtxt_gray"
|
#define NEUTRINO_ICON_VTXT_GREY "vtxt_gray"
|
||||||
#define NEUTRINO_ICON_PARTITION "partition"
|
#define NEUTRINO_ICON_PARTITION "partition"
|
||||||
@@ -187,6 +181,13 @@
|
|||||||
|
|
||||||
#define DUMMY_ICON "dummy"
|
#define DUMMY_ICON "dummy"
|
||||||
|
|
||||||
|
/* sliders */
|
||||||
|
#define NEUTRINO_ICON_SLIDER_BODY "slider_body"
|
||||||
|
#define NEUTRINO_ICON_SLIDER_INACTIVE "slider_inactive"
|
||||||
|
#define NEUTRINO_ICON_SLIDER_RED "slider_red"
|
||||||
|
#define NEUTRINO_ICON_SLIDER_GREEN "slider_green"
|
||||||
|
#define NEUTRINO_ICON_SLIDER_BLUE "slider_blue"
|
||||||
|
#define NEUTRINO_ICON_SLIDER_ALPHA "slider_alpha"
|
||||||
|
|
||||||
#define NEUTRINO_ICON_BUTTON_MUTE_ZAP_ACTIVE "mute_zap_green"
|
#define NEUTRINO_ICON_BUTTON_MUTE_ZAP_ACTIVE "mute_zap_green"
|
||||||
#define NEUTRINO_ICON_BUTTON_MUTE_ZAP_INACTIVE "mute_zap_gray"
|
#define NEUTRINO_ICON_BUTTON_MUTE_ZAP_INACTIVE "mute_zap_gray"
|
||||||
|
@@ -304,25 +304,45 @@ void CMenuItem::prepareItem(const bool select_mode, const int &item_height)
|
|||||||
void CMenuItem::paintItemSlider( const bool select_mode, const int &item_height, const int &optionvalue, const int &factor, const char * left_text, const char * right_text)
|
void CMenuItem::paintItemSlider( const bool select_mode, const int &item_height, const int &optionvalue, const int &factor, const char * left_text, const char * right_text)
|
||||||
{
|
{
|
||||||
CFrameBuffer *frameBuffer = CFrameBuffer::getInstance();
|
CFrameBuffer *frameBuffer = CFrameBuffer::getInstance();
|
||||||
int slider_lenght = 0, h = 0;
|
|
||||||
frameBuffer->getIconSize(NEUTRINO_ICON_VOLUMEBODY, &slider_lenght, &h);
|
|
||||||
if(slider_lenght == 0 || factor < optionvalue )
|
|
||||||
return;
|
|
||||||
int stringwidth = 0;
|
|
||||||
if (right_text != NULL) {
|
|
||||||
stringwidth = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth("U999");
|
|
||||||
}
|
|
||||||
int stringwidth2 = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(left_text);
|
|
||||||
|
|
||||||
int maxspace = dx - stringwidth - icon_frame_w - stringwidth2 - OFFSET_INNER_MID;
|
// assuming all sliders have same dimensions
|
||||||
if(maxspace < slider_lenght)
|
int slider_width, dummy;
|
||||||
|
frameBuffer->getIconSize(NEUTRINO_ICON_SLIDER_ALPHA, &slider_width, &dummy);
|
||||||
|
|
||||||
|
int bar_width = frameBuffer->scale2Res(100);
|
||||||
|
/*
|
||||||
|
We have a half slider_width before and after the bar
|
||||||
|
to get the middle of the slider at the point of choise
|
||||||
|
*/
|
||||||
|
int bar_offset = slider_width/2;
|
||||||
|
int bar_full = bar_width + slider_width;
|
||||||
|
|
||||||
|
// avoid division by zero
|
||||||
|
if (factor < optionvalue || factor < 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int right_needed = 0;
|
||||||
|
if (right_text != NULL)
|
||||||
|
{
|
||||||
|
right_needed = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth("U999");
|
||||||
|
}
|
||||||
|
int left_needed = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(left_text);
|
||||||
|
|
||||||
|
int space = dx - right_needed - icon_frame_w - left_needed - OFFSET_INNER_MID;
|
||||||
|
if (space < bar_full)
|
||||||
return ;
|
return ;
|
||||||
|
|
||||||
int stringstartposOption = x + dx - stringwidth - slider_lenght;
|
int bar_x = x + dx - right_needed - bar_full;
|
||||||
|
|
||||||
|
// FIXME: negative optionvalues falsifies the slider on the right side
|
||||||
int optionV = (optionvalue < 0) ? 0 : optionvalue;
|
int optionV = (optionvalue < 0) ? 0 : optionvalue;
|
||||||
frameBuffer->paintBoxRel(stringstartposOption, y, slider_lenght, item_height, item_bgcolor);
|
|
||||||
frameBuffer->paintIcon(NEUTRINO_ICON_VOLUMEBODY, stringstartposOption, y+2+item_height/4);
|
// clear area
|
||||||
frameBuffer->paintIcon(select_mode ? NEUTRINO_ICON_VOLUMESLIDER2BLUE : NEUTRINO_ICON_VOLUMESLIDER2, (stringstartposOption + (optionV * 100 / factor)), y+item_height/4);
|
frameBuffer->paintBoxRel(bar_x, y, bar_full, item_height, item_bgcolor);
|
||||||
|
// paint bar
|
||||||
|
frameBuffer->paintBoxFrame(bar_x + bar_offset, y + item_height/3, bar_width, item_height/3, 1, COL_MENUCONTENT_TEXT);
|
||||||
|
// paint slider
|
||||||
|
frameBuffer->paintIcon(select_mode ? NEUTRINO_ICON_SLIDER_ALPHA : NEUTRINO_ICON_SLIDER_INACTIVE, bar_x + (optionV*bar_width / factor), y, item_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMenuItem::paintItemButton(const bool select_mode, int item_height, const char * const icon_Name)
|
void CMenuItem::paintItemButton(const bool select_mode, int item_height, const char * const icon_Name)
|
||||||
|