/**
* 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");
}
}
}
}