aboutsummaryrefslogtreecommitdiff
path: root/src/net/cbaines/suma/BuildingActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/cbaines/suma/BuildingActivity.java')
-rw-r--r--src/net/cbaines/suma/BuildingActivity.java148
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