| Index: src/org/adblockplus/android/RefreshableListPreference.java |
| =================================================================== |
| new file mode 100644 |
| --- /dev/null |
| +++ b/src/org/adblockplus/android/RefreshableListPreference.java |
| @@ -0,0 +1,56 @@ |
| +package org.adblockplus.android; |
| + |
| +import android.content.Context; |
| +import android.preference.ListPreference; |
| +import android.util.AttributeSet; |
| +import android.view.View; |
| +import android.view.View.OnClickListener; |
| +import android.view.ViewGroup; |
| +import android.widget.ImageView; |
| +import android.widget.LinearLayout; |
| + |
| +/** |
| + * ListPreference UI with refresh button. |
| + */ |
| +public class RefreshableListPreference extends ListPreference |
| +{ |
| + private OnClickListener refreshClickListener; |
| + |
| + public RefreshableListPreference(Context context, AttributeSet attrs) |
| + { |
| + super(context, attrs); |
| + } |
| + |
| + @Override |
| + protected void onBindView(View view) |
| + { |
| + super.onBindView(view); |
| + final ImageView refreshImage = new ImageView(getContext()); |
| + final ViewGroup widgetFrameView = ((ViewGroup) view.findViewById(android.R.id.widget_frame)); |
|
Felix Dahlke
2012/10/09 14:27:29
Why is widgetFrameView final?
Andrey Novikov
2012/10/12 13:19:14
Done.
|
| + if (widgetFrameView == null) |
| + return; |
| + widgetFrameView.setVisibility(View.VISIBLE); |
| + final int rightPaddingDip = android.os.Build.VERSION.SDK_INT < 14 ? 8 : 5; |
| + final float mDensity = getContext().getResources().getDisplayMetrics().density; |
|
Felix Dahlke
2012/10/09 14:27:29
Why prefix this variable with "m"? It's local.
Andrey Novikov
2012/10/12 13:19:14
Copy/paste problems.
|
| + if (widgetFrameView instanceof LinearLayout) |
| + { |
| + ((LinearLayout) widgetFrameView).setOrientation(LinearLayout.HORIZONTAL); |
| + } |
| + widgetFrameView.addView(refreshImage, 0); |
| + refreshImage.setImageResource(R.drawable.ic_menu_refresh); |
| + refreshImage.setPadding(refreshImage.getPaddingLeft(), refreshImage.getPaddingTop(), (int) (mDensity * rightPaddingDip), refreshImage.getPaddingBottom()); |
| + refreshImage.setOnClickListener(new OnClickListener() { |
| + @Override |
| + public void onClick(View v) |
| + { |
| + if (refreshClickListener != null) |
| + refreshClickListener.onClick(refreshImage); |
| + } |
| + }); |
| + } |
| + |
| + public void setOnRefreshClickListener(OnClickListener l) |
| + { |
| + refreshClickListener = l; |
| + } |
| +} |