Android Open Source - APO-Theta-Upsilon-App Home






From Project

Back to project page APO-Theta-Upsilon-App.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project APO-Theta-Upsilon-App listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2011 Devin Schwab, Umang Banugaria
 *//w  ww.  j  av a 2s . c  om
 * This file is part of the APO Theta Upsilon App for Case Western Reserve University's Alpha Phi Omega Theta Upsilon Chapter.
 *
 * The APO Theta Upsilon program is free software: you can redistribute it and/or modify
 * it under the terms of the Lesser GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * Lesser GNU General Public License for more details.
 *
 * You should have received a copy of the Lesser GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package edu.cwru.apo;

import java.io.File;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import edu.cwru.apo.API.Methods;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.TableLayout;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;


//This is the main window of the application.  Every sub activity gets launched from here
public class Home extends Activity implements OnItemClickListener, AsyncRestRequestListener<Methods, JSONObject>{
  
  private static PhoneOpenHelper phoneDB;
  private static SQLiteDatabase database = null;
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home_screen);
    
    GridView gridview = (GridView) findViewById(R.id.gridView);
    gridview.setAdapter(new ImageAdapter(this));
    
    gridview.setOnItemClickListener(this);
    
  }
  
  @Override
  public void onResume()
  {
    super.onResume();
    if (!Auth.loggedIn)
    {
      Intent nextActivity = new Intent(Home.this, Login.class);
      Bundle extras = new Bundle();
      nextActivity.putExtras(extras);
      Home.this.startActivity(nextActivity);
      finish();
    }
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.option_menu, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      // Handle item selection
      switch (item.getItemId()) {
      case R.id.updateMenuItem:
        if (phoneDB == null)
          phoneDB = new PhoneOpenHelper(this);
        if (database == null)
          database = phoneDB.getWritableDatabase();
        API phoneApi = new API(this);
        String[] params = {"0"};
      if(!phoneApi.callMethod(Methods.phone, this, params))
      {
        Toast msg = Toast.makeText(this, "Error: Calling phone", Toast.LENGTH_LONG);
        msg.show();
      }
          return true;
      case R.id.updateApp:
        API updateAppApi = new API(this);
        if(!updateAppApi.callMethod(Methods.checkAppVersion, this))
        {
          Toast msg = Toast.makeText(this,"Error: Couldn't get app version", Toast.LENGTH_LONG);
          msg.show();
        }
      default:
          return super.onOptionsItemSelected(item);
      }
  }

  public void onItemClick(AdapterView<?> parent, View view, int position,
      long id) {
    switch(position){
    case 0:
      // launch service report activity
      Intent reportIntent = new Intent(Home.this, Report.class);
      Home.this.startActivity(reportIntent);
      break;
    case 1:
      // launch Contract activity
      Intent contractIntent = new Intent(Home.this, Contract.class);
      Home.this.startActivity(contractIntent);
      break;
    /*
    case 2:
      // launch profile activity
      Intent profileIntent = new Intent(Home.this, Profile.class);
      Home.this.startActivity(profileIntent);
      break;
    */
    case 2:
      // launch directory activity
      Intent directoryIntent = new Intent(Home.this, Directory.class);
      Home.this.startActivity(directoryIntent);
      break;
    default:
      //do nothing
    }
  }
  
  
  
  /*@Override
  protected void onResume()
  {
    super.onResume();
    Auth.loadKeys(getPreferences(MODE_PRIVATE));
  }*/
  
  @Override
  protected void onPause()
  {
    super.onPause();
    Auth.saveKeys(getSharedPreferences(APO.PREF_FILE_NAME, MODE_PRIVATE));
  }

  public void onRestRequestComplete(Methods method, JSONObject result) 
  {
    if(method == Methods.phone)
    {
      if(result != null)
      {
        try {
          String requestStatus = result.getString("requestStatus");
          if(requestStatus.compareTo("success") == 0)
          {
            SharedPreferences.Editor editor = getSharedPreferences(APO.PREF_FILE_NAME, MODE_PRIVATE).edit();
            editor.putLong("updateTime", result.getLong("updateTime"));
            editor.commit();
            int numbros = result.getInt("numBros");
            JSONArray caseID = result.getJSONArray("caseID");
            JSONArray first = result.getJSONArray("first");
            JSONArray last = result.getJSONArray("last");
            JSONArray phone = result.getJSONArray("phone");
            JSONArray family = result.getJSONArray("family");
            ContentValues values;
            for(int i = 0; i < numbros; i++)
            {
              values = new ContentValues();
              values.put("_id", caseID.getString(i));
              values.put("first", first.getString(i));
              values.put("last", last.getString(i));
              values.put("phone", phone.getString(i));
              values.put("family", family.getString(i));
              database.replace("phoneDB", null, values);
            }
          }
          else if(requestStatus.compareTo("timestamp invalid") == 0)
          {
            Toast msg = Toast.makeText(this, "Invalid timestamp.  Please try again.", Toast.LENGTH_LONG);
            msg.show();
          }
          else if(requestStatus.compareTo("HMAC invalid") == 0)
          {
            Auth.loggedIn = false;
            Toast msg = Toast.makeText(this, "You have been logged out by the server.  Please log in again.", Toast.LENGTH_LONG);
            msg.show();
            finish();
          }
          else
          {
            Toast msg = Toast.makeText(this, "Invalid requestStatus", Toast.LENGTH_LONG);
            msg.show();
          }
        } catch (JSONException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }  
    }
    else if(method == Methods.checkAppVersion)
    {
      if(result != null)
      {
        try{
          String requestStatus = result.getString("requestStatus");
          if(requestStatus.compareTo("success") == 0)
          {
            String appVersion = result.getString("version");
            String appDate = result.getString("date");
            final String appUrl = result.getString("url");
            PackageInfo pinfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);;
            if(appVersion.compareTo(pinfo.versionName) != 0)
            {
              AlertDialog.Builder builder = new AlertDialog.Builder(this);
              builder.setTitle("Upgrade");
              builder.setMessage("Update available, ready to upgrade?");
              builder.setIcon(R.drawable.icon);
              builder.setCancelable(false);
              builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                  Intent promptInstall = new Intent("android.intent.action.VIEW",Uri.parse("https://apo.case.edu:8090/app/" + appUrl)); 
                  startActivity(promptInstall);
                }
              });
              builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                  dialog.cancel();
                }
              });
              AlertDialog alert = builder.create();
              alert.show();
            }
            else
            {
              Toast msg = Toast.makeText(this, "No updates found", Toast.LENGTH_LONG);
              msg.show();
            }
          }
        } catch (JSONException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        } catch (NameNotFoundException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
    }
  }
}




Java Source Code List

edu.cwru.apo.API.java
edu.cwru.apo.APO.java
edu.cwru.apo.AsyncRestRequestListener.java
edu.cwru.apo.Auth.java
edu.cwru.apo.Contract.java
edu.cwru.apo.Directory.java
edu.cwru.apo.DynamicHmac.java
edu.cwru.apo.ForgotPassword.java
edu.cwru.apo.Hex.java
edu.cwru.apo.Hmac.java
edu.cwru.apo.Home.java
edu.cwru.apo.ImageAdapter.java
edu.cwru.apo.Installation.java
edu.cwru.apo.Login.java
edu.cwru.apo.News.java
edu.cwru.apo.PhoneOpenHelper.java
edu.cwru.apo.Profile.java
edu.cwru.apo.Report.java
edu.cwru.apo.RestClient.java
edu.cwru.apo.TrustAPOHttpClient.java