Merge pull request #361 from ArjanOnwezen/iso-date-time

ISO datetime for Clock, FileManager, Frequency manager, added clock UI options
This commit is contained in:
Erwin Ried 2021-06-07 23:48:19 +02:00 committed by GitHub
commit f1ba8c3dee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 114 additions and 41 deletions

View File

@ -103,19 +103,19 @@ private:
}; };
Labels labels { Labels labels {
{ { 2 * 8, 14 * 8 }, "Save as:", Color::white() } { { 1 * 8, 12 * 8 }, "Save as:", Color::white() }
}; };
Button button_save_name { Button button_save_name {
{ 2 * 8, 17 * 8, 14 * 8, 48 }, { 1 * 8, 17 * 8, 12 * 8, 48 },
"Name (set)" "Name (set)"
}; };
Button button_save_timestamp { Button button_save_timestamp {
{ 2 * 8, 25 * 8, 14 * 8, 48 }, { 1 * 8, 25 * 8, 12 * 8, 48 },
"Timestamp:" "Timestamp:"
}; };
LiveDateTime live_timestamp { LiveDateTime live_timestamp {
{ 17 * 8, 27 * 8, 11 * 8, 16 } { 14 * 8, 27 * 8, 16 * 8, 16 }
}; };
}; };

View File

