From 2f0e4e1687fb4e93db600da5ade63609f52aaf75 Mon Sep 17 00:00:00 2001 From: Thilo Graf Date: Mon, 9 Jun 2014 14:56:12 +0200 Subject: [PATCH] CProgressWindow: implement CComponent classes This implement window functionality from CComponentsWindow, progress items from CProgressBar() and status text items from CComponentsLabel() --- src/gui/update.h | 2 +- src/gui/widget/progressstatus.h | 40 -------- src/gui/widget/progresswindow.cpp | 164 +++++++++++++----------------- src/gui/widget/progresswindow.h | 52 ++++------ src/system/flashtool.cpp | 2 +- src/system/flashtool.h | 6 +- src/system/httptool.cpp | 2 +- src/system/httptool.h | 6 +- 8 files changed, 99 insertions(+), 175 deletions(-) delete mode 100644 src/gui/widget/progressstatus.h diff --git a/src/gui/update.h b/src/gui/update.h index 05bb4cfe9..22f08d442 100644 --- a/src/gui/update.h +++ b/src/gui/update.h @@ -35,7 +35,7 @@ #define __update__ #include -#include + #include #include diff --git a/src/gui/widget/progressstatus.h b/src/gui/widget/progressstatus.h deleted file mode 100644 index 6b37930f3..000000000 --- a/src/gui/widget/progressstatus.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Neutrino-GUI - DBoxII-Project - - Copyright (C) 2001 Steffen Hehn 'McClean' - Homepage: http://dbox.cyberphoria.org/ - - 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 -*/ - - -#ifndef __progressstatus__ -#define __progressstatus__ - -#include - -class CProgress_StatusViewer -{ - public: - virtual void showGlobalStatus(const unsigned int prog) = 0; - virtual unsigned int getGlobalStatus(void) = 0; - virtual void showLocalStatus(const unsigned int prog) = 0; - virtual void showStatusMessageUTF(const std::string & text) = 0; - virtual void paint() = 0; -}; - -#endif diff --git a/src/gui/widget/progresswindow.cpp b/src/gui/widget/progresswindow.cpp index 5b92197fb..c927ee49c 100644 --- a/src/gui/widget/progresswindow.cpp +++ b/src/gui/widget/progresswindow.cpp @@ -1,26 +1,24 @@ /* - $Id: progresswindow.cpp,v 1.16 2007/02/25 21:32:58 guenther Exp $ + Based up Neutrino-GUI - Tuxbox-Project + Copyright (C) 2001 by Steffen Hehn 'McClean' - Neutrino-GUI - DBoxII-Project - - Copyright (C) 2001 Steffen Hehn 'McClean' - Homepage: http://dbox.cyberphoria.org/ + Implementation of CComponent Window class. + Copyright (C) 2014 Thilo Graf 'dbt' 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 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. + 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. + along with this program. If not, see . */ #ifdef HAVE_CONFIG_H @@ -33,39 +31,66 @@ #include #include +#include #include -#include -#include -CProgressWindow::CProgressWindow() +CProgressWindow::CProgressWindow(CComponentsForm *parent) +: CComponentsWindow(0, 0, 700, 200, string(), NEUTRINO_ICON_INFO, NULL, parent) { - frameBuffer = CFrameBuffer::getInstance(); - hheight = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getHeight(); - mheight = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight(); - int fw = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getWidth(); - width = w_max (50*fw, 0); - height = h_max(hheight+5*mheight, 20); + Init(); +} - global_progress = local_progress = 101; - statusText = ""; - globalstatusX = 0; - globalstatusY = 0; - localstatusY = 0; - statusTextY = 0; +void CProgressWindow::Init() +{ + global_progress = local_progress = 100; - x = frameBuffer->getScreenX() + ((frameBuffer->getScreenWidth() - width ) >> 1 ); - y = frameBuffer->getScreenY() + ((frameBuffer->getScreenHeight() - height) >>1 ); + showFooter(false); + shadow = true; - caption = NONEXISTANT_LOCALE; + int x_item = 10; + int y_item = 10; + int w_item = width-2*x_item; + int h_item = 20; + + //create status text object + status_txt = new CComponentsLabel(); + status_txt->setDimensionsAll(x_item, y_item, w_item, h_item); + status_txt->setColorBody(col_body); + addWindowItem(status_txt); + y_item += 2*h_item; + + //create local_bar object + local_bar = new CProgressBar(); + local_bar->setDimensionsAll(x_item, y_item, w_item, h_item); + local_bar->setColorBody(col_body); + local_bar->setActiveColor(COL_MENUCONTENT_PLUS_7); + local_bar->setFrameThickness(2); + local_bar->setColorFrame(COL_MENUCONTENT_PLUS_7); + addWindowItem(local_bar); + y_item += 2*h_item; + + //create global_bar object + global_bar = new CProgressBar(); + global_bar->setDimensionsAll(x_item, y_item, w_item, h_item); + global_bar->setColorBody(col_body); + global_bar->setActiveColor(COL_MENUCONTENT_PLUS_7); + global_bar->setFrameThickness(2); + global_bar->setColorFrame(COL_MENUCONTENT_PLUS_7); + addWindowItem(global_bar); + y_item += 2*h_item; + + height = y_item + ccw_head->getHeight() + 10; + + setCenterPos(); } void CProgressWindow::setTitle(const neutrino_locale_t title) { - caption = title; + setWindowCaption(title); #ifdef VFD_UPDATE - CVFD::getInstance()->showProgressBar2(-1,NULL,-1,g_Locale->getText(caption)); // set global text in VFD + CVFD::getInstance()->showProgressBar2(-1,NULL,-1,g_Locale->getText(ccw_caption)); // set global text in VFD #endif // VFD_UPDATE } @@ -76,20 +101,8 @@ void CProgressWindow::showGlobalStatus(const unsigned int prog) return; global_progress = prog; - - int pos = x + 10; - - if(global_progress != 0) - { - if (global_progress > 100) - global_progress = 100; - - pos += int( float(width-20)/100.0 * global_progress); - //vordergrund - frameBuffer->paintBox(x+10, globalstatusY,pos, globalstatusY+10, COL_MENUCONTENT_PLUS_7); - } - //hintergrund - frameBuffer->paintBox(pos, globalstatusY, x+width-10, globalstatusY+10, COL_MENUCONTENT_PLUS_2); + global_bar->setValues(prog, 100); + global_bar->paint(false); #ifdef VFD_UPDATE CVFD::getInstance()->showProgressBar2(-1,NULL,global_progress); @@ -102,33 +115,24 @@ void CProgressWindow::showLocalStatus(const unsigned int prog) return; local_progress = prog; - - int pos = x + 10; - - if (local_progress != 0) - { - if (local_progress > 100) - local_progress = 100; - - pos += int( float(width-20)/100.0 * local_progress); - //vordergrund - frameBuffer->paintBox(x+10, localstatusY,pos, localstatusY+10, COL_MENUCONTENT_PLUS_7); - } - //hintergrund - frameBuffer->paintBox(pos, localstatusY, x+width-10, localstatusY+10, COL_MENUCONTENT_PLUS_2); + local_bar->setValues(prog, 100); + local_bar->paint(false); #ifdef VFD_UPDATE CVFD::getInstance()->showProgressBar2(local_progress); #else - CVFD::getInstance()->showPercentOver(local_progress); + CVFD::getInstance()->showPercentOver((uint8_t)local_progress); #endif // VFD_UPDATE } void CProgressWindow::showStatusMessageUTF(const std::string & text) { - statusText = text; - frameBuffer->paintBox(x, statusTextY-mheight, x+width, statusTextY, COL_MENUCONTENT_PLUS_0); - g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+10, statusTextY, width-20, text, COL_MENUCONTENT_TEXT); + string txt = text; + int w_txt = status_txt->getWidth(); + int h_txt = status_txt->getHeight(); + status_txt->setText(txt, CTextBox::CENTER, *CNeutrinoFonts::getInstance()->getDynFont(w_txt, h_txt, txt), COL_MENUCONTENT_TEXT); + + status_txt->paint(false); #ifdef VFD_UPDATE CVFD::getInstance()->showProgressBar2(-1,text.c_str()); // set local text in VFD @@ -141,35 +145,9 @@ unsigned int CProgressWindow::getGlobalStatus(void) return global_progress; } - -void CProgressWindow::hide() +void CProgressWindow::hide(bool no_restore) { - frameBuffer->paintBackgroundBoxRel(x,y, width,height); -} - -void CProgressWindow::paint() -{ - int ypos=y; - frameBuffer->paintBoxRel(x, ypos, width, hheight, COL_MENUHEAD_PLUS_0, RADIUS_LARGE, CORNER_TOP); - if (caption != NONEXISTANT_LOCALE) - g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->RenderString(x+10, ypos+ hheight, width - 10, g_Locale->getText(caption), COL_MENUHEAD_TEXT); - frameBuffer->paintBoxRel(x, ypos+ hheight, width, height- hheight, COL_MENUCONTENT_PLUS_0, RADIUS_LARGE, CORNER_BOTTOM); - - ypos+= hheight + (mheight >>1); - statusTextY = ypos+mheight; - showStatusMessageUTF(statusText); - - ypos+= mheight; - localstatusY = ypos+ mheight-20; - showLocalStatus(0); - ypos+= mheight+10; - - g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+ 10, ypos+ mheight, width- 10, g_Locale->getText(LOCALE_FLASHUPDATE_GLOBALPROGRESS), COL_MENUCONTENT_TEXT); - ypos+= mheight; - - globalstatusY = ypos+ mheight-20; - //ypos+= mheight >>1; - showGlobalStatus(global_progress); + CComponentsWindow::hide(no_restore); } int CProgressWindow::exec(CMenuTarget* parent, const std::string & /*actionKey*/) diff --git a/src/gui/widget/progresswindow.h b/src/gui/widget/progresswindow.h index 9b4282d4f..114b62fe0 100644 --- a/src/gui/widget/progresswindow.h +++ b/src/gui/widget/progresswindow.h @@ -1,24 +1,24 @@ /* - Neutrino-GUI - DBoxII-Project + Based up Neutrino-GUI - Tuxbox-Project + Copyright (C) 2001 by Steffen Hehn 'McClean' - Copyright (C) 2001 Steffen Hehn 'McClean' - Homepage: http://dbox.cyberphoria.org/ + Implementation of CComponent Window class. + Copyright (C) 2014 Thilo Graf 'dbt' 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 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. + 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. + along with this program. If not, see . */ @@ -28,41 +28,27 @@ #include #include -#include "progressstatus.h" +#include #include "menue.h" #include -class CProgressWindow : public CMenuTarget, public CProgress_StatusViewer +class CProgressWindow : public CComponentsWindow, public CMenuTarget { - protected: + private: + CProgressBar *local_bar, *global_bar; + CComponentsLabel *status_txt; - CFrameBuffer *frameBuffer; - neutrino_locale_t caption; - - int x; - int y; - int width; - int height; - int hheight; // head font height - int mheight; // menu font height unsigned int global_progress; unsigned int local_progress; - int globalstatusX; - int globalstatusY; - int localstatusY; - int statusTextY; - std::string statusText; - - //---------------------------- + void Init(); public: - CProgressWindow(); + CProgressWindow(CComponentsForm *parent = NULL); void setTitle(const neutrino_locale_t title); - virtual void hide(); - virtual void paint(); + virtual void hide(bool no_restore = false); virtual int exec( CMenuTarget* parent, const std::string & actionKey ); diff --git a/src/system/flashtool.cpp b/src/system/flashtool.cpp index d3c3ce5c6..59bff8812 100644 --- a/src/system/flashtool.cpp +++ b/src/system/flashtool.cpp @@ -65,7 +65,7 @@ void CFlashTool::setMTDDevice( const std::string & mtddevice ) printf("flashtool.cpp: set mtd device to %s\n", mtddevice.c_str()); } -void CFlashTool::setStatusViewer( CProgress_StatusViewer* statusview ) +void CFlashTool::setStatusViewer( CProgressWindow* statusview ) { statusViewer = statusview; } diff --git a/src/system/flashtool.h b/src/system/flashtool.h index 7b19cb689..4885f98b4 100644 --- a/src/system/flashtool.h +++ b/src/system/flashtool.h @@ -33,7 +33,7 @@ #ifndef __flashtool__ #define __flashtool__ -#include +#include #include #include @@ -43,7 +43,7 @@ class CFlashTool { private: - CProgress_StatusViewer* statusViewer; + CProgressWindow* statusViewer; std::string mtdDevice; std::string ErrorMessage; @@ -61,7 +61,7 @@ class CFlashTool const std::string & getErrorMessage(void) const; void setMTDDevice( const std::string & mtddevice ); - void setStatusViewer( CProgress_StatusViewer* statusview ); + void setStatusViewer( CProgressWindow* statusview ); bool program( const std::string & filename, int globalProgressEndErase=-1, int globalProgressEndFlash=-1 ); bool readFromMTD( const std::string & filename, int globalProgressEnd=-1 ); diff --git a/src/system/httptool.cpp b/src/system/httptool.cpp index ab93c954c..1d5170d2d 100644 --- a/src/system/httptool.cpp +++ b/src/system/httptool.cpp @@ -37,7 +37,7 @@ CHTTPTool::CHTTPTool() userAgent = "neutrino/httpdownloader"; } -void CHTTPTool::setStatusViewer( CProgress_StatusViewer* statusview ) +void CHTTPTool::setStatusViewer( CProgressWindow* statusview ) { statusViewer = statusview; } diff --git a/src/system/httptool.h b/src/system/httptool.h index 21de18096..c0b3f487f 100644 --- a/src/system/httptool.h +++ b/src/system/httptool.h @@ -33,7 +33,7 @@ #ifndef __httptool__ #define __httptool__ -#include +#include #include @@ -44,12 +44,12 @@ class CHTTPTool int iGlobalProgressEnd; int iGlobalProgressBegin; - CProgress_StatusViewer* statusViewer; + CProgressWindow* statusViewer; static int show_progress( void *clientp, double dltotal, double dlnow, double ultotal, double ulnow); public: CHTTPTool(); - void setStatusViewer( CProgress_StatusViewer* statusview ); + void setStatusViewer( CProgressWindow* statusview ); bool downloadFile( const std::string & URL, const char * const downloadTarget, int globalProgressEnd=-1 );