Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FL-3678] NFC UI refactor #3361

Merged
merged 64 commits into from
Jan 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
f0838dd
Added new image DolphinSaved_113x58.png for all "saved" pages
RebornedBrain Nov 30, 2023
810dfa1
New image DolphinDone_80x58.png added
RebornedBrain Nov 30, 2023
f7de656
Replaced dolphins on all scenes accroding to new UI specs
RebornedBrain Nov 30, 2023
94cdaf2
New success dolphin image added
RebornedBrain Dec 1, 2023
59e797b
Success scene image replaced
RebornedBrain Dec 1, 2023
7554e7b
Changed image and text for update initial scene
RebornedBrain Dec 1, 2023
fa04e36
Image and text adjusted for "Original restored" scene
RebornedBrain Dec 1, 2023
f151d3b
Removed old DolphinNice_96x59.png image
RebornedBrain Dec 1, 2023
ff724ce
New image for LFRFID scene
RebornedBrain Dec 4, 2023
7af6a46
Removed unused image
RebornedBrain Dec 4, 2023
38b65fb
New UI image added to assets
RebornedBrain Dec 4, 2023
d113bbf
Replaced warning dolphin on mf_classic write initial fail scene
RebornedBrain Dec 4, 2023
278ae51
Removed old image
RebornedBrain Dec 4, 2023
12180ba
Changed image on scenes to a new one
RebornedBrain Dec 4, 2023
18ea05e
New dolphin mafia image
RebornedBrain Dec 5, 2023
064c60e
Replaced dolphin mafia image to a new one
RebornedBrain Dec 5, 2023
fa146d8
Removed DolphinMafia_115x62.png
RebornedBrain Dec 5, 2023
59e9456
New check symbol on completed state for detect_reader
RebornedBrain Dec 6, 2023
f3cbb03
Adjusted layout elements position
RebornedBrain Dec 14, 2023
94e8e5d
Removed second switching to popup view in order to achieve control in…
RebornedBrain Dec 14, 2023
1a56ce7
CardDetected event now also triggers on_event callback
RebornedBrain Dec 14, 2023
04e28f3
Now on AuthRequest we throw CardDetected custom event
RebornedBrain Dec 14, 2023
d7b54df
Added callback for read_on_event
RebornedBrain Dec 14, 2023
69d1d54
Now we show different screen while reading and unlocking
RebornedBrain Dec 14, 2023
cf6829f
Merge branch 'dev' into reborned/nfc_ui_refactor
skotopes Dec 18, 2023
4a77a23
Fixed missing asstes for some scenes
RebornedBrain Dec 18, 2023
d5164c4
Update DolphinMafia_119x62.png
RebornedBrain Dec 19, 2023
5bff5ca
Adjusted all the scenes with DolphinMafia image
RebornedBrain Dec 19, 2023
33136b4
Scenes with save image adjusted
RebornedBrain Dec 19, 2023
3ec0703
Removed unnecessary assets DolphinMafia_119x62.png and DolphinSaved_1…
RebornedBrain Dec 19, 2023
2b3e12f
All common dolphins moved to Dolphin folder
RebornedBrain Dec 20, 2023
09defbc
Moved DolphinReadingSuccess_59x63.png to Dolphin folder
RebornedBrain Dec 20, 2023
e9e44db
Merge branch 'reborned/nfc_ui_refactor' of [email protected]:RebornedBra…
RebornedBrain Dec 21, 2023
3edbf8f
Set proper led color for detect and read scenes
RebornedBrain Dec 28, 2023
d65dfe1
Added new notification sequence for semi_success results
RebornedBrain Dec 28, 2023
305d5bc
Use new sequence for semi_success nfc reads
RebornedBrain Dec 28, 2023
cf4b537
Different events are now throwed depending on read result
RebornedBrain Dec 28, 2023
bf78ace
Added handling of incomplete event for ultralight cards
RebornedBrain Dec 28, 2023
4b36347
Replaced image for iButton scene
RebornedBrain Dec 28, 2023
d55652d
Updated API for f18
RebornedBrain Dec 28, 2023
13fe872
Merge branch 'dev'
RebornedBrain Dec 28, 2023
f4e738a
Merge branch 'dev' into reborned/nfc_ui_refactor_2
gornekich Dec 28, 2023
5994c26
Merge branch 'dev' into reborned/nfc_ui_refactor_2
skotopes Dec 29, 2023
e2a7d5f
Fixed issue with unlock retry sequence
RebornedBrain Dec 29, 2023
82ecc8e
Fix after review
RebornedBrain Dec 29, 2023
0a44c75
Success notification replaced to semi success in case of incomplete m…
RebornedBrain Dec 29, 2023
c9ffe4a
New text for read scene
RebornedBrain Dec 29, 2023
18fbe36
New read result sound notification logic for mf classic cards
RebornedBrain Dec 29, 2023
843fa3e
Merge branch 'dev'
RebornedBrain Jan 10, 2024
1ea99d1
Merge branch 'dev'
RebornedBrain Jan 10, 2024
cfb974d
Change MIFARE name accroding to new requirements
RebornedBrain Jan 10, 2024
686fd20
New QR code image for MFKey app
RebornedBrain Jan 10, 2024
14af1fe
Update nfc_scene_mf_classic_mfkey_complete.c scene according to new U…
RebornedBrain Jan 10, 2024
85f437e
Update detect_reader.c and check_big_20x17.png
RebornedBrain Jan 10, 2024
4397e2c
New nfc save confirm scene added
RebornedBrain Jan 11, 2024
d3c994c
Implemented new flow for 'Detect Reader button' after partial mf clas…
RebornedBrain Jan 11, 2024
bfffaf5
UID for 15693 tags now shown on the new line
RebornedBrain Jan 12, 2024
685ed6b
Fix nfc unit tests
RebornedBrain Jan 12, 2024
01d178a
Merge branch 'dev' into reborned/nfc_ui_refactor_2
gornekich Jan 12, 2024
8799e11
Revert "Fix nfc unit tests"
RebornedBrain Jan 12, 2024
6103de1
Rolled back all Mifare renamings in library files
RebornedBrain Jan 12, 2024
22aba52
Revert "Change MIFARE name accroding to new requirements"
RebornedBrain Jan 12, 2024
321a56d
Now Mifare word is changed only on the app level without changes to l…
RebornedBrain Jan 12, 2024
c539cfa
Merge branch 'dev' into reborned/nfc_ui_refactor_2
skotopes Jan 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@ void nfc_render_iso15693_3_info(
}

