package de.nisble.droidsweeper.gui;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.WrapperListAdapter;
import de.nisble.droidsweeper.R;
import static de.nisble.droidsweeper.config.Constants.*;
import de.nisble.droidsweeper.config.Level;
import de.nisble.droidsweeper.game.database.DSDBAdapter;
import de.nisble.droidsweeper.game.database.DSDBGameEntry;
import de.nisble.droidsweeper.utilities.LogDog;
/** MultiListActivity for showing the highscores.<br>
* @author Moritz Nisblé moritz.nisble@gmx.de */
public class HighScoreActivity extends Activity {
private static final String CLASSNAME = HighScoreActivity.class.getSimpleName();
private static final String[] POSTFIX = { "_easy", "_normal", "_hard" };
private static final Level[] LEVELS = { Level.EASY, Level.NORMAL, Level.HARD };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_timelist);
try {
for (int i = 0; i < 3; ++i) {
ListView l = (ListView) findViewById(getResources().getIdentifier("lvTimeList" + POSTFIX[i], "id",
getPackageName()));
l.setEmptyView((TextView) findViewById(getResources().getIdentifier("tvTimeList_empty" + POSTFIX[i],
"id", getPackageName())));
/* Add header view */
l.addHeaderView(getLayoutInflater().inflate(R.layout.layout_timelist_header, l, false), null, false);
l.setHeaderDividersEnabled(true);
/* Fetch list entries from database and put it into
* HighScoreListAdapter. */
l.setAdapter(new HighScoreListAdapter(getApplicationContext(), DSDBAdapter.INSTANCE.getGames(LEVELS[i])));
l.setOnItemClickListener(onClickListener);
}
} catch (Exception e) {
LogDog.e(CLASSNAME, "Unable to create HighScoreActivity", e);
}
}
private AdapterView.OnItemClickListener onClickListener = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
/* Get the HighScoreListAdapter back from parent view.
* The Adapter is wrapped, so we need to cast it back.
* Use the id to get the corresponding data base entry from the
* adapter. */
DSDBGameEntry entry = (DSDBGameEntry) ((HighScoreListAdapter) ((WrapperListAdapter) ((ListView) parent)
.getAdapter()).getWrappedAdapter()).getItem((int) id);
Intent intent = getIntent();
// TODO: Use a constant!
intent.putExtra("GAMEID", entry.GAMEID);
setResult(INTENTRESULT_PLAY_REPLAY, intent);
finish();
}
};
}