| /* |
| * Copyright (C) 2011 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.musicfx; |
| |
| import com.android.internal.app.AlertActivity; |
| import com.android.internal.app.AlertController; |
| import com.android.internal.app.AlertController.AlertParams.OnPrepareListViewListener; |
| import com.android.musicfx.Compatibility.Service; |
| |
| import android.content.DialogInterface; |
| import android.content.DialogInterface.OnClickListener; |
| import android.content.Intent; |
| import android.content.SharedPreferences; |
| import android.content.pm.PackageManager; |
| import android.content.pm.ResolveInfo; |
| import android.database.Cursor; |
| import android.database.MatrixCursor; |
| import android.media.audiofx.AudioEffect; |
| import android.os.Bundle; |
| import android.util.Log; |
| import android.view.View; |
| import android.widget.AdapterView; |
| import android.widget.AdapterView.OnItemSelectedListener; |
| import android.widget.ListView; |
| |
| import java.util.List; |
| |
| /** |
| * shows a dialog that lets the user switch between control panels |
| */ |
| public class ControlPanelPicker extends AlertActivity implements OnClickListener, OnPrepareListViewListener { |
| |
| |
| int mClickedPos = -1; |
| |
| @Override |
| public void onCreate(final Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| |
| String [] cols = new String [] { "_id", "title", "package", "name" }; |
| MatrixCursor c = new MatrixCursor(cols); |
| |
| PackageManager pmgr = getPackageManager(); |
| Intent i = new Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL); |
| List<ResolveInfo> ris = pmgr.queryIntentActivities(i, PackageManager.GET_DISABLED_COMPONENTS); |
| SharedPreferences pref = getSharedPreferences("musicfx", MODE_PRIVATE); |
| String savedDefPackage = pref.getString("defaultpanelpackage", null); |
| String savedDefName = pref.getString("defaultpanelname", null); |
| int cnt = -1; |
| int defpanelidx = 0; |
| for (ResolveInfo foo: ris) { |
| if (foo.activityInfo.name.equals(Compatibility.Redirector.class.getName())) { |
| continue; |
| } |
| CharSequence name = pmgr.getApplicationLabel(foo.activityInfo.applicationInfo); |
| c.addRow(new Object [] { 0, name, foo.activityInfo.packageName, foo.activityInfo.name }); |
| cnt += 1; |
| if (foo.activityInfo.name.equals(savedDefName) && |
| foo.activityInfo.packageName.equals(savedDefPackage) && |
| foo.activityInfo.enabled) { |
| // mark as default in the list |
| defpanelidx = cnt; |
| } |
| } |
| |
| final AlertController.AlertParams p = mAlertParams; |
| p.mCursor = c; |
| p.mOnClickListener = mItemClickListener; |
| p.mLabelColumn = "title"; |
| p.mIsSingleChoice = true; |
| p.mPositiveButtonText = getString(com.android.internal.R.string.ok); |
| p.mPositiveButtonListener = this; |
| p.mNegativeButtonText = getString(com.android.internal.R.string.cancel); |
| p.mOnPrepareListViewListener = this; |
| p.mTitle = getString(R.string.picker_title); |
| p.mCheckedItem = defpanelidx; |
| |
| setupAlert(); |
| } |
| |
| private DialogInterface.OnClickListener mItemClickListener = |
| new DialogInterface.OnClickListener() { |
| |
| public void onClick(DialogInterface dialog, int which) { |
| // Save the position of most recently clicked item |
| mClickedPos = which; |
| } |
| |
| }; |
| |
| @Override |
| public void onClick(DialogInterface dialog, int which) { |
| if (which == DialogInterface.BUTTON_POSITIVE) { |
| // set new default |
| Intent updateIntent = new Intent(this, Service.class); |
| Cursor c = mAlertParams.mCursor; |
| c.moveToPosition(mClickedPos); |
| updateIntent.putExtra("defPackage", c.getString(2)); |
| updateIntent.putExtra("defName", c.getString(3)); |
| startService(updateIntent); |
| } |
| } |
| |
| @Override |
| public void onPrepareListView(ListView listView) { |
| //mAlertParams.mCheckedItem = mDefPanelPos; |
| } |
| } |