Added a new game dialog, and game management to GameListActivity

Change-Id: I222b29cc6bcea844b97d13c212e3330336b21a06
This commit is contained in:
2012-02-04 12:53:40 -05:00
parent 032edcf78e
commit 21fd9a73a0
6 changed files with 157 additions and 34 deletions

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" >
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:hint="@string/game_name"
android:singleLine="true" />
</LinearLayout>
<Button
android:id="@+id/new_game_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/linearLayout1"
android:text="@string/create_new_game" />
</RelativeLayout>

View File

@@ -6,5 +6,9 @@
<string name="email">twentycodes@gmail.com</string>
<string name="deleteing">Deleting…</string>
<string name="empty_msg">Click the plus button to start a new game</string>
<string name="game_name">Game Name</string>
<string name="create_new_game">Create New Game</string>
<string name="delete">Delete</string>
<string name="new_game">New Game</string>
</resources>

View File

@@ -388,37 +388,37 @@ public class Database {
* @param gameHistory values
* @author ricky barrette
*/
public void insertRinger(String gameName, ContentValues gameHistory){
public void insertGame(String gameName, ContentValues gameHistory){
ContentValues game = new ContentValues();
game.put(Database.KEY_NAME, checkName(gameName));
mDb.insert(GAME_NAME_TABLE, null, game);
String ringerName = game.getAsString(Database.KEY_NAME);
//insert the information values
for(Entry<String, Object> item : gameHistory.valueSet()){
ContentValues values = new ContentValues();
values.put(KEY_NAME, ringerName);
values.put(KEY, item.getKey());
/*
* Try get the value.
* If there is a class cast exception, try casting to the next object type.
*
* The following types are tried:
* String
* Integer
* Boolean
*/
try {
values.put(KEY_VALUE, (String) item.getValue());
} catch (ClassCastException e) {
if(gameHistory != null)
//insert the information values
for(Entry<String, Object> item : gameHistory.valueSet()){
ContentValues values = new ContentValues();
values.put(KEY_NAME, gameName);
values.put(KEY, item.getKey());
/*
* Try get the value.
* If there is a class cast exception, try casting to the next object type.
*
* The following types are tried:
* String
* Integer
* Boolean
*/
try {
values.put(KEY_VALUE, (Boolean) item.getValue() ? 1 : 0);
} catch (ClassCastException e1) {
values.put(KEY_VALUE, (Integer) item.getValue());
values.put(KEY_VALUE, (String) item.getValue());
} catch (ClassCastException e) {
try {
values.put(KEY_VALUE, (Boolean) item.getValue() ? 1 : 0);
} catch (ClassCastException e1) {
values.put(KEY_VALUE, (Integer) item.getValue());
}
}
mDb.insert(GAME_HISTORY_TABLE, null, values);
}
mDb.insert(GAME_HISTORY_TABLE, null, values);
}
}
/**

View File

@@ -7,6 +7,7 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
@@ -38,9 +39,11 @@ public class ExaltedDice extends Activity implements OnClickListener, OnItemClic
private int mCurrentDie;
private NumberPicker mDPicker;
private Database mDb;
private String mGameName;
private static final int MENU_QUIT = Menu.FIRST;
private static final int MENU_CLEAR = Menu.FIRST + 1;
private static final String TAG = "ExaltedDice";
public static final String KEY_GAME_NAME = "game_name";
private static final String[] DICE_VALUES = { "D2", "D3", "D4", "D6", "D8", "D10", "D12", "D20", "D100" };
/**
@@ -67,7 +70,6 @@ public class ExaltedDice extends Activity implements OnClickListener, OnItemClic
rollDice();
break;
}
}
/**
@@ -88,10 +90,15 @@ public class ExaltedDice extends Activity implements OnClickListener, OnItemClic
@Override
public void onCreate(Bundle savedInstanceState) {
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate()");
setContentView(R.layout.main);
Intent i = this.getIntent();
if(i != null)
if(i.hasExtra(KEY_GAME_NAME)){
mGameName = i.getStringExtra(KEY_GAME_NAME);
this.setTitle(mGameName);
}
listview = (ListView) findViewById(R.id.list);
listview.setOnItemClickListener(this);

View File

@@ -10,9 +10,14 @@ import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
@@ -21,14 +26,30 @@ import android.widget.ListView;
*
* @author ricky barrette
*/
public class GameListActivity extends Activity implements OnClickListener, DatabaseListener {
public class GameListActivity extends Activity implements OnClickListener, DatabaseListener, OnItemClickListener {
private static final int DELETE = 0;
private ListView mList;
private Database mDb;
@Override
public void onClick(View v) {
startActivity(new Intent(this, ExaltedDice.class));
new NewGameDialog(this, mDb).show();
}
/**
* (non-Javadoc)
* @see android.app.Activity#onContextItemSelected(android.view.MenuItem)
*/
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()){
case DELETE:
mDb.deleteGame(info.id+1);
break;
}
return super.onContextItemSelected(item);
}
/**
@@ -41,6 +62,8 @@ public class GameListActivity extends Activity implements OnClickListener, Datab
setContentView(R.layout.game_list);
findViewById(R.id.new_game_button).setOnClickListener(this);
mList = (ListView) findViewById(android.R.id.list);
mList.setOnItemClickListener(this);
mList.setEmptyView(findViewById(android.R.id.empty));
registerForContextMenu(mList);
}
@@ -52,9 +75,9 @@ public class GameListActivity extends Activity implements OnClickListener, Datab
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
/*
* TODO
* delete game
* rename game
*/
menu.add(0, DELETE, Menu.FIRST, R.string.delete);
super.onCreateContextMenu(menu, v, menuInfo);
}
@@ -66,14 +89,17 @@ public class GameListActivity extends Activity implements OnClickListener, Datab
@Override
public void onDatabaseUpgradeComplete() {
// TODO Auto-generated method stub
refresh();
}
@Override
public void onDeletionComplete() {
// TODO Auto-generated method stub
refresh();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
startActivity(new Intent(this, ExaltedDice.class).putExtra(ExaltedDice.KEY_GAME_NAME, mDb.getGameName(id +1)));
}
/**
@@ -99,8 +125,12 @@ public class GameListActivity extends Activity implements OnClickListener, Datab
@Override
protected void onResume() {
mDb = new Database(this, this);
mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mDb.getAllGameTitles()));
refresh();
super.onResume();
}
private void refresh() {
mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mDb.getAllGameTitles()));
}
}

View File

@@ -0,0 +1,46 @@
/**
* NewGameDialog.java
* @date Feb 4, 2012
* @author ricky barrette
* @author Twenty Codes, LLC
*/
package com.TwentyCode.android.ExaltedDice;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.EditText;
/**
* This dialog will be used to allow a user to enter a name for their game
* @author ricky barrette
*/
public class NewGameDialog extends Dialog implements android.view.View.OnClickListener {
private Context mContext;
private Database mDb;
private EditText mGameName;
public NewGameDialog(Context context, Database db) {
super(context);
mContext = context;
mDb = db;
this.setTitle(R.string.new_game);
this.setContentView(R.layout.new_game_dialog);
findViewById(R.id.new_game_button).setOnClickListener(this);
mGameName = (EditText) findViewById(R.id.editText);
}
@Override
public void onClick(View v) {
findViewById(R.id.progress).setVisibility(View.VISIBLE);
findViewById(R.id.new_game_button).setEnabled(false);
String name = mGameName.getText().toString();
mDb.insertGame(name, null);
mContext.startActivity(new Intent(mContext, ExaltedDice.class).putExtra(ExaltedDice.KEY_GAME_NAME, name));
this.dismiss();
}
}