OSDN Git Service

506d1bc83992d2f17e972d6aa4d450acb3b48e3d
[android-x86/packages-apps-Settings.git] / src / com / android / settings / overlay / SupportFeatureProvider.java
1 /*
2  * Copyright (C) 2016 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
17 package com.android.settings.overlay;
18
19 import android.accounts.Account;
20 import android.annotation.IntDef;
21 import android.annotation.StringRes;
22 import android.app.Activity;
23 import android.content.Context;
24 import android.content.Intent;
25
26 import com.android.settings.support.SupportPhone;
27
28 import java.lang.annotation.Retention;
29 import java.lang.annotation.RetentionPolicy;
30 import java.util.List;
31
32 /**
33  * Feature provider for support tab.
34  */
35 public interface SupportFeatureProvider {
36
37     @IntDef({SupportType.EMAIL, SupportType.PHONE, SupportType.CHAT})
38     @Retention(RetentionPolicy.SOURCE)
39     @interface SupportType {
40         int EMAIL = 1;
41         int PHONE = 2;
42         int CHAT = 3;
43     }
44
45     /**
46      * Returns a intent that will open help & feedback.
47      */
48     Intent getHelpIntent(Context context);
49
50     /**
51      * Whether or not a support type is enabled.
52      */
53     boolean isSupportTypeEnabled(Context context, @SupportType int type);
54
55     /**
56      * Refreshes all operation rules.
57      */
58     void refreshOperationRules();
59
60     /**
61      * Whether or not a support type is in operation 24/7. If country is null, use
62      * current country.
63      */
64     boolean isAlwaysOperating(@SupportType int type, String countryCode);
65
66     /**
67      * Whether or not a support type is operating now.
68      */
69     boolean isOperatingNow(@SupportType int type);
70
71     /**
72      * Returns the current country code if it has a operation config, otherwise returns null.
73      */
74     String getCurrentCountryCodeIfHasConfig(@SupportType int type);
75
76     /**
77      * Returns localized string for operation hours in specified country. If country is null, use
78      * current country to figure out operation hours.
79      */
80     CharSequence getOperationHours(Context context, @SupportType int type, String countryCode,
81             boolean hasInternet);
82
83     /**
84      * Returns a localized string indicating estimated wait time for a support time.
85      */
86     String getEstimatedWaitTime(Context context, @SupportType int type);
87
88     /**
89      * Returns a list of country codes that have phone support.
90      */
91     List<String> getPhoneSupportCountryCodes();
92
93     /**
94      * Returns a list of countries that have phone support.
95      */
96     List<String> getPhoneSupportCountries();
97
98     /**
99      * Returns a support phone for specified country.
100      */
101     SupportPhone getSupportPhones(String countryCode, boolean isTollfree);
102
103     /**
104      * Whether or not a disclaimer dialog should be displayed.
105      */
106     boolean shouldShowDisclaimerDialog(Context context);
107
108     /**
109      * Sets whether or not a disclaimer dialog should be displayed.
110      */
111     void setShouldShowDisclaimerDialog(Context context, boolean shouldShow);
112
113     /**
114      * Returns an {@link Account} that's eligible for support options.
115      */
116     Account getSupportEligibleAccount(Context context);
117
118     /**
119      * Starts support activity of specified type
120      *
121      * @param activity Calling activity
122      * @param account A account returned by {@link #getSupportEligibleAccount}
123      * @param type The type of support account needs.
124      */
125     void startSupport(Activity activity, Account account, @SupportType int type);
126
127     /**
128      * Returns an {@link Intent} that opens help and allow user get help on sign in.
129      */
130     Intent getSignInHelpIntent(Context context);
131
132     /**
133      * Returns an intent that will start the add account UI.
134      */
135     Intent getAccountLoginIntent();
136
137     /**
138      * Returns an intent that will launch the tips and tricks UI.
139      */
140     Intent getTipsAndTricksIntent(Context context);
141
142     /**
143      * Returns the string for the disclaimer in the Support dialog
144      */
145     @StringRes
146     int getDisclaimerStringResId();
147 }