Ещё про инженерный пароль от «Войи»

Ну началось 😅 Теперь меня не отпускают мысли как можно доработать приложение для получения инженерного пароля, которое я написал вчера.

Как я говорил, у «Флиппера» есть проблема — он ничего не знает о часовом поясе. В каждом приложении, где нужно его знать, приходится что-то решать отдельно, централизованного решения нет.

Я пока не стал заморачиваться, просто показываю три кода из трёх разных дней. Это, конечно, не совсем правильно. Учитывая, что часовые пояса у нас бывают от GMT-12:00 до GMT+14:00, есть небольшое окошко, где можно показать не три, а два кода. Но вряд ли это существенно что-то меняет, поэтому я этого делать не стал.

В общем, решил сделать как все — окошко с настройкой часового пояса. Если пояс задан, он будет показан на кнопке и выводиться будет только один код, если нет, на кнопке будет написано что-то типа «set timezone» и кодов будет три.

Скетч интерфейса выбора времени: блок «03:00» с стрелками, подписями «Black», «Gray», «GMT+3» и рукописными пометками на фоне расписания дня.
Проектирование интерфейса для установки часового пояса

Оставить комментарий

Оператор «__has_include»

Одна штука мне очень не нравилась в программировании под «Флиппер». Фреймворк устроен так, что картинки, используемые в приложениях, должны внедряться определённым способом.

А именно — в манифесте приложения, в директиве fap_icon_assets мы указываем папку, каждая картинка в которой, позже, на этапе сборки, будет преобразована в специальный массив. Этот массив всегда называется I_имя_файла_картинки. Массивы засовываются в файл со специальным именем, который надо импортировать в код через #include.

Поскольку это происходит во время сборки, редактор (я использую «Визуал Студио Код») этот файл не видит, поэтому подчёркивает мне его импорт и все использования массивов, которые в нём описаны, как ошибку.

Лично меня такое раздражает. В редакторе мне хочется видеть полное отсутствие ошибок.

Код на C для приложения на WatchMaker: вычисление координат и отрисовка иконки &I_logo_38x54 и текста "Today's passwords:" на холсте.
Пример того как отображаются упомянутые ошибки в приложении «Пароль для Войи»

В «Виселице» я с этим смирился, а сегодня каким-то чудом вспомнил про нестандартную директиву __has_include, которую как-то не доводилось использовать прежде. Она проверяет как раз то, что мне нужно — доступен файл для импорта или нет.

Условная компиляция: если определён макрос __has_include и заголовок "voyah_pass_icons.h" доступен, он подключается; иначе объявляется внешняя константа Icon I_logo_38x54.
Реальный пример того как можно сделать, чтобы редактор не считал, что у меня ошибка

Получается, что если файл для импорта ещё не готов, то мы его не импортируем, а нужный нам массив объявляем, как имеющий внешнюю реализацию. В итоге, в редакторе ошибок не остаётся.

2 комментария