summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/common
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/common')
-rw-r--r--java/com/android/dialer/common/preference/AndroidManifest.xml18
-rw-r--r--java/com/android/dialer/common/preference/SwitchPreferenceWithClickableSummary.java104
-rw-r--r--java/com/android/dialer/common/preference/res/values/attrs.xml22
3 files changed, 144 insertions, 0 deletions
diff --git a/java/com/android/dialer/common/preference/AndroidManifest.xml b/java/com/android/dialer/common/preference/AndroidManifest.xml
new file mode 100644
index 000000000..3e8062216
--- /dev/null
+++ b/java/com/android/dialer/common/preference/AndroidManifest.xml
@@ -0,0 +1,18 @@
+<!--
+ ~ Copyright (C) 2018 The Android Open Source 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
+ -->
+<manifest
+ package="com.android.dialer.common.preference">
+</manifest>
diff --git a/java/com/android/dialer/common/preference/SwitchPreferenceWithClickableSummary.java b/java/com/android/dialer/common/preference/SwitchPreferenceWithClickableSummary.java
new file mode 100644
index 000000000..7b3564ddc
--- /dev/null
+++ b/java/com/android/dialer/common/preference/SwitchPreferenceWithClickableSummary.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2018 The Android Open Source 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.android.dialer.common.preference;
+
+import static android.support.v4.content.ContextCompat.startActivity;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.TypedArray;
+import android.net.Uri;
+import android.preference.SwitchPreference;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import com.android.dialer.common.Assert;
+
+/**
+ * Utility to allow the summary of a {@link SwitchPreference} to be clicked and opened via a browser
+ * to the specified {@link urlToOpen} attribute while maintaining all other aspects of a {@link
+ * SwitchPreference}.
+ *
+ * <p>Example usage:
+ *
+ * <pre>
+ * <com.android.dialer.common.preference.SwitchPreferenceWithClickableSummary
+ * android:dependency="...."
+ * android:key="...."
+ * android:title="...."
+ * app:urlToOpen="...."/>
+ * </pre>
+ */
+public class SwitchPreferenceWithClickableSummary extends SwitchPreference {
+ private final String urlToOpen;
+
+ public SwitchPreferenceWithClickableSummary(
+ Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ TypedArray typedArray =
+ context.obtainStyledAttributes(attrs, R.styleable.SwitchPreferenceWithClickableSummary);
+ urlToOpen =
+ String.valueOf(
+ typedArray.getText(R.styleable.SwitchPreferenceWithClickableSummary_urlToOpen));
+ }
+
+ public SwitchPreferenceWithClickableSummary(
+ Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr, defStyleAttr);
+ TypedArray typedArray =
+ context.obtainStyledAttributes(attrs, R.styleable.SwitchPreferenceWithClickableSummary);
+ urlToOpen =
+ String.valueOf(
+ typedArray.getText(R.styleable.SwitchPreferenceWithClickableSummary_urlToOpen));
+ }
+
+ public SwitchPreferenceWithClickableSummary(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ TypedArray typedArray =
+ context.obtainStyledAttributes(attrs, R.styleable.SwitchPreferenceWithClickableSummary);
+ urlToOpen =
+ String.valueOf(
+ typedArray.getText(R.styleable.SwitchPreferenceWithClickableSummary_urlToOpen));
+ }
+
+ public SwitchPreferenceWithClickableSummary(Context context) {
+ this(context, null);
+ }
+
+ @Override
+ protected View onCreateView(ViewGroup parent) {
+ return super.onCreateView(parent);
+ }
+
+ @Override
+ protected void onBindView(View view) {
+ super.onBindView(view);
+ Assert.checkArgument(
+ urlToOpen != null,
+ "must have a urlToOpen attribute when using SwitchPreferenceWithClickableSummary");
+ view.findViewById(android.R.id.summary)
+ .setOnClickListener(
+ new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlToOpen));
+ startActivity(view.getContext(), intent, null);
+ }
+ });
+ }
+}
diff --git a/java/com/android/dialer/common/preference/res/values/attrs.xml b/java/com/android/dialer/common/preference/res/values/attrs.xml
new file mode 100644
index 000000000..c1d1de015
--- /dev/null
+++ b/java/com/android/dialer/common/preference/res/values/attrs.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2018 The Android Open Source 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
+ -->
+<resources>
+ <declare-styleable name="SwitchPreferenceWithClickableSummary">
+ <attr name="urlToOpen" format="string"/>
+ </declare-styleable>
+</resources>
+