1efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang/*
2efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang * Copyright (C) 2017 The Android Open Source Project
3efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang *
4efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang * Licensed under the Apache License, Version 2.0 (the "License");
5efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang * you may not use this file except in compliance with the License.
6efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang * You may obtain a copy of the License at
7efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang *
8efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang *      http://www.apache.org/licenses/LICENSE-2.0
9efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang *
10efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang * Unless required by applicable law or agreed to in writing, software
11efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang * distributed under the License is distributed on an "AS IS" BASIS,
12efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang * See the License for the specific language governing permissions and
14efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang * limitations under the License.
15efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang */
1669e95c6e75054a4e858c721fb466f7896d949d55Fan Zhangpackage com.android.settings.deviceinfo;
1769e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang
1869e95c6e75054a4e858c721fb466f7896d949d55Fan Zhangimport android.app.Fragment;
1969e95c6e75054a4e858c721fb466f7896d949d55Fan Zhangimport android.content.Context;
2069e95c6e75054a4e858c721fb466f7896d949d55Fan Zhangimport android.content.Intent;
2169e95c6e75054a4e858c721fb466f7896d949d55Fan Zhangimport android.support.v7.preference.Preference;
2269e95c6e75054a4e858c721fb466f7896d949d55Fan Zhangimport android.text.TextUtils;
2369e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang
241d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantlerimport com.android.settings.core.PreferenceControllerMixin;
2569e95c6e75054a4e858c721fb466f7896d949d55Fan Zhangimport com.android.settingslib.DeviceInfoUtils;
261d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantlerimport com.android.settingslib.core.AbstractPreferenceController;
2769e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang
281d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantlerpublic class FeedbackPreferenceController extends AbstractPreferenceController implements
291d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler        PreferenceControllerMixin {
3069e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang    private static final String KEY_DEVICE_FEEDBACK = "device_feedback";
31efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang
3269e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang    private final Fragment mHost;
33efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang    private final Intent intent;
3469e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang
3569e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang    public FeedbackPreferenceController(Fragment host, Context context) {
3669e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang        super(context);
3769e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang        this.mHost = host;
38efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang        intent = new Intent("android.intent.action.BUG_REPORT");
3969e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang    }
4069e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang
4169e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang    public boolean isAvailable() {
42efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang        return !TextUtils.isEmpty(DeviceInfoUtils.getFeedbackReporterPackage(mContext));
43efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang    }
44efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang
45efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang    @Override
46efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang    public void updateState(Preference preference) {
47efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang        super.updateState(preference);
48efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang        intent.setPackage(DeviceInfoUtils.getFeedbackReporterPackage(mContext));
49efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang        preference.setIntent(intent);
5069e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang    }
5169e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang
5269e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang    public String getPreferenceKey() {
5369e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang        return KEY_DEVICE_FEEDBACK;
5469e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang    }
5569e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang
5669e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang    public boolean handlePreferenceTreeClick(Preference preference) {
5769e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang        if (!TextUtils.equals(preference.getKey(), KEY_DEVICE_FEEDBACK)) {
5869e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang            return false;
5969e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang        }
6069e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang        if (!this.isAvailable()) {
6169e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang            return false;
6269e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang        }
63efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang
6469e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang        this.mHost.startActivityForResult(intent, 0);
6569e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang        return true;
6669e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang    }
6769e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang}
6869e95c6e75054a4e858c721fb466f7896d949d55Fan Zhang
69