/************************************************************************************* * Product: SFAndroid (Sales Force Mobile) * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * * by the Free Software Foundation. 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 General Public License for more details. * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * * For the text or an alternative of this public license, you may reach us * * Copyright (C) 2012-2013 E.R.P. Consultores y Asociados, S.A. All Rights Reserved. * * Contributor(s): Yamel Senih www.erpconsultoresyasociados.com * *************************************************************************************/ package org.spinsuite.login; import java.util.ArrayList; import java.util.Locale; import org.spinsuite.base.DB; import org.spinsuite.base.R; import org.spinsuite.interfaces.I_Login; import org.spinsuite.util.DisplaySpinner; import org.spinsuite.util.Env; import org.spinsuite.util.Msg; import org.spinsuite.view.custom.Cust_Spinner; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.EditText; public class T_Login extends Fragment implements I_Login { private EditText et_User; private EditText et_Pass; private CheckBox ch_SavePass; private CheckBox ch_AutomaticVisitClosing; private Cust_Spinner sp_Language; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.t_login, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); et_User = (EditText) getActivity().findViewById(R.id.et_User); et_Pass = (EditText) getActivity().findViewById(R.id.et_Pass); ch_SavePass = (CheckBox) getActivity().findViewById(R.id.ch_SavePass); ch_AutomaticVisitClosing = (CheckBox) getActivity().findViewById(R.id.ch_AutomaticVisitClosing); sp_Language = (Cust_Spinner) getActivity().findViewById(R.id.sp_Language); ArrayList <DisplaySpinner> data = new ArrayList<DisplaySpinner>(); for(Locale loc : Locale.getAvailableLocales()){ data.add(new DisplaySpinner(0, loc.getDisplayName(), loc.toString())); } sp_Language.load(data); } /** * Reload Activity * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 07/02/2013, 18:56:16 * @param language * @return void */ private void reloadLanguage(String language){ Env.changeLanguage(getActivity(), language); Intent refresh = new Intent(getActivity(), Login.class); startActivity(refresh); getActivity().finish(); } /** * Valid User and Password * @author Yamel Senih 04/02/2013, 19:36:24 * @return * @return boolean */ private boolean validUser() { String user = et_User.getText().toString().trim(); String pass = et_Pass.getText().toString().trim(); if(user != null && user.length() > 0){ if(pass != null && pass.length() > 0){ Env.setContext(this.getActivity(), "#SUser", user); Env.setContext(this.getActivity(), "#SPass", pass); Env.setSavePass(this.getActivity(), ch_SavePass.isChecked()); Env.setAutomaticVisitClosing(this.getActivity(), ch_AutomaticVisitClosing.isChecked()); String language = (String)((DisplaySpinner)sp_Language.getSelectedItem()).getHiddenValue(); if(!language.equals(Env.getAD_Language(getActivity()))){ Env.setAD_Language(getActivity(), language); reloadLanguage(language); } if(!Env.isEnvLoad(this.getActivity())) return true; else if(findUser(user, pass)){ return true; } else { Msg.alertMsg(this.getActivity(), getResources().getString(R.string.msg_ValidError), getResources().getString(R.string.msg_UserPassDoNotMatch)); } } else { Msg.alertMustFillField(this.getActivity(), R.string.Pass, et_Pass); } } else { Msg.alertMustFillField(this.getActivity(), R.string.User, et_User); } return false; } /** * Find User on database * @author Yamel Senih 04/02/2013, 19:38:06 * @param user * @param pass * @return * @return boolean */ private boolean findUser(String user, String pass){ boolean ok = false; DB con = new DB(this.getActivity()); con.openDB(DB.READ_ONLY); String sql = "SELECT u.AD_User_ID " + "FROM AD_User u " + "WHERE u.Name = ? AND u.PassWord = ?"; Cursor rs = con.querySQL(sql, new String[]{user, pass}); // if(rs.moveToFirst()){ Env.setAD_User_ID(this.getActivity(), rs.getInt(0)); Env.setIsLogin(this.getActivity(), true); ok = true; } else { Env.setIsLogin(this.getActivity(), false); } con.closeDB(rs); return ok; } /** * Valid Exit * @author Yamel Senih 04/02/2013, 19:39:16 * @return * @return boolean */ private boolean validExit() { return true; } @Override public void onStart() { super.onStart(); String user = et_User.getText().toString(); String pass = et_Pass.getText().toString(); //boolean isSavePass = ch_SavePass.isChecked(); if(user == null || user.length() == 0){ user = Env.getContext(this.getActivity(), "#SUser"); if(user != null) et_User.setText(user); } // Recuerda Contraseña Check ch_SavePass.setChecked(Env.isSavePass(this.getActivity())); // Recuerda Cerrado Automático de Visitas ch_AutomaticVisitClosing.setChecked(Env.isAutomaticVisitClosing(this.getActivity())); // Recuerda la Contraseña if(pass == null || pass.length() == 0){ if(Env.isSavePass(this.getActivity())){ pass = Env.getContext(this.getActivity(), "#SPass"); if(pass != null) et_Pass.setText(pass); } } // Select Language String language = Env.getAD_Language(getActivity()); if(language != null && language.length() != 0){ sp_Language.setSelectedHiddenValue(language); } else sp_Language.setSelectedHiddenValue(Env.BASE_LANGUAGE); } @Override public boolean aceptAction() { return validUser(); } @Override public boolean cancelAction() { return validExit(); } @Override public boolean loadData() { return false; } }