void nfc_render_iso15693_3_brief(const Iso15693_3Data* data, FuriString* str) {
furi_string_cat_printf(str, "UID:");
furi_string_cat_printf(str, "UID:\n");

size_t uid_len;
const uint8_t* uid = iso15693_3_get_uid(data, &uid_len);

for(size_t i = 0; i < uid_len; i++) {
furi_string_cat_printf(str, " %02X", uid[i]);
furi_string_cat_printf(str, "%02X ", uid[i]);
}

if(data->system_info.flags & ISO15693_3_SYSINFO_FLAG_MEMORY) {
const uint16_t block_count = iso15693_3_get_block_count(data);
const uint8_t block_size = iso15693_3_get_block_size(data);

furi_string_cat_printf(str, "Memory: %u bytes\n", block_count * block_size);
furi_string_cat_printf(str, "\nMemory: %u bytes\n", block_count * block_size);
furi_string_cat_printf(str, "(%u blocks x %u bytes)", block_count, block_size);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ static void nfc_scene_info_on_enter_mf_classic(NfcApp* instance) {
FuriString* temp_str = furi_string_alloc();
furi_string_cat_printf(
temp_str, "\e#%s\n", nfc_device_get_name(device, NfcDeviceNameTypeFull));
furi_string_replace(temp_str, "Mifare", "MIFARE");

nfc_render_mf_classic_info(data, NfcProtocolFormatTypeFull, temp_str);

widget_add_text_scroll_element(
Expand Down Expand Up @@ -126,6 +128,8 @@ static void nfc_scene_read_success_on_enter_mf_classic(NfcApp* instance) {
FuriString* temp_str = furi_string_alloc();
furi_string_cat_printf(
temp_str, "\e#%s\n", nfc_device_get_name(device, NfcDeviceNameTypeFull));
furi_string_replace(temp_str, "Mifare", "MIFARE");

nfc_render_mf_classic_info(data, NfcProtocolFormatTypeShort, temp_str);

widget_add_text_scroll_element(
Expand Down Expand Up @@ -168,7 +172,7 @@ static void nfc_scene_emulate_on_enter_mf_classic(NfcApp* instance) {

static bool nfc_scene_read_menu_on_event_mf_classic(NfcApp* instance, uint32_t event) {
if(event == SubmenuIndexDetectReader) {
scene_manager_next_scene(instance->scene_manager, NfcSceneMfClassicDetectReader);
scene_manager_next_scene(instance->scene_manager, NfcSceneSaveConfirm);
dolphin_deed(DolphinDeedNfcDetectReader);
return true;
}
Expand Down
1 change: 1 addition & 0 deletions applications/main/nfc/scenes/nfc_scene_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ ADD_SCENE(nfc, debug, Debug)
ADD_SCENE(nfc, field, Field)
ADD_SCENE(nfc, retry_confirm, RetryConfirm)
ADD_SCENE(nfc, exit_confirm, ExitConfirm)
ADD_SCENE(nfc, save_confirm, SaveConfirm)

ADD_SCENE(nfc, mf_ultralight_write, MfUltralightWrite)
ADD_SCENE(nfc, mf_ultralight_write_success, MfUltralightWriteSuccess)
Expand Down
2 changes: 1 addition & 1 deletion applications/main/nfc/scenes/nfc_scene_extra_actions.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ void nfc_scene_extra_actions_on_enter(void* context) {
instance);
submenu_add_item(
submenu,
"Mifare Classic Keys",
"MIFARE Classic Keys",
SubmenuIndexMfClassicKeys,
nfc_scene_extra_actions_submenu_callback,
instance);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,13 @@ bool nfc_scene_mf_classic_detect_reader_on_event(void* context, SceneManagerEven
instance->listener = NULL;
}
mfkey32_logger_free(instance->mfkey32_logger);
if(scene_manager_has_previous_scene(instance->scene_manager, NfcSceneSaveSuccess)) {
consumed = scene_manager_search_and_switch_to_previous_scene(
instance->scene_manager, NfcSceneStart);
} else if(scene_manager_has_previous_scene(instance->scene_manager, NfcSceneReadSuccess)) {
consumed = scene_manager_search_and_switch_to_previous_scene(
instance->scene_manager, NfcSceneReadSuccess);
}
}

return consumed;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,16 @@ void nfc_scene_mf_classic_mfkey_complete_on_enter(void* context) {
widget_add_string_multiline_element(
instance->widget,
64,
32,
AlignCenter,
13,
AlignCenter,
AlignTop,
FontSecondary,
"Now use Mfkey32\nto extract keys");
"Now use Mfkey32 to extract \nkeys: lab.flipper.net/nfc-tools");
widget_add_icon_element(instance->widget, 50, 39, &I_MFKey_qr_25x25);
widget_add_button_element(
instance->widget,
GuiButtonTypeCenter,
"OK",
GuiButtonTypeRight,
"Finish",
nfc_scene_mf_classic_mfkey_complete_callback,
instance);

Expand All @@ -38,7 +39,7 @@ bool nfc_scene_mf_classic_mfkey_complete_on_event(void* context, SceneManagerEve
bool consumed = false;

if(event.type == SceneManagerEventTypeCustom) {
if(event.event == GuiButtonTypeCenter) {
if(event.event == GuiButtonTypeRight) {
consumed = scene_manager_search_and_switch_to_previous_scene(
instance->scene_manager, NfcSceneStart);
}
Expand Down
44 changes: 44 additions & 0 deletions applications/main/nfc/scenes/nfc_scene_save_confirm.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#include "../nfc_app_i.h"

void nfc_scene_save_confirm_dialog_callback(DialogExResult result, void* context) {
NfcApp* nfc = context;

view_dispatcher_send_custom_event(nfc->view_dispatcher, result);
}

void nfc_scene_save_confirm_on_enter(void* context) {
NfcApp* nfc = context;
DialogEx* dialog_ex = nfc->dialog_ex;

dialog_ex_set_left_button_text(dialog_ex, "Skip");
dialog_ex_set_right_button_text(dialog_ex, "Save");
dialog_ex_set_header(dialog_ex, "Save the Key?", 64, 0, AlignCenter, AlignTop);
dialog_ex_set_text(dialog_ex, "All unsaved data will be lost", 64, 12, AlignCenter, AlignTop);
dialog_ex_set_context(dialog_ex, nfc);
dialog_ex_set_result_callback(dialog_ex, nfc_scene_save_confirm_dialog_callback);

view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewDialogEx);
}

bool nfc_scene_save_confirm_on_event(void* context, SceneManagerEvent event) {
NfcApp* nfc = context;
bool consumed = false;

if(event.type == SceneManagerEventTypeCustom) {
if(event.event == DialogExResultRight) {
scene_manager_next_scene(nfc->scene_manager, NfcSceneSaveName);
consumed = true;
} else if(event.event == DialogExResultLeft) {
scene_manager_next_scene(nfc->scene_manager, NfcSceneMfClassicDetectReader);
consumed = true;
}
}
return consumed;
}

void nfc_scene_save_confirm_on_exit(void* context) {
NfcApp* nfc = context;

// Clean view
dialog_ex_reset(nfc->dialog_ex);
}
3 changes: 3 additions & 0 deletions applications/main/nfc/scenes/nfc_scene_save_success.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ bool nfc_scene_save_success_on_event(void* context, SceneManagerEvent event) {
if(scene_manager_has_previous_scene(nfc->scene_manager, NfcSceneMfClassicKeys)) {
consumed = scene_manager_search_and_switch_to_previous_scene(
nfc->scene_manager, NfcSceneMfClassicKeys);
} else if(scene_manager_has_previous_scene(nfc->scene_manager, NfcSceneSaveConfirm)) {
scene_manager_next_scene(nfc->scene_manager, NfcSceneMfClassicDetectReader);
consumed = true;
} else {
consumed = scene_manager_search_and_switch_to_another_scene(
nfc->scene_manager, NfcSceneFileSelect);
Expand Down
14 changes: 12 additions & 2 deletions applications/main/nfc/scenes/nfc_scene_set_type.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,20 @@ void nfc_scene_set_type_on_enter(void* context) {
nfc_protocol_support_common_submenu_callback,
instance);

FuriString* str = furi_string_alloc();
for(size_t i = 0; i < NfcDataGeneratorTypeNum; i++) {
const char* name = nfc_data_generator_get_name(i);
submenu_add_item(submenu, name, i, nfc_protocol_support_common_submenu_callback, instance);
furi_string_cat_str(str, nfc_data_generator_get_name(i));
furi_string_replace_str(str, "Mifare", "MIFARE");

submenu_add_item(
submenu,
furi_string_get_cstr(str),
i,
nfc_protocol_support_common_submenu_callback,
instance);
furi_string_reset(str);
}
furi_string_free(str);

view_dispatcher_switch_to_view(instance->view_dispatcher, NfcViewMenu);
}
Expand Down
2 changes: 1 addition & 1 deletion applications/main/nfc/views/detect_reader.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ static void detect_reader_draw_callback(Canvas* canvas, void* model) {
if(m->state == DetectReaderStateDone) {
canvas_set_font(canvas, FontPrimary);
canvas_draw_str_aligned(canvas, 51, 22, AlignLeft, AlignTop, "Completed!");
canvas_draw_icon(canvas, 20, 23, &I_check_big_20x17);
canvas_draw_icon(canvas, 24, 23, &I_check_big_20x17);
} else {
canvas_set_font(canvas, FontPrimary);
canvas_draw_str_aligned(canvas, 51, 22, AlignLeft, AlignTop, "Collecting...");
Expand Down
Binary file added assets/icons/NFC/MFKey_qr_25x25.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/icons/NFC/check_big_20x17.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.