119f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh/*
219f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh * Copyright (C) 2011 The Android Open Source Project
319f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh *
419f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh * Licensed under the Apache License, Version 2.0 (the "License");
519f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh * you may not use this file except in compliance with the License.
619f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh * You may obtain a copy of the License at
719f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh *
819f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh *      http://www.apache.org/licenses/LICENSE-2.0
919f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh *
1019f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh * Unless required by applicable law or agreed to in writing, software
1119f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh * distributed under the License is distributed on an "AS IS" BASIS,
1219f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1319f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh * See the License for the specific language governing permissions and
1419f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh * limitations under the License.
1519f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh */
1619f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
1719f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehpackage com.android.vpndialogs;
1819f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
1919f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.content.Context;
2019f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.content.DialogInterface;
2119f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.content.Intent;
2219f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.content.pm.ApplicationInfo;
2319f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.content.pm.PackageManager;
24f530da67b4f9ffa55bb8a1c05390c6f7f87fe4baChia-chi Yehimport android.net.IConnectivityManager;
25f530da67b4f9ffa55bb8a1c05390c6f7f87fe4baChia-chi Yehimport android.os.ServiceManager;
2619f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.util.Log;
2719f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.view.View;
2819f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.widget.Button;
2919f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.widget.CompoundButton;
3019f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.widget.ImageView;
3119f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yehimport android.widget.TextView;
3219f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
33ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yehimport com.android.internal.app.AlertActivity;
34ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh
35ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yehpublic class ConfirmDialog extends AlertActivity implements
36ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh        CompoundButton.OnCheckedChangeListener, DialogInterface.OnClickListener {
3719f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    private static final String TAG = "VpnConfirm";
3819f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
39100155a310fbb5028fc48e359bdfb7c4d3531843Chia-chi Yeh    private String mPackage;
4019f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
41f530da67b4f9ffa55bb8a1c05390c6f7f87fe4baChia-chi Yeh    private IConnectivityManager mService;
4219f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
4319f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    private Button mButton;
4419f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
4519f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    @Override
4619f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    protected void onResume() {
4719f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh        super.onResume();
4819f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh        try {
49100155a310fbb5028fc48e359bdfb7c4d3531843Chia-chi Yeh            mPackage = getCallingPackage();
50f530da67b4f9ffa55bb8a1c05390c6f7f87fe4baChia-chi Yeh
51f530da67b4f9ffa55bb8a1c05390c6f7f87fe4baChia-chi Yeh            mService = IConnectivityManager.Stub.asInterface(
52f530da67b4f9ffa55bb8a1c05390c6f7f87fe4baChia-chi Yeh                    ServiceManager.getService(Context.CONNECTIVITY_SERVICE));
5319f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
54100155a310fbb5028fc48e359bdfb7c4d3531843Chia-chi Yeh            if (mService.prepareVpn(mPackage, null)) {
5519f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh                setResult(RESULT_OK);
5619f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh                finish();
5719f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh                return;
5819f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            }
5919f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
6019f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            PackageManager pm = getPackageManager();
61100155a310fbb5028fc48e359bdfb7c4d3531843Chia-chi Yeh            ApplicationInfo app = pm.getApplicationInfo(mPackage, 0);
6219f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
6319f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            View view = View.inflate(this, R.layout.confirm, null);
6419f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            ((ImageView) view.findViewById(R.id.icon)).setImageDrawable(app.loadIcon(pm));
6519f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            ((TextView) view.findViewById(R.id.prompt)).setText(
6619f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh                    getString(R.string.prompt, app.loadLabel(pm)));
6719f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            ((CompoundButton) view.findViewById(R.id.check)).setOnCheckedChangeListener(this);
6819f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
69ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            mAlertParams.mIconId = android.R.drawable.ic_dialog_alert;
70ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            mAlertParams.mTitle = getText(android.R.string.dialog_alert_title);
71ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            mAlertParams.mPositiveButtonText = getText(android.R.string.ok);
72ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            mAlertParams.mPositiveButtonListener = this;
73ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            mAlertParams.mNegativeButtonText = getText(android.R.string.cancel);
74ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            mAlertParams.mNegativeButtonListener = this;
75ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            mAlertParams.mView = view;
76ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            setupAlert();
77ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh
78ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            getWindow().setCloseOnTouchOutside(false);
79ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            mButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
8019f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            mButton.setEnabled(false);
8119f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh        } catch (Exception e) {
8219f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            Log.e(TAG, "onResume", e);
8319f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            finish();
8419f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh        }
8519f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    }
8619f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
8719f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    @Override
88ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh    public void onBackPressed() {
8919f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    }
9019f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
9119f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    @Override
9219f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    public void onCheckedChanged(CompoundButton button, boolean checked) {
9319f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh        mButton.setEnabled(checked);
9419f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    }
9519f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh
9619f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    @Override
9719f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    public void onClick(DialogInterface dialog, int which) {
9819f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh        try {
99ae380fb89dedaa03597d031370a18aa153a6a645Chia-chi Yeh            if (which == DialogInterface.BUTTON_POSITIVE && mService.prepareVpn(null, mPackage)) {
10019f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh                setResult(RESULT_OK);
10119f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            }
10219f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh        } catch (Exception e) {
10319f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh            Log.e(TAG, "onClick", e);
10419f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh        }
10519f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh    }
10619f054b0f69b2f56ea0e98a3bb7e0e62b90ff480Chia-chi Yeh}
107