160 lines
4.5 KiB
C
160 lines
4.5 KiB
C
//
|
|
// Created by raffaele on 01/08/19.
|
|
//
|
|
#include "convertible_logging.h"
|
|
#include "e.h"
|
|
#include "e_mod_config.h"
|
|
|
|
static Convertible_Config *_config = NULL;
|
|
E_Config_DD *config_edd = NULL;
|
|
EINTERN Convertible_Config *convertible_config;
|
|
|
|
/**
|
|
* Create the config structure
|
|
* */
|
|
static void
|
|
_econvertible_config_dd_new(void)
|
|
{
|
|
// c_zone = E_CONFIG_DD_NEW("Econvertible_Zone_Config", Convertible_Zone_Config);
|
|
// E_CONFIG_VAL(c_zone, Convertible_Zone_Config, name, STR);
|
|
// E_CONFIG_VAL(c_zone, Convertible_Zone_Config, follow_rotation, INT);
|
|
|
|
// TODO Not sure what his line does. Apparently, it is needed to specify the type of the configuration data structure
|
|
config_edd = E_CONFIG_DD_NEW("Convertible_Config", Convertible_Config);
|
|
|
|
E_CONFIG_VAL(config_edd, Convertible_Config, disable_keyboard_on_rotation, INT);
|
|
// E_CONFIG_LIST(config_edd, Convertible_Config, rotatable_screen_configuration, c_zone);
|
|
}
|
|
|
|
/**
|
|
* Update the *_config data structure based on the settings coming from the dialog panel
|
|
* @param config The config coming from the Dialog Panel (E_Config_Dialog_data)
|
|
*/
|
|
static void
|
|
_config_set(Convertible_Config *config)
|
|
{
|
|
DBG("config_set disable_keyboard_on_rotation %d", config->disable_keyboard_on_rotation);
|
|
_config->disable_keyboard_on_rotation = config->disable_keyboard_on_rotation;
|
|
e_config_domain_save("module.convertible", config_edd, config);
|
|
}
|
|
|
|
/**
|
|
* Initialise the configuration object
|
|
*
|
|
* @param cfg
|
|
* @return
|
|
*/
|
|
static void*
|
|
_create_data(E_Config_Dialog *cfg EINA_UNUSED)
|
|
{
|
|
E_Config_Dialog_Data *dialog_data;
|
|
|
|
dialog_data = E_NEW(E_Config_Dialog_Data, 1);
|
|
dialog_data->config = malloc(sizeof(Convertible_Config));
|
|
dialog_data->config->disable_keyboard_on_rotation = _config->disable_keyboard_on_rotation;
|
|
// dialog_data->config->rotatable_screen_configuration = _config->rotatable_screen_configuration;
|
|
|
|
DBG("disable_keyboard_on_rotation %d", dialog_data->config->disable_keyboard_on_rotation);
|
|
return dialog_data;
|
|
}
|
|
|
|
/**
|
|
* Release memory for the data structure holding the configuration
|
|
*
|
|
* @param c
|
|
* @param dialog_data
|
|
*/
|
|
static void
|
|
_free_data(E_Config_Dialog *c EINA_UNUSED, E_Config_Dialog_Data *dialog_data)
|
|
{
|
|
free(dialog_data->config);
|
|
free(dialog_data);
|
|
}
|
|
|
|
/**
|
|
* This function should store the modified settings into the data structure referred by the pointer _config
|
|
* @param cfd
|
|
* @param cfdata
|
|
* @return
|
|
*/
|
|
static int
|
|
_basic_apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
|
|
{
|
|
DBG("_basic_apply_data");
|
|
_config_set(cfdata->config);
|
|
return 1;
|
|
}
|
|
|
|
/**
|
|
* Create the panel by adding all the items like labels, checkbox and lists
|
|
*
|
|
* @param cfd
|
|
* @param evas
|
|
* @param cfdata
|
|
* @return
|
|
*/
|
|
static Evas_Object *
|
|
_basic_create_widgets(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas,
|
|
E_Config_Dialog_Data *cfdata)
|
|
{
|
|
Evas_Object *o, *evas_option_input_disable; //, *evas_label_section_screens; // *list_item_screen,
|
|
// Evas_Object *screen_list = NULL;
|
|
|
|
o = e_widget_list_add(evas, 0, 0);
|
|
|
|
evas_option_input_disable = e_widget_check_add(evas, "Disable input when rotated", &(cfdata->config->disable_keyboard_on_rotation));
|
|
e_widget_list_object_append(o, evas_option_input_disable, 0, 0, 0);
|
|
|
|
DBG("After basic_create_widget");
|
|
return o;
|
|
}
|
|
|
|
/**
|
|
* This function initialise the config dialog for the module
|
|
* @param comp
|
|
* @param p
|
|
* @return
|
|
*/
|
|
E_Config_Dialog*
|
|
e_int_config_convertible_module(Evas_Object *comp, const char *p EINA_UNUSED)
|
|
{
|
|
E_Config_Dialog *cfd;
|
|
E_Config_Dialog_View *v;
|
|
|
|
if (e_config_dialog_find("E", "windows/convertible"))
|
|
return NULL;
|
|
|
|
v = E_NEW(E_Config_Dialog_View, 1);
|
|
v->create_cfdata = _create_data;
|
|
v->free_cfdata = _free_data;
|
|
v->basic.apply_cfdata = _basic_apply_data;
|
|
v->basic.create_widgets = _basic_create_widgets;
|
|
|
|
cfd = e_config_dialog_new(comp,
|
|
"Convertible Configuration",
|
|
"E", "windows/convertible",
|
|
NULL,
|
|
0, v, NULL);
|
|
return cfd;
|
|
}
|
|
|
|
void
|
|
econvertible_config_init(void)
|
|
{
|
|
_econvertible_config_dd_new();
|
|
_config = e_config_domain_load("module.econvertible", config_edd);
|
|
if (!_config)
|
|
{
|
|
_config = E_NEW(Convertible_Config, 1);
|
|
_config->disable_keyboard_on_rotation = 1;
|
|
// _config->rotatable_screen_configuration = NULL;
|
|
}
|
|
|
|
DBG("Config loaded");
|
|
}
|
|
|
|
void econvertible_config_shutdown(void)
|
|
{
|
|
E_CONFIG_DD_FREE(config_edd);
|
|
E_FREE(convertible_config);
|
|
} |