1/*
2 * Copyright (C) 2015 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
17package com.android.contacts.compat;
18
19import android.os.Build;
20import android.provider.ContactsContract.ProviderStatus;
21
22import com.android.contacts.common.compat.CompatUtils;
23import com.android.contacts.common.compat.SdkVersionOverride;
24
25/**
26 * This class contains constants from the pre-M version of ContactsContract.ProviderStatus class
27 * and also the mappings between pre-M constants and M constants for compatibility purpose,
28 * because ProviderStatus class constant names and values changed and the class became visible in
29 * API level 23.
30 */
31public class ProviderStatusCompat {
32    /**
33     * Not instantiable.
34     */
35    private ProviderStatusCompat() {
36    }
37
38    public static final boolean USE_CURRENT_VERSION = CompatUtils.isMarshmallowCompatible();
39
40    public static final int STATUS_EMPTY = USE_CURRENT_VERSION ?
41            ProviderStatus.STATUS_EMPTY : ProviderStatusCompat.STATUS_NO_ACCOUNTS_NO_CONTACTS;
42
43    public static final int STATUS_BUSY = USE_CURRENT_VERSION ?
44            ProviderStatus.STATUS_BUSY : ProviderStatusCompat.STATUS_UPGRADING;
45
46    /**
47     * Default status of the provider, using the actual constant to guard against errors
48     */
49    public static final int STATUS_NORMAL = ProviderStatus.STATUS_NORMAL;
50
51    /**
52     * The following three constants are from pre-M.
53     *
54     * The status used when the provider is in the process of upgrading.  Contacts
55     * are temporarily unaccessible.
56     */
57    private static final int STATUS_UPGRADING = 1;
58
59    /**
60     * The status used during a locale change.
61     */
62    public static final int STATUS_CHANGING_LOCALE = 3;
63
64    /**
65     * The status that indicates that there are no accounts and no contacts
66     * on the device.
67     */
68    private static final int STATUS_NO_ACCOUNTS_NO_CONTACTS = 4;
69}
70