dialogs.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "dialogs/dialogs_message.h"
  2. #include "dialogs_i.h"
  3. #include "dialogs_api_lock.h"
  4. #include "dialogs_module_file_browser.h"
  5. #include "dialogs_module_message.h"
  6. void dialog_file_browser_set_basic_options(
  7. DialogsFileBrowserOptions* options,
  8. const char* extension,
  9. const Icon* icon) {
  10. options->extension = extension;
  11. options->skip_assets = true;
  12. options->icon = icon;
  13. options->hide_ext = true;
  14. options->item_loader_callback = NULL;
  15. options->item_loader_context = NULL;
  16. }
  17. static DialogsApp* dialogs_app_alloc() {
  18. DialogsApp* app = malloc(sizeof(DialogsApp));
  19. app->message_queue = furi_message_queue_alloc(8, sizeof(DialogsAppMessage));
  20. return app;
  21. }
  22. static void dialogs_app_process_message(DialogsApp* app, DialogsAppMessage* message) {
  23. UNUSED(app);
  24. switch(message->command) {
  25. case DialogsAppCommandFileBrowser:
  26. message->return_data->bool_value =
  27. dialogs_app_process_module_file_browser(&message->data->file_browser);
  28. break;
  29. case DialogsAppCommandDialog:
  30. message->return_data->dialog_value =
  31. dialogs_app_process_module_message(&message->data->dialog);
  32. break;
  33. }
  34. API_LOCK_UNLOCK(message->lock);
  35. }
  36. int32_t dialogs_srv(void* p) {
  37. UNUSED(p);
  38. DialogsApp* app = dialogs_app_alloc();
  39. furi_record_create(RECORD_DIALOGS, app);
  40. DialogsAppMessage message;
  41. while(1) {
  42. if(furi_message_queue_get(app->message_queue, &message, FuriWaitForever) == FuriStatusOk) {
  43. dialogs_app_process_message(app, &message);
  44. }
  45. }
  46. return 0;
  47. }