mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-07-11 23:38:11 -07:00
Merge BadKB config menus + lock bt options on usb
This commit is contained in:
@@ -125,16 +125,11 @@ BadKbApp* bad_kb_app_alloc(char* arg) {
|
||||
view_dispatcher_add_view(
|
||||
app->view_dispatcher, BadKbAppViewError, widget_get_view(app->widget));
|
||||
|
||||
app->var_item_list_bt = variable_item_list_alloc();
|
||||
app->var_item_list = variable_item_list_alloc();
|
||||
view_dispatcher_add_view(
|
||||
app->view_dispatcher,
|
||||
BadKbAppViewConfigBt,
|
||||
variable_item_list_get_view(app->var_item_list_bt));
|
||||
app->var_item_list_usb = variable_item_list_alloc();
|
||||
view_dispatcher_add_view(
|
||||
app->view_dispatcher,
|
||||
BadKbAppViewConfigUsb,
|
||||
variable_item_list_get_view(app->var_item_list_usb));
|
||||
BadKbAppViewConfig,
|
||||
variable_item_list_get_view(app->var_item_list));
|
||||
|
||||
app->bad_kb_view = bad_kb_alloc();
|
||||
view_dispatcher_add_view(
|
||||
@@ -188,10 +183,8 @@ void bad_kb_app_free(BadKbApp* app) {
|
||||
widget_free(app->widget);
|
||||
|
||||
// Variable item list
|
||||
view_dispatcher_remove_view(app->view_dispatcher, BadKbAppViewConfigBt);
|
||||
variable_item_list_free(app->var_item_list_bt);
|
||||
view_dispatcher_remove_view(app->view_dispatcher, BadKbAppViewConfigUsb);
|
||||
variable_item_list_free(app->var_item_list_usb);
|
||||
view_dispatcher_remove_view(app->view_dispatcher, BadKbAppViewConfig);
|
||||
variable_item_list_free(app->var_item_list);
|
||||
|
||||
// Text Input
|
||||
view_dispatcher_remove_view(app->view_dispatcher, BadKbAppViewConfigName);
|
||||
|
||||
@@ -53,8 +53,7 @@ struct BadKbApp {
|
||||
NotificationApp* notifications;
|
||||
DialogsApp* dialogs;
|
||||
Widget* widget;
|
||||
VariableItemList* var_item_list_bt;
|
||||
VariableItemList* var_item_list_usb;
|
||||
VariableItemList* var_item_list;
|
||||
|
||||
Bt* bt;
|
||||
TextInput* text_input;
|
||||
@@ -81,8 +80,7 @@ struct BadKbApp {
|
||||
typedef enum {
|
||||
BadKbAppViewError,
|
||||
BadKbAppViewWork,
|
||||
BadKbAppViewConfigBt,
|
||||
BadKbAppViewConfigUsb,
|
||||
BadKbAppViewConfig,
|
||||
BadKbAppViewConfigMac,
|
||||
BadKbAppViewConfigName
|
||||
} BadKbAppView;
|
||||
|
||||
@@ -442,11 +442,10 @@ void bad_kb_config_switch_mode(BadKbApp* app) {
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
if(app->is_bt) {
|
||||
furi_hal_bt_start_advertising();
|
||||
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigBt);
|
||||
} else {
|
||||
furi_hal_bt_stop_advertising();
|
||||
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigUsb);
|
||||
}
|
||||
scene_manager_next_scene(app->scene_manager, BadKbSceneConfig);
|
||||
bad_kb_reload_worker(app);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
#include "../bad_kb_app_i.h"
|
||||
#include "furi_hal_power.h"
|
||||
#include "furi_hal_usb.h"
|
||||
#include <xtreme/settings.h>
|
||||
|
||||
enum VarItemListIndex {
|
||||
VarItemListIndexKeyboardLayout,
|
||||
VarItemListIndexConnection,
|
||||
VarItemListIndexBtRemember,
|
||||
VarItemListIndexBtDeviceName,
|
||||
VarItemListIndexBtMacAddress,
|
||||
};
|
||||
|
||||
void bad_kb_scene_config_connection_callback(VariableItem* item) {
|
||||
BadKbApp* bad_kb = variable_item_get_context(item);
|
||||
bad_kb->is_bt = variable_item_get_current_value_index(item);
|
||||
XTREME_SETTINGS()->bad_bt = bad_kb->is_bt;
|
||||
XTREME_SETTINGS_SAVE();
|
||||
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
||||
view_dispatcher_send_custom_event(bad_kb->view_dispatcher, VarItemListIndexConnection);
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_bt_remember_callback(VariableItem* item) {
|
||||
BadKbApp* bad_kb = variable_item_get_context(item);
|
||||
bad_kb->bt_remember = variable_item_get_current_value_index(item);
|
||||
XTREME_SETTINGS()->bad_bt_remember = bad_kb->bt_remember;
|
||||
XTREME_SETTINGS_SAVE();
|
||||
variable_item_set_current_value_text(item, bad_kb->bt_remember ? "ON" : "OFF");
|
||||
view_dispatcher_send_custom_event(bad_kb->view_dispatcher, VarItemListIndexRemember);
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_var_item_list_callback(void* context, uint32_t index) {
|
||||
BadKbApp* bad_kb = context;
|
||||
view_dispatcher_send_custom_event(bad_kb->view_dispatcher, index);
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_on_enter(void* context) {
|
||||
BadKbApp* bad_kb = context;
|
||||
VariableItemList* var_item_list = bad_kb->var_item_list;
|
||||
VariableItem* item;
|
||||
|
||||
item = variable_item_list_add(var_item_list, "Keyboard layout", 0, NULL, bad_kb);
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list, "Connection", 2, bad_kb_scene_config_connection_callback, bad_kb);
|
||||
variable_item_set_current_value_index(item, bad_kb->is_bt);
|
||||
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list, "BT Remember", 2, bad_kb_scene_config_bt_remember_callback, bad_kb);
|
||||
variable_item_set_current_value_index(item, bad_kb->bt_remember);
|
||||
variable_item_set_current_value_text(item, bad_kb->bt_remember ? "ON" : "OFF");
|
||||
variable_item_set_locked(item, !bad_kb->is_bt, "Only in\nBT mode!");
|
||||
|
||||
item = variable_item_list_add(var_item_list, "BT device name", 0, NULL, bad_kb);
|
||||
variable_item_set_locked(item, !bad_kb->is_bt, "Only in\nBT mode!");
|
||||
|
||||
item = variable_item_list_add(var_item_list, "BT MAC address", 0, NULL, bad_kb);
|
||||
if(!bad_kb->is_bt) {
|
||||
variable_item_set_locked(item, true, "Only in\nBT mode!");
|
||||
} else if(bad_kb->bt_remember) {
|
||||
variable_item_set_locked(item, true, "Remember\nmust be Off!");
|
||||
}
|
||||
|
||||
variable_item_list_set_enter_callback(
|
||||
var_item_list, bad_kb_scene_config_var_item_list_callback, bad_kb);
|
||||
|
||||
variable_item_list_set_selected_item(
|
||||
var_item_list, scene_manager_get_scene_state(bad_kb->scene_manager, BadKbSceneConfig));
|
||||
|
||||
view_dispatcher_switch_to_view(bad_kb->view_dispatcher, BadKbAppViewConfig);
|
||||
}
|
||||
|
||||
bool bad_kb_scene_config_on_event(void* context, SceneManagerEvent event) {
|
||||
BadKbApp* bad_kb = context;
|
||||
bool consumed = false;
|
||||
|
||||
if(event.type == SceneManagerEventTypeCustom) {
|
||||
scene_manager_set_scene_state(bad_kb->scene_manager, BadKbSceneConfig, event.event);
|
||||
consumed = true;
|
||||
switch(event.event) {
|
||||
case VarItemListIndexKeyboardLayout:
|
||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigLayout);
|
||||
break;
|
||||
case VarItemListIndexConnection:
|
||||
bad_kb_config_switch_mode(bad_kb);
|
||||
break;
|
||||
case VarItemListIndexBtRemember:
|
||||
bad_kb_config_switch_remember_mode(bad_kb);
|
||||
scene_manager_previous_scene(bad_kb->scene_manager);
|
||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfig);
|
||||
break;
|
||||
case VarItemListIndexBtDeviceName:
|
||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigName);
|
||||
break;
|
||||
case VarItemListIndexBtMacAddress:
|
||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigMac);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return consumed;
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_on_exit(void* context) {
|
||||
BadKbApp* bad_kb = context;
|
||||
VariableItemList* var_item_list = bad_kb->var_item_list;
|
||||
|
||||
variable_item_list_reset(var_item_list);
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
ADD_SCENE(bad_kb, file_select, FileSelect)
|
||||
ADD_SCENE(bad_kb, work, Work)
|
||||
ADD_SCENE(bad_kb, error, Error)
|
||||
ADD_SCENE(bad_kb, config_bt, ConfigBt)
|
||||
ADD_SCENE(bad_kb, config_usb, ConfigUsb)
|
||||
ADD_SCENE(bad_kb, config, Config)
|
||||
ADD_SCENE(bad_kb, config_layout, ConfigLayout)
|
||||
ADD_SCENE(bad_kb, config_name, ConfigName)
|
||||
ADD_SCENE(bad_kb, config_mac, ConfigMac)
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
#include "../bad_kb_app_i.h"
|
||||
#include "furi_hal_power.h"
|
||||
#include "furi_hal_usb.h"
|
||||
#include <xtreme/settings.h>
|
||||
|
||||
enum VarItemListIndex {
|
||||
VarItemListIndexConnection,
|
||||
VarItemListIndexRemember,
|
||||
VarItemListIndexKeyboardLayout,
|
||||
VarItemListIndexAdvertisementName,
|
||||
VarItemListIndexMacAddress,
|
||||
};
|
||||
|
||||
void bad_kb_scene_config_bt_connection_callback(VariableItem* item) {
|
||||
BadKbApp* bad_kb = variable_item_get_context(item);
|
||||
bad_kb->is_bt = variable_item_get_current_value_index(item);
|
||||
XTREME_SETTINGS()->bad_bt = bad_kb->is_bt;
|
||||
XTREME_SETTINGS_SAVE();
|
||||
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
||||
view_dispatcher_send_custom_event(bad_kb->view_dispatcher, VarItemListIndexConnection);
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_bt_bounding_callback(VariableItem* item) {
|
||||
BadKbApp* bad_kb = variable_item_get_context(item);
|
||||
bad_kb->bt_remember = variable_item_get_current_value_index(item);
|
||||
XTREME_SETTINGS()->bad_bt_remember = bad_kb->bt_remember;
|
||||
XTREME_SETTINGS_SAVE();
|
||||
variable_item_set_current_value_text(item, bad_kb->bt_remember ? "ON" : "OFF");
|
||||
view_dispatcher_send_custom_event(bad_kb->view_dispatcher, VarItemListIndexRemember);
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_bt_var_item_list_callback(void* context, uint32_t index) {
|
||||
BadKbApp* bad_kb = context;
|
||||
view_dispatcher_send_custom_event(bad_kb->view_dispatcher, index);
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_bt_on_enter(void* context) {
|
||||
BadKbApp* bad_kb = context;
|
||||
VariableItemList* var_item_list = bad_kb->var_item_list_bt;
|
||||
VariableItem* item;
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list, "Connection", 2, bad_kb_scene_config_bt_connection_callback, bad_kb);
|
||||
variable_item_set_current_value_index(item, bad_kb->is_bt);
|
||||
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list, "Remember", 2, bad_kb_scene_config_bt_bounding_callback, bad_kb);
|
||||
variable_item_set_current_value_index(item, bad_kb->bt_remember);
|
||||
variable_item_set_current_value_text(item, bad_kb->bt_remember ? "ON" : "OFF");
|
||||
|
||||
item = variable_item_list_add(var_item_list, "Keyboard layout", 0, NULL, bad_kb);
|
||||
|
||||
item = variable_item_list_add(var_item_list, "BT device name", 0, NULL, bad_kb);
|
||||
|
||||
// this doesn't update instantly when toggling between Bounding modes
|
||||
if(!bad_kb->bt_remember) {
|
||||
item = variable_item_list_add(var_item_list, "BT MAC address", 0, NULL, bad_kb);
|
||||
}
|
||||
|
||||
variable_item_list_set_enter_callback(
|
||||
var_item_list, bad_kb_scene_config_bt_var_item_list_callback, bad_kb);
|
||||
|
||||
view_dispatcher_switch_to_view(bad_kb->view_dispatcher, BadKbAppViewConfigBt);
|
||||
}
|
||||
|
||||
bool bad_kb_scene_config_bt_on_event(void* context, SceneManagerEvent event) {
|
||||
BadKbApp* bad_kb = context;
|
||||
bool consumed = false;
|
||||
|
||||
if(event.type == SceneManagerEventTypeCustom) {
|
||||
scene_manager_set_scene_state(bad_kb->scene_manager, BadKbSceneConfigBt, event.event);
|
||||
consumed = true;
|
||||
if(event.event == VarItemListIndexKeyboardLayout) {
|
||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigLayout);
|
||||
} else if(event.event == VarItemListIndexConnection) {
|
||||
bad_kb_config_switch_mode(bad_kb);
|
||||
} else if(event.event == VarItemListIndexRemember) {
|
||||
bad_kb_config_switch_remember_mode(bad_kb);
|
||||
scene_manager_previous_scene(bad_kb->scene_manager);
|
||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigBt);
|
||||
} else if(event.event == VarItemListIndexAdvertisementName) {
|
||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigName);
|
||||
} else if(event.event == VarItemListIndexMacAddress) {
|
||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigMac);
|
||||
}
|
||||
}
|
||||
|
||||
return consumed;
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_bt_on_exit(void* context) {
|
||||
BadKbApp* bad_kb = context;
|
||||
VariableItemList* var_item_list = bad_kb->var_item_list_bt;
|
||||
|
||||
variable_item_list_reset(var_item_list);
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
#include "../bad_kb_app_i.h"
|
||||
#include "furi_hal_power.h"
|
||||
#include "furi_hal_usb.h"
|
||||
#include <xtreme/settings.h>
|
||||
|
||||
enum VarItemListIndex {
|
||||
VarItemListIndexConnection,
|
||||
VarItemListIndexKeyboardLayout,
|
||||
};
|
||||
|
||||
void bad_kb_scene_config_usb_connection_callback(VariableItem* item) {
|
||||
BadKbApp* bad_kb = variable_item_get_context(item);
|
||||
bad_kb->is_bt = variable_item_get_current_value_index(item);
|
||||
XTREME_SETTINGS()->bad_bt = bad_kb->is_bt;
|
||||
XTREME_SETTINGS_SAVE();
|
||||
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
||||
view_dispatcher_send_custom_event(bad_kb->view_dispatcher, VarItemListIndexConnection);
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_usb_var_item_list_callback(void* context, uint32_t index) {
|
||||
BadKbApp* bad_kb = context;
|
||||
view_dispatcher_send_custom_event(bad_kb->view_dispatcher, index);
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_usb_on_enter(void* context) {
|
||||
BadKbApp* bad_kb = context;
|
||||
VariableItemList* var_item_list = bad_kb->var_item_list_usb;
|
||||
VariableItem* item;
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list, "Connection", 2, bad_kb_scene_config_usb_connection_callback, bad_kb);
|
||||
variable_item_set_current_value_index(item, bad_kb->is_bt);
|
||||
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
|
||||
|
||||
item = variable_item_list_add(var_item_list, "Keyboard layout", 0, NULL, bad_kb);
|
||||
|
||||
variable_item_list_set_enter_callback(
|
||||
var_item_list, bad_kb_scene_config_usb_var_item_list_callback, bad_kb);
|
||||
|
||||
view_dispatcher_switch_to_view(bad_kb->view_dispatcher, BadKbAppViewConfigUsb);
|
||||
}
|
||||
|
||||
bool bad_kb_scene_config_usb_on_event(void* context, SceneManagerEvent event) {
|
||||
BadKbApp* bad_kb = context;
|
||||
bool consumed = false;
|
||||
|
||||
if(event.type == SceneManagerEventTypeCustom) {
|
||||
scene_manager_set_scene_state(bad_kb->scene_manager, BadKbSceneConfigUsb, event.event);
|
||||
consumed = true;
|
||||
if(event.event == VarItemListIndexKeyboardLayout) {
|
||||
scene_manager_next_scene(bad_kb->scene_manager, BadKbSceneConfigLayout);
|
||||
} else if(event.event == VarItemListIndexConnection) {
|
||||
bad_kb_config_switch_mode(bad_kb);
|
||||
}
|
||||
}
|
||||
|
||||
return consumed;
|
||||
}
|
||||
|
||||
void bad_kb_scene_config_usb_on_exit(void* context) {
|
||||
BadKbApp* bad_kb = context;
|
||||
VariableItemList* var_item_list = bad_kb->var_item_list_usb;
|
||||
|
||||
variable_item_list_reset(var_item_list);
|
||||
}
|
||||
@@ -17,11 +17,7 @@ bool bad_kb_scene_work_on_event(void* context, SceneManagerEvent event) {
|
||||
if(event.type == SceneManagerEventTypeCustom) {
|
||||
if(event.event == InputKeyLeft) {
|
||||
if(bad_kb_is_idle_state(app->bad_kb_view)) {
|
||||
if(app->is_bt) {
|
||||
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigBt);
|
||||
} else {
|
||||
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigUsb);
|
||||
}
|
||||
scene_manager_next_scene(app->scene_manager, BadKbSceneConfig);
|
||||
}
|
||||
consumed = true;
|
||||
} else if(event.event == InputKeyOk) {
|
||||
|
||||
Reference in New Issue
Block a user