- test for progressbar (use EcoreTimer)
- more EdjeEdit API - implemented EcoreTimer SVN revision: 43756
This commit is contained in:
parent
9eb4a32cf7
commit
8cf02d7590
|
@ -11,21 +11,41 @@ namespace efl {
|
|||
|
||||
class EcoreTimer
|
||||
{
|
||||
typedef sigc::signal<void,EcoreTimer*> Signal;
|
||||
typedef sigc::slot1<void,EcoreTimer*> Slot;
|
||||
typedef sigc::signal <void,EcoreTimer*> Signal;
|
||||
typedef sigc::signal <void,EcoreTimer*> Loop;
|
||||
typedef sigc::slot1 <void,EcoreTimer*> Slot;
|
||||
|
||||
public:
|
||||
EcoreTimer( double seconds, bool singleshot = false );
|
||||
virtual ~EcoreTimer();
|
||||
|
||||
virtual void tick();
|
||||
void setInterval( double );
|
||||
//virtual void tick();
|
||||
|
||||
static EcoreTimer* singleShot( double seconds, const EcoreTimer::Slot& );
|
||||
static EcoreTimer* singleShot( double seconds, const EcoreTimer::Slot& ); // TODO: CountedPtr
|
||||
|
||||
void del ();
|
||||
|
||||
void setInterval (double interval);
|
||||
|
||||
double getInterval ();
|
||||
|
||||
void freeze ();
|
||||
|
||||
void thaw ();
|
||||
|
||||
void delay (double add);
|
||||
|
||||
double getPending ();
|
||||
|
||||
static double getPrecision ();
|
||||
|
||||
static void setPrecision (double precision);
|
||||
|
||||
|
||||
public: /* signals */
|
||||
EcoreTimer::Signal timeout;
|
||||
|
||||
EcoreTimer::Loop loop;
|
||||
|
||||
private:
|
||||
Ecore_Timer* _et;
|
||||
bool _ss;
|
||||
|
@ -35,4 +55,4 @@ private:
|
|||
|
||||
} // end namespace efl
|
||||
|
||||
#endif // ECORETIMER_H
|
||||
#endif // ECORETIMER_H
|
||||
|
|
|
@ -14,6 +14,9 @@ EcoreTimer::EcoreTimer( double seconds, bool singleshot )
|
|||
{
|
||||
Dout( dc::notice, "EcoreTimer::EcoreTimer() - current frequency is " << seconds );
|
||||
_et = ecore_timer_add( seconds, &EcoreTimer::__dispatcher, this );
|
||||
|
||||
// TODO: find out why to use this function and the difference between ecore_time_get() and ecore_loop_time_get()
|
||||
//ecore_timer_loop_add (double in, int (*func) (void *data), const void *data);
|
||||
}
|
||||
|
||||
EcoreTimer::~EcoreTimer()
|
||||
|
@ -28,22 +31,62 @@ EcoreTimer* EcoreTimer::singleShot( double seconds, const EcoreTimer::Slot& slot
|
|||
return ecoretimer;
|
||||
}
|
||||
|
||||
void EcoreTimer::setInterval( double seconds )
|
||||
void EcoreTimer::del ()
|
||||
{
|
||||
ecore_timer_interval_set( _et, seconds );
|
||||
assert (ecore_timer_del (_et));
|
||||
}
|
||||
|
||||
void EcoreTimer::tick()
|
||||
void EcoreTimer::setInterval (double seconds)
|
||||
{
|
||||
ecore_timer_interval_set (_et, seconds);
|
||||
}
|
||||
|
||||
double EcoreTimer::getInterval ()
|
||||
{
|
||||
return ecore_timer_interval_get (_et);
|
||||
}
|
||||
|
||||
void EcoreTimer::freeze ()
|
||||
{
|
||||
ecore_timer_freeze (_et);
|
||||
}
|
||||
|
||||
void EcoreTimer::thaw ()
|
||||
{
|
||||
ecore_timer_thaw (_et);
|
||||
}
|
||||
|
||||
void EcoreTimer::delay (double add)
|
||||
{
|
||||
ecore_timer_delay (_et, add);
|
||||
}
|
||||
|
||||
double EcoreTimer::getPending ()
|
||||
{
|
||||
return ecore_timer_pending_get (_et);
|
||||
}
|
||||
|
||||
double EcoreTimer::getPrecision ()
|
||||
{
|
||||
return ecore_timer_precision_get ();
|
||||
}
|
||||
|
||||
void EcoreTimer::setPrecision (double precision)
|
||||
{
|
||||
ecore_timer_precision_set (precision);
|
||||
}
|
||||
|
||||
/*void EcoreTimer::tick()
|
||||
{
|
||||
Dout( dc::notice, "EcoreTimer[ " << this << " ]::tick()" );
|
||||
}
|
||||
}*/
|
||||
|
||||
int EcoreTimer::__dispatcher( void* data )
|
||||
{
|
||||
EcoreTimer* object = reinterpret_cast<EcoreTimer*>( data );
|
||||
assert( object );
|
||||
object->timeout.emit( object );
|
||||
object->tick();
|
||||
//object->tick();
|
||||
bool singleshot = object->_ss;
|
||||
if ( singleshot ) delete object;
|
||||
return singleshot? 0:1;
|
||||
|
|
|
@ -19,6 +19,7 @@ namespace efl {
|
|||
|
||||
/**
|
||||
* @todo port to EFLxx!
|
||||
* @todo return error states with Exceptions?
|
||||
* @file
|
||||
* @brief Functions to deal with edje internal object. Don't use in standard
|
||||
* situations. The use of any of the edje_edit_* functions can break your
|
||||
|
|
|
@ -12,12 +12,12 @@ typedef struct Progressbar
|
|||
ElmProgressbar *pb6;
|
||||
ElmProgressbar *pb7;
|
||||
bool run;
|
||||
Ecore_Timer *timer; // TODO: port to EcoreTimer
|
||||
EcoreTimer *timer;
|
||||
} Progressbar;
|
||||
|
||||
static Progressbar _test_progressbar;
|
||||
|
||||
static int _my_progressbar_value_set (void *data)
|
||||
static void _my_progressbar_value_set (EcoreTimer *timer)
|
||||
{
|
||||
double progress;
|
||||
|
||||
|
@ -32,20 +32,16 @@ static int _my_progressbar_value_set (void *data)
|
|||
progress = 0.0;
|
||||
}
|
||||
|
||||
|
||||
_test_progressbar.pb1->setValue (progress);
|
||||
_test_progressbar.pb4->setValue (progress);
|
||||
_test_progressbar.pb3->setValue (progress);
|
||||
_test_progressbar.pb6->setValue (progress);
|
||||
|
||||
if (progress < 1.0)
|
||||
if (progress > 1.0)
|
||||
{
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
_test_progressbar.run = false;
|
||||
timer->del ();
|
||||
}
|
||||
|
||||
_test_progressbar.run = false;
|
||||
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
static void my_progressbar_test_start (Evas_Object *obj, void *event_info)
|
||||
|
@ -56,7 +52,8 @@ static void my_progressbar_test_start (Evas_Object *obj, void *event_info)
|
|||
|
||||
if (!_test_progressbar.run)
|
||||
{
|
||||
_test_progressbar.timer = ecore_timer_add (0.1, _my_progressbar_value_set, NULL);
|
||||
_test_progressbar.timer = new EcoreTimer (0.1);
|
||||
_test_progressbar.timer->timeout.connect (sigc::ptr_fun (&_my_progressbar_value_set));
|
||||
_test_progressbar.run = true;
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +66,7 @@ static void my_progressbar_test_stop (Evas_Object *obj, void *event_info)
|
|||
|
||||
if (_test_progressbar.run)
|
||||
{
|
||||
ecore_timer_del(_test_progressbar.timer);
|
||||
_test_progressbar.timer->del ();
|
||||
_test_progressbar.run = false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue