Advertisement
SenpaiZero

Untitled

May 18th, 2024
10
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.87 KB | None | 0 0
  1. package com.example.taskperformance;
  2.  
  3. import static android.text.InputType.TYPE_CLASS_TEXT;
  4. import static android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD;
  5.  
  6. import androidx.annotation.NonNull;
  7. import androidx.appcompat.app.AppCompatActivity;
  8. import androidx.constraintlayout.widget.ConstraintLayout;
  9. import androidx.core.app.ActivityCompat;
  10. import androidx.core.content.ContextCompat;
  11.  
  12. import android.animation.Animator;
  13. import android.animation.AnimatorListenerAdapter;
  14. import android.animation.ValueAnimator;
  15. import android.annotation.SuppressLint;
  16. import android.app.Activity;
  17. import android.content.Context;
  18. import android.content.Intent;
  19. import android.content.pm.PackageManager;
  20. import android.database.Cursor;
  21. import android.net.ConnectivityManager;
  22. import android.net.NetworkInfo;
  23. import android.os.Bundle;
  24. import android.text.InputType;
  25. import android.util.Log;
  26. import android.view.MotionEvent;
  27. import android.view.View;
  28. import android.view.animation.LinearInterpolator;
  29. import android.view.inputmethod.InputMethodManager;
  30. import android.widget.ArrayAdapter;
  31. import android.widget.Button;
  32. import android.widget.CheckBox;
  33. import android.widget.EditText;
  34. import android.widget.ImageButton;
  35. import android.widget.ImageView;
  36. import android.widget.LinearLayout;
  37. import android.widget.Spinner;
  38. import android.widget.TextView;
  39.  
  40. import com.example.Helper.AdminAccountHelper;
  41. import com.example.Helper.DatabaseHelper;
  42. import com.example.Helper.JavaMailAPI;
  43. import com.example.Helper.PasswordHelper;
  44. import com.example.Helper.ProfileHelper;
  45. import com.example.Helper.SettingHelper;
  46. import com.example.Helper.SqliteHelper;
  47. import com.example.Helper.StayLoginHelper;
  48. import com.example.Helper.userInterfaceHelper;
  49. import com.example.Helper.validationHelper;
  50.  
  51. import java.text.DecimalFormat;
  52. import java.util.ArrayList;
  53. import java.util.HashMap;
  54. import java.util.List;
  55. import java.util.Map;
  56. import java.util.Random;
  57. import android.Manifest;
  58.  
  59. public class MainActivity extends AppCompatActivity {
  60.  
  61. Spinner animSpeedSpinner, animSpinner;
  62. ImageButton login, register;
  63. TextView loginTxt, registerTxt, termsBtn, closeTerm, titleConfirm, msgConfirm, forgotBtn;
  64. EditText forgotEmail, forgotCode, forgotPassword;
  65. Button forgotCancel, forgotUpdate, forgotSend;
  66. ConstraintLayout forgotLayout;
  67. String code;
  68. ImageView bg, top, bottom, setting, exit;
  69. ConstraintLayout layout;
  70. userInterfaceHelper UIHelper;
  71. SettingHelper settingHelper;
  72. ProfileHelper profileHelper;
  73. CheckBox termCB, stayLogin;
  74. StayLoginHelper stayLoginHelper;
  75. ConstraintLayout loginLayout, registerLayout, termLayout, confirmationLayout, settingsLayout;
  76. Button cancelLogin, loginBtn, cancelRegister, registerBtn, cancelExit, confirmExit, settingCancel, settingApply;
  77. EditText loginUserTB, loginPassTB, registerUserTB, registerEmailTB, registerPassTB, registerRePassTB;
  78. boolean isOpened;
  79. @SuppressLint("ClickableViewAccessibility")
  80. @Override
  81. protected void onCreate(Bundle savedInstanceState) {
  82. super.onCreate(savedInstanceState);
  83. setContentView(R.layout.activity_main);
  84.  
  85. UIHelper = new userInterfaceHelper(this);
  86. UIHelper.removeActionbar();
  87. UIHelper.transparentStatusBar();
  88.  
  89. // Confirmation
  90. UIHelper.setConfirmation("EXIT", "DO YOU REALLY WANT TO EXIT?", "NO", "YES");
  91. UIHelper.setNegativeConfirmation("close");
  92. UIHelper.setPositiveConfirmation("exit");
  93.  
  94. profileHelper = new ProfileHelper(this);
  95. settingHelper = new SettingHelper(this);
  96.  
  97. isOpened = false;
  98. setUIVariables();
  99. setOnTouchListener();
  100. setOnClickListener();
  101.  
  102. UIHelper.setSpinner(getResources().getStringArray(R.array.yesno), animSpinner);
  103. UIHelper.setSpinner(getResources().getStringArray(R.array.animation_speed), animSpeedSpinner);
  104.  
  105. DatabaseHelper db = new DatabaseHelper(this);
  106. db.insertAccount("testUser", "test", "email", "LENDER", "FALSE", "TRUE");
  107. Cursor c = db.getAllAccounts();
  108.  
  109. if(c.moveToFirst()) {
  110. do {
  111. String user = c.getString(c.getColumnIndexOrThrow(SqliteHelper.AccountEntry.USERNAME_COLUMN));
  112. Log.d("DB", user);
  113. } while(c.moveToNext());
  114. }
  115.  
  116. stayLoginHelper = new StayLoginHelper(this);
  117.  
  118. if(stayLoginHelper.getStayLogin()) {
  119. String va = profileHelper.checkLogin(stayLoginHelper.getUserPass()[0], stayLoginHelper.getUserPass()[1]);
  120. if(va.equalsIgnoreCase("LENDER"))
  121. {
  122. startActivity(new Intent(MainActivity.this, lenderHome.class)
  123. .putExtra("name", stayLoginHelper.getUserPass()[0])
  124. .putExtra("username", stayLoginHelper.getUserPass()[0]));
  125. }
  126. else if(va.equalsIgnoreCase("BORROWER"))
  127. {
  128. startActivity(new Intent(MainActivity.this, userHome.class)
  129. .putExtra("name", stayLoginHelper.getUserPass()[0])
  130. .putExtra("username", stayLoginHelper.getUserPass()[0]));
  131. }
  132. }
  133.  
  134. }
  135. void openLoginRegister(View view, ConstraintLayout layout, ImageView bg, boolean isReverse)
  136. {
  137.  
  138. // startActivity(new Intent(MainActivity.this, borrower_info.class));
  139.  
  140. float start, end;
  141.  
  142. if(isReverse)
  143. {
  144. start = 0.8f;
  145. end = 1.0f;
  146. }
  147. else
  148. {
  149. start = 1.0f;
  150. end = 0.8f;
  151. }
  152. ValueAnimator anim = ValueAnimator.ofFloat(start, end);
  153. if(settingHelper.getAnimation())
  154. anim.setDuration((long) Math.abs(200 / settingHelper.getAnimationSpeed()));
  155. else
  156. anim.setDuration(0);
  157. anim.setInterpolator(new LinearInterpolator());
  158.  
  159. view.setOnClickListener(new View.OnClickListener() {
  160. @Override
  161. public void onClick(View v) {
  162. if(isOpened && (view.getId() != R.id.cancelLogin && view.getId() != R.id.cancelRegister)) return;
  163. if(UIHelper.isConfirmationVisible() || settingsLayout.getVisibility() == View.VISIBLE) return;
  164.  
  165. PasswordHelper.setViewPassword(loginPassTB, MainActivity.this);
  166. PasswordHelper.setViewPassword(registerPassTB, MainActivity.this);
  167. PasswordHelper.setViewPassword(registerRePassTB, MainActivity.this);
  168. isOpened = true;
  169. hideAllElements(isReverse);
  170. if(isReverse)
  171. {
  172. layout.setVisibility(View.GONE);
  173. isOpened = false;
  174. resetTextBox();
  175. }
  176.  
  177. anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
  178. @Override
  179. public void onAnimationUpdate(@NonNull ValueAnimator animation) {
  180. ((LinearLayout.LayoutParams) bg.getLayoutParams()).weight = (float) animation.getAnimatedValue();
  181. bg.requestLayout();
  182. }
  183. });
  184. anim.addListener(new AnimatorListenerAdapter() {
  185. @Override
  186. public void onAnimationEnd(Animator animation) {
  187. if(!isReverse)
  188. layout.setVisibility(View.VISIBLE);
  189. }
  190. });
  191. anim.start();
  192. }
  193. });
  194. }
  195.  
  196. void resetTextBox()
  197. {
  198. registerUserTB.setText(null);
  199. registerEmailTB.setText(null);
  200. registerPassTB.setText(null);
  201. registerRePassTB.setText(null);
  202.  
  203. loginUserTB.setText(null);
  204. loginPassTB.setText(null);
  205. PasswordHelper.hidePassword(new EditText[]{loginPassTB, registerPassTB, registerRePassTB}, this);
  206. }
  207. void setOnClickListener()
  208. {
  209. // Login
  210. openLoginRegister(login, loginLayout, top, false);
  211. openLoginRegister(top, loginLayout, top, false);
  212. openLoginRegister(loginTxt, loginLayout, top, false);
  213.  
  214. // Register
  215. openLoginRegister(register, registerLayout, bottom, false);
  216. openLoginRegister(registerTxt, registerLayout, bottom, false);
  217. openLoginRegister(bottom, registerLayout, bottom, false);
  218.  
  219. //Cancel Btn
  220. openLoginRegister(cancelLogin, loginLayout, top, true);
  221. openLoginRegister(cancelRegister, registerLayout, bottom, true);
  222.  
  223. // Terms and condition
  224. termsBtn.setOnClickListener(new View.OnClickListener() {
  225. @Override
  226. public void onClick(View v) {
  227. termLayout.setVisibility(View.VISIBLE);
  228. }
  229. });
  230.  
  231. closeTerm.setOnClickListener(new View.OnClickListener() {
  232. @Override
  233. public void onClick(View v) {
  234. termLayout.setVisibility(View.INVISIBLE);
  235. }
  236. });
  237.  
  238. settingCancel.setOnClickListener(new View.OnClickListener() {
  239. @Override
  240. public void onClick(View v) {
  241. settingsLayout.setVisibility(View.INVISIBLE);
  242. }
  243. });
  244.  
  245. loginBtn.setOnClickListener(new View.OnClickListener() {
  246. @Override
  247. public void onClick(View v) {
  248. String user = loginUserTB.getText().toString();
  249. String pass = loginPassTB.getText().toString();
  250.  
  251. AdminAccountHelper adminAccountHelper = new AdminAccountHelper(MainActivity.this);
  252. if(user.equalsIgnoreCase("admin") && adminAccountHelper.getPassword().equals(pass))
  253. {
  254. startActivity(new Intent(MainActivity.this, adminHome.class)
  255. .putExtra("username", "ADMIN"));
  256. return;
  257. }
  258. if(user.isEmpty())
  259. {
  260. UIHelper.showCustomToast("Username input is invalid");
  261. return;
  262. }
  263. else if(pass.isEmpty())
  264. {
  265. UIHelper.showCustomToast("Password input is invalid");
  266. return;
  267. }
  268.  
  269.  
  270. String va = profileHelper.checkLogin(user, pass);
  271. if(va.equalsIgnoreCase("FALSE"))
  272. {
  273. UIHelper.showCustomToast("Incorrect Credentials. Please try again.");
  274. return;
  275. }
  276.  
  277. stayLoginHelper.setStayLogin(stayLogin.isChecked());
  278. stayLoginHelper.setUserPass(user, pass);
  279. if(va.equalsIgnoreCase("LENDER"))
  280. {
  281. startActivity(new Intent(MainActivity.this, lenderHome.class)
  282. .putExtra("name", user)
  283. .putExtra("username", user));
  284. }
  285. else if(va.equalsIgnoreCase("BORROWER"))
  286. {
  287. startActivity(new Intent(MainActivity.this, userHome.class)
  288. .putExtra("name", user)
  289. .putExtra("username", user));
  290. }
  291. }
  292. });
  293.  
  294. registerBtn.setOnClickListener(new View.OnClickListener() {
  295. @Override
  296. public void onClick(View v) {
  297. String user = registerUserTB.getText().toString();
  298. String pass = registerPassTB.getText().toString();
  299. String rePass = registerRePassTB.getText().toString();
  300. String email = registerEmailTB.getText().toString();
  301.  
  302. if(validationHelper.checkAlphaNumeric(user) || validationHelper.checkMinMaxLen(user, 3, 100))
  303. {
  304. UIHelper.showCustomToast("The username you entered is not valid.");
  305. return;
  306. }
  307. else if(user.equalsIgnoreCase("ADMIN")) {
  308. UIHelper.showCustomToast("The username you entered is not valid.");
  309. return;
  310. }
  311. else if(validationHelper.checkEmail(email))
  312. {
  313. UIHelper.showCustomToast("The email you entered is not valid.");
  314. return;
  315. }
  316. else if(profileHelper.checkEmailExist(email)) {
  317. UIHelper.showCustomToast("The email you entered already exist.");
  318. return;
  319. }
  320. else if(pass.isEmpty())
  321. {
  322. UIHelper.showCustomToast("Password input is invalid");
  323. return;
  324. }
  325. else if(!termCB.isChecked()) {
  326. UIHelper.showCustomToast("Please read the terms and conditions.");
  327. return;
  328. }
  329.  
  330. if(rePass.equals(pass))
  331. {
  332. String va = profileHelper.newAccount(user, pass, email, "BORROWER");
  333. if(va.equalsIgnoreCase("true"))
  334. {
  335. UIHelper.showCustomToast("You have successfully registered.");
  336. resetTextBox();
  337. }
  338. else if(va.equalsIgnoreCase("duplicate")) {
  339. UIHelper.showCustomToast("The username already exist.");
  340. }
  341. else
  342. {
  343. // something went wrong
  344. UIHelper.showCustomToast("Something went wrong. Please try again later.");
  345. }
  346. }
  347. else
  348. {
  349. UIHelper.showCustomToast("Passwords must be the same.");
  350. }
  351. }
  352. });
  353.  
  354. settingApply.setOnClickListener(new View.OnClickListener() {
  355. @Override
  356. public void onClick(View v) {
  357. boolean isAnim;
  358. float animSpeed;
  359. String animString = animSpinner.getSelectedItem().toString();
  360. String animSpeedString = animSpeedSpinner.getSelectedItem().toString();
  361.  
  362. isAnim = (animString.equalsIgnoreCase("Yes")) ? true : false;
  363.  
  364. if(animSpeedString.equals("1x")) animSpeed = SettingHelper.Animation.SPEED_1X;
  365. else if(animSpeedString.equals("1.5x")) animSpeed = SettingHelper.Animation.SPEED_1_5X;
  366. else if(animSpeedString.equals("2x")) animSpeed = SettingHelper.Animation.SPEED_2X;
  367. else if(animSpeedString.equals("2.5x")) animSpeed = SettingHelper.Animation.SPEED_2_5X;
  368. else if(animSpeedString.equals("3x")) animSpeed = SettingHelper.Animation.SPEED_3X;
  369. else animSpeed = SettingHelper.Animation.SPEED_1X;
  370.  
  371. settingHelper.setAnimation(isAnim);
  372. settingHelper.setAnimationSpeed(animSpeed);
  373.  
  374. UIHelper.showCustomToast("Settings Applied. Please restart the application for the settings to take effects", 10000);
  375. }
  376. });
  377.  
  378. forgotBtn.setOnClickListener(new View.OnClickListener() {
  379. @Override
  380. public void onClick(View v) {
  381. forgotLayout.setVisibility(View.VISIBLE);
  382. }
  383. });
  384.  
  385. forgotCancel.setOnClickListener(new View.OnClickListener() {
  386. @Override
  387. public void onClick(View v) {
  388. forgotLayout.setVisibility(View.INVISIBLE);
  389. }
  390. });
  391.  
  392. forgotSend.setOnClickListener(new View.OnClickListener() {
  393. @Override
  394. public void onClick(View v) {
  395. ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
  396. if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) != null) {
  397. boolean connected = (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
  398. connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED);
  399.  
  400. if(!connected) {
  401. UIHelper.showCustomToast("No Internet Connection");
  402. return;
  403. }
  404. }
  405.  
  406. if(validationHelper.checkEmail(forgotEmail.getText().toString())) {
  407. UIHelper.showCustomToast("Invalid email address.");
  408. return;
  409. }
  410. if(!profileHelper.checkEmailExist(forgotEmail.getText().toString())) {
  411. UIHelper.showCustomToast("Email Address does not exist.");
  412. return;
  413. }
  414.  
  415. Random rand = new Random();
  416. int min = 10000;
  417. int max = 99999;
  418. int random = rand.nextInt((max - min) + 1) + min;
  419. code = String.valueOf(random);
  420.  
  421. JavaMailAPI javaMailAPI = new JavaMailAPI(MainActivity.this,
  422. forgotEmail.getText().toString(),
  423. "FORGOT PASSWORD",
  424. "Username: "+profileHelper.getUsernameFromEmail(forgotEmail.getText().toString())
  425. +"\nYour code is: " + code
  426. +"\n\nMake sure that you do not share this code to anyone!");
  427.  
  428. javaMailAPI.execute();
  429. }
  430. });
  431.  
  432. forgotUpdate.setOnClickListener(new View.OnClickListener() {
  433. @Override
  434. public void onClick(View v) {
  435. if(!code.equals(forgotCode.getText().toString())) {
  436. UIHelper.showCustomToast("Incorrect Code.");
  437. return;
  438. }
  439. if(forgotPassword.getText().toString().isEmpty()) {
  440. UIHelper.showCustomToast("The password is empty.");
  441. return;
  442. }
  443.  
  444. profileHelper.changePassword(
  445. profileHelper.getUsernameFromEmail(
  446. forgotEmail.getText().toString()),
  447. forgotPassword.getText().toString()
  448. );
  449. UIHelper.showCustomToast("Password has been updated");
  450. forgotLayout.setVisibility(View.INVISIBLE);
  451. }
  452. });
  453. }
  454.  
  455.  
  456. @SuppressLint("ClickableViewAccessibility")
  457. void setOnTouchListener()
  458. {
  459. // Exit Button
  460. exit.setOnTouchListener(new View.OnTouchListener() {
  461. @Override
  462. public boolean onTouch(View v, MotionEvent event) {
  463. UIHelper.setConfirmVisibility(true);
  464. return true;
  465. }
  466. });
  467.  
  468. // setting Button
  469. setting.setOnClickListener(new View.OnClickListener() {
  470. @Override
  471. public void onClick(View v) {
  472. DecimalFormat format = new DecimalFormat("0.#");
  473. animSpinner.setSelection(UIHelper.getSpinnerSelected(animSpinner, settingHelper.getAnimation() ? "Yes" : "No"));
  474. animSpeedSpinner.setSelection(UIHelper.getSpinnerSelected(animSpeedSpinner, format.format(settingHelper.getAnimationSpeed()) + "x"));
  475. settingsLayout.setVisibility(View.VISIBLE);
  476. }
  477. });
  478.  
  479. ((TextView)findViewById(R.id.cbTxt)).setOnTouchListener(new View.OnTouchListener() {
  480. @Override
  481. public boolean onTouch(View v, MotionEvent event) {
  482.  
  483. termCB.setChecked(!termCB.isChecked());
  484. return true;
  485. }
  486. });
  487. }
  488. @SuppressLint("WrongConstant")
  489. void hideAllElements(boolean isVisible)
  490. {
  491. int visibility;
  492. if(isVisible) visibility = 0;
  493. else visibility = 8;
  494. loginTxt.setVisibility(visibility);
  495. login.setVisibility(visibility);
  496.  
  497. register.setVisibility(visibility);
  498. registerTxt.setVisibility(visibility);
  499.  
  500. exit.setVisibility(visibility);
  501. setting.setVisibility(visibility);
  502.  
  503. bg.setVisibility(visibility);
  504. }
  505. void setUIVariables() {
  506. layout = findViewById(R.id.mainLayout);
  507. bg = findViewById(R.id.bg);
  508. top = findViewById(R.id.top2);
  509. bottom = findViewById(R.id.bottom2);
  510.  
  511. login = findViewById(R.id.loginBtn);
  512. register = findViewById(R.id.registerBtn);
  513.  
  514. exit = findViewById(R.id.exitBtn);
  515.  
  516. loginTxt = findViewById(R.id.loginTxt);
  517. registerTxt = findViewById(R.id.registerTxt);
  518.  
  519. loginLayout = findViewById(R.id.loginInclude);
  520. cancelLogin = findViewById(R.id.cancelLogin);
  521.  
  522. registerLayout = findViewById(R.id.registerInclude);
  523. cancelRegister = findViewById(R.id.cancelRegister);
  524.  
  525. // Terms and conditions
  526. termsBtn = findViewById(R.id.termTxt);
  527. closeTerm = findViewById(R.id.cancelBtn);
  528. termLayout = findViewById(R.id.termInclude);
  529. termCB = findViewById(R.id.termCB);
  530.  
  531. // Confirmation
  532. confirmationLayout = findViewById(R.id.confirmationInclude);
  533. cancelExit = findViewById(R.id.negativeBtnConfirmation);
  534. confirmExit = findViewById(R.id.positiveBtnConfirmation);
  535. titleConfirm = findViewById(R.id.titleTxt);
  536. msgConfirm = findViewById(R.id.messageTxt);
  537.  
  538. // Setting
  539. setting = findViewById(R.id.settingBtn);
  540. settingsLayout = findViewById(R.id.settingsInclude);
  541. settingApply = findViewById(R.id.confirmBtnSetting);
  542. settingCancel = findViewById(R.id.cancelBtnSetting);
  543.  
  544. // Setting - spinner
  545. animSpinner = findViewById(R.id.animationSpinner);
  546. animSpeedSpinner = findViewById(R.id.animSpdSpinner);
  547.  
  548. // Login
  549. loginUserTB = findViewById(R.id.loginUserTB);
  550. loginPassTB = findViewById(R.id.loginPasswordTB);
  551. loginBtn = findViewById(R.id.loginBtnLogin);
  552. stayLogin = findViewById(R.id.stayLoginCB);
  553.  
  554. // Forgot
  555. forgotBtn = findViewById(R.id.forgotPass);
  556. forgotCancel = findViewById(R.id.forgotCancel);
  557. forgotUpdate = findViewById(R.id.forgotChange);
  558. forgotSend = findViewById(R.id.sendForgotBtn);
  559. forgotEmail = findViewById(R.id.forgotEmailTB);
  560. forgotCode = findViewById(R.id.codeTB);
  561. forgotPassword = findViewById(R.id.newPassForgotTB);
  562. forgotLayout = findViewById(R.id.forgotLayout);
  563.  
  564. // Register
  565. registerUserTB = findViewById(R.id.registerUserTB);
  566. registerEmailTB = findViewById(R.id.registerEmailTB);
  567. registerPassTB = findViewById(R.id.registerPasswordTB);
  568. registerRePassTB = findViewById(R.id.registerConfirmPasswordTB);
  569. registerBtn = findViewById(R.id.registerBtnRegister);
  570. }
  571.  
  572.  
  573.  
  574. @SuppressLint("MissingSuperCall")
  575. @Override
  576. public void onBackPressed() {
  577. //super.onBackPressed();
  578. }
  579. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement