Loading core/java/com/android/internal/app/RingtonePickerActivity.java +94 −102 Original line number Diff line number Diff line Loading @@ -16,9 +16,10 @@ package com.android.internal.app; import com.tmobile.widget.HeaderTwinButton; import com.android.internal.app.AlertActivity; import com.android.internal.app.AlertController; import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.media.Ringtone; Loading @@ -28,14 +29,10 @@ import android.os.Bundle; import android.os.Handler; import android.provider.MediaStore; import android.provider.Settings; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.CheckedTextView; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; /** * The {@link RingtonePickerActivity} allows the user to choose one from all of the Loading @@ -43,11 +40,9 @@ import android.widget.SimpleCursorAdapter; * * @see RingtoneManager#ACTION_RINGTONE_PICKER */ public final class RingtonePickerActivity extends Activity implements AdapterView.OnItemSelectedListener, AdapterView.OnItemClickListener, Runnable, View.OnClickListener { private static final int ID_SAVE_BUTTON = 1; private static final int ID_CANCEL_BUTTON = 2; public final class RingtonePickerActivity extends AlertActivity implements AdapterView.OnItemSelectedListener, Runnable, DialogInterface.OnClickListener, AlertController.AlertParams.OnPrepareListViewListener { private static final String TAG = "RingtonePickerActivity"; Loading @@ -64,6 +59,9 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie /** The position in the list of the 'Default' item. */ private int mDefaultRingtonePos = -1; /** The position in the list of the last clicked item. */ private int mClickedPos = -1; /** The position in the list of the ringtone to sample. */ private int mSampleRingtonePos = -1; Loading @@ -73,15 +71,15 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie /** The Uri to place a checkmark next to. */ private Uri mExistingUri; /** The number of static items in the list. */ private int mStaticItemCount; /** Whether this list has the 'Default' item. */ private boolean mHasDefaultItem; /** The Uri to play when the 'Default' item is clicked. */ private Uri mUriForDefaultItem; private ListView mListView = null; private ListAdapter mAdapter = null; /** * A Ringtone for the default ringtone. In most cases, the RingtoneManager * will stop the previous ringtone. However, the RingtoneManager doesn't Loading @@ -89,6 +87,22 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie */ private Ringtone mDefaultRingtone; private DialogInterface.OnClickListener mRingtoneClickListener = new DialogInterface.OnClickListener() { /* * On item clicked */ public void onClick(DialogInterface dialog, int which) { // Save the position of most recently clicked item mClickedPos = which; // Play clip playRingtone(which, 0); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -133,64 +147,51 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie mExistingUri = intent .getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI); setContentView(com.android.internal.R.layout.tmobile_ringtone); mAdapter = new SimpleCursorAdapter(this, com.android.internal.R.layout.tmobile_list_item_label_checkable, mCursor, new String[] { MediaStore.MediaColumns.TITLE }, new int[] { android.R.id.text1 }); mListView = (ListView)findViewById(android.R.id.list); addStaticHeaders(); mListView.setAdapter(mAdapter); mListView.setItemsCanFocus(false); mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); selectCurrentRingtone(); final AlertController.AlertParams p = mAlertParams; p.mCursor = mCursor; p.mOnClickListener = mRingtoneClickListener; p.mLabelColumn = MediaStore.Audio.Media.TITLE; p.mIsSingleChoice = true; p.mOnItemSelectedListener = this; p.mPositiveButtonText = getString(com.android.internal.R.string.ok); p.mPositiveButtonListener = this; p.mNegativeButtonText = getString(com.android.internal.R.string.cancel); p.mPositiveButtonListener = this; p.mOnPrepareListViewListener = this; HeaderTwinButton headerTwinButton = (HeaderTwinButton)findViewById(com.android.internal.R.id.save_cancel_header); Button btnSave = (Button)headerTwinButton.getButton(); btnSave.setId(ID_SAVE_BUTTON); btnSave.setOnClickListener(this); Button btnCancel = (Button)headerTwinButton.getButton2(); btnCancel.setOnClickListener(this); btnSave.setId(ID_SAVE_BUTTON); mListView.setOnItemClickListener(this); mListView.setOnItemSelectedListener(this); p.mTitle = intent.getCharSequenceExtra(RingtoneManager.EXTRA_RINGTONE_TITLE); if (p.mTitle == null) { p.mTitle = getString(com.android.internal.R.string.ringtone_picker_title); } public void addStaticHeaders() { if (mHasDefaultItem) { mDefaultRingtonePos = addDefaultRingtoneItem(mListView); setupAlert(); } if (mHasSilentItem) { mSilentPos = addSilentItem(mListView); } } public void onPrepareListView(ListView listView) { public void selectCurrentRingtone() { if (mHasDefaultItem) { mDefaultRingtonePos = addDefaultRingtoneItem(listView); if (RingtoneManager.isDefault(mExistingUri)) { mListView.setItemChecked(mDefaultRingtonePos, true); mClickedPos = mDefaultRingtonePos; } } if (mHasSilentItem) { mSilentPos = addSilentItem(listView); // The 'Silent' item should use a null Uri if (mExistingUri == null) { mListView.setItemChecked(mSilentPos, true); mClickedPos = mSilentPos; } } if (mListView.getCheckedItemPosition() == ListView.INVALID_POSITION) { int cursorPos = mRingtoneManager.getRingtonePosition(mExistingUri); int pos = cursorPositionToListPosition(cursorPos); mListView.setItemChecked(pos, true); if (mClickedPos == -1) { mClickedPos = getListPosition(mRingtoneManager.getRingtonePosition(mExistingUri)); } // Put a checkmark next to an item. mAlertParams.mCheckedItem = mClickedPos; } /** Loading @@ -202,13 +203,11 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie * @return The position of the inserted item. */ private int addStaticItem(ListView listView, int textResId) { CheckedTextView item = (CheckedTextView)getLayoutInflater().inflate( com.android.internal.R.layout.tmobile_list_item_label_checkable, null); item.setText(textResId); listView.addHeaderView(item); TextView textView = (TextView) getLayoutInflater().inflate( com.android.internal.R.layout.select_dialog_singlechoice, listView, false); textView.setText(textResId); listView.addHeaderView(textView); mStaticItemCount++; return listView.getHeaderViewsCount() - 1; } Loading @@ -223,14 +222,8 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie /* * On click of Ok/Cancel buttons */ public void onClick(View v) { Log.d(TAG, "onClick : " + v.getId()); boolean positiveResult = false; switch (v.getId()) { case ID_SAVE_BUTTON: positiveResult = true; break; } public void onClick(DialogInterface dialog, int which) { boolean positiveResult = which == BUTTON1; // Stop playing the previous ringtone mRingtoneManager.stopPreviousRingtone(); Loading @@ -238,42 +231,40 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie if (positiveResult) { Intent resultIntent = new Intent(); Uri uri = null; String title = null; int checkedPos = mListView.getCheckedItemPosition(); if (checkedPos == mDefaultRingtonePos) { if (mClickedPos == mDefaultRingtonePos) { // Set it to the default Uri that they originally gave us uri = mUriForDefaultItem; } else if (checkedPos == mSilentPos) { } else if (mClickedPos == mSilentPos) { // A null Uri is for the 'Silent' item uri = null; } else { Cursor cursor = (Cursor)mListView.getItemAtPosition(checkedPos); title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); uri = mRingtoneManager.getRingtoneUri(listPositionToCursorPosition(checkedPos)); uri = mRingtoneManager.getRingtoneUri(getRingtoneManagerPosition(mClickedPos)); } resultIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, uri); resultIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, title); setResult(RESULT_OK, resultIntent); } else { setResult(RESULT_CANCELED); } getWindow().getDecorView().post(new Runnable() { public void run() { mCursor.deactivate(); } }); finish(); } /* * On item selected via keys */ public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { public void onItemSelected(AdapterView parent, View view, int position, long id) { playRingtone(position, DELAY_MS_SELECTION_PLAYED); } public void onNothingSelected(AdapterView<?> parent) { public void onNothingSelected(AdapterView parent) { } private void playRingtone(int position, int delayMs) { Loading Loading @@ -313,7 +304,7 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie mRingtoneManager.stopPreviousRingtone(); } else { ringtone = mRingtoneManager.getRingtone(listPositionToCursorPosition(mSampleRingtonePos)); ringtone = mRingtoneManager.getRingtone(getRingtoneManagerPosition(mSampleRingtonePos)); } if (ringtone != null) { Loading @@ -334,6 +325,7 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie } private void stopAnyPlayingRingtone() { if (mDefaultRingtone != null && mDefaultRingtone.isPlaying()) { mDefaultRingtone.stop(); } Loading @@ -343,16 +335,16 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie } } private int listPositionToCursorPosition(int listPos) { return listPos - mListView.getHeaderViewsCount(); private int getRingtoneManagerPosition(int listPos) { return listPos - mStaticItemCount; } private int cursorPositionToListPosition(int ringtoneManagerPos) { private int getListPosition(int ringtoneManagerPos) { // If the manager position is -1 (for not found), return that if (ringtoneManagerPos < 0) return ringtoneManagerPos; return ringtoneManagerPos + mListView.getHeaderViewsCount(); } public void onItemClick(AdapterView<?> parent, View v, int position, long id) { playRingtone(position, DELAY_MS_SELECTION_PLAYED); return ringtoneManagerPos + mStaticItemCount; } } core/res/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -963,6 +963,7 @@ </intent-filter> </activity> <activity android:name="com.android.internal.app.RingtonePickerActivity" android:theme="@style/Theme.Dialog.Alert" android:excludeFromRecents="true" android:multiprocess="true" pluto:isThemeable="true"> Loading Loading
core/java/com/android/internal/app/RingtonePickerActivity.java +94 −102 Original line number Diff line number Diff line Loading @@ -16,9 +16,10 @@ package com.android.internal.app; import com.tmobile.widget.HeaderTwinButton; import com.android.internal.app.AlertActivity; import com.android.internal.app.AlertController; import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.media.Ringtone; Loading @@ -28,14 +29,10 @@ import android.os.Bundle; import android.os.Handler; import android.provider.MediaStore; import android.provider.Settings; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.CheckedTextView; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; /** * The {@link RingtonePickerActivity} allows the user to choose one from all of the Loading @@ -43,11 +40,9 @@ import android.widget.SimpleCursorAdapter; * * @see RingtoneManager#ACTION_RINGTONE_PICKER */ public final class RingtonePickerActivity extends Activity implements AdapterView.OnItemSelectedListener, AdapterView.OnItemClickListener, Runnable, View.OnClickListener { private static final int ID_SAVE_BUTTON = 1; private static final int ID_CANCEL_BUTTON = 2; public final class RingtonePickerActivity extends AlertActivity implements AdapterView.OnItemSelectedListener, Runnable, DialogInterface.OnClickListener, AlertController.AlertParams.OnPrepareListViewListener { private static final String TAG = "RingtonePickerActivity"; Loading @@ -64,6 +59,9 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie /** The position in the list of the 'Default' item. */ private int mDefaultRingtonePos = -1; /** The position in the list of the last clicked item. */ private int mClickedPos = -1; /** The position in the list of the ringtone to sample. */ private int mSampleRingtonePos = -1; Loading @@ -73,15 +71,15 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie /** The Uri to place a checkmark next to. */ private Uri mExistingUri; /** The number of static items in the list. */ private int mStaticItemCount; /** Whether this list has the 'Default' item. */ private boolean mHasDefaultItem; /** The Uri to play when the 'Default' item is clicked. */ private Uri mUriForDefaultItem; private ListView mListView = null; private ListAdapter mAdapter = null; /** * A Ringtone for the default ringtone. In most cases, the RingtoneManager * will stop the previous ringtone. However, the RingtoneManager doesn't Loading @@ -89,6 +87,22 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie */ private Ringtone mDefaultRingtone; private DialogInterface.OnClickListener mRingtoneClickListener = new DialogInterface.OnClickListener() { /* * On item clicked */ public void onClick(DialogInterface dialog, int which) { // Save the position of most recently clicked item mClickedPos = which; // Play clip playRingtone(which, 0); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -133,64 +147,51 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie mExistingUri = intent .getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI); setContentView(com.android.internal.R.layout.tmobile_ringtone); mAdapter = new SimpleCursorAdapter(this, com.android.internal.R.layout.tmobile_list_item_label_checkable, mCursor, new String[] { MediaStore.MediaColumns.TITLE }, new int[] { android.R.id.text1 }); mListView = (ListView)findViewById(android.R.id.list); addStaticHeaders(); mListView.setAdapter(mAdapter); mListView.setItemsCanFocus(false); mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); selectCurrentRingtone(); final AlertController.AlertParams p = mAlertParams; p.mCursor = mCursor; p.mOnClickListener = mRingtoneClickListener; p.mLabelColumn = MediaStore.Audio.Media.TITLE; p.mIsSingleChoice = true; p.mOnItemSelectedListener = this; p.mPositiveButtonText = getString(com.android.internal.R.string.ok); p.mPositiveButtonListener = this; p.mNegativeButtonText = getString(com.android.internal.R.string.cancel); p.mPositiveButtonListener = this; p.mOnPrepareListViewListener = this; HeaderTwinButton headerTwinButton = (HeaderTwinButton)findViewById(com.android.internal.R.id.save_cancel_header); Button btnSave = (Button)headerTwinButton.getButton(); btnSave.setId(ID_SAVE_BUTTON); btnSave.setOnClickListener(this); Button btnCancel = (Button)headerTwinButton.getButton2(); btnCancel.setOnClickListener(this); btnSave.setId(ID_SAVE_BUTTON); mListView.setOnItemClickListener(this); mListView.setOnItemSelectedListener(this); p.mTitle = intent.getCharSequenceExtra(RingtoneManager.EXTRA_RINGTONE_TITLE); if (p.mTitle == null) { p.mTitle = getString(com.android.internal.R.string.ringtone_picker_title); } public void addStaticHeaders() { if (mHasDefaultItem) { mDefaultRingtonePos = addDefaultRingtoneItem(mListView); setupAlert(); } if (mHasSilentItem) { mSilentPos = addSilentItem(mListView); } } public void onPrepareListView(ListView listView) { public void selectCurrentRingtone() { if (mHasDefaultItem) { mDefaultRingtonePos = addDefaultRingtoneItem(listView); if (RingtoneManager.isDefault(mExistingUri)) { mListView.setItemChecked(mDefaultRingtonePos, true); mClickedPos = mDefaultRingtonePos; } } if (mHasSilentItem) { mSilentPos = addSilentItem(listView); // The 'Silent' item should use a null Uri if (mExistingUri == null) { mListView.setItemChecked(mSilentPos, true); mClickedPos = mSilentPos; } } if (mListView.getCheckedItemPosition() == ListView.INVALID_POSITION) { int cursorPos = mRingtoneManager.getRingtonePosition(mExistingUri); int pos = cursorPositionToListPosition(cursorPos); mListView.setItemChecked(pos, true); if (mClickedPos == -1) { mClickedPos = getListPosition(mRingtoneManager.getRingtonePosition(mExistingUri)); } // Put a checkmark next to an item. mAlertParams.mCheckedItem = mClickedPos; } /** Loading @@ -202,13 +203,11 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie * @return The position of the inserted item. */ private int addStaticItem(ListView listView, int textResId) { CheckedTextView item = (CheckedTextView)getLayoutInflater().inflate( com.android.internal.R.layout.tmobile_list_item_label_checkable, null); item.setText(textResId); listView.addHeaderView(item); TextView textView = (TextView) getLayoutInflater().inflate( com.android.internal.R.layout.select_dialog_singlechoice, listView, false); textView.setText(textResId); listView.addHeaderView(textView); mStaticItemCount++; return listView.getHeaderViewsCount() - 1; } Loading @@ -223,14 +222,8 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie /* * On click of Ok/Cancel buttons */ public void onClick(View v) { Log.d(TAG, "onClick : " + v.getId()); boolean positiveResult = false; switch (v.getId()) { case ID_SAVE_BUTTON: positiveResult = true; break; } public void onClick(DialogInterface dialog, int which) { boolean positiveResult = which == BUTTON1; // Stop playing the previous ringtone mRingtoneManager.stopPreviousRingtone(); Loading @@ -238,42 +231,40 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie if (positiveResult) { Intent resultIntent = new Intent(); Uri uri = null; String title = null; int checkedPos = mListView.getCheckedItemPosition(); if (checkedPos == mDefaultRingtonePos) { if (mClickedPos == mDefaultRingtonePos) { // Set it to the default Uri that they originally gave us uri = mUriForDefaultItem; } else if (checkedPos == mSilentPos) { } else if (mClickedPos == mSilentPos) { // A null Uri is for the 'Silent' item uri = null; } else { Cursor cursor = (Cursor)mListView.getItemAtPosition(checkedPos); title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); uri = mRingtoneManager.getRingtoneUri(listPositionToCursorPosition(checkedPos)); uri = mRingtoneManager.getRingtoneUri(getRingtoneManagerPosition(mClickedPos)); } resultIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, uri); resultIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, title); setResult(RESULT_OK, resultIntent); } else { setResult(RESULT_CANCELED); } getWindow().getDecorView().post(new Runnable() { public void run() { mCursor.deactivate(); } }); finish(); } /* * On item selected via keys */ public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { public void onItemSelected(AdapterView parent, View view, int position, long id) { playRingtone(position, DELAY_MS_SELECTION_PLAYED); } public void onNothingSelected(AdapterView<?> parent) { public void onNothingSelected(AdapterView parent) { } private void playRingtone(int position, int delayMs) { Loading Loading @@ -313,7 +304,7 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie mRingtoneManager.stopPreviousRingtone(); } else { ringtone = mRingtoneManager.getRingtone(listPositionToCursorPosition(mSampleRingtonePos)); ringtone = mRingtoneManager.getRingtone(getRingtoneManagerPosition(mSampleRingtonePos)); } if (ringtone != null) { Loading @@ -334,6 +325,7 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie } private void stopAnyPlayingRingtone() { if (mDefaultRingtone != null && mDefaultRingtone.isPlaying()) { mDefaultRingtone.stop(); } Loading @@ -343,16 +335,16 @@ public final class RingtonePickerActivity extends Activity implements AdapterVie } } private int listPositionToCursorPosition(int listPos) { return listPos - mListView.getHeaderViewsCount(); private int getRingtoneManagerPosition(int listPos) { return listPos - mStaticItemCount; } private int cursorPositionToListPosition(int ringtoneManagerPos) { private int getListPosition(int ringtoneManagerPos) { // If the manager position is -1 (for not found), return that if (ringtoneManagerPos < 0) return ringtoneManagerPos; return ringtoneManagerPos + mListView.getHeaderViewsCount(); } public void onItemClick(AdapterView<?> parent, View v, int position, long id) { playRingtone(position, DELAY_MS_SELECTION_PLAYED); return ringtoneManagerPos + mStaticItemCount; } }
core/res/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -963,6 +963,7 @@ </intent-filter> </activity> <activity android:name="com.android.internal.app.RingtonePickerActivity" android:theme="@style/Theme.Dialog.Alert" android:excludeFromRecents="true" android:multiprocess="true" pluto:isThemeable="true"> Loading