/** * Odoo, Open Source Management Solution * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http:www.gnu.org/licenses/> * * Created on 16/2/15 12:52 PM */ package com.odoo.core.account; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import com.odoo.App; import com.odoo.OdooActivity; import com.odoo.R; import com.odoo.core.auth.OdooAccountManager; import com.odoo.core.service.OSyncAdapter; import com.odoo.core.utils.BitmapUtils; import com.odoo.core.utils.OResource; import com.odoo.core.utils.notification.ONotificationBuilder; import odoo.Odoo; import odoo.helper.OUser; public class OdooAccountQuickManage extends AppCompatActivity implements View.OnClickListener { public static final String TAG = OdooAccountQuickManage.class.getSimpleName(); private OUser user = null; private ImageView userAvatar; private TextView txvName; private LoginProcess loginProcess = null; private EditText edtPassword; private String action; private App mApp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.base_account_quick_manage); getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); getSupportActionBar().hide(); action = getIntent().getAction(); mApp = (App) getApplicationContext(); // Removing notification ONotificationBuilder.cancelNotification(this, OSyncAdapter.REQUEST_SIGN_IN_ERROR); user = OdooAccountManager.getDetails(this, getIntent().getStringExtra("android_name")); if (action.equals("remove_account")) { findViewById(R.id.layoutSavePassword).setVisibility(View.GONE); removeAccount(); } else if (action.equals("reset_password")) { updatePassword(); findViewById(R.id.cancel).setOnClickListener(this); findViewById(R.id.save_password).setOnClickListener(this); } } private void updatePassword() { userAvatar = (ImageView) findViewById(R.id.userAvatar); Bitmap userImage = BitmapUtils.getAlphabetImage(this, user.getName()); if (!user.getAvatar().equals("false")) { userImage = BitmapUtils.getBitmapImage(this, user.getAvatar()); } userAvatar.setImageBitmap(userImage); txvName = (TextView) findViewById(R.id.userName); txvName.setText(user.getName()); } private void removeAccount() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.title_confirm); builder.setMessage(R.string.toast_are_you_sure_delete_account); builder.setPositiveButton(R.string.label_delete, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (OdooAccountManager.removeAccount( OdooAccountQuickManage.this, user.getAndroidName())) { new Handler().postDelayed(new Runnable() { @Override public void run() { Intent loginActivity = new Intent(OdooAccountQuickManage.this, OdooLogin.class); loginActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(loginActivity); finish(); } }, 500); } } }); builder.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { dialog.dismiss(); finish(); } }); builder.setNegativeButton(R.string.label_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); finish(); } }); builder.show(); } @Override public void onClick(View v) { ONotificationBuilder.cancelNotification(this, OSyncAdapter.REQUEST_SIGN_IN_ERROR); switch (v.getId()) { case R.id.cancel: finish(); break; case R.id.save_password: savePassword(); break; } } private void savePassword() { edtPassword = (EditText) findViewById(R.id.newPassword); edtPassword.setError(null); if (TextUtils.isEmpty(edtPassword.getText())) { edtPassword.setError("Password required"); edtPassword.requestFocus(); } user.setPassword(edtPassword.getText().toString()); loginProcess = new LoginProcess(); loginProcess.execute(user.getDatabase(), user.getHost()); } private class LoginProcess extends AsyncTask<String, Void, OUser> { private ProgressDialog progressDialog; @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = new ProgressDialog(OdooAccountQuickManage.this); progressDialog.setTitle(R.string.title_working); progressDialog.setMessage(OResource.string(OdooAccountQuickManage.this, R.string.toast_updating_password)); progressDialog.setCancelable(false); progressDialog.show(); } @Override protected OUser doInBackground(String... params) { Odoo odoo = mApp.getOdoo(user); if (odoo == null) { odoo = OSyncAdapter.createOdooInstance(OdooAccountQuickManage.this, (com.odoo.core.support.OUser) user); } return odoo.authenticate(user.getUsername(), user.getPassword(), user.getDatabase()); } @Override protected void onPostExecute(OUser oUser) { super.onPostExecute(oUser); progressDialog.dismiss(); if (oUser != null) { OdooAccountManager.updateUserData(OdooAccountQuickManage.this, (com.odoo.core.support.OUser) user); mApp.setOdoo(null, user); finish(); Intent intent = new Intent(OdooAccountQuickManage.this, OdooActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getApplicationContext().startActivity(intent); } else { edtPassword.setText(""); edtPassword.setError("Password required"); } } } }