diff --git a/src/gui/widget/progresswindow.cpp b/src/gui/widget/progresswindow.cpp index b077cf2f0..1d2c5f0d5 100644 --- a/src/gui/widget/progresswindow.cpp +++ b/src/gui/widget/progresswindow.cpp @@ -33,14 +33,39 @@ #include #include -CProgressWindow::CProgressWindow(CComponentsForm *parent, const int &dx, const int &dy) -: CComponentsWindow(0, 0, dx, dy, string(), NEUTRINO_ICON_INFO, parent, CC_SHADOW_ON) +CProgressWindow::CProgressWindow(CComponentsForm *parent, + const int &dx, + const int &dy, + sigc::signal *statusSignal, + sigc::signal *localSignal, + sigc::signal *globalSignal) + : CComponentsWindow(0, 0, dx, dy, string(), NEUTRINO_ICON_INFO, parent, CC_SHADOW_ON) { - Init(); + Init(statusSignal, localSignal, globalSignal); } -void CProgressWindow::Init() +CProgressWindow::CProgressWindow(const neutrino_locale_t title, + const int &dx, + const int &dy, + sigc::signal *statusSignal, + sigc::signal *localSignal, + sigc::signal *globalSignal) + : CComponentsWindow(0, 0, dx, dy, g_Locale->getText(title), NEUTRINO_ICON_INFO, NULL, CC_SHADOW_ON) { + Init(statusSignal, localSignal, globalSignal); +} + +void CProgressWindow::Init( sigc::signal *statusSignal, + sigc::signal *localSignal, + sigc::signal *globalSignal) +{ + if (statusSignal) + *statusSignal->connect(sigc::mem_fun(*this, &CProgressWindow::showStatus)); + if (localSignal) + *localSignal->connect(sigc::mem_fun(*this, &CProgressWindow::showLocalStatus)); + if (globalSignal) + *globalSignal->connect(sigc::mem_fun(*this, &CProgressWindow::showGlobalStatus)); + global_progress = local_progress = 100; showFooter(false); @@ -60,6 +85,7 @@ void CProgressWindow::Init() status_txt->setDimensionsAll(x_item, y_item, w_item, h_txt); status_txt->setColorBody(col_body); status_txt->doPaintTextBoxBg(true); + status_txt->doPaintBg(false); addWindowItem(status_txt); y_item += h_txt + 10; @@ -121,7 +147,7 @@ void CProgressWindow::fitItems() } } -void CProgressWindow::showStatus(const unsigned int prog, const unsigned int max) +void CProgressWindow::showStatus(const unsigned int prog, const unsigned int max, const std::string &statusText) { if (global_progress == prog) return; @@ -132,10 +158,10 @@ void CProgressWindow::showStatus(const unsigned int prog, const unsigned int max global_bar->setHeight(g_height + g_height/2); } - showGlobalStatus(prog, max); + showGlobalStatus(prog, max, statusText); } -void CProgressWindow::showGlobalStatus(const unsigned int prog, const unsigned int max) +void CProgressWindow::showGlobalStatus(const unsigned int prog, const unsigned int max, const std::string &statusText) { if (global_progress == prog) return; @@ -143,6 +169,8 @@ void CProgressWindow::showGlobalStatus(const unsigned int prog, const unsigned i global_bar->allowPaint(true); global_progress = prog; global_bar->setValues(prog, (int)max); + if (!statusText.empty()) + showStatusMessageUTF(statusText); global_bar->paint(false); #ifdef VFD_UPDATE @@ -150,7 +178,7 @@ void CProgressWindow::showGlobalStatus(const unsigned int prog, const unsigned i #endif // VFD_UPDATE } -void CProgressWindow::showLocalStatus(const unsigned int prog, const unsigned int max) +void CProgressWindow::showLocalStatus(const unsigned int prog, const unsigned int max, const std::string &statusText) { if (local_progress == prog) return; @@ -158,6 +186,8 @@ void CProgressWindow::showLocalStatus(const unsigned int prog, const unsigned in local_bar->allowPaint(true); local_progress = prog; local_bar->setValues(prog, (int)max); + if (!statusText.empty()) + showStatusMessageUTF(statusText); local_bar->paint(false); #ifdef VFD_UPDATE diff --git a/src/gui/widget/progresswindow.h b/src/gui/widget/progresswindow.h index eaa8f8c63..18d4c9273 100644 --- a/src/gui/widget/progresswindow.h +++ b/src/gui/widget/progresswindow.h @@ -38,21 +38,36 @@ class CProgressWindow : public CComponentsWindow, public CMenuTarget unsigned int local_progress; int w_bar_frame; int h_height; - void Init(); + void Init( sigc::signal *statusSignal, + sigc::signal *localSignal, + sigc::signal *globalSignal); void fitItems(); public: - CProgressWindow(CComponentsForm *parent = NULL, const int &dx = 700, const int &dy = 200); + CProgressWindow(CComponentsForm *parent = NULL, + const int &dx = 700, + const int &dy = 200, + sigc::signal *status_Signal = NULL, + sigc::signal *localSignal = NULL, + sigc::signal *globalSignal = NULL); + + CProgressWindow(const neutrino_locale_t title, + const int &dx = 700, + const int &dy = 200, + sigc::signal *status_Signal = NULL, + sigc::signal *localSignal = NULL, + sigc::signal *globalSignal = NULL); + void setTitle(const neutrino_locale_t title); virtual void hide(); virtual int exec( CMenuTarget* parent, const std::string & actionKey ); - void showStatus(const unsigned int prog, const unsigned int max = 100); - void showGlobalStatus(const unsigned int prog, const unsigned int max = 100); + void showStatus(const unsigned int prog, const unsigned int max = 100, const std::string &statusText = std::string()); + void showLocalStatus(const unsigned int prog, const unsigned int max = 100, const std::string &statusText = std::string()); + void showGlobalStatus(const unsigned int prog, const unsigned int max = 100, const std::string &statusText = std::string()); unsigned int getGlobalStatus(void); - void showLocalStatus(const unsigned int prog, const unsigned int max = 100); void showStatusMessageUTF(const std::string & text); // UTF-8 void paint(bool do_save_bg = true); void setTitle(const std::string & title);