package com.gebauz.KanaQuiz;
import java.util.Timer;
import java.util.TimerTask;
import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class QuizActivity
extends Activity
{
private AdView mAdView
;
private int mQuizMode = -
1;
private int mQuizCharacters = -
1;
private int mAnswerCharacters = -
1;
private KanaTable mZhuyinTable =
null;
private GridAdapter mGridButtonAdapter =
null;
int mCurrentQuizItem =
0;
int mCorrectAnswers =
0;
int mTotalAnswers =
0;
@
Override
public void onCreate
(Bundle savedInstanceState
)
{
super.
onCreate(savedInstanceState
);
setContentView
(R.
layout.
quiz);
// Create the adView
mAdView =
new AdView
(this, AdSize.
BANNER, Constants.
ADMOB_PUBLISHER_ID);
// Lookup your LinearLayout assuming itÂ’s been given
// the attribute android:id="@+id/mainLayout"
LinearLayout layout =
(LinearLayout
)findViewById
(R.
id.
mainLayout);
// Add the adView to it
layout.
addView(mAdView
);
// Initiate a generic request to load it with an ad
mAdView.
loadAd(new AdRequest
());
Bundle bundle =
this.
getIntent().
getExtras();
mQuizMode = bundle.
getInt("mode");
mQuizCharacters = bundle.
getInt("quiz");
mAnswerCharacters = bundle.
getInt("input");
if (mQuizMode == Constants.
MODE_ROMAJI)
setTitle
(R.
string.
romaji_mode);
else if (mQuizMode == Constants.
MODE_KANA)
setTitle
(R.
string.
kana_mode);
mZhuyinTable =
new KanaTable
(mQuizCharacters
);
mGridButtonAdapter =
new GridAdapter
(this, mZhuyinTable, mQuizMode, mAnswerCharacters
);
GridView gridview =
(GridView
)findViewById
(R.
id.
gridview);
gridview.
setAdapter(mGridButtonAdapter
);
gridview.
setOnItemClickListener(mItemClickListener
);
nextQuizItem
();
}
@
Override
public void onDestroy
()
{
mAdView.
destroy();
super.
onDestroy();
}
@
Override
public boolean onCreateOptionsMenu
(Menu menu
)
{
MenuInflater inflater = getMenuInflater
();
inflater.
inflate(R.
menu.
appmenu, menu
);
return true;
}
@
Override
public boolean onOptionsItemSelected
(MenuItem item
)
{
// Handle item selection
switch (item.
getItemId())
{
case R.
id.
katakana_table:
KanaTableActivity.
show(this, Constants.
QUIZ_KATAKANA);
return true;
case R.
id.
hiragana_table:
KanaTableActivity.
show(this, Constants.
QUIZ_HIRAGANA);
return true;
case R.
id.
about:
AboutActivity.
show(this);
return true;
default:
return super.
onOptionsItemSelected(item
);
}
}
private OnItemClickListener mItemClickListener =
new OnItemClickListener
()
{
public void onItemClick
(AdapterView
<?> parent,
View v,
int position,
long id
)
{
/*Log.d(Constants.LOG_TAG,"Position Clicked [" + position + "] with item id [" +
mGridButtonAdapter.getActualPinyin(position) + "=" + mGridButtonAdapter.getActualZhuyin(position) +
"] - current quiz item: " + mCurrentQuizItem);*/
mTotalAnswers++
;
if (mCurrentQuizItem == position
)
{
mCorrectAnswers++
;
showDialog
(Constants.
DIALOG_CORRECT);
}
else
{
showDialog
(Constants.
DIALOG_INCORRECT);
}
}
};
@
Override
protected Dialog onCreateDialog
(int id
)
{
switch(id
)
{
case Constants.
DIALOG_CORRECT:
case Constants.
DIALOG_INCORRECT:
return createAnswerDialog
(id
);
default:
return null;
}
}
@
Override
protected void onPrepareDialog
(int id,
final Dialog dialog
)
{
long timeOut =
1500;
TextView text =
(TextView
)dialog.
findViewById(R.
id.
text);
TextView textAnswer =
(TextView
)dialog.
findViewById(R.
id.
text_answer);
switch (id
)
{
case Constants.
DIALOG_CORRECT:
text.
setText(R.
string.
answer_correct);
break;
case Constants.
DIALOG_INCORRECT:
timeOut =
3000;
text.
setText(R.
string.
answer_incorrect);
break;
}
if (mQuizMode == Constants.
MODE_ROMAJI)
{
textAnswer.
setText(mGridButtonAdapter.
getActualRomaji(mCurrentQuizItem
) +
" " +
mGridButtonAdapter.
getActualExtraPronounciation(mCurrentQuizItem
) +
" = " +
mGridButtonAdapter.
getActualKana(mCurrentQuizItem
));
}
else if (mQuizMode == Constants.
MODE_KANA)
{
textAnswer.
setText(mGridButtonAdapter.
getActualKana(mCurrentQuizItem
) +
" = " +
mGridButtonAdapter.
getActualRomaji(mCurrentQuizItem
) +
" " +
mGridButtonAdapter.
getActualExtraPronounciation(mCurrentQuizItem
));
}
dialog.
setCancelable(false);
dialog.
setOnDismissListener(mDialogDismissListener
);
final Timer t =
new Timer();
t.
schedule(
new TimerTask()
{
public void run
()
{
dialog.
dismiss();
t.
cancel();
}
},
timeOut
);
}
protected Dialog createAnswerDialog
(int id
)
{
AlertDialog.
Builder builder
;
AlertDialog alertDialog
;
LayoutInflater inflater =
(LayoutInflater
)getSystemService
(LAYOUT_INFLATER_SERVICE
);
View layout = inflater.
inflate(R.
layout.
answer,
(ViewGroup
) findViewById
(R.
id.
layout_root));
ImageView icon =
(ImageView)layout.
findViewById(R.
id.
correct_image);
if (id == Constants.
DIALOG_CORRECT)
icon.
setImageResource(R.
drawable.
correct);
else
icon.
setImageResource(R.
drawable.
incorrect);
builder =
new AlertDialog.
Builder(this);
builder.
setView(layout
);
alertDialog = builder.
create();
return alertDialog
;
}
private OnDismissListener mDialogDismissListener =
new OnDismissListener
()
{
// @Override
public void onDismiss
(DialogInterface dialog
)
{
nextQuizItem
();
}
};
private void nextQuizItem
()
{
mCurrentQuizItem = mGridButtonAdapter.
nextRandomItem();
mGridButtonAdapter.
jumbleButtons(true);
mGridButtonAdapter.
notifyDataSetChanged();
String displayText =
"";
switch (mQuizMode
)
{
case Constants.
MODE_ROMAJI:
displayText = mGridButtonAdapter.
getActualRomaji(mCurrentQuizItem
);
if (mGridButtonAdapter.
getActualExtraPronounciation(mCurrentQuizItem
).
length() > 0)
displayText = displayText +
" " + mGridButtonAdapter.
getActualExtraPronounciation(mCurrentQuizItem
);
break;
case Constants.
MODE_KANA:
displayText = mGridButtonAdapter.
getActualKana(mCurrentQuizItem
);
break;
}
TextView textView =
(TextView
)findViewById
(R.
id.
characterAsked);
textView.
setText(displayText
);
float percentage = 0.0f
;
if (mTotalAnswers
> 0)
percentage =
(float)mCorrectAnswers /
(float)mTotalAnswers
;
TextView statusText =
(TextView
)findViewById
(R.
id.
statusText);
String correctAnswers = getString
(R.
string.
num_correct_answers);
statusText.
setText(String.
format(correctAnswers, mCorrectAnswers, mTotalAnswers, percentage
*100));
}
}