diff --git a/res/layout/background_chooser_item.xml b/res/layout/background_chooser_item.xml index f3165cb7e..afc7f6c52 100644 --- a/res/layout/background_chooser_item.xml +++ b/res/layout/background_chooser_item.xml @@ -4,6 +4,7 @@ android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:orientation="horizontal" + android:paddingLeft="10dip" > + + + + + diff --git a/res/layout/style_item.xml b/res/layout/style_item.xml index 176920eb2..2d5c21724 100644 --- a/res/layout/style_item.xml +++ b/res/layout/style_item.xml @@ -9,7 +9,7 @@ android:paddingBottom="10dip" android:orientation="horizontal" > - parent, View view, int position, long id) { - System.err.println("CLICKED:" + position); switch (position) { case 0: + setResult(RESULT_OK, new Intent().putExtra(BackgroundPreference.VALUE_KEY, "")); + finish(); break; case 1: startActivityForResult(new Intent(this, PredefinedImages.class), 1); @@ -61,4 +62,12 @@ public class Chooser extends ListActivity implements AdapterView.OnItemClickList break; } } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode == RESULT_OK) { + setResult(RESULT_OK, data); + finish(); + } + } } diff --git a/src/org/geometerplus/android/fbreader/preferences/background/PredefinedImages.java b/src/org/geometerplus/android/fbreader/preferences/background/PredefinedImages.java index 59a558791..b87ec932b 100644 --- a/src/org/geometerplus/android/fbreader/preferences/background/PredefinedImages.java +++ b/src/org/geometerplus/android/fbreader/preferences/background/PredefinedImages.java @@ -20,9 +20,11 @@ package org.geometerplus.android.fbreader.preferences.background; import android.app.ListActivity; +import android.content.Intent; +import android.graphics.drawable.BitmapDrawable; import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; +import android.view.ViewGroup; +import android.widget.*; import org.geometerplus.zlibrary.core.filesystem.ZLFile; import org.geometerplus.zlibrary.core.resources.ZLResource; @@ -37,26 +39,40 @@ public class PredefinedImages extends ListActivity implements AdapterView.OnItem protected void onStart() { super.onStart(); setTitle(myResource.getValue()); - final ArrayAdapter adapter = new ArrayAdapter( - this, R.layout.background_chooser_item, R.id.background_chooser_item_title - ); - for (ZLFile f : WallpapersUtil.predefinedWallpaperFiles()) { - final String name = f.getShortName(); - adapter.add(myResource.getResource(name.substring(0, name.indexOf("."))).getValue()); - } + final ArrayAdapter adapter = new ArrayAdapter( + this, R.layout.background_predefined_item, R.id.background_predefined_item_title + ) { + public View getView(int position, View convertView, final ViewGroup parent) { + final View view = super.getView(position, convertView, parent); + + final TextView titleView = + (TextView)view.findViewById(R.id.background_predefined_item_title); + final String name = getItem(position).getShortName(); + final String key = name.substring(0, name.indexOf(".")); + titleView.setText(myResource.getResource(key).getValue()); + + final View previewWidget = + view.findViewById(R.id.background_predefined_item_preview); + try { + previewWidget.setBackgroundDrawable( + new BitmapDrawable(getResources(), getItem(position).getInputStream()) + ); + } catch (Throwable t) { + } + + return view; + } + }; + adapter.addAll(WallpapersUtil.predefinedWallpaperFiles()); setListAdapter(adapter); getListView().setOnItemClickListener(this); } public final void onItemClick(AdapterView parent, View view, int position, long id) { - System.err.println("CLICKED:" + position); - switch (position) { - case 0: - break; - case 1: - break; - case 2: - break; - } + setResult(RESULT_OK, new Intent().putExtra( + BackgroundPreference.VALUE_KEY, + ((ZLFile)getListAdapter().getItem(position)).getPath() + )); + finish(); } }