Advertisement
Guest User

Untitled

a guest
Nov 25th, 2014
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.49 KB | None | 0 0
  1. package org.theidared.app.fragments;
  2.  
  3. import android.app.Activity;
  4. import android.app.AlertDialog;
  5. import android.app.ProgressDialog;
  6. import android.content.DialogInterface;
  7. import android.os.Bundle;
  8. import android.support.v4.app.Fragment;
  9. import android.view.LayoutInflater;
  10. import android.view.View;
  11. import android.view.View.OnClickListener;
  12. import android.view.ViewGroup;
  13. import android.widget.Button;
  14. import android.widget.EditText;
  15. import android.widget.RadioGroup;
  16. import android.widget.RelativeLayout;
  17. import android.widget.Toast;
  18.  
  19. import com.parse.GetCallback;
  20. import com.parse.LogInCallback;
  21. import com.parse.ParseException;
  22. import com.parse.ParseObject;
  23. import com.parse.ParseQuery;
  24. import com.parse.ParseUser;
  25. import com.parse.RequestPasswordResetCallback;
  26. import com.parse.SaveCallback;
  27. import com.parse.SignUpCallback;
  28.  
  29. import org.theidared.app.R;
  30.  
  31. import info.hoang8f.android.segmented.SegmentedGroup;
  32.  
  33. public class LoginFragment extends Fragment implements RadioGroup.OnCheckedChangeListener
  34. {
  35. private SegmentedGroup loginSegment;
  36. private RelativeLayout signUpLayout, loginLayout;
  37. private EditText etEmail, etFirstName, etLastName, etPassword, etEmailLogIn, etPasswordLogin;
  38. private Button bSignUp, bLogin;
  39. private ProgressDialog pDialog;
  40. private org.theidared.app.interfaces.LogInStateListener onLogInListener;
  41.  
  42. public static Fragment newInstance()
  43. {
  44. return new LoginFragment();
  45. }
  46.  
  47. @Override
  48. public void onAttach(Activity activity)
  49. {
  50. super.onAttach(activity);
  51. onLogInListener = (org.theidared.app.interfaces.LogInStateListener) activity;
  52. }
  53.  
  54. @Override
  55. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
  56. {
  57. View v = inflater.inflate(R.layout.fragment_login, container, false);
  58. loginSegment = (SegmentedGroup) v.findViewById(R.id.segmented);
  59. loginSegment.setTintColor(getResources().getColor(R.color.primary_color));
  60.  
  61. signUpLayout = (RelativeLayout) v.findViewById(R.id.sg_signup);
  62. loginLayout = (RelativeLayout) v.findViewById(R.id.sg_login);
  63.  
  64. etEmail = (EditText) v.findViewById(R.id.et_email);
  65. etFirstName = (EditText) v.findViewById(R.id.et_first_name);
  66. etLastName = (EditText) v.findViewById(R.id.et_last_name);
  67. etPassword = (EditText) v.findViewById(R.id.et_password);
  68.  
  69. bSignUp = (Button) v.findViewById(R.id.b_continue);
  70. bSignUp.setOnClickListener(new OnClickListener()
  71. {
  72. @Override
  73. public void onClick(View v)
  74. {
  75. onSignUpClicked();
  76. }
  77. });
  78.  
  79. etEmailLogIn = (EditText) v.findViewById(R.id.et_email_login);
  80. etPasswordLogin = (EditText) v.findViewById(R.id.et_password_log_in);
  81. bLogin = (Button) v.findViewById(R.id.b_login);
  82. bLogin.setOnClickListener(new OnClickListener()
  83. {
  84. @Override
  85. public void onClick(View v)
  86. {
  87. onLogInClicked();
  88. }
  89. });
  90.  
  91. v.findViewById(R.id.forgot_password_text_view).setOnClickListener(new OnClickListener()
  92. {
  93. @Override
  94. public void onClick(View view)
  95. {
  96. onForgotPasswordClicked();
  97. }
  98. });
  99.  
  100. loginSegment.setOnCheckedChangeListener(this);
  101. org.theidared.app.utility.FontUtils.getInstance().overrideFonts(v, org.theidared.app.utility.Fonts.LIGHT);
  102. return v;
  103. }
  104.  
  105. public void onSignUpClicked()
  106. {
  107. if (etEmailLogIn.getText().equals("") || etPasswordLogin.getText().equals(""))
  108. {
  109. Toast.makeText(getActivity(), "Please fill out all fields", Toast.LENGTH_LONG).show();
  110. return;
  111. }
  112.  
  113. pDialog = org.theidared.app.utility.Utils.createProgressDialog(getActivity());
  114. pDialog.show();
  115.  
  116. final String username = etEmail.getText().toString().trim();
  117. final String password = etPassword.getText().toString();
  118.  
  119. ParseUser.logInInBackground(username, password, new LogInCallback() // Try to log the user in if they've used our app before
  120. {
  121. @Override
  122. public void done(ParseUser parseUser, ParseException e)
  123. {
  124. if (e != null) // Need to create a new user
  125. {
  126. final ParseUser user = new ParseUser();
  127. user.setEmail(username);
  128. user.setUsername(username);
  129. user.setPassword(password);
  130. user.put("appCompany", org.theidared.app.model.LocalUser.getInstance().getParentCompany());
  131. user.put("fullName", etFirstName.getText().toString() + " " + etLastName.getText().toString());
  132. user.signUpInBackground(new SignUpCallback()
  133. {
  134. @Override
  135. public void done(ParseException e)
  136. {
  137. if (getActivity() != null)
  138. {
  139. pDialog.dismiss();
  140.  
  141. if (e == null)
  142. {
  143. updateUserData();
  144. }
  145. else
  146. {
  147. Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
  148. }
  149. }
  150. }
  151. });
  152. }
  153. else
  154. {
  155. if (getActivity() != null)
  156. pDialog.dismiss();
  157.  
  158. updateUserData();
  159. }
  160. }
  161. });
  162. }
  163.  
  164. public void updateUserData()
  165. {
  166. ParseQuery<ParseObject> userDataQuery = new ParseQuery<ParseObject>("UserData");
  167. userDataQuery.whereEqualTo("user", ParseUser.getCurrentUser());
  168. userDataQuery.whereEqualTo("appParentCompany", org.theidared.app.model.LocalUser.getInstance().getParentCompany());
  169. userDataQuery.getFirstInBackground(new GetCallback<ParseObject>()
  170. {
  171. @Override
  172. public void done(ParseObject parseObject, ParseException e)
  173. {
  174. if (parseObject == null)
  175. {
  176. ParseObject userData = new ParseObject("UserData");
  177. userData.put("user", ParseUser.getCurrentUser());
  178. userData.put("appParentCompany", org.theidared.app.model.LocalUser.getInstance().getParentCompany());
  179. userData.put("rewardPoints", new Integer(0));
  180. userData.saveInBackground(new SaveCallback()
  181. {
  182. @Override
  183. public void done(ParseException e)
  184. {
  185. if (e == null)
  186. {
  187. if (getActivity() != null)
  188. onUserSignedIn();
  189. }
  190. else
  191. {
  192. e.printStackTrace();
  193. }
  194. }
  195. });
  196. }
  197. else
  198. {
  199. onUserSignedIn();
  200. }
  201. }
  202. });
  203. }
  204.  
  205. public void onLogInClicked()
  206. {
  207. org.theidared.app.utility.Utils.hideKeyboard(getActivity());
  208. boolean validationError = false;
  209. StringBuilder validationErrorMessage = new StringBuilder(getResources().getString(R.string.error_intro));
  210.  
  211. if (isEmpty(etEmailLogIn))
  212. {
  213. validationError = true;
  214. validationErrorMessage.append(getResources().getString(R.string.error_blank_email));
  215. }
  216.  
  217. if (isEmpty(etPasswordLogin))
  218. {
  219. if (validationError)
  220. {
  221. validationErrorMessage.append(getResources().getString(R.string.error_join));
  222. }
  223. validationError = true;
  224. validationErrorMessage.append(getResources().getString(R.string.error_blank_password));
  225. }
  226.  
  227. validationErrorMessage.append(getResources().getString(R.string.error_end));
  228. if (validationError)
  229. {
  230. Toast.makeText(getActivity(), validationErrorMessage.toString(), Toast.LENGTH_LONG).show();
  231. return;
  232. }
  233.  
  234. pDialog = org.theidared.app.utility.Utils.createProgressDialog(getActivity());
  235. pDialog.show();
  236.  
  237. String email = etEmailLogIn.getText().toString();
  238. String password = etPasswordLogin.getText().toString();
  239. ParseUser.logInInBackground(email, password, new LogInCallback()
  240. {
  241. @Override
  242. public void done(final ParseUser user, final ParseException logInException)
  243. {
  244. if (getActivity() != null)
  245. pDialog.dismiss();
  246.  
  247. if (logInException == null)
  248. {
  249. user.getRelation("parentCompanies").add(org.theidared.app.model.LocalUser.getInstance().getParentCompany());
  250. user.saveInBackground();
  251. updateUserData();
  252. }
  253. else
  254. {
  255. if (getActivity() != null)
  256. Toast.makeText(getActivity(), logInException.getMessage(), Toast.LENGTH_LONG).show();
  257. }
  258. }
  259. });
  260. }
  261.  
  262.  
  263. public void onUserSignedIn()
  264. {
  265. Toast.makeText(getActivity(), "Successfully logged in.", Toast.LENGTH_LONG).show();
  266. onLogInListener.onLogInToggled(false);
  267. }
  268.  
  269. public void onForgotPasswordClicked()
  270. {
  271. View resetPasswordView = View.inflate(getActivity(), R.layout.forgot_password_layout, null);
  272. final EditText resetEmailEditText = (EditText) resetPasswordView.findViewById(R.id.forgot_password_edit_text);
  273.  
  274. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  275. builder.setTitle("Forgot Password?").setView(resetPasswordView);
  276. builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
  277. {
  278. @Override
  279. public void onClick(DialogInterface dialogInterface, int i)
  280. {
  281. final String email = resetEmailEditText.getText().toString();
  282. if (!email.equals(""))
  283. {
  284. ParseUser.requestPasswordResetInBackground(email, new RequestPasswordResetCallback()
  285. {
  286. @Override
  287. public void done(ParseException e)
  288. {
  289. if (e == null)
  290. {
  291. if (getActivity() != null)
  292. {
  293. Toast.makeText(getActivity(), "Sent reset email to: " + email, Toast.LENGTH_LONG).show();
  294. }
  295. }
  296. else
  297. {
  298. e.printStackTrace();
  299. }
  300. }
  301. });
  302. }
  303. else
  304. {
  305. Toast.makeText(getActivity(), "Please enter a valid email", Toast.LENGTH_SHORT).show();
  306. }
  307. }
  308. });
  309.  
  310. builder.setNegativeButton(android.R.string.cancel, null);
  311. builder.show();
  312. }
  313.  
  314. @Override
  315. public void onCheckedChanged(RadioGroup group, int checkedId)
  316. {
  317. switch (checkedId)
  318. {
  319. case R.id.rb_signup:
  320. signUpLayout.setVisibility(View.VISIBLE);
  321. loginLayout.setVisibility(View.GONE);
  322. break;
  323. case R.id.rb_login:
  324. loginLayout.setVisibility(View.VISIBLE);
  325. signUpLayout.setVisibility(View.GONE);
  326. break;
  327. }
  328. }
  329.  
  330. private boolean isEmpty(EditText etText)
  331. {
  332. return etText.getText().toString().trim().length() <= 0;
  333. }
  334.  
  335. @Override
  336. public void onDestroyView()
  337. {
  338. super.onDestroyView();
  339. if (pDialog != null && pDialog.isShowing())
  340. pDialog.cancel();
  341. }
  342. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement