Как отправить сигнал в пользовательскую тему?

#tizen #tizen-native-app

Вопрос:

В Tizen очень легко отправлять сигналы в мою тему (EDC) из кода на C/C с помощью elm_layout_signal_emit .

У меня есть список имен myList , и я создал для него пользовательскую тему (с помощью EDC).:

 group { "elm/genlist/base/mystyle";
   parts { ... }

   programs {
      program { "myprogram";
         source: "app";
         signal: "mysignal";
         ...
      }
   }
}
 

Я применяю эту тему к myList : elm_object_style_set(myList, "mystyle") .

Как запустить myprogram программу с этим списком генов?

Я пытался

  • elm_layout_signal_emit : не сработало, но genlist может и не быть макетом, я не удивлен.
  • elm_object_signal_emit : не сработало, понятия не имею, почему нет
  • edje_object_signal_emit : не сработало, также понятия не имею, почему

Ответ №1:

elm_object_signal_emit должен работать. но у меня есть сомнения в том, что эта тема правильно применена. если вы хотите установить пользовательский стиль для объекта, сначала необходимо изменить тему. вы можете расширить свою пользовательскую тему, вызвав elm_theme_extension_add(NULL, your_edc_path); //NULL означает тему по умолчанию. смотрите более подробную информацию о https://docs.tizen.org/application/native/guides/ui/efl/component-custom/

и мне интересно… вы действительно хотите изменить genlist, а не genlist_item. если вы хотите изменить тему виджета genlist, которая очень редко меняется, вам нужно скопировать тему скроллера или тему genlist по умолчанию, так как genlist-это особый тип скроллера. стили genlist расположены в виджетах/scroller.edc в https://review.tizen.org/gerrit/#/admin/projects/profile/wearable/platform/core/uifw/efl-theme-tizen-wearable

чтобы убедиться в этом, я протестировал просто изменения сигнала в scroller.edc(общий список/по умолчанию)

   part { name: "myrect"; type: RECT;
     description { state: "default" 0.0;
        visible: 0;
     }
     description { state: "show" 0.0;
        inherit: "default" 0.0;
        visible: 1;
        color: 255 0 0 255;
     }
  }
  program { name: "myprogram";
     signal: "mysignal";
     source: "app";
     action: STATE_SET "show" 0.0;
     target: "myrect";
  }
 

и отправьте сигнал,
elm_object_signal_emit(myList, «мой сигнал», «приложение»);

которые правильно меняют цвет фона на красный.