Merge remote-tracking branch 'tuxbox/master'

This commit is contained in:
Stefan Seyfried
2017-02-11 11:18:45 +01:00
32 changed files with 217 additions and 174 deletions

View File

@@ -344,6 +344,9 @@ void CComponentsForm::paintForm(bool do_save_bg)
void CComponentsForm::paint(bool do_save_bg)
{
if(is_painted)
OnBeforeRePaint();
OnBeforePaint();
paintForm(do_save_bg);
}
@@ -677,20 +680,3 @@ bool CComponentsForm::enableColBodyGradient(const int& enable_mode, const fb_pix
}
return false;
}
void CComponentsForm::forceItemsPaint(bool force)
{
for (size_t i = 0; i < v_cc_items.size(); i++){
dprintf(DEBUG_DEBUG, "\033[33m[CComponentsForm] [%s - %d] found item type = [%d] \033[0m\n", __func__, __LINE__, v_cc_items[i]->getItemType());
if (v_cc_items[i]->getItemType() == CC_ITEMTYPE_TEXT){
CComponentsText* text = static_cast <CComponentsText*>(v_cc_items[i]);
text->forceTextPaint(force);
dprintf(DEBUG_DEBUG, "\033[33m[CComponentsForm] [%s - %d] force repaint of item type CC_ITEMTYPE_TEXT [%u] content [%s]\033[0m\n", __func__, __LINE__, i, text->getText().c_str());
}
if (v_cc_items[i]->getItemType() == CC_ITEMTYPE_LABEL){
CComponentsLabel* label = static_cast <CComponentsLabel*>(v_cc_items[i]);
label ->forceTextPaint(force);
dprintf(DEBUG_DEBUG, "\033[33m[CComponentsForm] [%s - %d] force repaint of item type CC_ITEMTYPE_LABEL [%u] content [%s]\033[0m\n", __func__, __LINE__, i, label->getText().c_str());
}
}
}

View File

@@ -65,11 +65,6 @@ class CComponentsForm : public CComponentsItem
const fb_pixel_t& color_body,
const fb_pixel_t& color_shadow);
///force repaint of all possible text items
void forceItemsPaint(bool force);
///slot for background paint event, reserved for forceItemsPaint()
sigc::slot0<void> sl_repaint;
public:
CComponentsForm( const int x_pos = 0, const int y_pos = 0, const int w = 800, const int h = 600,
CComponentsForm *parent = NULL,
@@ -221,6 +216,9 @@ class CComponentsForm : public CComponentsItem
virtual bool clearPaintCache();
///cleanup old gradient buffers include from sub items, returns true if any gradient buffer data was removed
virtual bool clearFbGradientData();
///slot for repaint event, reserved for actions before repaint if paint() already was done.
sigc::slot0<void> sl_form_repaint;
};
#endif

View File

@@ -30,7 +30,7 @@
#include "cc_frm_clock.h"
#include <time.h>
#include <sigc++/bind.h>
#include <unistd.h>
#include <errno.h>
#include <ctype.h>
@@ -101,9 +101,6 @@ CComponentsFrmClock::CComponentsFrmClock( const int& x_pos,
//init slot for running clock
cl_sl_show = sigc::mem_fun0(*this, &CComponentsFrmClock::ShowTime);
//init slot to ensure paint segments after painted background
sl_repaint = sigc::bind<0>(sigc::mem_fun1(*this, &CComponentsFrmClock::forceItemsPaint), true);
//run clock already if required
if (activ)
startClock();
@@ -301,11 +298,6 @@ void CComponentsFrmClock::initCCLockItems()
x_lbl += v_cc_items[i-1]->getWidth();
v_cc_items[i]->setPos(x_lbl, y_lbl);
}
if(!OnAfterPaintBg.empty())
OnAfterPaintBg.clear();
//init slot to handle repaint of segments if background was repainted
OnAfterPaintBg.connect(sl_repaint);
}

View File

