From 48e3a417d2d2dbae25410b2219ca823539e38325 Mon Sep 17 00:00:00 2001 From: nicolasroard Date: Fri, 1 Feb 2013 13:48:21 -0800 Subject: Fix async loading of borders bug:8099597 Change-Id: I62584c87eff03539ec50aafafda4238850b4f743 --- .../gallery3d/filtershow/FilterShowActivity.java | 93 +++++++++++++--------- 1 file changed, 54 insertions(+), 39 deletions(-) diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index 4354914ee..83ea06dc7 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -306,7 +306,8 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, mImageLoader.setAdapter(mMasterImage.getHistory()); fillListImages(listFilters); - fillListBorders(listBorders); + LoadBordersTask loadBorders = new LoadBordersTask(listBorders); + loadBorders.execute(); SeekBar seekBar = (SeekBar) findViewById(R.id.filterSeekBar); seekBar.setMax(SEEK_BAR_MAX); @@ -380,6 +381,58 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, mLoadBitmapTask.execute(uri); } + private class LoadBordersTask extends AsyncTask { + Vector mBorders; + LinearLayout mList; + + public LoadBordersTask(LinearLayout list) { + mList = list; + mBorders = new Vector(); + } + + @Override + protected Boolean doInBackground(Void... params) { + mBorders.add(new ImageFilterBorder(null)); + Drawable npd1 = getResources().getDrawable(R.drawable.filtershow_border_4x5); + mBorders.add(new ImageFilterBorder(npd1)); + Drawable npd2 = getResources().getDrawable(R.drawable.filtershow_border_brush); + mBorders.add(new ImageFilterBorder(npd2)); + Drawable npd3 = getResources().getDrawable(R.drawable.filtershow_border_grunge); + mBorders.add(new ImageFilterBorder(npd3)); + Drawable npd4 = getResources().getDrawable(R.drawable.filtershow_border_sumi_e); + mBorders.add(new ImageFilterBorder(npd4)); + Drawable npd5 = getResources().getDrawable(R.drawable.filtershow_border_tape); + mBorders.add(new ImageFilterBorder(npd5)); + mBorders.add(new ImageFilterParametricBorder(Color.BLACK, mImageBorderSize, 0)); + mBorders.add(new ImageFilterParametricBorder(Color.BLACK, mImageBorderSize, + mImageBorderSize)); + mBorders.add(new ImageFilterParametricBorder(Color.WHITE, mImageBorderSize, 0)); + mBorders.add(new ImageFilterParametricBorder(Color.WHITE, mImageBorderSize, + mImageBorderSize)); + int creamColor = Color.argb(255, 237, 237, 227); + mBorders.add(new ImageFilterParametricBorder(creamColor, mImageBorderSize, 0)); + mBorders.add(new ImageFilterParametricBorder(creamColor, mImageBorderSize, + mImageBorderSize)); + return true; + } + + @Override + protected void onPostExecute(Boolean result) { + if (!result) { + return; + } + for (int i = 0; i < mBorders.size(); i++) { + ImageFilter filter = mBorders.elementAt(i); + filter.setName(getString(R.string.borders)); + FilterIconButton b = setupFilterButton(filter, mList, mBorderButton); + if (i == 0) { + mNullBorderFilter = b; + mNullBorderFilter.setSelected(true); + } + } + } + } + private class LoadBitmapTask extends AsyncTask { View mTinyPlanetButton; int mBitmapSize; @@ -722,44 +775,6 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, mMasterImage.setPreset(preset, true); } - private void fillListBorders(LinearLayout listBorders) { - // TODO: use listview - // TODO: load the borders straight from the filesystem - int p = 0; - ImageFilter[] borders = new ImageFilter[12]; - borders[p++] = new ImageFilterBorder(null); - - Drawable npd1 = getResources().getDrawable(R.drawable.filtershow_border_4x5); - borders[p++] = new ImageFilterBorder(npd1); - Drawable npd2 = getResources().getDrawable(R.drawable.filtershow_border_brush); - borders[p++] = new ImageFilterBorder(npd2); - Drawable npd3 = getResources().getDrawable(R.drawable.filtershow_border_grunge); - borders[p++] = new ImageFilterBorder(npd3); - Drawable npd4 = getResources().getDrawable(R.drawable.filtershow_border_sumi_e); - borders[p++] = new ImageFilterBorder(npd4); - Drawable npd5 = getResources().getDrawable(R.drawable.filtershow_border_tape); - borders[p++] = new ImageFilterBorder(npd5); - borders[p++] = new ImageFilterParametricBorder(Color.BLACK, mImageBorderSize, 0); - borders[p++] = new ImageFilterParametricBorder(Color.BLACK, mImageBorderSize, - mImageBorderSize); - borders[p++] = new ImageFilterParametricBorder(Color.WHITE, mImageBorderSize, 0); - borders[p++] = new ImageFilterParametricBorder(Color.WHITE, mImageBorderSize, - mImageBorderSize); - int creamColor = Color.argb(255, 237, 237, 227); - borders[p++] = new ImageFilterParametricBorder(creamColor, mImageBorderSize, 0); - borders[p++] = new ImageFilterParametricBorder(creamColor, mImageBorderSize, - mImageBorderSize); - - for (int i = 0; i < p; i++) { - borders[i].setName(getString(R.string.borders)); - FilterIconButton b = setupFilterButton(borders[i], listBorders, mBorderButton); - if (i == 0) { - mNullBorderFilter = b; - mNullBorderFilter.setSelected(true); - } - } - } - // ////////////////////////////////////////////////////////////////////////////// // Some utility functions // TODO: finish the cleanup. -- cgit v1.2.3