#include <system_settings.h>
#include "Utils/EventBus.h"
+#include "Model/WeekFlags.h"
namespace utils {
*/
static void Unregister();
+ /**
+ * @brief Gets first day of the week for current calendar.
+ */
+ static model::WeekDay GetFirstDayOfWeek();
+
SystemSettings() = delete;
SystemSettings(const SystemSettings &) = delete;
SystemSettings &operator=(const SystemSettings &) = delete;
* limitations under the License.
*/
+#include <utils_i18n.h>
+
#include "Utils/SystemSettings.h"
#include "Utils/Log.h"
return is_24hour_format_prefered_;
}
+static model::WeekDay ucalendar_weekday_to_clock_weekday(int32_t i18n_weekday)
+{
+ switch (i18n_weekday)
+ {
+ case I18N_UCALENDAR_SUNDAY:
+ return model::WeekDay::SUNDAY;
+ case I18N_UCALENDAR_MONDAY:
+ return model::WeekDay::MONDAY;
+ case I18N_UCALENDAR_TUESDAY:
+ return model::WeekDay::TUESDAY;
+ case I18N_UCALENDAR_WEDNESDAY:
+ return model::WeekDay::WEDNESDAY;
+ case I18N_UCALENDAR_THURSDAY:
+ return model::WeekDay::THURSDAY;
+ case I18N_UCALENDAR_FRIDAY:
+ return model::WeekDay::FRIDAY;
+ case I18N_UCALENDAR_SATURDAY:
+ return model::WeekDay::SATURDAY;
+ default:
+ FAT("Invalid I18N weekday value: %d", i18n_weekday);
+ return model::WeekDay::MONDAY;
+ }
+}
+
+model::WeekDay SystemSettings::GetFirstDayOfWeek()
+{
+ i18n_ucalendar_h calendar;
+ int err;
+ int32_t weekday;
+
+ err = i18n_ucalendar_create(0, -1, SystemSettings::GetLocale(),
+ I18N_UCALENDAR_DEFAULT, &calendar);
+ if (err != I18N_ERROR_NONE)
+ {
+ ERR("i18n_ucalendar_create failed: %s", get_error_message(err));
+ return model::WeekDay::MONDAY;
+ }
+
+ err = i18n_ucalendar_get_attribute(calendar, I18N_UCALENDAR_FIRST_DAY_OF_WEEK, &weekday);
+ if (err != I18N_ERROR_NONE)
+ {
+ ERR("i18n_ucalendar_get_attribute failed: %s", get_error_message(err));
+ i18n_ucalendar_destroy(calendar);
+ return model::WeekDay::MONDAY;
+ }
+
+ i18n_ucalendar_destroy(calendar);
+ return ucalendar_weekday_to_clock_weekday(weekday);
+}
+
} //namespace utils