package br.edu.ufcg.ccc.projeto2.warofkingdoms.ui;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.model.CategorySeries;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import br.edu.ufcg.ccc.projeto2.warofkingdoms.management.ProfileManager;
import br.edu.ufcg.ccc.projeto2.warofkingdoms.util.Constants;
import br.ufcg.edu.ccc.projeto2.R;
import com.facebook.widget.ProfilePictureView;
public class ProfileActivity extends Activity implements OnClickListener {
private static int[] COLORS = new int[] { Color.rgb(0, 153, 64), Color.rgb(187, 67, 58) };
private static String[] NAME_LIST = new String[] { "Won", "Lost"};
private CategorySeries mSeries = new CategorySeries("");
private DefaultRenderer mRenderer = new DefaultRenderer();
private GraphicalView mChartView;
private int numVictories;
private int numTimesPlayed;
private ProfilePictureView profilePictureView;
private TextView userNameView;
private TextView numVictoriesLabel;
private TextView numLostsLabel;
private ProfileManager profileManager;
private Button victoryTrackBtn;
private int[] victoryTrackButtons = new int[] {R.id.game1,
R.id.game2,
R.id.game3,
R.id.game4,
R.id.game5,
R.id.game6,
R.id.game7,
R.id.game8,
R.id.game9,
R.id.game10};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.profile_screen);
profileManager = ProfileManager.getInstance();
setGraphParameters();
double[] statistics = getStatistics();
insertChartValues(statistics);
numVictoriesLabel = (TextView) findViewById(R.id.num_victories_textview);
String victoriesLabel = statistics[0] +"% ("+numVictories+")";
numVictoriesLabel.setText(victoriesLabel);
numLostsLabel = (TextView) findViewById(R.id.num_losts_textview);
String lostsLabel = statistics[1] +"% ("+(numTimesPlayed-numVictories)+")";
numLostsLabel.setText(lostsLabel);
// Find the user's profile picture custom view
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
String userName = sharedPreferences.getString("user_name", "Anonymous Player");
String userId = sharedPreferences.getString("user_id", "Anonymous Id");
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.anonymous_profile_picture);
profilePictureView = (ProfilePictureView) findViewById(R.id.selection_profile_pic);
profilePictureView.setCropped(true);
if(!userId.equals("Anonymous Id")) {
profilePictureView.setProfileId(userId);
}
profilePictureView.setDefaultProfilePicture(bm);
// Find the user's name view
userNameView = (TextView) findViewById(R.id.selection_user_name);
userNameView.setText(userName);
loadLast10Matches();
}
private double[] getStatistics() {
numTimesPlayed = profileManager.getIntSharedPreference(Constants.NUM_TIMES_PLAYED_KEY, getApplicationContext());
numVictories = profileManager.getIntSharedPreference(Constants.NUM_VICTORIES_KEY, getApplicationContext());
if (numTimesPlayed == 0) {
return new double[] { 50, 50 };
}
double vitoriesPercentage = (numVictories * 100)/numTimesPlayed;
double lostPercentage = 100 - vitoriesPercentage;
return new double[] { vitoriesPercentage, lostPercentage };
}
private void insertChartValues(double[] values) {
for (int i = 0; i < values.length; i++) {
mSeries.add(NAME_LIST[i] + " " + values[i], values[i]);
SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();
renderer.setColor(COLORS[(mSeries.getItemCount() - 1) % COLORS.length]);
mRenderer.addSeriesRenderer(renderer);
}
if (mChartView != null) {
mChartView.repaint();
}
}
private void loadLast10Matches() {
String victoryTrackStr = profileManager.getStringSharedPreference(Constants.TEN_LAST_GAMES, getApplicationContext());
String[] individualTrack = victoryTrackStr.split(" ");
for (int i = 0; i < 10; i++) {
victoryTrackBtn = (Button) findViewById(victoryTrackButtons[i]);
if (individualTrack[i].equals(ProfileManager.VICTORY)) {
victoryTrackBtn.setBackgroundColor(getResources().getColor(R.color.green));
}
else if (individualTrack[i].equals(ProfileManager.LOST)) {
victoryTrackBtn.setBackgroundColor(getResources().getColor(R.color.red));
}
else {
victoryTrackBtn.setBackgroundColor(getResources().getColor(R.color.gray));
}
}
}
@Override
public void onClick(View v) {
}
@Override
public void onBackPressed() {
startActivity(new Intent(this, ConnectActivity.class));
super.onBackPressed();
}
@Override
protected void onResume() {
super.onResume();
if (mChartView == null) {
LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
mChartView = ChartFactory.getPieChartView(this, mSeries, mRenderer);
mRenderer.setSelectableBuffer(10);
layout.addView(mChartView);
}
else {
mChartView.repaint();
}
}
private void setGraphParameters() {
mRenderer.setShowLabels(false);
mRenderer.setShowLegend(false);
mRenderer.setApplyBackgroundColor(true);
mRenderer.setBackgroundColor(Color.rgb(224, 224, 224));
mRenderer.setChartTitleTextSize(50);
mRenderer.setMargins(new int[] { 20, 30, 15, 0 });
mRenderer.setZoomButtonsVisible(false);
mRenderer.setClickEnabled(false);
mRenderer.setAntialiasing(true);
mRenderer.setPanEnabled(false);
mRenderer.setStartAngle(90);
}
}