diff options
Diffstat (limited to 'src/net/cbaines/suma/BuildingActivity.java')
-rw-r--r-- | src/net/cbaines/suma/BuildingActivity.java | 148 |
1 files changed, 81 insertions, 67 deletions
diff --git a/src/net/cbaines/suma/BuildingActivity.java b/src/net/cbaines/suma/BuildingActivity.java index d9baa95..509bc41 100644 --- a/src/net/cbaines/suma/BuildingActivity.java +++ b/src/net/cbaines/suma/BuildingActivity.java @@ -28,6 +28,7 @@ import java.sql.SQLException; import android.content.Context; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; +import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.Display; @@ -38,13 +39,13 @@ import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ImageButton; import android.widget.ImageView.ScaleType; +import android.widget.ProgressBar; import android.widget.TextView; import com.j256.ormlite.android.apptools.OrmLiteBaseActivity; import com.j256.ormlite.dao.Dao; -public class BuildingActivity extends OrmLiteBaseActivity<DatabaseHelper> implements OnCheckedChangeListener, - Preferences { +public class BuildingActivity extends OrmLiteBaseActivity<DatabaseHelper> implements OnCheckedChangeListener, Preferences { final static String TAG = "BusTimeActivity"; @@ -53,10 +54,12 @@ public class BuildingActivity extends OrmLiteBaseActivity<DatabaseHelper> implem private ImageButton imageButton; private TextView buildingName; - private TextView buildingID; private Building building; + private ProgressBar progressBar; + private TextView message; + private CheckBox favouritesCheckBox; public void onCreate(Bundle savedInstanceState) { @@ -85,7 +88,9 @@ public class BuildingActivity extends OrmLiteBaseActivity<DatabaseHelper> implem favouritesCheckBox.setOnCheckedChangeListener(this); buildingName = (TextView) findViewById(R.id.buildingActivityName); - buildingID = (TextView) findViewById(R.id.buildingActivityID); + + progressBar = (ProgressBar) findViewById(R.id.buildingActivityLoadBar); + message = (TextView) findViewById(R.id.buildingActivityMessage); Log.i(TAG, "Building id " + ID); @@ -94,83 +99,92 @@ public class BuildingActivity extends OrmLiteBaseActivity<DatabaseHelper> implem building = buildingDao.queryForId(ID); - buildingName.setText(building.name); + buildingName.setText("Building " + building.id + " - " + building.name); } catch (SQLException e1) { - // TODO Auto-generated catch block e1.printStackTrace(); } - buildingID.setText(ID); - try { + GetBuildingImageTask buildingImageTask = new GetBuildingImageTask(); + buildingImageTask.execute(building); - /* First, get the Display from the WindowManager */ - Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); - - /* Now we can retrieve all display-related infos */ - int orientation = display.getOrientation(); - Log.i(TAG, "orientation " + orientation); - Log.i(TAG, "width " + display.getWidth() + " height " + display.getHeight()); - int width; - // if (orientation == 0) { - width = display.getWidth(); - // } else { - // width = display.getHeight(); - // } - - URL imageURL; - Log.i(TAG, "Screen width " + width); - if (width >= 1000) { - imageURL = new URL("http://data.southampton.ac.uk/images/buildings/1000/" + ID + ".jpg"); - } else if (width >= 800) { - imageURL = new URL("http://data.southampton.ac.uk/images/buildings/1000/" + ID + ".jpg"); - } else if (width >= 600) { - imageURL = new URL("http://data.southampton.ac.uk/images/buildings/600/" + ID + ".jpg"); - } else if (width >= 400) { - imageURL = new URL("http://data.southampton.ac.uk/images/buildings/600/" + ID + ".jpg"); - } else if (width >= 300) { - imageURL = new URL("http://data.southampton.ac.uk/images/buildings/300/" + ID + ".jpg"); - } else if (width >= 200) { - imageURL = new URL("http://data.southampton.ac.uk/images/buildings/200/" + ID + ".jpg"); - } else { - imageURL = new URL("http://data.southampton.ac.uk/images/buildings/100/" + ID + ".jpg"); - } - Log.i(TAG, "URL " + imageURL); + } + + class GetBuildingImageTask extends AsyncTask<Building, Integer, Drawable> { + String errorMessage; + + @Override + protected Drawable doInBackground(Building... buildings) { + Building building = buildings[0]; + + Log.i(TAG, "Getting image for " + building); + + try { + + Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); + + int orientation = display.getOrientation(); + Log.i(TAG, "orientation " + orientation); + Log.i(TAG, "width " + display.getWidth() + " height " + display.getHeight()); + int width; + width = display.getWidth(); + + URL imageURL; + Log.i(TAG, "Screen width " + width); + if (width >= 1000) { + imageURL = new URL("http://data.southampton.ac.uk/images/buildings/1000/" + building.id + ".jpg"); + } else if (width >= 800) { + imageURL = new URL("http://data.southampton.ac.uk/images/buildings/1000/" + building.id + ".jpg"); + } else if (width >= 600) { + imageURL = new URL("http://data.southampton.ac.uk/images/buildings/600/" + building.id + ".jpg"); + } else if (width >= 400) { + imageURL = new URL("http://data.southampton.ac.uk/images/buildings/600/" + building.id + ".jpg"); + } else if (width >= 300) { + imageURL = new URL("http://data.southampton.ac.uk/images/buildings/300/" + building.id + ".jpg"); + } else if (width >= 200) { + imageURL = new URL("http://data.southampton.ac.uk/images/buildings/200/" + building.id + ".jpg"); + } else { + imageURL = new URL("http://data.southampton.ac.uk/images/buildings/100/" + building.id + ".jpg"); + } + Log.i(TAG, "URL " + imageURL); - InputStream is = (InputStream) imageURL.getContent(); - Drawable image = Drawable.createFromStream(is, "src"); + InputStream is = (InputStream) imageURL.getContent(); + Drawable image = Drawable.createFromStream(is, "src"); - imageButton = new ImageButton(this); - imageButton = (ImageButton) findViewById(R.id.buildingActivityImage); - imageButton.setImageDrawable(image); - imageButton.setScaleType(ScaleType.CENTER_INSIDE); - imageButton.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { + return image; - } - }); - - } catch (MalformedURLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + } catch (MalformedURLException e) { + e.printStackTrace(); + errorMessage = "MalformedURLException"; + } catch (IOException e) { + e.printStackTrace(); + errorMessage = "IOException"; + } + + return null; } - } + protected void onPostExecute(Drawable image) { + progressBar.setVisibility(View.GONE); - public void onResume() { - super.onResume(); - } + if (image != null) { + Log.i(TAG, "Got a image for " + building + ", now displaying it"); - public void onPause() { - super.onPause(); - } + imageButton = (ImageButton) findViewById(R.id.buildingActivityImage); + imageButton.setImageDrawable(image); + imageButton.setScaleType(ScaleType.CENTER_INSIDE); + imageButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { - public void finish() { - setResult(RESULT_OK, getIntent()); - super.finish(); + } + }); + } else { + Log.e(TAG, "Error, null image, " + errorMessage); + + message.setText(errorMessage); + message.setVisibility(View.VISIBLE); + } + } } @Override |