package com.kaorisan.activity; import android.annotation.SuppressLint; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.Typeface; import android.net.Uri; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.kaorisan.R; import com.kaorisan.beans.AccountDashBoard; import com.kaorisan.common.DebugLog; import com.kaorisan.common.Utils.Social; import com.kaorisan.dataLayer.CacheData; import com.kaorisan.dialog.PopUpMessage; import com.kaorisan.lazyload.ImageLoader; import com.kaorisan.manager.AccountDashBoardManager; import com.kaorisan.manager.AuthenticationManager; import com.kaorisan.supportActivity.LogoutConfirm; import com.kaorisan.supportActivity.LogoutConfirm.OnLogoutYesClicked; @SuppressLint("InlinedApi") public class AccountDashboardActivity extends Activity implements OnClickListener { ProgressDialog showProcess = null; TextView txtEmail; TextView txtName; TextView txtPlanName; TextView btnRateUs; TextView txtRequestUse; Button btnLogout; private ImageView imgAvatar; private Button btnDone; Resources resource = null; private final int STARNDARD_WIDTH = 720; private int requestLeft; private final String EMPTY_STRING = ""; float values[] = new float[2]; private RelativeLayout chartLayoutProgress = null; RelativeLayout frameChart = null; Context context = getBaseContext(); CacheData cacheData = null; private boolean flag = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_account_dashboard); resource = this.getResources(); cacheData = CacheData.getInstant(); txtRequestUse = (TextView) findViewById(R.id.txtRequestUse); btnLogout = (Button)findViewById(R.id.btnLogout); txtEmail = (TextView) findViewById(R.id.txtEmail); txtName = (TextView) findViewById(R.id.txtName); txtPlanName = (TextView) findViewById(R.id.txtPlanName); btnRateUs = (TextView) findViewById(R.id.btnRate); btnDone = (Button) findViewById(R.id.btnDone); btnDone.setOnClickListener(this); frameChart = (RelativeLayout) findViewById(R.id.linear); bindData(); } private float[] calculateData(float[] data) { float total = 0; for (int i = 0; i < data.length; i++) { total += data[i]; } for (int i = 0; i < data.length; i++) { if(total != 0){ data[i] = 360 * (data[i] / total); flag = true; }else{ data[i] = 360; } } return data; } public void onButtonClick(View view) { switch (view.getId()) { case R.id.btnRateUs: DebugLog.logd("Button Rate Us click"); final String appPackageName = "com.facebook.katana&hl=vi"; try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName))); } catch (android.content.ActivityNotFoundException anfe) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName))); } break; /* case R.id.btnCommonRequest: DebugLog.logd("Button Common Request click"); Intent intentCommonRequest = new Intent(this, CommonRequestActivity.class); startActivity(intentCommonRequest); break; */ case R.id.btnTearmAndCondition: DebugLog.logd("Button Tearm And Condition click"); Intent intentTearmAndCondition = new Intent(this,TermsAndConditionsActivity.class); startActivity(intentTearmAndCondition); break; case R.id.btnEmailSupport: DebugLog.logd("Button Email Support click"); Intent email = new Intent(Intent.ACTION_SEND); email.putExtra(Intent.EXTRA_EMAIL, new String[] { getResources().getString(R.string.email_support) }); email.putExtra(Intent.EXTRA_SUBJECT, getResources().getString(R.string.email_title)); email.setType("message/rfc822"); this.startActivity(Intent.createChooser(email, "Email Support:")); break; } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.account_dashboard, menu); return true; } public void onBtnLogOutClicked(View v) { switch (v.getId()) { case R.id.btnLogout: DebugLog.logd("btn logout clicked"); LogoutConfirm logoutConfirm = null; if (cacheData.getTokenKaorisan() != null) { // show logout confirm before logoutConfirm = new LogoutConfirm((Activity) this, new OnLogoutYesClicked() { public void onLogOutClicked(final Activity behind) { try { // LoginActivity.isLogout = 1; // Intent loginIntent = new Intent(Splash.getInstant(), LoginActivity.class); // loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // startActivity(loginIntent); // if (behind != null) { // behind.finish(); // } AuthenticationManager manager = new AuthenticationManager(); manager.logout(CacheData.getInstant().getTokenKaorisan(),"android",CacheData.getInstant().getCurrentUser().getPushToken(), new AuthenticationManager.OnLogout() { @Override public void onLogoutMethod(boolean isSuccess, String message) { if(isSuccess){ LoginActivity.isLogout = 1; if(LoginActivity.currentSocial == Social.GOOGLE){ if(LoginActivity.mPlusClient.isConnected()){ LoginActivity.mPlusClient.clearDefaultAccount(); } } Intent loginIntent = null; if(Splash.getInstant() != null){ loginIntent = new Intent(Splash.getInstant(), LoginActivity.class); }else{ loginIntent = new Intent(AccountDashboardActivity.this, LoginActivity.class); } loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(loginIntent); if (behind != null) { behind.finish(); } }else{ PopUpMessage popup = new PopUpMessage(AccountDashboardActivity.this, "<h2> " + resource.getString(R.string.network_error_message) + " </h2>", true, 3000, false); popup.show(); } } }); } catch (Exception e) { DebugLog.loge("Logout exception: " + e.getMessage()); } } }); } else { logoutConfirm = new LogoutConfirm((Activity) this, new OnLogoutYesClicked() { public void onLogOutClicked(Activity behind) { LoginActivity.isLogout = -1; if (behind != null) { behind.finish(); } } }); } logoutConfirm.show(); break; case R.id.btnDone: finish(); } } @SuppressWarnings("deprecation") private void bindData() { btnLogout.setClickable(false); if (cacheData.getCurrentUser() != null) { if (cacheData.getCurrentUser().getAvatar() != null) { ImageLoader imageLoader = new ImageLoader(AccountDashboardActivity.this); imgAvatar = (ImageView) findViewById(R.id.imgAvatar); imageLoader.DisplayImage(cacheData.getCurrentUser().getAvatar(), imgAvatar); } txtName.setText(cacheData.getCurrentUser().getFullName()); } LayoutInflater layoutInflater = LayoutInflater.from(this); chartLayoutProgress = (RelativeLayout) layoutInflater.inflate(R.layout.progress_layout, null, false); chartLayoutProgress.setLayoutParams(new ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.FILL_PARENT)); chartLayoutProgress.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL); frameChart.addView(chartLayoutProgress); AccountDashBoardManager accountDashBoardManager = new AccountDashBoardManager(); accountDashBoardManager.getAccountDashBoard(cacheData.getTokenKaorisan(), new AccountDashBoardManager.OnGetAccountDashBoardResult() { @Override public void onGetDashBoardResultMethod(boolean isSuccess, AccountDashBoard accountDashBoard, String message) { if (isSuccess) { Log.i("Tesst", "Plan: " + accountDashBoard.getPlanName()); txtPlanName.setText(accountDashBoard.getPlanName()); txtEmail.setText(accountDashBoard.getEmail()); if(cacheData.getDashBoard() != null){ txtRequestUse.setText(String.format( resource.getString(R.string.request_use_text_format), accountDashBoard.getUserRequest() + cacheData.getDashBoard().getClosedTask(), accountDashBoard.getTotalRequest() + cacheData.getDashBoard().getAvailableTask() + EMPTY_STRING)); requestLeft = (accountDashBoard.getTotalRequest() + cacheData.getDashBoard().getAvailableTask()) - (accountDashBoard.getUserRequest() + cacheData.getDashBoard().getClosedTask()); values[0] = accountDashBoard.getUserRequest() + cacheData.getDashBoard().getClosedTask(); values[1] = requestLeft; Log.i("values0", ""+values[0]); Log.i("values1", ""+values[1]); values = calculateData(values); MyGraphview graphview = new MyGraphview(AccountDashboardActivity.this, values); frameChart.addView(graphview); frameChart.removeView(chartLayoutProgress); } } else { DebugLog.loge("Get account dashboard failed!"); } btnLogout.setClickable(true); } }); } public class MyGraphview extends View { public int getWidthScreen() { DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int width = displaymetrics.widthPixels; DebugLog.logd("Width: " + width); return width; } private int widthScreen = getWidthScreen(); private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); private float[] value_degree; float temp = 0; RectF rectf = new RectF(0, 0, 200 * widthScreen / STARNDARD_WIDTH, 200 * widthScreen / STARNDARD_WIDTH); @SuppressLint("NewApi") public MyGraphview(Context context, float[] values) { super(context); if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){ this.setLayerType(View.LAYER_TYPE_SOFTWARE, paint); DebugLog.logd("Set software acceleration!"); } value_degree = new float[values.length]; for (int i = 0; i < values.length; i++) { value_degree[i] = values[i]; } } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); DebugLog.logd("onDraw"); for (int i = 0; i < value_degree.length; i++) { if (i == 0) { paint.setColor(Color.parseColor("#c8c8c8")); canvas.drawArc(rectf, 270, value_degree[i], true, paint); } else { if(flag == true){ temp += value_degree[i - 1]; paint.setColor(Color.parseColor("#e23a80")); canvas.drawArc(rectf, temp + 270, value_degree[i], true, paint); } } } paint.setColor(Color.parseColor("#ffffff")); canvas.drawCircle(100 * widthScreen / STARNDARD_WIDTH, 100 * widthScreen / STARNDARD_WIDTH, 55 * widthScreen / STARNDARD_WIDTH, paint); paint.setColor(Color.parseColor("#000000")); paint.setTextSize(35f * widthScreen / STARNDARD_WIDTH); paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); canvas.drawText(requestLeft < 10 ? "0" + requestLeft : requestLeft + "", 80 * widthScreen / STARNDARD_WIDTH, 90 * widthScreen / STARNDARD_WIDTH, paint); paint.setColor(Color.parseColor("#cccccc")); paint.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL)); paint.setTextSize(30f * widthScreen / STARNDARD_WIDTH); canvas.drawText("LEFT", 70 * widthScreen / STARNDARD_WIDTH, 130 * widthScreen / STARNDARD_WIDTH, paint); } } @Override public void onClick(View view) { DebugLog.logd("Button Settings click"); onBackPressed(); } @Override public void onBackPressed() { super.onBackPressed(); finish(); } }