bank_card.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "bank_card.h"
  2. #include <gui/modules/widget.h>
  3. #include <m-string.h>
  4. struct BankCard {
  5. Widget* widget;
  6. };
  7. BankCard* bank_card_alloc() {
  8. BankCard* bank_card = furi_alloc(sizeof(BankCard));
  9. bank_card->widget = widget_alloc();
  10. return bank_card;
  11. }
  12. void bank_card_free(BankCard* bank_card) {
  13. furi_assert(bank_card);
  14. widget_free(bank_card->widget);
  15. free(bank_card);
  16. }
  17. View* bank_card_get_view(BankCard* bank_card) {
  18. furi_assert(bank_card);
  19. return widget_get_view(bank_card->widget);
  20. }
  21. void bank_card_clear(BankCard* bank_card) {
  22. furi_assert(bank_card);
  23. widget_clear(bank_card->widget);
  24. }
  25. void bank_card_set_name(BankCard* bank_card, char* name) {
  26. furi_assert(bank_card);
  27. furi_assert(name);
  28. widget_add_string_element(
  29. bank_card->widget, 64, 6, AlignCenter, AlignTop, FontSecondary, name);
  30. }
  31. void bank_card_set_number(BankCard* bank_card, uint8_t* number) {
  32. furi_assert(bank_card);
  33. furi_assert(number);
  34. string_t num_str;
  35. string_init(num_str);
  36. for(uint8_t i = 0; i < 8; i += 2) {
  37. string_cat_printf(num_str, "%02X%02X ", number[i], number[i + 1]);
  38. }
  39. widget_add_string_element(
  40. bank_card->widget, 25, 22, AlignLeft, AlignTop, FontSecondary, string_get_cstr(num_str));
  41. widget_add_icon_element(bank_card->widget, 6, 20, &I_EMV_Chip_14x11);
  42. string_clear(num_str);
  43. }
  44. void bank_card_set_exp_date(BankCard* bank_card, uint8_t mon, uint16_t year) {
  45. furi_assert(bank_card);
  46. char exp_date_str[16];
  47. snprintf(exp_date_str, sizeof(exp_date_str), "Exp: %02d/%02d", mon, year % 100);
  48. widget_add_string_element(
  49. bank_card->widget, 122, 54, AlignRight, AlignBottom, FontSecondary, exp_date_str);
  50. }
  51. void bank_card_set_cardholder_name(BankCard* bank_card, char* name) {
  52. furi_assert(bank_card);
  53. furi_assert(name);
  54. widget_add_string_element(bank_card->widget, 6, 37, AlignLeft, AlignTop, FontSecondary, name);
  55. }