public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { AlarmWeekFlag flag = (AlarmWeekFlag)value; string s = ""; if (flag == 0) { s = "Never"; } else if (flag == AlarmWeekFlag.AllDays) { s = "Everyday"; } else { for (int i = 1; i < 7; i++) { int mask = 1 << i; if (((int)flag & mask) > 0) { switch (mask) { case (int)AlarmWeekFlag.Monday: s += "Mon "; break; case (int)AlarmWeekFlag.Tuesday: s += "Tue "; break; case (int)AlarmWeekFlag.Wednesday: s += "Wed "; break; case (int)AlarmWeekFlag.Thursday: s += "Thu "; break; case (int)AlarmWeekFlag.Friday: s += "Fri "; break; case (int)AlarmWeekFlag.Saturday: s += "Sat "; break; } } } if (((int)flag & 0x1) > 0) { s += "Sun "; } } return(s); }
private Native.AlarmWeekFlag Convert(AlarmWeekFlag flag) { Native.AlarmWeekFlag nativeWeekFlag = 0; if (flag == AlarmWeekFlag.AllDays) { nativeWeekFlag = Native.AlarmWeekFlag.AllDays; } else if (flag == AlarmWeekFlag.WeekDays) { nativeWeekFlag = Native.AlarmWeekFlag.WeekDays; } else { for (int i = 1; i < 7; i++) { int mask = 1 << i; if (((int)flag & mask) > 0) { switch (mask) { case (int)AlarmWeekFlag.Monday: nativeWeekFlag |= Native.AlarmWeekFlag.Monday; break; case (int)AlarmWeekFlag.Tuesday: nativeWeekFlag |= Native.AlarmWeekFlag.Tuesday; break; case (int)AlarmWeekFlag.Wednesday: nativeWeekFlag |= Native.AlarmWeekFlag.Wednesday; break; case (int)AlarmWeekFlag.Thursday: nativeWeekFlag |= Native.AlarmWeekFlag.Thursday; break; case (int)AlarmWeekFlag.Friday: nativeWeekFlag |= Native.AlarmWeekFlag.Friday; break; case (int)AlarmWeekFlag.Saturday: nativeWeekFlag |= Native.AlarmWeekFlag.Saturday; break; } } } if (((int)flag & 0x1) > 0) { nativeWeekFlag |= Native.AlarmWeekFlag.Sunday; } } return(nativeWeekFlag); }
/// <summary> /// Update the row based on newly changed week flag /// </summary> /// <param name="alarmData">The alarm record to update alarm week flag</param> /// <seealso cref="AlarmRecord"> /// <param name="changed">The changed alarm week flag</param> /// <seealso cref="AlarmWeekFlag"> /// <param name="value">This input is currently not used but defined for future use</param> private void Update(AlarmRecord alarmData, AlarmWeekFlag changed, bool value) { if (value) { AlarmModel.BindableAlarmRecord.WeekFlag = alarmData.WeekFlag | changed; } else { AlarmModel.BindableAlarmRecord.WeekFlag = alarmData.WeekFlag & ~changed; } }
/// <summary> /// Converts value of AlarmWeekFlag enum to the DaysOfWeekFlags enum value. /// </summary> /// <param name="alarmWeekFlag">Input AlarmWeekFlag value.</param> /// <returns>Output DaysOfWeekFlags value.</returns> private DaysOfWeekFlags AlarmWeek2DaysOfWeek(AlarmWeekFlag alarmWeekFlag) { return(new DaysOfWeekFlags { Monday = (alarmWeekFlag & AlarmWeekFlag.Monday) != 0, Tuesday = (alarmWeekFlag & AlarmWeekFlag.Tuesday) != 0, Wednesday = (alarmWeekFlag & AlarmWeekFlag.Wednesday) != 0, Thursday = (alarmWeekFlag & AlarmWeekFlag.Thursday) != 0, Friday = (alarmWeekFlag & AlarmWeekFlag.Friday) != 0, Saturday = (alarmWeekFlag & AlarmWeekFlag.Saturday) != 0, Sunday = (alarmWeekFlag & AlarmWeekFlag.Sunday) != 0 }); }
/// <summary> /// Converts value of DaysOfWeekFlags enum to the AlarmWeekFlag enum value. /// </summary> /// <param name="weekFlags">Input DaysOfWeekFlags value.</param> /// <returns>Output AlarmWeekFlag value.</returns> private AlarmWeekFlag DaysOfWeek2AlarmWeek(DaysOfWeekFlags weekFlags) { AlarmWeekFlag retFlag = 0; // Result flag returned at the end of method. retFlag = weekFlags.Monday ? retFlag | AlarmWeekFlag.Monday : retFlag; retFlag = weekFlags.Tuesday ? retFlag | AlarmWeekFlag.Tuesday : retFlag; retFlag = weekFlags.Wednesday ? retFlag | AlarmWeekFlag.Wednesday : retFlag; retFlag = weekFlags.Thursday ? retFlag | AlarmWeekFlag.Thursday : retFlag; retFlag = weekFlags.Friday ? retFlag | AlarmWeekFlag.Friday : retFlag; retFlag = weekFlags.Saturday ? retFlag | AlarmWeekFlag.Saturday : retFlag; retFlag = weekFlags.Sunday ? retFlag | AlarmWeekFlag.Sunday : retFlag; return(retFlag); }
/// <summary> /// Sets an alarm to be triggered periodically, starting at a specific time. /// The date describes the time of the first occurrence. /// The weekFlag is the repeat value of the days of the week. /// If the weekFlag is AlarmWeekFlag.Tuesday, the alarm will repeat every Tuesday at a specific time. /// </summary> /// <remarks>This operation is permitted with UI application appcontrol only.</remarks> /// <param name="value"> The first active alarm time. </param> /// <param name="weekFlag"> The day of the week, AlarmWeekFlag may be a combination of days, like AlarmWeekFlag.Sunday | AlarmWeekFlag.Monday.</param> /// <param name="appControl"> The destination AppControl to perform specific work when the alarm is triggered. </param> /// <returns> An alarm instance is created with the set param values.</returns> /// <exception cref="ArgumentException">Thrown in case of an invalid parameter.</exception> /// <exception cref="UnauthorizedAccessException">Thrown in case of a permission denied.</exception> /// <exception cref="InvalidOperationException">Thrown in case of any internal error.</exception> /// <privilege>http://tizen.org/privilege/alarm.set</privilege> /// <since_tizen> 3 </since_tizen> public static Alarm CreateAlarm(DateTime value, AlarmWeekFlag weekFlag, AppControl appControl) { Alarm alarm = null; int alarmId; Interop.Alarm.DateTime time = ConvertDateTimeToStruct(value); AlarmError ret = (AlarmError)Interop.Alarm.CreateAlarmRecurWeek(appControl.SafeAppControlHandle, ref time, (int)weekFlag, out alarmId); alarm = new Alarm(alarmId); if (ret != AlarmError.None) { throw AlarmErrorFactory.GetException(ret, "Failed to create Alarm"); } return(alarm); }
/// <summary> /// Sets a notification alarm to be triggered periodically, starting at a specific time. /// The date describes the time of the first occurrence. /// The weekFlag is the repeat value of the days of the week. /// If the weekFlag is AlarmWeekFlag.Tuesday, the alarm will repeat every Tuesday at a specific time. /// </summary> /// <param name="dateTime"> The first active alarm time. </param> /// <param name="weekFlag"> The day of the week, AlarmWeekFlag may be a combination of days, /// like AlarmWeekFlag.Sunday | AlarmWeekFlag.Monday.</param> /// <param name="notification"> The notification to be posted when the alarm is triggered. </param> /// <returns> An alarm instance is created with the set param values.</returns> /// <exception cref="ArgumentException">Thrown in case of an invalid parameter.</exception> /// <exception cref="UnauthorizedAccessException">Thrown in case of a permission denied.</exception> /// <exception cref="InvalidOperationException">Thrown in case of any internal error.</exception> /// <privilege>http://tizen.org/privilege/alarm.set</privilege> /// <privilege>http://tizen.org/privilege/notification</privilege> /// <since_tizen> 3 </since_tizen> public static Alarm CreateAlarm(DateTime dateTime, AlarmWeekFlag weekFlag, Notification notification) { Alarm alarm = null; int alarmId; NotificationSafeHandle safeHandle = NotificationManager.MakeNotificationSafeHandle(notification); Interop.Alarm.DateTime time = ConvertDateTimeToStruct(dateTime); AlarmError ret = Interop.Alarm.CreateAlarmNotiRecurWeek(safeHandle, ref time, (int)weekFlag, out alarmId); if (ret != AlarmError.None) { throw AlarmErrorFactory.GetException(ret, "Failed to create Alarm"); } alarm = new Alarm(alarmId); return(alarm); }
/// <summary> /// Checks whether this CheckBox should turn on or off /// </summary> /// <param name="alarmRecordWeekFlag">The alarm record week flag</param> /// <seealso cref="AlarmWeekFlag"> /// <param name="thisCellWeekFlag">The week flag for this cell</param> /// <seealso cref="AlarmWeekFlag"> /// <param name="value">Returns whether this cell CheckBox should turn on or off</param> private bool IsTurnOn(AlarmWeekFlag alarmRecordWeekFlag, AlarmWeekFlag thisCellWeekFlag) { if (thisCellWeekFlag == AlarmWeekFlag.AllDays) { if (alarmRecordWeekFlag == thisCellWeekFlag) { return(true); } else { return(false); } } else if (((int)alarmRecordWeekFlag & (int)thisCellWeekFlag) > 0) { return(true); } else { return(false); } }
private static Native.AlarmWeekFlag Convert(AlarmWeekFlag flag) { Native.AlarmWeekFlag ret = Native.AlarmWeekFlag.AllDays; switch (flag) { case AlarmWeekFlag.Monday: ret = Native.AlarmWeekFlag.Monday; break; case AlarmWeekFlag.Tuesday: ret = Native.AlarmWeekFlag.Tuesday; break; case AlarmWeekFlag.Wednesday: ret = Native.AlarmWeekFlag.Wednesday; break; case AlarmWeekFlag.Thursday: ret = Native.AlarmWeekFlag.Thursday; break; case AlarmWeekFlag.Friday: ret = Native.AlarmWeekFlag.Friday; break; case AlarmWeekFlag.WeekDays: ret = Native.AlarmWeekFlag.WeekDays; break; case AlarmWeekFlag.AllDays: ret = Native.AlarmWeekFlag.AllDays; break; default: break; } return(ret); }
/// <summary> /// Converting source value to target value /// </summary> /// <param name="value">Source object</param> /// <seealso cref="System.object"> /// <param name="targetType">The target type to convert</param> /// <seealso cref="Type"> /// <param name="CultureInfo">The culture info</param> /// <seealso cref="CultureInfo"> /// <returns>Returns converted string</returns> public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { // Check alarm type if (value.GetType() == typeof(AlarmTypes)) { AlarmTypes modelValue = (AlarmTypes)value; string s = ""; switch (modelValue) { // case of sound type case AlarmTypes.Sound: s = "Sound"; break; // case of vibration type case AlarmTypes.Vibration: s = "Vibration"; break; // case of sound and vibration case AlarmTypes.SoundVibration: s = "Vibration and sound"; break; } return(s); } // Check alarm tone type else if (value.GetType() == typeof(AlarmToneTypes)) { AlarmToneTypes modelValue = (AlarmToneTypes)value; string s = ""; switch (modelValue) { // case of default case AlarmToneTypes.Default: s = "Default"; break; // case of alarm mp3 case AlarmToneTypes.AlarmMp3: s = "alarm.mp3"; break; // case of rington sdk case AlarmToneTypes.RingtoneSdk: s = "ringtone_sdk.mp3"; break; } return(s); } else if (value.GetType() == typeof(AlarmWeekFlag)) { string s = ""; AlarmWeekFlag flag = (AlarmWeekFlag)value; // case of week flag never if (flag == AlarmWeekFlag.Never) { // case of never s = "Never"; } // case of all days else if (flag == AlarmWeekFlag.AllDays) { // case of everyday s = "Everyday"; } // case of week other else { for (int i = 1; i < 7; i++) { int mask = 1 << i; if (((int)flag & mask) > 0) { switch (mask) { case (int)AlarmWeekFlag.Monday: s += "Mon "; break; case (int)AlarmWeekFlag.Tuesday: s += "Tue "; break; case (int)AlarmWeekFlag.Wednesday: s += "Wed "; break; case (int)AlarmWeekFlag.Thursday: s += "Thu "; break; case (int)AlarmWeekFlag.Friday: s += "Fri "; break; case (int)AlarmWeekFlag.Saturday: s += "Sat "; break; } } } if (((int)flag & 0x1) > 0) { s += "Sun "; } } return(s); } else { return(null); } }
/// <summary> /// Constructor /// </summary> /// <param name="weekFlag">The week day repeat setting (bit stream)</param> /// <seealso cref="AlarmWeekFlag"> public AlarmRepeatCell(AlarmWeekFlag weekFlag) { View = new AlarmRepeatRow(weekFlag); }
/// <summary> /// CheckBox which users can check to indicate alarm repeat /// </summary> /// <param name="weekFlag">Week flag to indicate which week flag this row will show</param> /// <seealso cref="AlarmWeekFlag"> public AlarmRepeatRow(AlarmWeekFlag weekFlag) { if (mainLabel != null) { return; } HeightRequest = 120; VerticalOptions = LayoutOptions.Start; switch (weekFlag) { case AlarmWeekFlag.AllDays: mainStr = "Everyday"; break; case AlarmWeekFlag.Monday: mainStr = "Every Monday"; break; case AlarmWeekFlag.Tuesday: mainStr = "Every Tuesday"; break; case AlarmWeekFlag.Wednesday: mainStr = "Every Wednesday"; break; case AlarmWeekFlag.Thursday: mainStr = "Every Thursday"; break; case AlarmWeekFlag.Friday: mainStr = "Every Friday"; break; case AlarmWeekFlag.Saturday: mainStr = "Every Saturday"; break; case AlarmWeekFlag.Sunday: mainStr = "Every Sunday"; break; default: mainStr = ""; break; } // day of the week to repeat mainLabel = new Label { HeightRequest = 54, Style = AlarmStyle.T023, Text = mainStr, }; // to meet To meet thin attribute for font, need to use custom feature FontFormat.SetFontWeight(mainLabel, FontWeight.Light); Children.Add(mainLabel, Constraint.RelativeToParent((parent) => { return(32); }), Constraint.RelativeToParent((parent) => { return((120 - 54) / 2); })); /// Adds CheckBox in this row weekdayCheckbox = new CheckBox { HeightRequest = 50, WidthRequest = 50, }; /// Checks whether this weekFlag indicates this CheckBox should turn on or not if (IsTurnOn(AlarmModel.BindableAlarmRecord.WeekFlag, weekFlag)) { weekdayCheckbox.IsChecked = true; } /// When CheckBox is checked, needs to perform proper action based on circumstance /// For example if all days is checked out then all other CheckBox should also checked out weekdayCheckbox.Checked += (s, e) => { CheckBox c = (CheckBox)s; var obj = this.Parent; AlarmRepeatPage currentPage; while (true) { if (obj.GetType() == typeof(AlarmRepeatPage)) { currentPage = (AlarmRepeatPage)obj; break; } else { obj = obj.Parent; } } if (weekFlag != AlarmWeekFlag.AllDays) { Update(AlarmModel.BindableAlarmRecord, weekFlag, e.Value); // closure warning (GC prevent) if (e.Value == false) { ((AlarmRepeatRow)(currentPage.allDays.View)).weekdayCheckbox.IsChecked = false; // if any off turn off everyday } else { if (AlarmModel.BindableAlarmRecord.WeekFlag == AlarmWeekFlag.AllDays) { ((AlarmRepeatRow)(currentPage.allDays.View)).weekdayCheckbox.IsChecked = true; // if any off turn off everyday } } } else { if (e.Value == false) { ((AlarmRepeatRow)(currentPage.mon.View)).weekdayCheckbox.IsChecked = false; ((AlarmRepeatRow)(currentPage.tue.View)).weekdayCheckbox.IsChecked = false; ((AlarmRepeatRow)(currentPage.wed.View)).weekdayCheckbox.IsChecked = false; ((AlarmRepeatRow)(currentPage.thur.View)).weekdayCheckbox.IsChecked = false; ((AlarmRepeatRow)(currentPage.fri.View)).weekdayCheckbox.IsChecked = false; ((AlarmRepeatRow)(currentPage.sat.View)).weekdayCheckbox.IsChecked = false; ((AlarmRepeatRow)(currentPage.sun.View)).weekdayCheckbox.IsChecked = false; } else { ((AlarmRepeatRow)(currentPage.mon.View)).weekdayCheckbox.IsChecked = true; ((AlarmRepeatRow)(currentPage.tue.View)).weekdayCheckbox.IsChecked = true; ((AlarmRepeatRow)(currentPage.wed.View)).weekdayCheckbox.IsChecked = true; ((AlarmRepeatRow)(currentPage.thur.View)).weekdayCheckbox.IsChecked = true; ((AlarmRepeatRow)(currentPage.fri.View)).weekdayCheckbox.IsChecked = true; ((AlarmRepeatRow)(currentPage.sat.View)).weekdayCheckbox.IsChecked = true; ((AlarmRepeatRow)(currentPage.sun.View)).weekdayCheckbox.IsChecked = true; } } }; Children.Add(weekdayCheckbox, Constraint.RelativeToParent((parent) => (parent.X + parent.Width - (50 + 32))), Constraint.RelativeToParent((parent) => { return((120 - 50) / 2); })); }
/// <summary> /// Gets formatted string based on week flag and state (active or inactive) /// </summary> /// <param name="weekFlag">bit flag to indicate alarm repeat days </param> /// <param name="isNormal">whether it is active or inactive (true or false)</param> /// <returns>Returns formatted string for alarm time information</returns> internal FormattedString GetFormatted(AlarmWeekFlag weekFlag, bool isNormal) { FormattedString newStr = new FormattedString(); for (int i = 1; i <= 7; i++) // Mon to Saturday { if (i == 7) { i = 0; } int mask = 1 << i; if (((int)weekFlag & mask) > 0) { if (isNormal) { newStr.Spans.Add(new Span { ForegroundColor = Color.FromHex("FF59B03A"), Text = GetWeekDay(i), FontSize = CommonStyle.GetDp(32) }); } else { newStr.Spans.Add(new Span { ForegroundColor = Color.FromHex("6659B03A"), Text = GetWeekDay(i), FontSize = CommonStyle.GetDp(32) }); } } else { if (isNormal) { newStr.Spans.Add(new Span { ForegroundColor = Color.FromHex("FFB3B3B3"), Text = GetWeekDay(i), FontSize = CommonStyle.GetDp(32) }); } else { newStr.Spans.Add(new Span { ForegroundColor = Color.FromHex("66B3B3B3"), Text = GetWeekDay(i), FontSize = CommonStyle.GetDp(32) }); } } if (i == 0) { break; } } return(newStr); }