package com.echo5bravo.govre.UI;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import com.echo5bravo.govre.INFO.Device;
import com.echo5bravo.govre.UTILS.ImageDownloader;
import com.echo5bravo.govre.UTILS.ProxyNetworkTrainMapImage;
import com.echo5bravo.govre.UTILS.ImageZoom.ImageViewTouch;
import com.echo5bravo.govre.R;
import com.google.android.apps.analytics.GoogleAnalyticsTracker;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
public class ActivityOldMap extends Activity {
// LOCAL VARIABLES AND PROPERTIES
private static final String TAG = ActivityOldMap.class.getSimpleName();
private GoogleAnalyticsTracker googleTracker;
private ScheduledExecutorService scheduleTaskExecutorVreMap;
private ScheduledExecutorService scheduleTaskExecutorUiUpdates;
static ImageViewTouch imgTrainMap;
private String mapURL;
private Context context;
private ImageView imgTwitter, imgMap, imgAlerts, imgSched;
private ImageView spinner;
private ImageView imgNoSignal;
private AnimationDrawable spinnerAnim;
private boolean spinnerOn;
private boolean noSignalOn;
private boolean isOnline;
private Bitmap mBitmap;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_BlueMoon);
this.setContentView(R.layout.old_train_map_layout);
//Start Google Analytics Tracker
//-------------------------------------------------------------------------------------------------
googleTracker = GoogleAnalyticsTracker.getInstance();
googleTracker.setDebug(Boolean.parseBoolean(this.getString(R.bool.ga_debug)));
googleTracker.setDryRun(Boolean.parseBoolean(this.getString(R.bool.ga_dryrun)));
googleTracker.startNewSession(this.getString(R.string.ga_api_key), 60, this);
int CV_SLOT_1 = 1; //Slot 1 Tracks Device Orientation
//int CV_SLOT_2 = 2; //Slot 2 Unassigned
//int CV_SLOT_3 = 3; //Slot 3 Unassigned
//int CV_SLOT_4 = 4; //Slot 4 Unassigned
//int CV_SLOT_5 = 5; //Slot 5 Unassigned
//Track Device's Current Orientation
googleTracker.setCustomVar(CV_SLOT_1, //SLOT (Can only track up to 5)
"Device Orientation", //NAME
Device.getDeviceOrientation(this.getApplicationContext()), //VALUE
1); //SCOPE
/*-------------------------------------------------------------------------------------------------
NOTE: Add to Activity Handlers:
onResume(): googleTracker.trackPageView("/" + TAG);
onDestroy(): googleTracker.stopSession();
-------------------------------------------------------------------------------------------------*/
spinner = (ImageView) findViewById(R.id.splashSpinner);
imgNoSignal = (ImageView) findViewById(R.id.imgNoSignal);
spinnerAnim = (AnimationDrawable) spinner.getBackground();
context = this;
addListenerOnTwitterImage();
addListenerOnMapImage();
addListenerOnAlert();
addListenerOnSched();
}
@Override
public void onContentChanged()
{
super.onContentChanged();
imgTrainMap = (ImageViewTouch)findViewById(R.id.imgTrainMap);
}
@Override
protected void onStop(){
super.onStop();
scheduleTaskExecutorVreMap.shutdown();
scheduleTaskExecutorUiUpdates.shutdown();
}
protected void onStart(){
super.onStart();
//Log.d(TAG, "OnStart Called");
scheduleTaskExecutorVreMap = Executors.newSingleThreadScheduledExecutor();
// This schedule a task to run every 59 seconds:
scheduleTaskExecutorVreMap.scheduleAtFixedRate(new Runnable() {
public void run() {
try{
if (Device.isDeviceOnline(context.getApplicationContext())){
spinnerOn = true;
noSignalOn = false;
//Get Alerts on separate thread (Requires Network)
// Update Map
mapURL = ProxyNetworkTrainMapImage.fetchTrainImageLink(context);
if (mapURL.length() > 0){
mBitmap = ImageDownloader.downloadBitmap(mapURL);
}
}
else
{
spinnerOn = false;
noSignalOn = true;
}
}
catch(Exception ex)
{
ex.toString();
}
// Update the UI Thread
runOnUiThread(new Runnable() {
public void run() {
try{
if (mBitmap != null){
imgTrainMap.setImageBitmapReset(mBitmap, 0, true);
imgTrainMap.setVisibility(View.VISIBLE);
}
else
imgTrainMap.setVisibility(View.INVISIBLE);
spinnerOn = false;
}
catch(Exception ex)
{
ex.toString();
}
}
});
}
}, 0, 59, TimeUnit.SECONDS);
scheduleTaskExecutorUiUpdates = Executors.newScheduledThreadPool(4);
// This schedule a task to run every 10 minutes:
scheduleTaskExecutorUiUpdates.scheduleAtFixedRate(new Runnable() {
public void run() {
// Update the UI Thread
runOnUiThread(new Runnable() {
public void run() {
if (spinnerOn){
spinnerAnim.start();
spinner.setVisibility(View.VISIBLE);
}
else
{
spinnerAnim.stop();
spinner.setVisibility(View.INVISIBLE);
}
if (noSignalOn){
imgNoSignal.setVisibility(View.VISIBLE);
imgTrainMap.setVisibility(View.INVISIBLE); //Set to Invisible or Errors will occur
}
else
{
imgNoSignal.setVisibility(View.INVISIBLE);
imgTrainMap.setVisibility(View.VISIBLE);
}
}
});
}
}, 0, 500, TimeUnit.MILLISECONDS);
}
@Override
protected void onResume(){
super.onResume();
//Track current Activity
googleTracker.trackPageView("/" + TAG);
}
@Override
protected void onDestroy() {
super.onDestroy();
// Stop the tracker when it is no longer needed.
googleTracker.stopSession();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.oldmapmenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.about) {
//Track GoogleAnalytics Event
googleTracker.trackEvent("ui_interaction", //category
"from_menu", //action
"about", //label
0); //value
Intent a = new Intent(ActivityOldMap.this, ActivityAbout.class);
a.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(a);
} else if (item.getItemId() == R.id.options) {
//Track GoogleAnalytics Event
googleTracker.trackEvent("ui_interaction", //category
"from_menu", //action
"options", //label
0); //value
Intent p = new Intent(ActivityOldMap.this, ActivityPreferences.class);
p.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(p);
} else if (item.getItemId() == R.id.googlemap) {
//Track GoogleAnalytics Event
googleTracker.trackEvent("ui_interaction", //category
"from_menu", //action
"googlemap", //label
0); //value
Intent o = new Intent(ActivityOldMap.this, ActivityGoogleMap.class);
o.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(o);
} else if (item.getItemId() == R.id.alerts) {
//Track GoogleAnalytics Event
googleTracker.trackEvent("ui_interaction", //category
"from_menu", //action
"alerts", //label
0); //value
Intent x = new Intent(ActivityOldMap.this, ActivityAlerts.class);
x.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(x);
} else if (item.getItemId() == R.id.schedules) {
//Track GoogleAnalytics Event
googleTracker.trackEvent("ui_interaction", //category
"from_menu", //action
"schedules", //label
0); //value
Intent e = new Intent(ActivityOldMap.this, ActivityStationSchedule.class);
e.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(e);
}
return true;
}
private void addListenerOnTwitterImage() {
imgTwitter = (ImageView) findViewById(R.id.imgTwitter);
imgTwitter.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//Track GoogleAnalytics Event
googleTracker.trackEvent("ui_interaction", //category
"from_icon", //action
"twitter", //label
0); //value
//Do Something
Intent myIntent = new Intent(ActivityOldMap.this, ActivityTwitterFeed.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
}
});
}
private void addListenerOnMapImage() {
imgMap = (ImageView) findViewById(R.id.imgMap);
imgMap.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//Track GoogleAnalytics Event
googleTracker.trackEvent("ui_interaction", //category
"from_icon", //action
"googlemap", //label
0); //value
//Do Something
Intent myIntent = new Intent(ActivityOldMap.this, ActivityGoogleMap.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
}
});
}
private void addListenerOnAlert() {
imgAlerts = (ImageView) findViewById(R.id.imgAlerts);
imgAlerts.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//Track GoogleAnalytics Event
googleTracker.trackEvent("ui_interaction", //category
"from_icon", //action
"alerts", //label
0); //value
//Do Something
Intent myIntent = new Intent(ActivityOldMap.this, ActivityAlerts.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
}
});
}
private void addListenerOnSched() {
imgSched = (ImageView) findViewById(R.id.imgSched);
imgSched.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//Track GoogleAnalytics Event
googleTracker.trackEvent("ui_interaction", //category
"from_icon", //action
"schedule", //label
0); //value
//Do Something
Intent myIntent = new Intent(ActivityOldMap.this, ActivityStationSchedule.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
}
});
}
}