package com.odoo.base.account; import odoo.OdooInstance; import android.app.Dialog; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.text.method.PasswordTransformationMethod; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.odoo.R; import com.odoo.auth.OdooAccountManager; import com.odoo.orm.OdooHelper; import com.odoo.support.AppScope; import com.odoo.support.OUser; import com.odoo.util.Base64Helper; import com.odoo.util.OControls; import com.odoo.util.dialog.MaterialDialog; public class UserProfile extends ActionBarActivity { private EditText password = null; private MaterialDialog builder = null; private Dialog dialog = null; private View rootview = null; private AppScope scope = null; private ActionBar actionBar; private Context mContext = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_profile); mContext = this; actionBar = getSupportActionBar(); actionBar.setBackgroundDrawable(new ColorDrawable(Color .parseColor("#00000000"))); actionBar.setTitle(""); actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); scope = new AppScope(mContext); rootview = findViewById(R.id.profile_parent_view); setupView(); } private void setupView() { Bitmap userPic = null; if (!scope.User().getAvatar().equals("false")) userPic = Base64Helper.getBitmapImage(scope.context(), scope.User() .getAvatar()); else userPic = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.avatar); OControls.setImage(rootview, R.id.imgUserProfilePic, userPic); OControls.setText(rootview, R.id.userFullName, scope.User().getName()); OControls.setText(rootview, R.id.txvUserName, scope.User() .getUsername()); OControls.setText(rootview, R.id.txvServerUrl, (scope.User() .isOAauthLogin()) ? scope.User().getInstanceUrl() : scope .User().getHost()); OControls.setText(rootview, R.id.txvDatabase, (scope.User() .isOAauthLogin()) ? scope.User().getInstanceDatabase() : scope .User().getDatabase()); String timezone = scope.User().getTimezone(); OControls.setText(rootview, R.id.txvTimeZone, (timezone.equals("false")) ? "GMT" : timezone); OControls.setText(rootview, R.id.txvOdooVersion, scope.User() .getVersion_serie()); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_user_profile, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; case R.id.menu_account_user_profile_sync: dialog = inputPasswordDialog(); dialog.show(); return true; } return super.onOptionsItemSelected(item); } private Dialog inputPasswordDialog() { builder = new MaterialDialog(scope.context()); password = new EditText(scope.context()); password.setTransformationMethod(PasswordTransformationMethod .getInstance()); builder.setTitle(R.string.title_enter_password); builder.setCustomView(password); builder.setupPositiveButton(R.string.label_update_info, new View.OnClickListener() { @Override public void onClick(View v) { OUser userData = null; try { OdooHelper odoo = null; if (scope.User().isOAauthLogin()) { odoo = new OdooHelper(mContext); OdooInstance instance = new OdooInstance(); instance.setInstanceUrl(scope.User() .getInstanceUrl()); instance.setDatabaseName(scope.User() .getInstanceDatabase()); instance.setClientId(scope.User().getClientId()); userData = odoo.instance_login(instance, scope .User().getUsername(), password .getText().toString()); } else { odoo = new OdooHelper(mContext, scope.User() .isAllowSelfSignedSSL()); userData = odoo.login(scope.User() .getUsername(), password.getText() .toString(), scope.User().getDatabase(), scope .User().getHost()); } } catch (Exception e) { e.printStackTrace(); } if (userData != null) { if (OdooAccountManager.updateAccountDetails( scope.context(), userData)) { Toast.makeText(mContext, "Infomation Updated.", Toast.LENGTH_LONG).show(); } } else { Toast.makeText( mContext, getResources().getString( R.string.toast_invalid_password), Toast.LENGTH_LONG).show(); } setupView(); dialog.dismiss(); } }); builder.setupNegativeButton(R.string.label_cancel, new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); return builder; } }