dialogs.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "dialogs/dialogs_message.h"
  2. #include "dialogs_i.h"
  3. #include <toolbox/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. options->base_path = NULL;
  17. }
  18. static DialogsApp* dialogs_app_alloc() {
  19. DialogsApp* app = malloc(sizeof(DialogsApp));
  20. app->message_queue = furi_message_queue_alloc(8, sizeof(DialogsAppMessage));
  21. return app;
  22. }
  23. static void dialogs_app_process_message(DialogsApp* app, DialogsAppMessage* message) {
  24. UNUSED(app);
  25. switch(message->command) {
  26. case DialogsAppCommandFileBrowser:
  27. message->return_data->bool_value =
  28. dialogs_app_process_module_file_browser(&message->data->file_browser);
  29. break;
  30. case DialogsAppCommandDialog:
  31. message->return_data->dialog_value =
  32. dialogs_app_process_module_message(&message->data->dialog);
  33. break;
  34. }
  35. api_lock_unlock(message->lock);
  36. }
  37. int32_t dialogs_srv(void* p) {
  38. UNUSED(p);
  39. DialogsApp* app = dialogs_app_alloc();
  40. furi_record_create(RECORD_DIALOGS, app);
  41. DialogsAppMessage message;
  42. while(1) {
  43. if(furi_message_queue_get(app->message_queue, &message, FuriWaitForever) == FuriStatusOk) {
  44. dialogs_app_process_message(app, &message);
  45. }
  46. }
  47. return 0;
  48. }