From 59a4572513c330efacf6db36f25638c28a938829 Mon Sep 17 00:00:00 2001
From: Phillip Hsu
Date: Tue, 20 Sep 2016 20:27:31 -0700
Subject: [PATCH] Extend from RingtonePreference
---
.../settings/ThemedRingtonePreference.java | 216 ++----------------
1 file changed, 15 insertions(+), 201 deletions(-)
diff --git a/app/src/main/java/com/philliphsu/clock2/settings/ThemedRingtonePreference.java b/app/src/main/java/com/philliphsu/clock2/settings/ThemedRingtonePreference.java
index 46aa4f8..bec1087 100644
--- a/app/src/main/java/com/philliphsu/clock2/settings/ThemedRingtonePreference.java
+++ b/app/src/main/java/com/philliphsu/clock2/settings/ThemedRingtonePreference.java
@@ -1,32 +1,12 @@
-/*
- * Copyright (C) 2007 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.philliphsu.clock2.settings;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
-import android.content.res.TypedArray;
-import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Parcelable;
-import android.preference.Preference;
-import android.preference.PreferenceManager;
+import android.preference.RingtonePreference;
import android.support.v7.app.AppCompatActivity;
-import android.text.TextUtils;
import android.util.AttributeSet;
import com.philliphsu.clock2.RingtonePickerDialog;
@@ -35,19 +15,11 @@ import com.philliphsu.clock2.RingtonePickerDialog;
* Created by Phillip Hsu on 9/20/2016.
*
* A modified version of the framework's {@link android.preference.RingtonePreference} that
- * uses our {@link RingtonePickerDialog} instead of the system's ringtone picker.
Because
- * of this difference, we cannot just extend from RingtonePreference and make
- * our modifications.
+ * uses our {@link RingtonePickerDialog} instead of the system's ringtone picker.
*/
-public class ThemedRingtonePreference extends Preference implements RingtonePickerDialog.OnRingtoneSelectedListener {
-
+public class ThemedRingtonePreference extends RingtonePreference
+ implements RingtonePickerDialog.OnRingtoneSelectedListener {
private static final String TAG = "ThemedRingtonePreference";
-
- private int mRingtoneType;
- private boolean mShowDefault;
- private boolean mShowSilent;
-
- private int mRequestCode;
private RingtonePickerDialogController mController;
@@ -68,68 +40,8 @@ public class ThemedRingtonePreference extends Preference implements RingtonePick
super(context);
}
- /**
- * Returns the sound type(s) that are shown in the picker.
- *
- * @return The sound type(s) that are shown in the picker.
- * @see #setRingtoneType(int)
- */
- public int getRingtoneType() {
- return mRingtoneType;
- }
-
- /**
- * Sets the sound type(s) that are shown in the picker.
- *
- * @param type The sound type(s) that are shown in the picker.
- * @see RingtoneManager#EXTRA_RINGTONE_TYPE
- */
- public void setRingtoneType(int type) {
- mRingtoneType = type;
- }
-
- /**
- * Returns whether to a show an item for the default sound/ringtone.
- *
- * @return Whether to show an item for the default sound/ringtone.
- */
- public boolean getShowDefault() {
- return mShowDefault;
- }
-
- /**
- * Sets whether to show an item for the default sound/ringtone. The default
- * to use will be deduced from the sound type(s) being shown.
- *
- * @param showDefault Whether to show the default or not.
- * @see RingtoneManager#EXTRA_RINGTONE_SHOW_DEFAULT
- */
- public void setShowDefault(boolean showDefault) {
- mShowDefault = showDefault;
- }
-
- /**
- * Returns whether to a show an item for 'Silent'.
- *
- * @return Whether to show an item for 'Silent'.
- */
- public boolean getShowSilent() {
- return mShowSilent;
- }
-
- /**
- * Sets whether to show an item for 'Silent'.
- *
- * @param showSilent Whether to show 'Silent'.
- * @see RingtoneManager#EXTRA_RINGTONE_SHOW_SILENT
- */
- public void setShowSilent(boolean showSilent) {
- mShowSilent = showSilent;
- }
-
@Override
protected void onClick() {
- // Launch the ringtone picker
if (mController == null) {
mController = newController();
}
@@ -145,119 +57,21 @@ public class ThemedRingtonePreference extends Preference implements RingtonePick
mController.tryRestoreCallback(TAG);
}
- private RingtonePickerDialogController newController() {
- // TODO: BAD!
- AppCompatActivity a = (AppCompatActivity) getContext();
- return new RingtonePickerDialogController(a.getSupportFragmentManager(), this);
- }
-
- /**
- * Prepares the intent to launch the ringtone picker. This can be modified
- * to adjust the parameters of the ringtone picker.
- *
- * @param ringtonePickerIntent The ringtone picker intent that can be
- * modified by putting extras.
- */
- protected void onPrepareRingtonePickerIntent(Intent ringtonePickerIntent) {
-
- ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI,
- onRestoreRingtone());
-
- ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, mShowDefault);
- if (mShowDefault) {
- ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI,
- RingtoneManager.getDefaultUri(getRingtoneType()));
- }
-
- ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, mShowSilent);
- ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, mRingtoneType);
- ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getTitle());
-// ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_AUDIO_ATTRIBUTES_FLAGS,
-// AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY);
- }
-
- /**
- * Called when a ringtone is chosen.
- *
- * By default, this saves the ringtone URI to the persistent storage as a
- * string.
- *
- * @param ringtoneUri The chosen ringtone's {@link Uri}. Can be null.
- */
- protected void onSaveRingtone(Uri ringtoneUri) {
- persistString(ringtoneUri != null ? ringtoneUri.toString() : "");
- }
-
- /**
- * Called when the chooser is about to be shown and the current ringtone
- * should be marked. Can return null to not mark any ringtone.
- *
- * By default, this restores the previous ringtone URI from the persistent
- * storage.
- *
- * @return The ringtone to be marked as the current ringtone.
- */
- protected Uri onRestoreRingtone() {
- final String uriString = getPersistedString(null);
- return !TextUtils.isEmpty(uriString) ? Uri.parse(uriString) : null;
- }
-
- @Override
- protected Object onGetDefaultValue(TypedArray a, int index) {
- return a.getString(index);
- }
-
- @Override
- protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValueObj) {
- String defaultValue = (String) defaultValueObj;
-
- /*
- * This method is normally to make sure the internal state and UI
- * matches either the persisted value or the default value. Since we
- * don't show the current value in the UI (until the dialog is opened)
- * and we don't keep local state, if we are restoring the persisted
- * value we don't need to do anything.
- */
- if (restorePersistedValue) {
- return;
- }
-
- // If we are setting to the default value, we should persist it.
- if (!TextUtils.isEmpty(defaultValue)) {
- onSaveRingtone(Uri.parse(defaultValue));
- }
- }
-
- @Override
- protected void onAttachedToHierarchy(PreferenceManager preferenceManager) {
- super.onAttachedToHierarchy(preferenceManager);
-
-// preferenceManager.registerOnActivityResultListener(this);
-// mRequestCode = preferenceManager.getNextRequestCode();
- }
-
- public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
-
- if (requestCode == mRequestCode) {
-
- if (data != null) {
- Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
-
- if (callChangeListener(uri != null ? uri.toString() : "")) {
- onSaveRingtone(uri);
- }
- }
-
- return true;
- }
-
- return false;
- }
-
@Override
public void onRingtoneSelected(Uri uri) {
if (callChangeListener(uri != null ? uri.toString() : "")) {
onSaveRingtone(uri);
}
}
+
+ @Override
+ public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
+ return false;
+ }
+
+ private RingtonePickerDialogController newController() {
+ // TODO: BAD!
+ AppCompatActivity a = (AppCompatActivity) getContext();
+ return new RingtonePickerDialogController(a.getSupportFragmentManager(), this);
+ }
}