From: Lukasz Stanislawski Date: Thu, 27 Jul 2017 13:58:30 +0000 (+0200) Subject: SystemSettings: add FirstDayOfWeek attribute X-Git-Tag: submit/tizen/20170807.062126~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2610299396d46f11a912c38b64b8ca6f199e3f33;p=profile%2Fmobile%2Fapps%2Fnative%2Fclock.git SystemSettings: add FirstDayOfWeek attribute FirstDayOfWeek will be used to implement sorting of week flags on alarm list page and week flags edition page. Change-Id: I2f263d60ef537f844d22677723396b648cb42ec3 --- diff --git a/clock/inc/Model/WeekFlags.h b/clock/inc/Model/WeekFlags.h index 5226068..7704249 100644 --- a/clock/inc/Model/WeekFlags.h +++ b/clock/inc/Model/WeekFlags.h @@ -83,7 +83,6 @@ namespace model { */ bool IsOn(WeekDay day); - /** * @brief Check if flag is set for any of given day flag. * @param[in] day to check. @@ -111,6 +110,7 @@ namespace model { * @param[in] a WeekFlags reference. */ inline bool operator==(const WeekFlags &a) const { return a.raw_flags == raw_flags; } + private: unsigned int raw_flags; }; diff --git a/clock/inc/Utils/SystemSettings.h b/clock/inc/Utils/SystemSettings.h index 9ce1151..5ce6fce 100644 --- a/clock/inc/Utils/SystemSettings.h +++ b/clock/inc/Utils/SystemSettings.h @@ -21,6 +21,7 @@ #include #include "Utils/EventBus.h" +#include "Model/WeekFlags.h" namespace utils { @@ -70,6 +71,11 @@ public: */ 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; diff --git a/clock/src/Utils/SystemSettings.cpp b/clock/src/Utils/SystemSettings.cpp index 4c1f6ff..5a29af1 100644 --- a/clock/src/Utils/SystemSettings.cpp +++ b/clock/src/Utils/SystemSettings.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#include + #include "Utils/SystemSettings.h" #include "Utils/Log.h" @@ -111,4 +113,54 @@ bool SystemSettings::Is24HourFormatPrefered() 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