コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 /// <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;
     }
 }
コード例 #4
0
 /// <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
     });
 }
コード例 #5
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);
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
 /// <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);
     }
 }
コード例 #9
0
        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);
        }
コード例 #10
0
        /// <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);
            }
        }
コード例 #11
0
 /// <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);
 }
コード例 #12
0
        /// <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); }));
        }
コード例 #13
0
        /// <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);
        }