Home | History | Annotate | Download | only in provider
      1 /*
      2  * Copyright (C) 2013 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package com.android.deskclock.provider;
     17 
     18 import android.net.Uri;
     19 import android.provider.BaseColumns;
     20 
     21 /**
     22  * <p>
     23  * The contract between the clock provider and desk clock. Contains
     24  * definitions for the supported URIs and data columns.
     25  * </p>
     26  * <h3>Overview</h3>
     27  * <p>
     28  * ClockContract defines the data model of clock related information.
     29  * This data is stored in a number of tables:
     30  * </p>
     31  * <ul>
     32  * <li>The {@link AlarmsColumns} table holds the user created alarms</li>
     33  * <li>The {@link InstancesColumns} table holds the current state of each
     34  * alarm in the AlarmsColumn table.
     35  * </li>
     36  * <li>The {@link CitiesColumns} table holds all user selectable cities</li>
     37  * </ul>
     38  */
     39 public final class ClockContract {
     40     /**
     41      * This authority is used for writing to or querying from the clock
     42      * provider.
     43      */
     44     public static final String AUTHORITY = "com.android.deskclock";
     45 
     46     /**
     47      * This utility class cannot be instantiated
     48      */
     49     private ClockContract() {}
     50 
     51     /**
     52      * Constants for tables with AlarmSettings.
     53      */
     54     private interface AlarmSettingColumns extends BaseColumns {
     55         /**
     56          * This string is used to indicate no ringtone.
     57          */
     58         public static final Uri NO_RINGTONE_URI = Uri.EMPTY;
     59 
     60         /**
     61          * This string is used to indicate no ringtone.
     62          */
     63         public static final String NO_RINGTONE = NO_RINGTONE_URI.toString();
     64 
     65         /**
     66          * True if alarm should vibrate
     67          * <p>Type: BOOLEAN</p>
     68          */
     69         public static final String VIBRATE = "vibrate";
     70 
     71         /**
     72          * Alarm label.
     73          *
     74          * <p>Type: STRING</p>
     75          */
     76         public static final String LABEL = "label";
     77 
     78         /**
     79          * Audio alert to play when alarm triggers. Null entry
     80          * means use system default and entry that equal
     81          * Uri.EMPTY.toString() means no ringtone.
     82          *
     83          * <p>Type: STRING</p>
     84          */
     85         public static final String RINGTONE = "ringtone";
     86     }
     87 
     88     /**
     89      * Constants for the Alarms table, which contains the user created alarms.
     90      */
     91     protected interface AlarmsColumns extends AlarmSettingColumns, BaseColumns {
     92         /**
     93          * The content:// style URL for this table.
     94          */
     95         public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/alarms");
     96 
     97         /**
     98          * Hour in 24-hour localtime 0 - 23.
     99          * <p>Type: INTEGER</p>
    100          */
    101         public static final String HOUR = "hour";
    102 
    103         /**
    104          * Minutes in localtime 0 - 59.
    105          * <p>Type: INTEGER</p>
    106          */
    107         public static final String MINUTES = "minutes";
    108 
    109         /**
    110          * Days of the week encoded as a bit set.
    111          * <p>Type: INTEGER</p>
    112          *
    113          * {@link DaysOfWeek}
    114          */
    115         public static final String DAYS_OF_WEEK = "daysofweek";
    116 
    117         /**
    118          * True if alarm is active.
    119          * <p>Type: BOOLEAN</p>
    120          */
    121         public static final String ENABLED = "enabled";
    122 
    123         /**
    124          * Determine if alarm is deleted after it has been used.
    125          * <p>Type: INTEGER</p>
    126          */
    127         public static final String DELETE_AFTER_USE = "delete_after_use";
    128     }
    129 
    130     /**
    131      * Constants for the Instance table, which contains the state of each alarm.
    132      */
    133     protected interface InstancesColumns extends AlarmSettingColumns, BaseColumns {
    134         /**
    135          * The content:// style URL for this table.
    136          */
    137         public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/instances");
    138 
    139         /**
    140          * Alarm state when to show no notification.
    141          *
    142          * Can transitions to:
    143          * LOW_NOTIFICATION_STATE
    144          */
    145         public static final int SILENT_STATE = 0;
    146 
    147         /**
    148          * Alarm state to show low priority alarm notification.
    149          *
    150          * Can transitions to:
    151          * HIDE_NOTIFICATION_STATE
    152          * HIGH_NOTIFICATION_STATE
    153          * DISMISSED_STATE
    154          */
    155         public static final int LOW_NOTIFICATION_STATE = 1;
    156 
    157         /**
    158          * Alarm state to hide low priority alarm notification.
    159          *
    160          * Can transitions to:
    161          * HIGH_NOTIFICATION_STATE
    162          */
    163         public static final int HIDE_NOTIFICATION_STATE = 2;
    164 
    165         /**
    166          * Alarm state to show high priority alarm notification.
    167          *
    168          * Can transitions to:
    169          * DISMISSED_STATE
    170          * FIRED_STATE
    171          */
    172         public static final int HIGH_NOTIFICATION_STATE = 3;
    173 
    174         /**
    175          * Alarm state when alarm is in snooze.
    176          *
    177          * Can transitions to:
    178          * DISMISSED_STATE
    179          * FIRED_STATE
    180          */
    181         public static final int SNOOZE_STATE = 4;
    182 
    183         /**
    184          * Alarm state when alarm is being fired.
    185          *
    186          * Can transitions to:
    187          * DISMISSED_STATE
    188          * SNOOZED_STATE
    189          * MISSED_STATE
    190          */
    191         public static final int FIRED_STATE = 5;
    192 
    193         /**
    194          * Alarm state when alarm has been missed.
    195          *
    196          * Can transitions to:
    197          * DISMISSED_STATE
    198          */
    199         public static final int MISSED_STATE = 6;
    200 
    201         /**
    202          * Alarm state when alarm is done.
    203          */
    204         public static final int DISMISSED_STATE = 7;
    205 
    206         /**
    207          * Alarm year.
    208          *
    209          * <p>Type: INTEGER</p>
    210          */
    211         public static final String YEAR = "year";
    212 
    213         /**
    214          * Alarm month in year.
    215          *
    216          * <p>Type: INTEGER</p>
    217          */
    218         public static final String MONTH = "month";
    219 
    220         /**
    221          * Alarm day in month.
    222          *
    223          * <p>Type: INTEGER</p>
    224          */
    225         public static final String DAY = "day";
    226 
    227         /**
    228          * Alarm hour in 24-hour localtime 0 - 23.
    229          * <p>Type: INTEGER</p>
    230          */
    231         public static final String HOUR = "hour";
    232 
    233         /**
    234          * Alarm minutes in localtime 0 - 59
    235          * <p>Type: INTEGER</p>
    236          */
    237         public static final String MINUTES = "minutes";
    238 
    239         /**
    240          * Foreign key to Alarms table
    241          * <p>Type: INTEGER (long)</p>
    242          */
    243         public static final String ALARM_ID = "alarm_id";
    244 
    245         /**
    246          * Alarm state
    247          * <p>Type: INTEGER</p>
    248          */
    249         public static final String ALARM_STATE = "alarm_state";
    250     }
    251 
    252     /**
    253      * Constants for the Cities table, which contains all selectable cities.
    254      */
    255     protected interface CitiesColumns {
    256         /**
    257          * The content:// style URL for this table.
    258          */
    259         public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/cities");
    260 
    261         /**
    262          * Primary id for city.
    263          * <p>Type: STRING</p>
    264          */
    265         public static final String CITY_ID = "city_id";
    266 
    267         /**
    268          * City name.
    269          * <p>Type: STRING</p>
    270          */
    271         public static final String CITY_NAME = "city_name";
    272 
    273         /**
    274          * Timezone name of city.
    275          * <p>Type: STRING</p>
    276          */
    277         public static final String TIMEZONE_NAME = "timezone_name";
    278 
    279         /**
    280          * Timezone offset.
    281          * <p>Type: INTEGER</p>
    282          */
    283         public static final String TIMEZONE_OFFSET = "timezone_offset";
    284     }
    285 }
    286