ST意法半导体
直播中

张勇

8年用户 1548经验值
私信 关注
[问答]

如何在删除屏幕后将屏幕添加到滑动容器?

进入包含滑动容器“sub_settings_swipe_container”的屏幕后,我将根据屏幕从何处获取亮度来执行一些逻辑。通过其他地方的滚轮或通过 CAN 消息手动设置。  
  • void sub_settings_swipeView::setupScreen()
  • {
  •         sub_settings_swipeViewBase::setupScreen();
  •         sub_settings_swipe_container.setSelectedPage(navigate_to_screen != 0xff ? navigate_to_screen : 0);
  •         current_page = sub_settings_swipe_container.getSelectedPage();
  •         //        Global_Settings_2_2
  •         switch(FFC.brightness_source)
  •         {
  •                 case can_source:
  •                         can_button.setSelected(true);
  •                         manual_button.setSelected(false);
  •                         sub_settings_swipe_container.add(sub_1_settings_1);
  •                         sub_settings_swipe_container.add(sub_1_settings_2);
  •                         sub_settings_swipe_container.setPageIndicatorXY(98, 212);
  •                         //        Global_Settings_2_4
  •                         CAN_brightness_scroll_wheel.animateToItem(ceil((FFC.CAN_Backlight_Adjust*100)-50), 3);
  •                         CAN_brightness_scroll_wheel.invalidate();
  •                         can_found.setVisible(true);
  •                         can_not_found.setVisible(false);
  •                         can_found.invalidate();
  •                         can_not_found.invalidate();
  •                         break;
  •                 case manual_source:
  •                         can_button.setSelected(false);
  •                         manual_button.setSelected(true);
  •                         sub_settings_swipe_container.remove(sub_1_settings_1);
  •                         sub_settings_swipe_container.remove(sub_1_settings_2);
  •                         sub_settings_swipe_container.setPageIndicatorXY(113, 212);
  •                         break;
  •         }
  •         can_button.invalidate();
  •         manual_button.invalidate();
  •         sub_settings_swipe_container.invalidate();
  • }
进入此屏幕后...我查看保存到内存中的内容,FFC.brightness_source 上的 switch/case 语句,并相应地填充屏幕。问题是,当我进入此屏幕并将源设置为 can_source 时,代码在我去添加 (sub_1_settings_1) 的步骤中停止。
但是,如果亮度源设置为手动,它会很好地移除这些屏幕,然后我可以使用 can_button/manual_button 单选按钮打开/关闭它们。这是在 handleTickEvent() 中处理的
  • void sub_settings_swipeView::handleTickEvent()
  • {
  •         previous_page = current_page;
  •         current_page = sub_settings_swipe_container.getSelectedPage();
  •         switch(current_page)
  •         {
  •                 case sub_1_settings_page_0:
  •                         previous_brightness_source = brightness_source;
  •                         if(can_button.getSelected())
  •                                 brightness_source = can_source;
  •                         else
  •                                 brightness_source = manual_source;
  •                         if(brightness_source != previous_brightness_source)
  •                         {
  •                                 switch(brightness_source)
  •                                 {
  •                                         case can_source:
  •                                                 sub_settings_swipe_container.add(sub_1_settings_1);
  •                                                 sub_settings_swipe_container.add(sub_1_settings_2);
  •                                                 sub_settings_swipe_container.setPageIndicatorXY(98, 212);
  •                                                 break;
  •                                         case manual_source:
  •                                                 sub_settings_swipe_container.remove(sub_1_settings_1);
  •                                                 sub_settings_swipe_container.remove(sub_1_settings_2);
  •                                                 sub_settings_swipe_container.setPageIndicatorXY(113, 212);
  •                                                 break;
  •                                 }
  •                                 sub_settings_swipe_container.invalidate();
  •                         }
  •                         break;
重申一下,添加/删除屏幕在 handleTickEvent() 中起作用,但添加屏幕在 setupScreen 函数中消失。有什么提示或建议吗?






回帖(1)

顾鸿兰

2022-12-28 15:49:57
似乎您的子设置存在并添加到屏幕基础中,然后您无法在设置中添加它,但您可以删除。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分