00001 #include "dEvian.h"
00002
00003 static void _devian_container_del(dEvian *devian);
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 int devian_container_change(dEvian *devian, int container)
00014 {
00015
00016 if (!devian->source)
00017 return 1;
00018
00019
00020 if (devian->container)
00021 _devian_container_del(devian);
00022
00023
00024 switch (container)
00025 {
00026 case CONTAINER_BOX:
00027 {
00028 if ( devian_container_box_add(devian) )
00029 return 1;
00030 break;
00031 }
00032
00033 case CONTAINER_BAR:
00034 {
00035 return 1;
00036 }
00037
00038 case CONTAINER_NO:
00039 {
00040
00041 return 0;
00042 }
00043
00044 default : return 1;
00045 }
00046
00047 return 0;
00048 }
00049
00050 void devian_container_resize_auto(dEvian *devian)
00051 {
00052 switch (devian->conf->container_type)
00053 {
00054 case CONTAINER_BOX:
00055 {
00056 devian_container_box_resize_auto(devian->container);
00057 break;
00058 }
00059 case CONTAINER_BAR:
00060 {
00061 break;
00062 }
00063 }
00064 }
00065
00066 int devian_container_devian_dying(dEvian *devian)
00067 {
00068 if (devian->conf->container_type == CONTAINER_BOX)
00069 {
00070 return devian_container_box_devian_dying(devian->container);
00071 }
00072 return 0;
00073 }
00074
00075 int devian_container_edje_part_get(dEvian *devian)
00076 {
00077 if (!devian->container)
00078 return -1;
00079
00080 switch (devian->conf->container_type)
00081 {
00082 case CONTAINER_BOX:
00083 return devian_container_box_edje_part_get(devian->container);
00084 case CONTAINER_BAR:
00085 break;
00086 }
00087
00088 return -1;
00089 }
00090
00091 int devian_container_edje_part_change(dEvian *devian)
00092 {
00093 switch (devian->conf->container_type)
00094 {
00095 case CONTAINER_BOX:
00096 return devian_container_box_edje_part_change(devian->container);
00097 case CONTAINER_BAR:
00098 break;
00099 }
00100
00101 return 0;
00102 }
00103
00104 void devian_container_edje_part_change_set(dEvian *devian, int action)
00105 {
00106 if (!devian)
00107 return;
00108 if (!devian->container)
00109 return;
00110
00111 switch (devian->conf->container_type)
00112 {
00113 case CONTAINER_BOX:
00114 devian_container_box_edje_part_change_set(devian->container, action);
00115 break;
00116 case CONTAINER_BAR:
00117 break;
00118 }
00119
00120 return;
00121 }
00122
00123 int devian_container_update_name_devian(dEvian *devian)
00124 {
00125 if (!devian->conf || !devian->container)
00126 return 0;
00127
00128 switch (devian->conf->container_type)
00129 {
00130 case CONTAINER_BOX:
00131 return devian_container_box_update_name_devian(devian->container);
00132 case CONTAINER_BAR:
00133 return 0;
00134 }
00135
00136 return 0;
00137 }
00138
00139 int devian_container_edje_load(Evas_Object *edje_obj, char *part)
00140 {
00141 int source_w, source_h;
00142
00143 if (!devian_devian_edje_load(edje_obj, part))
00144 return 1;
00145
00146
00147 evas_object_resize(edje_obj, 400, 400);
00148 edje_object_part_geometry_get(edje_obj, "source0",
00149 NULL, NULL, &source_w, &source_h);
00150 dEvianM->theme_box_border_source_w = 400 - source_w;
00151 dEvianM->theme_box_border_source_h = 400 - source_h;
00152 DCONTAINER(("Theme borders: x:%d y:%d",
00153 dEvianM->theme_box_border_source_w,
00154 dEvianM->theme_box_border_source_h));
00155 evas_object_resize(edje_obj, 0, 0);
00156
00157 return 0;
00158 }
00159
00160 int devian_container_theme_set(char *theme)
00161 {
00162 dEvian *devian;
00163 Config_dEvian *conf;
00164 char *buf;
00165 int i, max;
00166
00167
00168 if (!strcmp(dEvianM->conf->theme, theme))
00169 return 0;
00170
00171 DCONTAINER(("Switching to theme %s", theme));
00172
00173 buf = (char *)evas_stringshare_add(dEvianM->conf->theme);
00174 evas_stringshare_del(dEvianM->conf->theme);
00175 dEvianM->conf->theme = (char *)evas_stringshare_add(theme);
00176
00177 devian_menu_main_menu_refresh();
00178
00179 max = evas_list_count(dEvianM->devians);
00180 for (i=0; i<max; i++)
00181 {
00182 devian = evas_list_nth(dEvianM->devians, i);
00183 devian_config_devian_save(devian);
00184 conf = devian_config_devian_new(devian->conf);
00185 DCONTAINER(("Switch theme devian %d", i));
00186 devian_devian_del(devian, 0);
00187 if (!devian_devian_add(conf))
00188 {
00189 DCONTAINER(("Switch theme has failed !"));
00190 evas_stringshare_del(dEvianM->conf->theme);
00191 dEvianM->conf->theme = buf;
00192 devian_devian_add(conf);
00193 return 0;
00194 }
00195 }
00196
00197 evas_stringshare_del(buf);
00198 return 1;
00199 }
00200
00201
00202
00203 static void _devian_container_del(dEvian *devian)
00204 {
00205 switch (devian->conf->container_type)
00206 {
00207 case CONTAINER_NO: return;
00208 case CONTAINER_BOX: devian_container_box_del(devian->container);
00209 case CONTAINER_BAR: return;
00210
00211 default: return;
00212 }
00213 }