You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
3.7 KiB
Java

package com.langerhans.one.utils;
import java.util.ArrayList;
import java.util.List;
import com.htc.preference.HtcListPreference;
import com.langerhans.one.PrefsFragment;
import com.langerhans.one.R;
import com.htc.widget.HtcAlertDialog.Builder;
import com.htc.widget.HtcListItem2LineText;
import com.htc.widget.HtcListItemTileImage;
import com.htc.widget.HtcListView;
import com.htc.widget.HtcRadioButton;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
public class DynamicPreference extends HtcListPreference {
public DynamicPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DynamicPreference(Context context) {
super(context);
}
public void show() {
showDialog(null);
}
@Override
public void onBindDialogView(View view) {
List<CharSequence> entries = new ArrayList<CharSequence>();
List<CharSequence> entryValues = new ArrayList<CharSequence>();
for (int i = 0; i < PrefsFragment.pkgAppsList.size(); i++) {
entries.add(PrefsFragment.pkgAppsList.get(i).loadLabel(getContext().getPackageManager()));
entryValues.add(PrefsFragment.pkgAppsList.get(i).activityInfo.applicationInfo.packageName + "|" + PrefsFragment.pkgAppsList.get(i).activityInfo.name);
}
setEntries(entries.toArray(new CharSequence[entries.size()]));
setEntryValues(entryValues.toArray(new CharSequence[entryValues.size()]));
}
@Override
protected View onCreateDialogView() {
HtcListView view = new HtcListView(getContext());
setEntries(new CharSequence[0]);
setEntryValues(new CharSequence[0]);
return view;
}
@Override
protected void onPrepareDialogBuilder(Builder builder) {
int index = findIndexOfValue(getSharedPreferences().getString(getKey(), "1"));
ListAdapter listAdapter = new ImageArrayAdapter(getContext(), getEntries(), index);
builder.setAdapter(listAdapter, this);
super.onPrepareDialogBuilder(builder);
}
private class ImageArrayAdapter extends BaseAdapter {
final CharSequence[] items;
private LayoutInflater mInflater;
private int index = 0;
Context mContext = null;
public ImageArrayAdapter(Context context, CharSequence[] objects, int i) {
mContext = context;
items = objects;
index = i;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return items.length;
}
public CharSequence getItem(int position) {
return items[position];
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (convertView != null)
row = convertView;
else
row = mInflater.inflate(R.layout.select_dialog_with_images, parent, false);
HtcListItem2LineText itemTitle = (HtcListItem2LineText) row.findViewById(android.R.id.text1);
HtcListItemTileImage itemIcon = (HtcListItemTileImage) row.findViewById(android.R.id.icon);
HtcRadioButton itemRadio = (HtcRadioButton) row.findViewById(android.R.id.checkbox);
itemTitle.setPrimaryText(getItem(position));
itemTitle.setSecondaryTextVisibility(8);
itemIcon.setTileImageDrawable(PrefsFragment.pkgAppsListIcons.get(position));
itemIcon.setScaleX(0.65f);
itemIcon.setScaleY(0.65f);
itemIcon.setTranslationX(mContext.getResources().getDisplayMetrics().density * 10.0f);
//if (PrefsFragment.pkgAppsListSystem.get(position))
if (position == index)
itemRadio.setChecked(true);
else
itemRadio.setChecked(false);
return row;
}
}
}