@ -16,8 +16,9 @@ static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas,
static int _advanced_apply_data ( E_Config_Dialog * cfd , E_Config_Dialog_Data * cfdata ) ;
static Evas_Object * _advanced_create_widgets ( E_Config_Dialog * cfd , Evas * evas ,
E_Config_Dialog_Data * cfdata ) ;
static void _cb_disable_check ( void * data , Evas_Object * obj ) ;
static void _cb_disable_check_list ( void * data , Evas_Object * obj ) ;
static void _cb_disable_basic ( void * data , Evas_Object * obj ) ;
static void _cb_disable_adv ( void * data , Evas_Object * obj ) ;
static void _cb_ask_presentation_changed ( void * data , Evas_Object * obj ) ;
struct _E_Config_Dialog_Data
{
@ -28,8 +29,21 @@ struct _E_Config_Dialog_Data
double interval ;
int blanking ;
int exposures ;
int ask_presentation ;
double ask_presentation_timeout ;
Eina_List * disable_list ;
struct {
struct {
Evas_Object * label ;
Evas_Object * slider ;
} basic ;
struct {
Evas_Object * ask_presentation_label ;
Evas_Object * ask_presentation_slider ;
} adv ;
} gui ;
} ;
EAPI E_Config_Dialog *
@ -64,6 +78,8 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata - > interval = e_config - > screensaver_interval ;
cfdata - > blanking = e_config - > screensaver_blanking ;
cfdata - > exposures = e_config - > screensaver_expose ;
cfdata - > ask_presentation = e_config - > screensaver_ask_presentation ;
cfdata - > ask_presentation_timeout = e_config - > screensaver_ask_presentation_timeout ;
}
static void *
@ -92,6 +108,8 @@ _apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
e_config - > screensaver_interval = cfdata - > interval ;
e_config - > screensaver_blanking = cfdata - > blanking ;
e_config - > screensaver_expose = cfdata - > exposures ;
e_config - > screensaver_ask_presentation = cfdata - > ask_presentation ;
e_config - > screensaver_ask_presentation_timeout = cfdata - > ask_presentation_timeout ;
/* Apply settings */
e_screensaver_init ( ) ;
@ -120,14 +138,15 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
of = e_widget_framelist_add ( evas , _ ( " Screensaver Timer(s) " ) , 0 ) ;
ob = e_widget_label_add ( evas , _ ( " Time until X screensaver starts " ) ) ;
cfdata - > gui . basic . label = ob ;
e_widget_framelist_object_append ( of , ob ) ;
ob = e_widget_slider_add ( evas , 1 , 0 , _ ( " %1.0f minutes " ) , 1.0 , 90.0 , 1.0 , 0 ,
& ( cfdata - > timeout ) , NULL , 100 ) ;
e_widget_disabled_set ( ob , ! cfdata - > enable_screensaver ) ; // set state from saved config
cfdata - > gui . basic . slider = ob ;
e_widget_framelist_object_append ( of , ob ) ;
// handler for enable/disable widget
e_widget_on_change_hook_set ( xscreensaver_check , _cb_disable_check , ob ) ;
e_widget_on_change_hook_set ( xscreensaver_check , _cb_disable_basic , cfdata ) ;
_cb_disable_basic ( cfdata , NULL ) ;
e_widget_list_object_append ( o , of , 1 , 1 , 0.5 ) ;
return o ;
@ -157,34 +176,52 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
of = e_widget_framelist_add ( evas , _ ( " Screensaver Timer(s) " ) , 0 ) ;
ob = e_widget_label_add ( evas , _ ( " Time until X screensaver starts " ) ) ;
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
ob = e_widget_slider_add ( evas , 1 , 0 , _ ( " %1.0f minutes " ) ,
1.0 , 90.0 , 1.0 , 0 , & ( cfdata - > timeout ) , NULL , 200 ) ;
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_disabled_set ( ob , ! cfdata - > enable_screensaver ) ; // set state from saved config
e_widget_framelist_object_append ( of , ob ) ;
ob = e_widget_label_add ( evas , _ ( " Time until X screensaver alternates " ) ) ;
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
ob = e_widget_slider_add ( evas , 1 , 0 , _ ( " %1.0f seconds " ) ,
1.0 , 300.0 , 1.0 , 0 , & ( cfdata - > interval ) , NULL , 200 ) ;
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_disabled_set ( ob , ! cfdata - > enable_screensaver ) ; // set state from saved config
e_widget_framelist_object_append ( of , ob ) ;
e_widget_list_object_append ( o , of , 1 , 1 , 0.5 ) ;
of = e_widget_framelist_add ( evas , _ ( " Enter Presentation Mode " ) , 0 ) ;
ob = e_widget_check_add ( evas , _ ( " Suggest entering presentation mode " ) , & ( cfdata - > ask_presentation ) ) ;
e_widget_on_change_hook_set ( ob , _cb_ask_presentation_changed , cfdata ) ;
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
ob = e_widget_label_add ( evas , _ ( " If deactivated before " ) ) ;
cfdata - > gui . adv . ask_presentation_label = ob ;
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
ob = e_widget_slider_add ( evas , 1 , 0 , _ ( " %1.0f seconds " ) ,
1.0 , 300.0 , 10.0 , 0 ,
& ( cfdata - > ask_presentation_timeout ) , NULL , 200 ) ;
cfdata - > gui . adv . ask_presentation_slider = ob ;
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
e_widget_list_object_append ( o , of , 1 , 1 , 0.5 ) ;
of = e_widget_framelist_add ( evas , _ ( " Blanking " ) , 0 ) ;
rg = e_widget_radio_group_new ( & ( cfdata - > blanking ) ) ;
ob = e_widget_radio_add ( evas , _ ( " Default " ) , E_CONFIG_BLANKING_DEFAULT , rg ) ;
e_widget_disabled_set ( ob , ! cfdata - > enable_screensaver ) ; // set state from saved config
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
ob = e_widget_radio_add ( evas , _ ( " Preferred " ) , E_CONFIG_BLANKING_PREFERRED , rg ) ;
e_widget_disabled_set ( ob , ! cfdata - > enable_screensaver ) ; // set state from saved config
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
ob = e_widget_radio_add ( evas , _ ( " Not Preferred " ) , E_CONFIG_BLANKING_NOT_PREFERRED , rg ) ;
e_widget_disabled_set ( ob , ! cfdata - > enable_screensaver ) ; // set state from saved config
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
e_widget_list_object_append ( o , of , 1 , 1 , 0.5 ) ;
@ -192,47 +229,54 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
of = e_widget_framelist_add ( evas , _ ( " Exposure Events " ) , 0 ) ;
rg = e_widget_radio_group_new ( & ( cfdata - > exposures ) ) ;
ob = e_widget_radio_add ( evas , _ ( " Default " ) , E_CONFIG_EXPOSURES_DEFAULT , rg ) ;
e_widget_disabled_set ( ob , ! cfdata - > enable_screensaver ) ; // set state from saved config
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
ob = e_widget_radio_add ( evas , _ ( " Allow " ) , E_CONFIG_EXPOSURES_ALLOWED , rg ) ;
e_widget_disabled_set ( ob , ! cfdata - > enable_screensaver ) ; // set state from saved config
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
ob = e_widget_radio_add ( evas , _ ( " Don't Allow " ) , E_CONFIG_EXPOSURES_NOT_ALLOWED , rg ) ;
e_widget_disabled_set ( ob , ! cfdata - > enable_screensaver ) ; // set state from saved config
cfdata - > disable_list = eina_list_append ( cfdata - > disable_list , ob ) ;
e_widget_framelist_object_append ( of , ob ) ;
e_widget_list_object_append ( o , of , 1 , 1 , 0.5 ) ;
// handler for enable/disable widget array
e_widget_on_change_hook_set ( xscreensaver_check , _cb_disable_check_list , cfdata - > disable_list ) ;
e_widget_on_change_hook_set ( xscreensaver_check , _cb_disable_adv , cfdata ) ;
_cb_disable_adv ( cfdata , NULL ) ;
return o ;
}
/*!
* @ param data A Evas_Object to chain together with the checkbox
* @ param obj A Evas_Object checkbox created with e_widget_check_add ( )
*/
static void
_cb_disable_check ( void * data , Evas_Object * obj )
_cb_disable_basic ( void * data , Evas_Object * obj )
{
e_widget_disabled_set ( ( Evas_Object * ) data ,
! e_widget_check_checked_get ( obj ) ) ;
E_Config_Dialog_Data * cfdata = data ;
Eina_Bool disable = ! cfdata - > enable_screensaver ;
e_widget_disabled_set ( cfdata - > gui . basic . label , disable ) ;
e_widget_disabled_set ( cfdata - > gui . basic . slider , disable ) ;
}
/*!
* @ param data A Eina_List of Evas_Object to chain widgets together with the checkbox
* @ param obj A Evas_Object checkbox created with e_widget_check_add ( )
*/
static void
_cb_disable_check_list ( void * data , Evas_Object * obj )
_cb_disable_adv ( void * data , Evas_Object * obj __UNUSED__ )
{
Eina_List * list = ( Eina_List * ) data ;
Eina_List * l ;
E_Config_Dialog_Data * cfdata = data ;
const Eina_List * l ;
Evas_Object * o ;
EINA_LIST_FOREACH ( list , l , o )
e_widget_disabled_set ( o , ! e_widget_check_checked_get ( obj ) ) ;
EINA_LIST_FOREACH ( cfdata - > disable_list , l , o )
e_widget_disabled_set ( o , ! cfdata - > enable_screensaver ) ;
_cb_ask_presentation_changed ( cfdata , NULL ) ;
}
static void
_cb_ask_presentation_changed ( void * data , Evas_Object * obj __UNUSED__ )
{
E_Config_Dialog_Data * cfdata = data ;
Eina_Bool disable ;
disable = ( ( ! cfdata - > enable_screensaver ) | | ( ! cfdata - > ask_presentation ) ) ;
e_widget_disabled_set ( cfdata - > gui . adv . ask_presentation_label , disable ) ;
e_widget_disabled_set ( cfdata - > gui . adv . ask_presentation_slider , disable ) ;
}