SetupWizard: Add privacy policy popup

* Also launch cmaccount by default

Change-Id: Idf625f4f5c8bdb05a4d0b888846972c11676d12d
This commit is contained in:
cretin45 2015-01-22 14:17:05 -08:00
parent 716ffa86dc
commit 8913799a97
6 changed files with 137 additions and 8 deletions

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2013 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_weight="1" />
</LinearLayout>
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>

View File

@ -18,6 +18,8 @@
<string name="app_name">Setup Wizard</string> <string name="app_name">Setup Wizard</string>
<string name="product_name" translatable="false">cyanogenmod</string> <string name="product_name" translatable="false">cyanogenmod</string>
<string name="cm_account_type" translatable="false">com.cyanogenmod.account</string>
<string name="next">Next</string> <string name="next">Next</string>
<string name="continue_label">Continue</string> <string name="continue_label">Continue</string>
<string name="skip">Skip</string> <string name="skip">Skip</string>

View File

@ -23,7 +23,7 @@
<item name="android:windowContentTransitions">true</item> <item name="android:windowContentTransitions">true</item>
<item name="android:windowExitTransition">@android:transition/explode</item> <item name="android:windowExitTransition">@android:transition/explode</item>
<item name="android:colorPrimary">@color/primary</item> <item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">#00000000</item> <item name="android:colorPrimaryDark">@color/primary</item>
<item name="android:colorAccent">@color/accent</item> <item name="android:colorAccent">@color/accent</item>
</style> </style>

View File

@ -29,7 +29,6 @@ public class SetupWizardApp extends Application {
public static final String ACTION_FINISHED = "com.cyanogenmod.setupwizard.SETUP_FINISHED"; public static final String ACTION_FINISHED = "com.cyanogenmod.setupwizard.SETUP_FINISHED";
public static final String ACCOUNT_TYPE_CYANOGEN = "com.cyanogen";
public static final String ACCOUNT_TYPE_GMS = "com.google"; public static final String ACCOUNT_TYPE_GMS = "com.google";
public static final String ACTION_SETUP_WIFI = "com.android.net.wifi.SETUP_WIFI_NETWORK"; public static final String ACTION_SETUP_WIFI = "com.android.net.wifi.SETUP_WIFI_NETWORK";
@ -37,6 +36,7 @@ public class SetupWizardApp extends Application {
public static final String EXTRA_FIRST_RUN = "firstRun"; public static final String EXTRA_FIRST_RUN = "firstRun";
public static final String EXTRA_ALLOW_SKIP = "allowSkip"; public static final String EXTRA_ALLOW_SKIP = "allowSkip";
public static final String EXTRA_AUTO_FINISH = "wifi_auto_finish_on_connect"; public static final String EXTRA_AUTO_FINISH = "wifi_auto_finish_on_connect";
public static final String EXTRA_SHOW_BUTTON_BAR = "extra_prefs_show_button_bar";
public static final int REQUEST_CODE_SETUP_WIFI = 0; public static final int REQUEST_CODE_SETUP_WIFI = 0;

View File

@ -39,6 +39,7 @@ import android.widget.TextView;
import com.cyanogenmod.setupwizard.R; import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp; import com.cyanogenmod.setupwizard.SetupWizardApp;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment; import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.ui.WebViewDialogFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils; import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.ConnectionResult;
@ -54,6 +55,7 @@ public class CyanogenServicesPage extends SetupPage {
public static final String KEY_REGISTER_WHISPERPUSH = "register"; public static final String KEY_REGISTER_WHISPERPUSH = "register";
public static final String SETTING_METRICS = "settings.cyanogen.allow_metrics"; public static final String SETTING_METRICS = "settings.cyanogen.allow_metrics";
public static final String PRIVACY_POLICY_URI = "https://cyngn.com/legal/privacy-policy";
public CyanogenServicesPage(Context context, SetupDataCallbacks callbacks) { public CyanogenServicesPage(Context context, SetupDataCallbacks callbacks) {
super(context, callbacks); super(context, callbacks);
@ -180,10 +182,11 @@ public class CyanogenServicesPage extends SetupPage {
@Override @Override
public void onActivityCreated(Bundle savedInstanceState) { public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
getActivity().getWindow().setStatusBarColor(getResources().getColor(R.color.primary_dark)); final Activity activity = getActivity();
if (!SetupWizardUtils.accountExists(getActivity(), activity.getWindow().setStatusBarColor(getResources().getColor(R.color.primary_dark));
SetupWizardApp.ACCOUNT_TYPE_CYANOGEN)) { if (!SetupWizardUtils.accountExists(activity,
launchCyanogenAccountSetup(getActivity()); activity.getString(R.string.cm_account_type))) {
launchCyanogenAccountSetup(activity);
} }
} }
@ -195,7 +198,9 @@ public class CyanogenServicesPage extends SetupPage {
ClickableSpan clickableSpan = new ClickableSpan() { ClickableSpan clickableSpan = new ClickableSpan() {
@Override @Override
public void onClick(View textView) { public void onClick(View textView) {
//TDB privacy policy WebViewDialogFragment.newInstance()
.setUri(PRIVACY_POLICY_URI)
.show(getActivity().getFragmentManager(), WebViewDialogFragment.TAG);
} }
}; };
ss.setSpan(clickableSpan, ss.setSpan(clickableSpan,
@ -262,8 +267,9 @@ public class CyanogenServicesPage extends SetupPage {
private void launchCyanogenAccountSetup(final Activity activity) { private void launchCyanogenAccountSetup(final Activity activity) {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putBoolean(SetupWizardApp.EXTRA_FIRST_RUN, true); bundle.putBoolean(SetupWizardApp.EXTRA_FIRST_RUN, true);
bundle.putBoolean(SetupWizardApp.EXTRA_SHOW_BUTTON_BAR, true);
AccountManager.get(activity) AccountManager.get(activity)
.addAccount(SetupWizardApp.ACCOUNT_TYPE_CYANOGEN, null, null, bundle, .addAccount(activity.getString(R.string.cm_account_type), null, null, bundle,
activity, null, null); activity, null, null);
} }

View File

@ -0,0 +1,86 @@
/*
* Copyright (C) 2013 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cyanogenmod.setupwizard.ui;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.cyanogenmod.setupwizard.R;
public class WebViewDialogFragment extends DialogFragment {
public static String TAG = WebViewDialogFragment.class.getSimpleName();
private View mRootView;
private WebView mWebView;
private String mUri;
private Dialog mDialog;
public static WebViewDialogFragment newInstance() {
return new WebViewDialogFragment();
}
public WebViewDialogFragment() {
}
public WebViewDialogFragment setUri(String uri) {
mUri = uri;
return this;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
mRootView = getActivity().getLayoutInflater().inflate(R.layout.terms_webview, null, false);
mWebView = (WebView)mRootView.findViewById(R.id.webview);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.loadUrl(mUri);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
if (mDialog == null) {
mDialog =new AlertDialog.Builder(getActivity())
.setView(mRootView)
.setCancelable(false)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
})
.create();
}
return mDialog;
}
}