Explorar o código

Added support for favorites menu (only CFW)

David Lee hai 10 meses
pai
achega
7b1d56f438
Modificáronse 7 ficheiros con 26 adicións e 9 borrados
  1. 1 1
      application.fam
  2. 3 0
      docs/changelog.md
  3. 6 1
      scenes/xremote_scene_transmit.c
  4. 0 1
      scenes/xremote_scene_xr_list.c
  5. 14 5
      xremote.c
  6. 1 0
      xremote.h
  7. 1 1
      xremote_i.h

+ 1 - 1
application.fam

@@ -6,7 +6,7 @@ App(
     stack_size=3 * 1024,
     fap_icon="icons/xremote_10px.png",
     fap_icon_assets="icons",
-    fap_version="3.2",
+    fap_version="3.3",
     fap_category="Infrared",
     fap_author="Leedave",
     fap_description="One-Click, sends multiple commands",

+ 3 - 0
docs/changelog.md

@@ -1,3 +1,6 @@
+## 3.3
+- Added support for Favorites menu. 
+
 ## 3.2
 - Added support for external IR GPIO boards, tested on IR Blaster & Masta-Blasta. 
 

+ 6 - 1
scenes/xremote_scene_transmit.c

@@ -117,7 +117,12 @@ void xremote_scene_transmit_send_signal(void* context, CrossRemoteItem* item) {
 
 static void xremote_scene_transmit_end_scene(XRemote* app) {
     xremote_scene_ir_notification_message(app, InfraredNotificationMessageBlinkStop);
-    scene_manager_previous_scene(app->scene_manager);
+    if (app->loadFavorite) {
+        scene_manager_stop(app->scene_manager);
+        view_dispatcher_stop(app->view_dispatcher);
+    } else {
+        scene_manager_previous_scene(app->scene_manager);
+    }
 }
 
 static void xremote_scene_transmit_run_single_transmit(XRemote* app) {

+ 0 - 1
scenes/xremote_scene_xr_list.c

@@ -12,7 +12,6 @@ void xremote_scene_xr_list_on_enter(void* context) {
     furi_string_set(path, XREMOTE_APP_FOLDER);
 
     bool success = dialog_file_browser_show(
-        //app->dialogs, app->file_path, app->file_path, &browser_options);
         app->dialogs,
         app->file_path,
         path,

+ 14 - 5
xremote.c

@@ -53,6 +53,7 @@ XRemote* xremote_app_alloc() {
     app->stop_transmit = false;
     app->loop_transmit = 0;
     app->transmit_item = 0;
+    app->loadFavorite = false;
 
     // Load configs
     xremote_read_settings(app);
@@ -220,15 +221,10 @@ static void xremote_ir_load_settings(XRemote* app) {
 }
 
 int32_t xremote_app(void* p) {
-    UNUSED(p);
     XRemote* app = xremote_app_alloc();
     
     view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
 
-    //scene_manager_next_scene(app->scene_manager, XRemoteSceneInfoscreen); //Start with start screen
-    scene_manager_next_scene(
-        app->scene_manager, XRemoteSceneMenu); //if you want to directly start with Menu
-
     furi_hal_power_suppress_charge_enter();
     xremote_ir_load_settings(app);
 
@@ -237,6 +233,19 @@ int32_t xremote_app(void* p) {
     storage_common_mkdir(storage, XREMOTE_APP_FOLDER);
     furi_record_close(RECORD_STORAGE);
 
+    //bool loadFavorite = false;
+    if(p && strlen(p)) {
+        furi_string_set_str(app->file_path, p);
+        app->loadFavorite = xremote_cross_remote_load(app->cross_remote, app->file_path);
+    }
+    if (app->loadFavorite) {
+        scene_manager_next_scene(
+            app->scene_manager, XRemoteSceneTransmit); //if you loaded from Favorites
+    } else {
+        scene_manager_next_scene(
+            app->scene_manager, XRemoteSceneMenu); //if you want to directly start with Menu
+    }
+
     view_dispatcher_run(app->view_dispatcher);
 
     xremote_save_settings(app);

+ 1 - 0
xremote.h

@@ -56,6 +56,7 @@ typedef struct {
     char text_store[XREMOTE_TEXT_STORE_NUM][XREMOTE_TEXT_STORE_SIZE + 1];
     SubGhz* subghz;
     NumberInput* number_input;
+    bool loadFavorite;
 } XRemote;
 
 typedef enum {

+ 1 - 1
xremote_i.h

@@ -51,7 +51,7 @@
 #define XREMOTE_TEXT_STORE_SIZE 128
 #define XREMOTE_MAX_ITEM_NAME_LENGTH 22
 #define XREMOTE_MAX_REMOTE_NAME_LENGTH 22
-#define XREMOTE_VERSION "3.2"
+#define XREMOTE_VERSION FAP_VERSION
 
 #define INFRARED_APP_EXTENSION ".ir"
 #define INFRARED_APP_FOLDER EXT_PATH("infrared")