@ -285,15 +285,17 @@ SetUIView::SetUIView(NavigationView& nav) {
&checkbox_bloff, &checkbox_bloff,
&options_bloff, &options_bloff,
&checkbox_showsplash, &checkbox_showsplash,
&checkbox_showclock,
&options_clockformat,
&button_ok &button_ok
}); });
checkbox_speaker.set_value(persistent_memory::config_speaker()); checkbox_speaker.set_value(persistent_memory::config_speaker());
checkbox_showsplash.set_value(persistent_memory::config_splash()); checkbox_showsplash.set_value(persistent_memory::config_splash());
checkbox_showclock.set_value(!persistent_memory::hide_clock());
//checkbox_login.set_value(persistent_memory::config_login()); //checkbox_login.set_value(persistent_memory::config_login());
uint32_t backlight_timer = persistent_memory::config_backlight_timer(); uint32_t backlight_timer = persistent_memory::config_backlight_timer();
if (backlight_timer) { if (backlight_timer) {
checkbox_bloff.set_value(true); checkbox_bloff.set_value(true);
options_bloff.set_by_value(backlight_timer); options_bloff.set_by_value(backlight_timer);
@ -301,6 +303,12 @@ SetUIView::SetUIView(NavigationView& nav) {
options_bloff.set_selected_index(0); options_bloff.set_selected_index(0);
} }
if (persistent_memory::clock_with_date()) {
options_clockformat.set_selected_index(1);
} else {
options_clockformat.set_selected_index(0);
}
checkbox_speaker.on_select = [this](Checkbox&, bool v) { checkbox_speaker.on_select = [this](Checkbox&, bool v) {
if (v) audio::output::speaker_mute(); //Just mute audio if speaker is disabled if (v) audio::output::speaker_mute(); //Just mute audio if speaker is disabled
@ -316,7 +324,14 @@ SetUIView::SetUIView(NavigationView& nav) {
else else
persistent_memory::set_config_backlight_timer(0); persistent_memory::set_config_backlight_timer(0);
if (checkbox_showclock.value()){
if (options_clockformat.selected_index() == 1)
persistent_memory::set_clock_with_date(true);
else
persistent_memory::set_clock_with_date(false);
}
persistent_memory::set_config_splash(checkbox_showsplash.value()); persistent_memory::set_config_splash(checkbox_showsplash.value());
persistent_memory::set_clock_hidden(!checkbox_showclock.value());
//persistent_memory::set_config_login(checkbox_login.value()); //persistent_memory::set_config_login(checkbox_login.value());
nav.pop(); nav.pop();
}; };

View File

@ -51,8 +51,8 @@ public:
private: private:
Labels labels { Labels labels {
{ { 6 * 8, 7 * 16 }, "YYYY/MM/DD HH:MM:SS", Color::grey() }, { { 6 * 8, 7 * 16 }, "YYYY-MM-DD HH:MM:SS", Color::grey() },
{ { 10 * 8, 9 * 16 }, "/ / : :", Color::light_grey() } { { 10 * 8, 9 * 16 }, "- - : :", Color::light_grey() }
}; };
NumberField field_year { NumberField field_year {
@ -226,19 +226,19 @@ private:
};*/ };*/
Checkbox checkbox_speaker { Checkbox checkbox_speaker {
{ 3 * 8, 2 * 16 }, { 3 * 8, 4 * 16 },
20, 20,
"Hide H1 Speaker option" "Hide H1 Speaker option"
}; };
Checkbox checkbox_bloff { Checkbox checkbox_bloff {
{ 3 * 8, 5 * 16 }, { 3 * 8, 6 * 16 },
20, 20,
"Backlight off after:" "Backlight off after:"
}; };
OptionsField options_bloff { OptionsField options_bloff {
{ 52, 6 * 16 + 8 }, { 52, 7 * 16 + 8 },
10, 20,
{ {
{ "5 seconds", 5 }, { "5 seconds", 5 },
{ "15 seconds", 15 }, { "15 seconds", 15 },
@ -252,10 +252,25 @@ private:
Checkbox checkbox_showsplash { Checkbox checkbox_showsplash {
{ 3 * 8, 9 * 16 }, { 3 * 8, 9 * 16 },
11, 20,
"Show splash" "Show splash"
}; };
Checkbox checkbox_showclock {
{ 3 * 8, 11 * 16 },
20,
"Show clock with:"
};
OptionsField options_clockformat {
{ 52, 12 * 16 + 8 },
20,
{
{ "time only", 0 },
{ "time and date", 1 }
}
};
Button button_ok { Button button_ok {
{ 2 * 8, 16 * 16, 12 * 8, 32 }, { 2 * 8, 16 * 16, 12 * 8, 32 },
"Save" "Save"

View File

@ -165,8 +165,8 @@ std::string to_string_datetime(const rtc::RTC& value, const TimeFormat format) {
std::string string { "" }; std::string string { "" };
if (format == YMDHMS) { if (format == YMDHMS) {
string += to_string_dec_uint(value.year(), 4) + "/" + string += to_string_dec_uint(value.year(), 4) + "-" +
to_string_dec_uint(value.month(), 2, '0') + "/" + to_string_dec_uint(value.month(), 2, '0') + "-" +
to_string_dec_uint(value.day(), 2, '0') + " "; to_string_dec_uint(value.day(), 2, '0') + " ";
} }
@ -189,11 +189,11 @@ std::string to_string_timestamp(const rtc::RTC& value) {
} }
std::string to_string_FAT_timestamp(const FATTimestamp& timestamp) { std::string to_string_FAT_timestamp(const FATTimestamp& timestamp) {
return to_string_dec_uint((timestamp.FAT_date >> 9) + 1980) + "/" + return to_string_dec_uint((timestamp.FAT_date >> 9) + 1980) + "-" +
to_string_dec_uint((timestamp.FAT_date >> 5) & 0xF, 2) + "/" + to_string_dec_uint((timestamp.FAT_date >> 5) & 0xF, 2, '0') + "-" +
to_string_dec_uint((timestamp.FAT_date & 0x1F), 2) + " " + to_string_dec_uint((timestamp.FAT_date & 0x1F), 2, '0') + " " +
to_string_dec_uint((timestamp.FAT_time >> 11), 2) + ":" + to_string_dec_uint((timestamp.FAT_time >> 11), 2, '0') + ":" +
to_string_dec_uint((timestamp.FAT_time >> 5) & 0x3F, 2); to_string_dec_uint((timestamp.FAT_time >> 5) & 0x3F, 2, '0');
} }
std::string unit_auto_scale(double n, const uint32_t base_nano, uint32_t precision) { std::string unit_auto_scale(double n, const uint32_t base_nano, uint32_t precision) {

View File

@ -68,7 +68,7 @@
#include "ui_view_wav.hpp" #include "ui_view_wav.hpp"
#include "ui_whipcalc.hpp" #include "ui_whipcalc.hpp"
#include "acars_app.hpp" //#include "acars_app.hpp"
#include "ais_app.hpp" #include "ais_app.hpp"
#include "analog_audio_app.hpp" #include "analog_audio_app.hpp"
#include "analog_tv_app.hpp" #include "analog_tv_app.hpp"
@ -350,13 +350,21 @@ InformationView::InformationView(
}); });
version.set_style(&style_infobar); version.set_style(&style_infobar);
ltime.set_hide_clock(portapack::persistent_memory::hide_clock());
ltime.set_style(&style_infobar); ltime.set_style(&style_infobar);
ltime.set_seconds_enabled(true); ltime.set_seconds_enabled(true);
ltime.set_date_enabled(false); ltime.set_date_enabled(portapack::persistent_memory::clock_with_date());
set_dirty(); set_dirty();
} }
void InformationView::refresh() {
ltime.set_hide_clock(portapack::persistent_memory::hide_clock());
ltime.set_seconds_enabled(true);
ltime.set_date_enabled(portapack::persistent_memory::clock_with_date());
}
/* Navigation ************************************************************/ /* Navigation ************************************************************/
bool NavigationView::is_top() const { bool NavigationView::is_top() const {
@ -387,6 +395,7 @@ void NavigationView::pop() {
update_view(); update_view();
} }
} }
void NavigationView::pop_modal() { void NavigationView::pop_modal() {
@ -606,6 +615,7 @@ SystemView::SystemView(
} }
else{ else{
add_child(&info_view); add_child(&info_view);
info_view.refresh();
} }
this->status_view.set_back_enabled(!this->navigation_view.is_top()); this->status_view.set_back_enabled(!this->navigation_view.is_top());

View File

@ -212,7 +212,7 @@ private:
class InformationView : public View { class InformationView : public View {
public: public:
InformationView(NavigationView& nav); InformationView(NavigationView& nav);
void refresh();
private: private:
static constexpr auto version_string = "v1.4.0"; static constexpr auto version_string = "v1.4.0";
NavigationView& nav_; NavigationView& nav_;
@ -228,8 +228,10 @@ private:
}; };
LiveDateTime ltime { LiveDateTime ltime {
{174, 0, 8 * 8, 16} {86, 0, 19 * 8, 16}
}; };
}; };
class BMPView : public View { class BMPView : public View {

View File

@ -224,9 +224,17 @@ void set_playdead_sequence(const uint32_t new_value) {
// ui_config is an uint32_t var storing information bitwise // ui_config is an uint32_t var storing information bitwise
// bits 0,1,2 store the backlight timer // bits 0,1,2 store the backlight timer
// bits 31, 30,29,28,27 stores the different single bit configs depicted below // bits 31, 30,29,28,27, 26, 25 stores the different single bit configs depicted below
// bits on position 4 to 19 (16 bits) store the clkout frequency // bits on position 4 to 19 (16 bits) store the clkout frequency
bool hide_clock() { // clock hidden from main menu
return data->ui_config & (1 << 25);
}
bool clock_with_date() { // show clock with date, if not hidden
return data->ui_config & (1 << 26);
}
bool clkout_enabled() { bool clkout_enabled() {
return data->ui_config & (1 << 27); return data->ui_config & (1 << 27);
} }
@ -251,6 +259,14 @@ uint32_t config_backlight_timer() {
return timer_seconds[data->ui_config & 7]; //first three bits, 8 possible values return timer_seconds[data->ui_config & 7]; //first three bits, 8 possible values
} }
void set_clock_hidden(bool v) {
data->ui_config = (data->ui_config & ~(1 << 25)) | (v << 25);
}
void set_clock_with_date(bool v) {
data->ui_config = (data->ui_config & ~(1 << 26)) | (v << 26);
}
void set_clkout_enabled(bool v) { void set_clkout_enabled(bool v) {
data->ui_config = (data->ui_config & ~(1 << 27)) | (v << 27); data->ui_config = (data->ui_config & ~(1 << 27)) | (v << 27);
} }

View File

@ -75,11 +75,15 @@ bool stealth_mode();
void set_stealth_mode(const bool v); void set_stealth_mode(const bool v);
bool config_splash(); bool config_splash();
bool hide_clock();
bool clock_with_date();
bool config_login(); bool config_login();
bool config_speaker(); bool config_speaker();
uint32_t config_backlight_timer(); uint32_t config_backlight_timer();
void set_config_splash(bool v); void set_config_splash(bool v);
void set_clock_hidden(bool v);
void set_clock_with_date(bool v);
void set_config_login(bool v); void set_config_login(bool v);
void set_config_speaker(bool v); void set_config_speaker(bool v);
void set_config_backlight_timer(uint32_t i); void set_config_backlight_timer(uint32_t i);

View File

@ -410,23 +410,29 @@ void Labels::paint(Painter& painter) {
void LiveDateTime::on_tick_second() { void LiveDateTime::on_tick_second() {
rtcGetTime(&RTCD1, &datetime); rtcGetTime(&RTCD1, &datetime);
text = ""; text = "";
if(!hide_clock) {
if(date_enabled){ if(date_enabled){
text = to_string_dec_uint(datetime.month(), 2, '0') + "/" + to_string_dec_uint(datetime.day(), 2, '0') + " "; text = to_string_dec_uint(datetime.year(), 4, '0') + "-" +
} to_string_dec_uint(datetime.month(), 2, '0') + "-" +
to_string_dec_uint(datetime.day(), 2, '0') + " ";
text = text + to_string_dec_uint(datetime.hour(), 2, '0') + ":" + to_string_dec_uint(datetime.minute(), 2, '0'); }
else{
text = " ";
}
text = text + to_string_dec_uint(datetime.hour(), 2, '0') + ":" + to_string_dec_uint(datetime.minute(), 2, '0');
if(seconds_enabled){ if(seconds_enabled){
text += ":"; text += ":";
if(init_delay==0) if(init_delay==0)
text += to_string_dec_uint(datetime.second(), 2, '0'); text += to_string_dec_uint(datetime.second(), 2, '0');
else else
{ {
// Placeholder while the seconds are not updated // Placeholder while the seconds are not updated
text += "XX"; text += "XX";
init_delay--; init_delay--;
}
} }
} }
set_dirty(); set_dirty();
@ -459,6 +465,9 @@ void LiveDateTime::paint(Painter& painter) {
text text
); );
} }
void LiveDateTime::set_hide_clock(bool new_value){
this->hide_clock = new_value;
}
void LiveDateTime::set_date_enabled(bool new_value){ void LiveDateTime::set_date_enabled(bool new_value){
this->date_enabled = new_value; this->date_enabled = new_value;

View File

@ -244,6 +244,7 @@ public:
void paint(Painter& painter) override; void paint(Painter& painter) override;
void set_hide_clock(bool new_value);
void set_seconds_enabled(bool new_value); void set_seconds_enabled(bool new_value);
void set_date_enabled(bool new_value); void set_date_enabled(bool new_value);
@ -255,6 +256,7 @@ private:
void on_tick_second(); void on_tick_second();
uint16_t init_delay = 4; uint16_t init_delay = 4;
bool hide_clock = false;
bool date_enabled = true; bool date_enabled = true;
bool seconds_enabled = false; bool seconds_enabled = false;