summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHermet Park <hermet@hermet.pe.kr>2016-05-26 08:38:21 +0900
committerHermet Park <hermet@hermet.pe.kr>2016-05-26 08:38:21 +0900
commit1b2e5b5a5a090229fa9409aef2ed3aa7135ac626 (patch)
tree95959c565625c49e7d1665ef90ac6ab6623323a9
parent368946ac67b3e5ccd5a0ebf3234cebd920c9c06d (diff)
updated backups
-rw-r--r--edc_navigator.patch747
-rwxr-xr-xoutput.zipbin0 -> 198129926 bytes
2 files changed, 0 insertions, 747 deletions
diff --git a/edc_navigator.patch b/edc_navigator.patch
deleted file mode 100644
index 87db7bc..0000000
--- a/edc_navigator.patch
+++ /dev/null
@@ -1,747 +0,0 @@
1diff --git a/src/bin/edc_navigator.c b/src/bin/edc_navigator.c
2index 3ba946f..0cce4b9 100644
3--- a/src/bin/edc_navigator.c
4+++ b/src/bin/edc_navigator.c
5@@ -3,20 +3,20 @@
6 #define EDJE_EDIT_IS_UNSTABLE_AND_I_KNOW_ABOUT_IT
7 #include <Edje_Edit.h>
8
9+typedef struct group_it_s group_it;
10+typedef struct part_it_s part_it;
11+typedef struct state_it_s state_it;
12+typedef struct programs_it_s programs_it;
13+typedef struct program_it_s program_it;
14+
15 typedef struct edc_navigator_s
16 {
17 Evas_Object *genlist;
18- Elm_Object_Item *programs_it;
19+ Evas_Object *check;
20
21- Eina_List *group_items; //group object item
22- Eina_List *part_items; //part object item
23- Eina_List *state_items; //state object item
24- Eina_List *program_items; //program object item
25+ Eina_List *groups;
26
27- Eina_List *group_list; //group name list
28- Eina_List *part_list; //part name list
29- Eina_List *state_list; //state name list
30- Eina_List *program_list; //program name list
31+ group_it *cur_git;
32
33 Elm_Genlist_Item_Class *group_itc;
34 Elm_Genlist_Item_Class *part_itc;
35@@ -24,15 +24,51 @@ typedef struct edc_navigator_s
36 Elm_Genlist_Item_Class *programs_itc;
37 Elm_Genlist_Item_Class *program_itc;
38
39- Eina_Bool group_select_skip : 1;
40+ Eina_Bool auto_contract : 1;
41
42 } navi_data;
43
44-typedef struct part_item_data_s
45+struct group_it_s
46+{
47+ char *name;
48+ Elm_Object_Item *it;
49+ Eina_List *parts;
50+ navi_data *nd;
51+
52+ struct
53+ {
54+ Elm_Object_Item *it;
55+ Eina_List *programs;
56+ Eina_Bool expanded : 1;
57+ } programs;
58+
59+ Eina_Bool expanded : 1;
60+};
61+
62+struct part_it_s
63 {
64- const char *text;
65+ char *name;
66+ Elm_Object_Item *it;
67 Edje_Part_Type type;
68-} part_item_data;
69+ Eina_List *states;
70+ group_it *git;
71+
72+ Eina_Bool expanded : 1;
73+};
74+
75+struct state_it_s
76+{
77+ char *name;
78+ Elm_Object_Item *it;
79+ part_it *pit;
80+};
81+
82+struct program_it_s
83+{
84+ char *name;
85+ Elm_Object_Item *it;
86+ group_it *git;
87+};
88
89 static navi_data *g_nd = NULL;
90
91@@ -44,23 +80,73 @@ static const char *TEXTBLOCK_TYPE_STR = "textblock";
92 static const char *SPACER_TYPE_STR = "spacer";
93 static const char *PART_TYPE_STR = "part";
94
95-static void
96-gl_part_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info);
97-static void
98-sub_programs_remove(navi_data *nd);
99-static void
100-states_remove(navi_data *nd);
101
102 /*****************************************************************************/
103 /* Internal method implementation */
104 /*****************************************************************************/
105+static void
106+check_changed_cb(void *data, Evas_Object *obj, void *event_info)
107+{
108+ navi_data *nd = data;
109+ nd->auto_contract = elm_check_state_get(obj);
110+
111+ if (!nd->auto_contract) return;
112+
113+ //TODO: Close all groups instantly.
114+}
115+
116+static void
117+navigator_parts_clear(group_it *git)
118+{
119+ part_it *pit;
120+
121+ //Clear parts
122+ EINA_LIST_FREE(git->parts, pit)
123+ {
124+ free(pit->name);
125+ free(pit);
126+ }
127+ git->parts = NULL;
128+}
129+
130+static void
131+navigator_programs_clear(group_it *git)
132+{
133+ program_it *pit;
134+
135+ //Clear programs
136+ EINA_LIST_FREE(git->programs.programs, pit)
137+ {
138+ free(pit->name);
139+ free(pit);
140+ }
141+ git->programs.programs = NULL;
142+}
143
144-const char *
145-part_type_get(Elm_Object_Item *it)
146+static void
147+navigator_groups_clear(navi_data *nd)
148 {
149- part_item_data *item_data = elm_object_item_data_get(it);
150+ elm_genlist_clear(nd->genlist);
151+
152+ group_it *git;
153+
154+ //Clear groups
155+ EINA_LIST_FREE(nd->groups, git)
156+ {
157+ navigator_parts_clear(git);
158+ navigator_programs_clear(git);
159+
160+ free(git->name);
161+ free(git);
162+ }
163+ nd->groups = NULL;
164+ nd->cur_git = NULL;
165+}
166
167- switch (item_data->type)
168+static const char *
169+part_type_get(part_it *pit)
170+{
171+ switch (pit->type)
172 {
173 case EDJE_PART_TYPE_RECTANGLE:
174 return RECT_TYPE_STR;
175@@ -444,7 +530,7 @@ static void
176 gl_state_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
177 {
178 navi_data *nd = data;
179-
180+#if 0
181 Elm_Object_Item *it = event_info;
182
183 sub_programs_remove(nd);
184@@ -456,11 +542,13 @@ gl_state_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
185 find_state_proc(stats_group_name_get(),
186 elm_object_item_text_get(parent_it), part_type,
187 elm_object_item_text_get(it));
188+#endif
189 }
190
191 static void
192 states_remove(navi_data *nd)
193 {
194+#if 0
195 Elm_Object_Item *it;
196 EINA_LIST_FREE(nd->state_items, it) elm_object_item_del(it);
197 if (nd->state_list)
198@@ -468,22 +556,16 @@ states_remove(navi_data *nd)
199 edje_edit_string_list_free(nd->state_list);
200 nd->state_list = NULL;
201 }
202+#endif
203 }
204
205 static void
206-states_reload(navi_data *nd, Elm_Object_Item *part_it)
207+states_reload(navi_data *nd, part_it *pit)
208 {
209- const char *part = elm_object_item_text_get(part_it);
210- if (!part) return;
211-
212+#if 0
213 Eina_List *l;
214 Elm_Object_Item *it;
215
216- //Remove Previous Parts
217-
218- //FIXME: Maybe we could optimize if parts list hasn't been changed.
219- states_remove(nd);
220-
221 //Append States
222 Evas_Object *enventor = base_enventor_get();
223 nd->state_list = enventor_object_part_states_list_get(enventor, part);
224@@ -500,6 +582,7 @@ states_reload(navi_data *nd, Elm_Object_Item *part_it)
225 nd); /* select cb data */
226 nd->state_items = eina_list_append(nd->state_items, it);
227 }
228+#endif
229 }
230
231 static char *
232@@ -551,6 +634,7 @@ gl_program_selected_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
233 static void
234 sub_programs_reload(navi_data *nd, Elm_Object_Item *programs_it)
235 {
236+#if 0
237 const Eina_List *programs = elm_genlist_item_subitems_get(programs_it);
238
239 //We already reloaded items
240@@ -571,25 +655,30 @@ sub_programs_reload(navi_data *nd, Elm_Object_Item *programs_it)
241 nd); /* select cb data */
242 nd->program_items = eina_list_append(nd->program_items, it);
243 }
244+#endif
245 }
246
247 static void
248 sub_programs_remove(navi_data *nd)
249 {
250+#if 0
251 if (!nd->programs_it) return;
252
253 Elm_Object_Item *it;
254 EINA_LIST_FREE(nd->program_items, it) elm_object_item_del(it);
255+#endif
256 }
257
258 static void
259 gl_programs_del_cb(void *data, Evas_Object *obj EINA_UNUSED)
260 {
261+#if 0
262 navi_data *nd = g_nd;
263 if (!nd) return;
264
265 Elm_Object_Item *it = data;
266 if (nd->programs_it == it) nd->programs_it = NULL;
267+#endif
268 }
269
270 /* Programs Related */
271@@ -598,45 +687,50 @@ static void
272 gl_programs_selected_cb(void *data, Evas_Object *obj EINA_UNUSED,
273 void *event_info)
274 {
275- navi_data *nd = data;
276- Elm_Object_Item *it = event_info;
277+ group_it *git = data;
278+ git->programs.expanded = EINA_TRUE;
279+
280+ //update current group item
281+ git->nd->cur_git = git;
282+
283+ find_programs_proc(git->name);
284+
285+ //FIXME: If auto contraction is enabled, then close other parts
286+ if (!(git->nd->auto_contract)) return;
287
288+#if 0
289 states_remove(nd);
290 sub_programs_reload(nd, it);
291+#endif
292
293- Elm_Object_Item *parent_it = elm_genlist_item_parent_get(it);
294
295- find_programs_proc(elm_object_item_text_get(parent_it));
296 }
297
298 static void
299-programs_reload(navi_data *nd, Elm_Object_Item *group_it)
300+programs_reload(navi_data *nd, group_it *git)
301 {
302- //FIXME: Maybe we could optimize if programs list hasn't been changed.
303- sub_programs_remove(nd);
304-
305- if (nd->program_list) edje_edit_string_list_free(nd->program_list);
306-
307- //Append Parts
308+ //Append a programs
309 Evas_Object *enventor = base_enventor_get();
310- nd->program_list = enventor_object_programs_list_get(enventor);
311-
312- //FIXME: Maybe we could optimize if programs list hasn't been changed.
313- elm_object_item_del(nd->programs_it);
314- nd->programs_it = NULL;
315+ Eina_List *program_list = enventor_object_programs_list_get(enventor);
316+ if (!program_list)
317+ {
318+ elm_object_item_del(git->programs.it);
319+ git->programs.it = NULL;
320+ navigator_programs_clear(git);
321+ return;
322+ }
323
324- if (!nd->program_list) return;
325+ if (git->programs.it) return;
326
327 //Programs Item
328- nd->programs_it =
329+ git->programs.it =
330 elm_genlist_item_append(nd->genlist,
331- nd->programs_itc, /* item class */
332- NULL, /* item data */
333- group_it, /* parent */
334- ELM_GENLIST_ITEM_NONE, /* item type */
335- gl_programs_selected_cb, /* select cb */
336- nd); /* select cb data */
337- elm_object_item_data_set(nd->programs_it, nd->programs_it);
338+ nd->programs_itc,
339+ NULL,
340+ git->it,
341+ ELM_GENLIST_ITEM_NONE,
342+ gl_programs_selected_cb,
343+ git);
344 }
345
346 static char *
347@@ -662,31 +756,24 @@ gl_programs_content_get_cb(void *data EINA_UNUSED, Evas_Object *obj,
348
349 /* Part Related */
350
351-static void
352-gl_part_del_cb(void *data, Evas_Object *obj EINA_UNUSED)
353-{
354- part_item_data *item_data = data;
355- free(item_data);
356-}
357-
358 static char *
359 gl_part_text_get_cb(void *data, Evas_Object *obj EINA_UNUSED,
360 const char *part EINA_UNUSED)
361 {
362- part_item_data *item_data = data;
363- return strdup(item_data->text);
364+ part_it *pit = data;
365+ return strdup(pit->name);
366 }
367
368 static Evas_Object *
369 gl_part_content_get_cb(void *data, Evas_Object *obj, const char *part)
370 {
371 if (strcmp("elm.swallow.icon", part)) return NULL;
372- part_item_data *item_data = data;
373+ part_it *pit = data;
374
375 Evas_Object *image = elm_image_add(obj);
376 const char *group;
377
378- switch (item_data->type)
379+ switch (pit->type)
380 {
381 case EDJE_PART_TYPE_RECTANGLE:
382 group = "navi_rect";
383@@ -717,60 +804,66 @@ gl_part_content_get_cb(void *data, Evas_Object *obj, const char *part)
384 }
385
386 static void
387-gl_part_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
388+gl_part_selected_cb(void *data, Evas_Object *obj EINA_UNUSED,
389+ void *event_info EINA_UNUSED)
390 {
391- navi_data *nd = data;
392- Elm_Object_Item *it = event_info;
393+ part_it *pit = data;
394
395- sub_programs_remove(nd);
396+ pit->expanded = EINA_TRUE;
397
398- states_reload(nd, it);
399+ //update current group item
400+ pit->git->nd->cur_git = pit->git;
401
402- part_item_data *item_data = elm_object_item_data_get(it);
403- Elm_Object_Item *parent_it = elm_genlist_item_parent_get(it);
404+ //Find text cursor position
405+ const char *part_type = part_type_get(pit);
406+ find_part_proc(pit->git->name, pit->name, part_type);
407
408- const char *part_type = part_type_get(it);
409+// states_reload(nd, pit);
410
411- find_part_proc(elm_object_item_text_get(parent_it), item_data->text,
412- part_type);
413+ //FIXME: If auto contraction is enabled, then close other parts and programs
414+ if (!(pit->git->nd->auto_contract)) return;
415+#if 0
416+ sub_programs_remove(pit->nd);
417+#endif
418 }
419
420 static void
421-parts_reload(navi_data *nd, Elm_Object_Item *group_it)
422+parts_update(navi_data *nd, group_it *git)
423 {
424- Eina_List *l;
425- Elm_Object_Item *it;
426-
427- //Remove Previous Parts
428-
429- //FIXME: Maybe we could optimize if parts list hasn't been changed.
430- EINA_LIST_FREE(nd->part_items, it) elm_object_item_del(it);
431- nd->state_items = NULL;
432- edje_edit_string_list_free(nd->part_list);
433-
434- //Append Parts
435 Evas_Object *enventor = base_enventor_get();
436- nd->part_list = enventor_object_parts_list_get(enventor);
437+ Eina_List *part_list = enventor_object_parts_list_get(enventor);
438+
439+ //1. New parts
440+ //1.1 List up new parts
441+ //1.2 Add parts
442 char *name;
443- part_item_data *data;
444- Edje_Part_Type part_type;
445+ Eina_List *l;
446+ part_it *pit;
447
448- EINA_LIST_FOREACH(nd->part_list, l, name)
449+ EINA_LIST_FOREACH(part_list, l, name)
450 {
451- part_type = enventor_object_part_type_get(enventor, name);
452- data = malloc(sizeof(part_item_data));
453- data->text = name;
454- data->type = part_type;
455-
456- it = elm_genlist_item_append(nd->genlist,
457- nd->part_itc, /* item class */
458- data, /* item data */
459- group_it, /* parent */
460- ELM_GENLIST_ITEM_NONE, /* item type */
461- gl_part_selected_cb, /* select cb */
462- nd); /* select cb data */
463- nd->part_items = eina_list_append(nd->part_items, it);
464+ pit = calloc(1, sizeof(part_it));
465+ pit->name = strdup(name);
466+ pit->type = enventor_object_part_type_get(enventor, name);
467+ pit->git = git;
468+ pit->it = elm_genlist_item_append(nd->genlist,
469+ nd->part_itc,
470+ pit,
471+ git->it,
472+ ELM_GENLIST_ITEM_NONE,
473+ gl_part_selected_cb,
474+ pit);
475+ git->parts = eina_list_append(git->parts, pit);
476 }
477+
478+ edje_edit_string_list_free(part_list);
479+
480+ //2. Discarded parts
481+ //2.1 List up discarded parts
482+ //2.2 Remove them from the previous list.
483+
484+ //3. Update parts
485+ //3.1 Update parts states only if they are expanded.
486 }
487
488 /* Group Related */
489@@ -779,26 +872,35 @@ static Evas_Object *
490 gl_group_content_get_cb(void *data EINA_UNUSED, Evas_Object *obj,
491 const char *part)
492 {
493- if (strcmp("elm.swallow.icon", part)) return NULL;
494+ if (!strcmp("elm.swallow.icon", part))
495+ {
496+ Evas_Object *image = elm_image_add(obj);
497+ elm_image_file_set(image, EDJE_PATH, "navi_group");
498+ return image;
499+ }
500
501- Evas_Object *image = elm_image_add(obj);
502- elm_image_file_set(image, EDJE_PATH, "navi_group");
503+ if (!strcmp("elm.swallow.end", part))
504+ {
505+ Evas_Object *btn = elm_button_add(obj);
506+ return btn;
507+ }
508
509- return image;
510+ return NULL;
511 }
512
513 static void
514 gl_group_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
515 {
516- navi_data *nd = data;
517- if (nd->group_select_skip) return;
518+ group_it *git = data;
519
520- Elm_Object_Item *it = event_info;
521+ git->expanded = EINA_TRUE;
522
523- states_remove(nd);
524- sub_programs_remove(nd);
525+ //Find text cursor position
526+ find_group_proc(git->name);
527
528- find_group_proc(elm_object_item_text_get(it));
529+ /* Don't surprise, Here it doesn't need to do anything because
530+ edc_navigator_group_update() will be called by find_group_proc().
531+ In that function, it will update everything it needs. */
532 }
533
534 /*****************************************************************************/
535@@ -820,45 +922,48 @@ edc_navigator_group_update(const char *cur_group)
536 }
537
538 //If edc_navigator_reload() is not called yet?
539- if (!nd->group_list)
540+ if (!nd->groups)
541 {
542 edc_navigator_reload(cur_group);
543 return;
544 }
545
546 Eina_List *l;
547- Elm_Object_Item *it;
548-
549- //Find a current group item and select it.
550- Elm_Object_Item *group_it = NULL;
551+ group_it *git;
552 unsigned int cur_group_len = strlen(cur_group);
553
554- EINA_LIST_FOREACH(nd->group_items, l, it)
555+ //We don't need to select a current group item if the selected item
556+ //belongs to the current group.
557+ if (nd->cur_git)
558 {
559- const char *group_name = elm_object_item_data_get(it);
560- if (!group_name) continue;
561-
562- if (!strcmp(group_name, cur_group) &&
563- (strlen(group_name) == cur_group_len))
564+ if (!strcmp(nd->cur_git->name, cur_group) &&
565+ (cur_group_len == strlen(nd->cur_git->name)))
566 {
567+ parts_update(nd, nd->cur_git);
568+ //programs_reload(nd, nd->cur_git);
569+ return;
570+ }
571+ }
572+
573+ nd->cur_git = NULL;
574
575- //Skip a group selection callback because it leads the editor
576- //cursor jump on to the group area. But this group updation could
577- //be triggered in a various scenario. The cursor should be jumped
578- //only when user clicks a group item in the genlist.
579- nd->group_select_skip = EINA_TRUE;
580- elm_genlist_item_selected_set(it, EINA_TRUE);
581- nd->group_select_skip = EINA_FALSE;
582- group_it = it;
583+ //Find a current group item and select it.
584+ EINA_LIST_FOREACH(nd->groups, l, git)
585+ {
586+ if (!strcmp(git->name, cur_group) &&
587+ (strlen(git->name) == cur_group_len))
588+ {
589+ nd->cur_git = git;
590+ elm_genlist_item_selected_set(git->it, EINA_TRUE);
591 break;
592 }
593 }
594
595 //We couldn't find a group... ?
596- if (!group_it) return;
597+ if (!nd->cur_git) return;
598
599- parts_reload(nd, group_it);
600- programs_reload(nd, group_it);
601+ parts_update(nd, nd->cur_git);
602+ //programs_reload(nd, nd->cur_git);
603 }
604
605 void
606@@ -867,50 +972,44 @@ edc_navigator_reload(const char *cur_group)
607 navi_data *nd = g_nd;
608 if (!nd) return;
609
610- //Reset Navigator resource.
611-
612- //FIXME: Maybe we could optimize if group list hasn't been changed.
613- nd->group_items = eina_list_free(nd->group_items);
614- nd->part_items = NULL;
615- nd->state_items = NULL;
616- nd->program_items = NULL;
617+ navigator_groups_clear(nd);
618
619- elm_genlist_clear(nd->genlist);
620- edje_file_collection_list_free(nd->group_list);
621-
622- if (!cur_group)
623- {
624- nd->group_list = NULL;
625- return;
626- }
627+ //Reconstruct new groups
628+ Eina_List *group_list = edje_file_collection_list(config_output_path_get());
629
630- nd->group_list = edje_file_collection_list(config_output_path_get());
631-
632- //Update Group
633 Eina_List *l;
634 char *name;
635 Elm_Object_Item *it;
636- unsigned int cur_group_len = strlen(cur_group);
637+ unsigned int cur_group_len;
638+ if (cur_group) cur_group_len = strlen(cur_group);
639+ else cur_group_len = 0;
640
641- EINA_LIST_FOREACH(nd->group_list, l, name)
642+ //Initialize Groups
643+ EINA_LIST_FOREACH(group_list, l, name)
644 {
645- it = elm_genlist_item_append(nd->genlist,
646- nd->group_itc, /* item class */
647- name, /* item data */
648- NULL, /* parent */
649- ELM_GENLIST_ITEM_NONE, /* item type */
650- gl_group_selected_cb, /* select cb */
651- nd); /* select cb data */
652+ group_it *git = calloc(1, sizeof(group_it));
653
654- nd->group_items = eina_list_append(nd->group_items, it);
655+ git->name = strdup(name);
656+ git->nd = nd;
657+ git->it = elm_genlist_item_append(nd->genlist,
658+ nd->group_itc,
659+ git->name,
660+ NULL,
661+ ELM_GENLIST_ITEM_NONE,
662+ gl_group_selected_cb,
663+ git);
664
665- //Update a current group
666+ nd->groups = eina_list_append(nd->groups, git);
667+
668+ //Update only a current group parts
669 if ((cur_group && !strcmp(name, cur_group)) &&
670 (strlen(name) == cur_group_len))
671 {
672 edc_navigator_group_update(cur_group);
673 }
674 }
675+
676+ edje_file_collection_list_free(group_list);
677 }
678
679 Evas_Object *
680@@ -924,8 +1023,29 @@ edc_navigator_init(Evas_Object *parent)
681 }
682 g_nd = nd;
683
684- Evas_Object *genlist = elm_genlist_add(parent);
685+ //Box
686+ Evas_Object *box = elm_box_add(parent);
687+ elm_object_focus_allow_set(box, EINA_FALSE);
688+
689+ //Genlist
690+ Evas_Object *genlist = elm_genlist_add(box);
691 elm_object_focus_allow_set(genlist, EINA_FALSE);
692+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
693+ EVAS_HINT_EXPAND);
694+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
695+ evas_object_show(genlist);
696+ elm_box_pack_end(box, genlist);
697+
698+ //Check for genlist option
699+ Evas_Object *check = elm_check_add(box);
700+ elm_object_text_set(check, "Automatic Contraction");
701+ elm_check_state_set(check, EINA_TRUE);
702+ evas_object_smart_callback_add(check, "changed", check_changed_cb, nd);
703+ elm_object_focus_allow_set(check, EINA_FALSE);
704+ evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, 0);
705+ evas_object_size_hint_align_set(check, 0.05, EVAS_HINT_FILL);
706+ evas_object_show(check);
707+ elm_box_pack_end(box, check);
708
709 //Group Item Class
710 Elm_Genlist_Item_Class *itc;
711@@ -942,7 +1062,6 @@ edc_navigator_init(Evas_Object *parent)
712 itc->item_style = "default";
713 itc->func.text_get = gl_part_text_get_cb;
714 itc->func.content_get = gl_part_content_get_cb;
715- itc->func.del = gl_part_del_cb;
716
717 nd->part_itc = itc;
718
719@@ -972,8 +1091,10 @@ edc_navigator_init(Evas_Object *parent)
720 nd->program_itc = itc;
721
722 nd->genlist = genlist;
723+ nd->check = check;
724+ nd->auto_contract = EINA_TRUE;
725
726- return genlist;
727+ return box;
728 }
729
730 void
731@@ -982,15 +1103,7 @@ edc_navigator_term(void)
732 navi_data *nd = g_nd;
733 if (!nd) return;
734
735- eina_list_free(nd->state_items);
736- eina_list_free(nd->part_items);
737- eina_list_free(nd->group_items);
738- eina_list_free(nd->program_items);
739-
740- edje_file_collection_list_free(nd->group_list);
741- edje_edit_string_list_free(nd->part_list);
742- edje_edit_string_list_free(nd->state_list);
743- edje_edit_string_list_free(nd->program_list);
744+ navigator_groups_clear(nd);
745
746 elm_genlist_item_class_free(nd->group_itc);
747 elm_genlist_item_class_free(nd->part_itc);
diff --git a/output.zip b/output.zip
new file mode 100755
index 0000000..c741e7c
--- /dev/null
+++ b/output.zip
Binary files differ