Example #1
0
/* local subsystem functions */
static Eina_Bool
_cb_key_down(__UNUSED__ void *data, __UNUSED__ int type, void *event)
{
   Ecore_Event_Key *ev;

   ev = event;
   if (ev->event_window != input_window) return ECORE_CALLBACK_PASS_ON;
   if (!strcmp(ev->key, "Escape"))
     e_syscon_hide();
   else if ((!strcmp(ev->key, "Left")) || (!strcmp(ev->key, "Up")))
     {
        if (!o_selected)
          {
             if (e_flowlayout_pack_count_get(o_flow_extra))
               o_selected_flow = o_flow_extra, o_selected = e_flowlayout_pack_object_last(o_flow_extra);
             else if (e_flowlayout_pack_count_get(o_flow_secondary))
               o_selected_flow = o_flow_secondary, o_selected = e_flowlayout_pack_object_last(o_flow_secondary);
             else
               o_selected_flow = o_flow_main, o_selected = e_flowlayout_pack_object_last(o_flow_main);
          }
        else
          {
             edje_object_signal_emit(o_selected, "e,state,focused", "e");
             o_selected = e_flowlayout_pack_object_prev(o_selected_flow, o_selected);
             if (!o_selected)
               {
                  if (o_selected_flow == o_flow_extra)
                    {
                       if (e_flowlayout_pack_count_get(o_flow_secondary))
                         o_selected_flow = o_flow_secondary, o_selected = e_flowlayout_pack_object_last(o_flow_secondary);
                       else
                         o_selected_flow = o_flow_main, o_selected = e_flowlayout_pack_object_last(o_flow_main);
                    }
                  else if (o_selected_flow == o_flow_secondary)
                    o_selected_flow = o_flow_main, o_selected = e_flowlayout_pack_object_last(o_flow_main);
                  else
                    {
                       if (e_flowlayout_pack_count_get(o_flow_extra))
                         o_selected_flow = o_flow_extra, o_selected = e_flowlayout_pack_object_last(o_flow_extra);
                       else if (e_flowlayout_pack_count_get(o_flow_secondary))
                         o_selected_flow = o_flow_secondary, o_selected = e_flowlayout_pack_object_last(o_flow_secondary);
                       else
                         o_selected_flow = o_flow_main, o_selected = e_flowlayout_pack_object_last(o_flow_main);
                    }
               }
          }
        edje_object_signal_emit(o_selected, "e,state,unfocused", "e");
     }
   else if ((!strcmp(ev->key, "Right")) || (!strcmp(ev->key, "Down")) || (!strcmp(ev->key, "Tab")))
     {
        if (!o_selected)
          o_selected_flow = o_flow_main, o_selected = e_flowlayout_pack_object_first(o_flow_main);
        else
          {
             edje_object_signal_emit(o_selected, "e,state,focused", "e");
             o_selected = e_flowlayout_pack_object_next(o_selected_flow, o_selected);
             if (!o_selected)
               {
                  if (o_selected_flow == o_flow_extra)
                    o_selected_flow = o_flow_main, o_selected = e_flowlayout_pack_object_first(o_flow_main);
                  else if (o_selected_flow == o_flow_secondary)
                    {
                       if (e_flowlayout_pack_count_get(o_flow_extra))
                         o_selected_flow = o_flow_extra, o_selected = e_flowlayout_pack_object_first(o_flow_extra);
                       else
                         o_selected_flow = o_flow_main, o_selected = e_flowlayout_pack_object_first(o_flow_main);
                    }
                  else
                    {
                       if (e_flowlayout_pack_count_get(o_flow_secondary))
                         o_selected_flow = o_flow_secondary, o_selected = e_flowlayout_pack_object_first(o_flow_secondary);
                       else if (e_flowlayout_pack_count_get(o_flow_extra))
                         o_selected_flow = o_flow_extra, o_selected = e_flowlayout_pack_object_first(o_flow_extra);
                       else
                         o_selected_flow = o_flow_main, o_selected = e_flowlayout_pack_object_first(o_flow_main);
                    }
               }
          }
        edje_object_signal_emit(o_selected, "e,state,unfocused", "e");
     }
   else if ((!strcmp(ev->keyname, "KP_Enter")) || (!strcmp(ev->keyname, "Return")))
     {
        if (!o_selected) return ECORE_CALLBACK_RENEW;
        edje_object_signal_emit(o_selected, "e,state,focused", "e");
        edje_object_signal_emit(o_selected, "e,action,click", "");
        o_selected = o_selected_flow = NULL;
     }
   else
     {
        E_Action *act;
        double t;

        t = ecore_loop_time_get();
        if (t - show_time > 0.5)
          {
             act = e_bindings_key_down_event_find(E_BINDING_CONTEXT_ANY, ev);
             if ((act) && (act->name))
               {
                  if (!strcmp(act->name, "syscon"))
                    {
                       if (popup)
                         {
                            e_syscon_show(popup->zone, do_defact);
                         }
                    }
                  else
                    {
                       Eina_List *l;

                       for (l = e_config->syscon.actions; l; l = l->next)
                         {
                            E_Config_Syscon_Action *sca;

                            if (!(sca = l->data)) continue;
                            if (!sca->action) continue;
                            if (!strcmp(sca->action, act->name))
                              {
                                 act_count++;
                                 if (act_count > 2)
                                   {
                                      act->func.go(NULL, sca->params);
                                      e_syscon_hide();
                                      break;
                                   }
                              }
                         }
                    }
               }
          }
     }

   return ECORE_CALLBACK_PASS_ON;
}
Example #2
0
/* local subsystem functions */
static Eina_Bool
_cb_key_down(__UNUSED__ void *data, __UNUSED__ int type, void *event)
{
   Ecore_Event_Key *ev;

   ev = event;
   if (ev->event_window != input_window) return ECORE_CALLBACK_PASS_ON;
   if (!strcmp(ev->key, "Escape"))
     e_syscon_hide();
   else if (!strcmp(ev->key, "Up"))
     {
        // FIXME: implement focus and key control... eventually
     }
   else if (!strcmp(ev->key, "Down"))
     {
        // FIXME: implement focus and key control... eventually
     }
   else if (!strcmp(ev->key, "Left"))
     {
        // FIXME: implement focus and key control... eventually
     }
   else if (!strcmp(ev->key, "Right"))
     {
        // FIXME: implement focus and key control... eventually
     }
   else if (!strcmp(ev->key, "Tab"))
     {
        // FIXME: implement focus and key control... eventually
     }
   else if (!strcmp(ev->key, "Enter"))
     {
        // FIXME: implement focus and key control... eventually
     }
   else
     {
        E_Action *act;
        double t;
        
        t = ecore_loop_time_get();
        if (t - show_time > 0.5)
          {
             act = e_bindings_key_down_event_find(E_BINDING_CONTEXT_ANY, ev);
             if ((act) && (act->name))
               {
                  if (!strcmp(act->name, "syscon"))
                    {
                       if (popup)
                         {
                            e_syscon_show(popup->zone, do_defact);
                         }
                    }
                  else
                    {
                       Eina_List *l;
                       
                       for (l = e_config->syscon.actions; l; l = l->next)
                         {
                            E_Config_Syscon_Action *sca;
                            
                            if (!(sca = l->data)) continue;
                            if (!sca->action) continue;
                            if (!strcmp(sca->action, act->name))
                              {
                                 act_count++;
                                 if (act_count > 2)
                                   {
                                      act->func.go(NULL, sca->params);
                                      e_syscon_hide();
                                      break;
                                   }
                              }
                         }
                    }
               }
          }
     }

   return ECORE_CALLBACK_PASS_ON;
}