@@ -30,7 +30,6 @@
#include "cc_frm_ext_text.h"
#include <driver/fontrenderer.h>
#include <sigc++/bind.h>
#define DEF_HEIGHT 27
#define DEF_LABEL_WIDTH_PERCENT 30
@@ -115,9 +114,6 @@ void CComponentsExtTextForm::initVarExtTextForm(const int& x_pos, const int& y_p
}
ccx_label_align = ccx_text_align = CTextBox::NO_AUTO_LINEBREAK;
//init slot to ensure paint text items after painted background
sl_repaint = sigc::bind<0>(sigc::mem_fun1(*this, &CComponentsExtTextForm::forceItemsPaint), true);
initParent(parent);
}
@@ -223,11 +219,6 @@ void CComponentsExtTextForm::initCCTextItems()
{
initLabel();
initText();
if(!OnAfterPaintBg.empty())
OnAfterPaintBg.clear();
//init slot to handle repaint of text if background was repainted
OnAfterPaintBg.connect(sl_repaint);
}
void CComponentsExtTextForm::setLabelWidthPercent(const uint8_t& percent_val)

View File

@@ -32,7 +32,6 @@
#include <system/debug.h>
#include <driver/fontrenderer.h>
#include <sigc++/bind.h>
using namespace std;
@@ -137,8 +136,9 @@ void CComponentsHeader::initVarHeader( const int& x_pos, const int& y_pos, const
cch_cl_sec_format = cch_cl_format;
cch_cl_enable_run = false;
//init slot to ensure paint segments after painted background
sl_repaint = sigc::bind<0>(sigc::mem_fun1(*this, &CComponentsHeader::forceItemsPaint), true);
//init slot before re paint of header, paint() is already done
sl_form_repaint = sigc::bind(sigc::mem_fun(*this, &CComponentsHeader::kill), col_body, -1, CC_FBDATA_TYPES, false);
OnBeforeRePaint.connect(sl_form_repaint);
addContextButton(buttons);
initCCItems();
@@ -524,11 +524,6 @@ void CComponentsHeader::initCaption()
*/
//height = max(height, cch_text_obj->getHeight());
}
if(!OnAfterPaintBg.empty())
OnAfterPaintBg.clear();
//init slot to handle repaint of text if background was repainted
OnAfterPaintBg.connect(sl_repaint);
}
void CComponentsHeader::initCCItems()

View File

@@ -27,10 +27,12 @@
#include "cc_types.h"
#include "cc_base.h"
#include "cc_draw.h"
#include "cc_signals.h"
#include <vector>
#include <string>
#include <driver/colorgradient.h>
class CComponentsItem : public CComponents
{
protected:

View File

@@ -36,6 +36,7 @@
#include <fstream>
#include <errno.h>
#include <system/debug.h>
using namespace std;
//sub class CComponentsText from CComponentsItem
@@ -274,6 +275,12 @@ bool CComponentsText::setTextFromFile(const string& path_to_textfile, const int
void CComponentsText::paintText(bool do_save_bg)
{
if (cc_parent){
if(!cc_parent->OnAfterPaintBg.empty())
cc_parent->OnAfterPaintBg.clear();
//init slot to handle repaint of text if background was repainted
cc_parent->OnAfterPaintBg.connect(sigc::bind(sigc::mem_fun(*this, &CComponentsText::forceTextPaint), true));
}
initCCText();
if (!is_painted)
paintInit(do_save_bg);

View File

@@ -196,7 +196,6 @@ class CComponentsText : public CCTextScreen, public CComponentsItem
///force paint of text even if text was changed or not
virtual void forceTextPaint(bool force_text_paint = true){ct_force_text_paint = force_text_paint;};
///gets the embedded CTextBox object, so it's possible to get access directly to its methods and properties
virtual CTextBox* getCTextBoxObject() { return ct_textbox; };

View File

@@ -88,6 +88,7 @@ class CYourClass : sigc::trackable //<- not forget, requierd by destructor!
#define __CC_SIGNALS_H__
#include <sigc++/signal.h>
#include <sigc++/bind.h>
#include <driver/rcinput.h>
class CComponentsSignals : public sigc::trackable
@@ -113,6 +114,8 @@ class CComponentsSignals : public sigc::trackable
///signal on before paint()
sigc::signal<void> OnBeforePaint;
///signal on before repaint, means: paint() is already done and item paint() is called again
sigc::signal<void> OnBeforeRePaint;
///signal on after paint()
sigc::signal<void> OnAfterPaint;