/**
* AusSnowCam: View snowcams from Australia's snow resorts
* File: MainPhone.java
*
* @author James Giang
*
* Copyright 2011 James Giang
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.jamesgiang.aussnowcam;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import com.google.ads.*;
import com.google.android.apps.analytics.GoogleAnalyticsTracker;
public class MainPhone extends Activity {
private WebView webview;
private Spinner spnCamSelect;
private String app_title;
private GoogleAnalyticsTracker tracker;
private String[] resorts;
private String[] links;
@Override
public void onConfigurationChanged (Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
protected void onDestroy() {
super.onDestroy();
tracker.stop();
}
@Override
protected void onResume() {
super.onResume();
tracker.trackPageView("/Main");
tracker.setCustomVar(1, "Device", "Phone");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tracker = GoogleAnalyticsTracker.getInstance();
tracker.start("UA-23871335-1", 20, this);
resorts = getResources().getStringArray(R.array.resort_options);
app_title = getString(R.string.app_name);
getWindow().requestFeature(Window.FEATURE_PROGRESS);
getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
setContentView(R.layout.main_phone);
webview = (WebView) findViewById(R.id.webview);
spnCamSelect = (Spinner) findViewById(R.id.spnCamSelect);
Map<String, Object> extras = new HashMap<String, Object>();
extras.put("color_bg", "D8EBF7");
extras.put("color_text", "4C586A");
AdRequest adRequest = new AdRequest();
adRequest.setExtras(extras);
AdView adView = (AdView) findViewById(R.id.adView);
adView.loadAd(adRequest);
if(Utils.CheckSetting(this, "selected_resort")) {
try {
app_title = app_title + " - " + resorts[Integer.parseInt(Utils.ReadSettings(MainPhone.this, "selected_resort"))];
switch(Integer.parseInt(Utils.ReadSettings(MainPhone.this, "selected_resort"))) {
case 0:
load_mtbuller();
break;
case 1:
load_mthotham();
break;
case 2:
load_fallscreek();
break;
case 3:
load_bawbaw();
break;
case 4:
load_perisher();
break;
case 5:
load_thredbo();
break;
case 6:
load_selwyn();
break;
case 7:
load_charlotte();
break;
case 8:
load_lakemountain();
break;
case 9:
load_benlomond();
break;
case 10:
load_mtmawson();
break;
}
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Please select a resort first", Toast.LENGTH_SHORT).show();
} catch (NumberFormatException e) {
e.printStackTrace();
}
} else {
try {
Utils.WriteSettings(MainPhone.this, "0", "selected_resort");
app_title = app_title + " - " + resorts[Integer.parseInt(Utils.ReadSettings(MainPhone.this, "selected_resort"))];
load_mtbuller();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Please select a resort first", Toast.LENGTH_SHORT).show();
}
}
this.setTitle(app_title);
webview.setWebViewClient(new MyWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setBuiltInZoomControls(true);
webview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
MainPhone.this.setTitle(getString(R.string.loading));
MainPhone.this.setProgress(progress * 100);
if(progress == 100) {
MainPhone.this.setTitle(app_title);
}
}
});
spnCamSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
webview.loadUrl(links[pos]);
}
public void onNothingSelected(AdapterView<?> parent) {
webview.loadData("<html><body><b>" + getString(R.string.noresort) + "</b></body></html>", "text/html", "utf-8");
}
});
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.phone_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu1:
tracker.trackEvent("Menu", "Change Resort", "", 0);
Dialog selectView = new AlertDialog.Builder(MainPhone.this)
.setTitle(R.string.changeresort)
.setItems(R.array.resort_options, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
tracker.trackEvent("Load Resorts", resorts[which], "", 0);
app_title = getString(R.string.app_name) + " - " + resorts[which];
try {
switch(which) {
case 0:
Utils.WriteSettings(MainPhone.this, "0", "selected_resort");
load_mtbuller();
break;
case 1:
Utils.WriteSettings(MainPhone.this, "1", "selected_resort");
load_mthotham();
break;
case 2:
Utils.WriteSettings(MainPhone.this, "2", "selected_resort");
load_fallscreek();
break;
case 3:
Utils.WriteSettings(MainPhone.this, "3", "selected_resort");
load_bawbaw();
break;
case 4:
Utils.WriteSettings(MainPhone.this, "4", "selected_resort");
load_perisher();
break;
case 5:
Utils.WriteSettings(MainPhone.this, "5", "selected_resort");
load_thredbo();
break;
case 6:
Utils.WriteSettings(MainPhone.this, "6", "selected_resort");
load_selwyn();
break;
case 7:
Utils.WriteSettings(MainPhone.this, "7", "selected_resort");
load_charlotte();
break;
case 8:
Utils.WriteSettings(MainPhone.this, "8", "selected_resort");
load_lakemountain();
break;
case 9:
Utils.WriteSettings(MainPhone.this, "9", "selected_resort");
load_benlomond();
break;
case 10:
Utils.WriteSettings(MainPhone.this, "10", "selected_resort");
load_mtmawson();
break;
}
} catch (IOException e) {
e.printStackTrace();
}
MainPhone.this.setTitle(app_title);
}
})
.setNegativeButton(R.string.close, null)
.create();
selectView.show();
return true;
case R.id.menu2:
tracker.trackEvent("Menu", "Reload", "", 0);
webview.reload();
return true;
case R.id.menu3:
tracker.trackEvent("Menu", "Weather", "", 0);
try {
Utils.toastWeather(getApplicationContext(), Integer.parseInt(Utils.ReadSettings(MainPhone.this, "selected_resort")));
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
case R.id.menu4:
tracker.trackEvent("Menu", "About", "", 0);
Utils.About(this);
return true;
case R.id.menu5:
tracker.trackEvent("Menu", "Donate", "", 0);
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.jamesgiang.aussnowcampro"));
startActivity(i);
return true;
}
return false;
}
private void load_mtbuller() {
links = getResources().getStringArray(R.array.mtbuller_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(MainPhone.this, R.array.mtbuller, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
private void load_mthotham() {
links = getResources().getStringArray(R.array.mthotham_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.mthotham, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
private void load_fallscreek() {
links = getResources().getStringArray(R.array.fallscreek_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.fallscreek, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
private void load_bawbaw() {
links = getResources().getStringArray(R.array.bawbaw_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.bawbaw, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
private void load_perisher(){
links = getResources().getStringArray(R.array.perisher_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.perisher, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
private void load_thredbo() {
links = getResources().getStringArray(R.array.thredbo_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.thredbo, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
private void load_selwyn() {
links = getResources().getStringArray(R.array.selwyn_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.selwyn, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
private void load_charlotte() {
links = getResources().getStringArray(R.array.charlotte_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.charlotte, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
private void load_lakemountain() {
links = getResources().getStringArray(R.array.lakemountain_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.lakemountain, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
private void load_benlomond() {
links = getResources().getStringArray(R.array.benlomond_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.benlomond, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
private void load_mtmawson() {
links = getResources().getStringArray(R.array.mtmawson_links);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.mtmawson, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnCamSelect.setAdapter(adapter);
}
}