mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-09-01 18:01:06 +02:00
cc_timer/cc_frm_clock: allow use of milisecond intervals
Should be easier and more flexible to handle without nano parameter,
some reworkes in other classes and thread handlings are required.
Origin commit data
------------------
Branch: ni/coolstream
Commit: 5afe92e526
Author: Thilo Graf <dbt@novatux.de>
Date: 2020-01-05 (Sun, 05 Jan 2020)
------------------
This commit was generated by Migit
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
Copyright (C) 2001 by Steffen Hehn 'McClean'
|
||||
|
||||
Classes for generic GUI-related components.
|
||||
Copyright (C) 2012-2015, Thilo Graf 'dbt'
|
||||
Copyright (C) 2012-2019, Thilo Graf 'dbt'
|
||||
|
||||
License: GPL
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "cc_frm.h"
|
||||
#include "cc_text_screen.h"
|
||||
#include "cc_timer.h"
|
||||
|
||||
//! Sub class of CComponents. Show clock with digits on screen.
|
||||
/*!
|
||||
Usable as simple fixed display or as ticking clock.
|
||||
@@ -49,22 +50,17 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen
|
||||
#if 0
|
||||
bool may_blit;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
CComponentsTimer *cl_timer;
|
||||
|
||||
///slot for timer event, reserved for ShowTime()
|
||||
sigc::slot0<void> cl_sl_show;
|
||||
std::mutex cl_mutex;
|
||||
|
||||
///refresh interval in seconds
|
||||
int cl_interval;
|
||||
int64_t cl_interval;
|
||||
|
||||
///raw time chars
|
||||
char cl_timestr[32];
|
||||
|
||||
///handle paint clock within thread and is not similar to cc_allow_paint
|
||||
bool cl_blocked;
|
||||
|
||||
///object: font render object
|
||||
Font *cl_font;
|
||||
int cl_font_style;
|
||||
@@ -82,10 +78,12 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen
|
||||
///secondary time format for blink
|
||||
std::string cl_blink_str;
|
||||
|
||||
int cl_width;
|
||||
|
||||
///initialize clock contents
|
||||
void initCCLockItems();
|
||||
///initialize timestring, called in initCCLockItems()
|
||||
virtual void initTimeString();
|
||||
void initTimeString();
|
||||
|
||||
///start ticking clock, returns true on success, if false causes log output
|
||||
bool startClock();
|
||||
@@ -103,7 +101,7 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen
|
||||
const char* format_str = "%H:%M",
|
||||
const char* secformat_str = NULL,
|
||||
bool activ=false,
|
||||
const int& interval_seconds = 1,
|
||||
const int64_t& interval_seconds = 1,
|
||||
CComponentsForm *parent = NULL,
|
||||
int shadow_mode = CC_SHADOW_OFF,
|
||||
fb_pixel_t color_frame = COL_FRAME_PLUS_0,
|
||||
@@ -128,6 +126,9 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen
|
||||
///return pointer of font object
|
||||
Font* getClockFont();
|
||||
|
||||
///return pointer of timer object
|
||||
CComponentsTimer* getTimer(){return cl_timer;}
|
||||
|
||||
///set text color
|
||||
void setTextColor(fb_pixel_t color_text){ cl_col_text = color_text;}
|
||||
|
||||
@@ -135,6 +136,8 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen
|
||||
void setHeight(const int& h);
|
||||
///set width of clock on screen
|
||||
void setWidth(const int& w);
|
||||
|
||||
int getWidth() const;
|
||||
|
||||
///use string expession: "%H:%M" = 12:22, "%H:%M:%S" = 12:22:12
|
||||
///set current time format string, 1st parameter set the default format, 2nd parameter sets an alternatively format for use as blink effect
|
||||
@@ -145,18 +148,18 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen
|
||||
///start and paint ticking clock
|
||||
bool Start();
|
||||
///same like Start() but for usage as simple call without return value
|
||||
void unblock(){Start();}
|
||||
void unblock(){if (cl_timer) cl_timer->OnTimer.unblock();}
|
||||
///stop ticking clock, but don't hide, use kill() or hide() to remove from screen
|
||||
bool Stop();
|
||||
///same like Stop() but for usage as simple call without return value
|
||||
void block(){Stop();}
|
||||
void block(){if (cl_timer) cl_timer->OnTimer.block();}
|
||||
///return true on blocked status, blocked means clock can be initalized but would be not paint, to unblock use unblock()
|
||||
bool isBlocked(void) {return cl_blocked;}
|
||||
bool isBlocked(void) const {return cl_timer ? cl_timer->OnTimer.blocked() : true;}
|
||||
|
||||
///returns true, if clock is running
|
||||
bool isRun() const {return cl_timer ? cl_timer->isRun() : false;}
|
||||
///set refresh interval in seconds, default value=1 (=1 sec)
|
||||
void setClockInterval(const int& seconds){cl_interval = seconds;}
|
||||
void setClockInterval(const int64_t& seconds){cl_interval = seconds*1000;}
|
||||
|
||||
///show clock on screen
|
||||
void paint(const bool &do_save_bg = CC_SAVE_SCREEN_YES);
|
||||
@@ -187,6 +190,9 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen
|
||||
|
||||
///set color gradient on/off, returns true if gradient mode was changed
|
||||
bool enableColBodyGradient(const int& enable_mode, const fb_pixel_t& sec_color = 255 /*=COL_BACKGROUND*/);
|
||||
|
||||
///slot for timer event, reserved for ShowTime()
|
||||
sigc::slot0<void> cl_sl_show;
|
||||
#if 0
|
||||
///enable/disable automatic blitting
|
||||
void setBlit(bool _may_blit = true) { may_blit = _may_blit; }
|
||||
|
Reference in New Issue
Block a user