Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.93 KB | None | 0 0
  1. package com.example.james.funtendance;
  2.  
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.support.annotation.NonNull;
  6. import android.support.design.widget.FloatingActionButton;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.support.v7.widget.LinearLayoutManager;
  9. import android.support.v7.widget.RecyclerView;
  10. import android.view.GestureDetector;
  11. import android.view.Menu;
  12. import android.view.MenuInflater;
  13. import android.view.MenuItem;
  14. import android.view.MotionEvent;
  15. import android.view.View;
  16. import android.widget.ImageView;
  17. import android.widget.TextView;
  18. import android.widget.Toast;
  19.  
  20. import com.firebase.ui.auth.AuthUI;
  21. import com.google.firebase.auth.FirebaseAuth;
  22. import com.google.firebase.auth.FirebaseUser;
  23. import com.google.firebase.database.ChildEventListener;
  24. import com.google.firebase.database.DataSnapshot;
  25. import com.google.firebase.database.DatabaseError;
  26. import com.google.firebase.database.DatabaseReference;
  27. import com.google.firebase.database.FirebaseDatabase;
  28.  
  29. import java.util.ArrayList;
  30.  
  31. public class MainActivity extends AppCompatActivity {
  32.  
  33. private FirebaseDatabase mFirebaseDatabase;
  34. private DatabaseReference mUserDatabaseReference, mSubjectsDatabaseReference;
  35. private FirebaseAuth mFirebaseAuth;
  36. private FirebaseAuth.AuthStateListener mAuthStateListener;
  37.  
  38. private RecyclerView mRecycler;
  39. private TeacherProfileAdapter adapter;
  40. private ArrayList<Subject> subjectList = new ArrayList<>();
  41. private FirebaseUser mUser;
  42. private ChildEventListener mChildEventListener;
  43. private ArrayList<Teacher> teacherList = new ArrayList<>();
  44.  
  45. public static final int RC_SIGN_IN = 1;
  46. public static final String ANONYMOUS = "anonymous";
  47. private String mUsername, name, mail, imgURL;
  48. private FloatingActionButton fabAdd;
  49. private ImageView img;
  50. private TextView mtxtName, mtxtMail;
  51. private int count = 0;
  52.  
  53. TextView text;
  54.  
  55. @Override
  56.  
  57. protected void onCreate(Bundle savedInstanceState) {
  58. super.onCreate(savedInstanceState);
  59. setContentView(R.layout.activity_main);
  60. mFirebaseDatabase = FirebaseDatabase.getInstance();
  61. mRecycler = (RecyclerView) findViewById(R.id.recycler_view);
  62. mtxtMail = (TextView) findViewById(R.id.txtMail);
  63. mtxtName = (TextView) findViewById(R.id.txtName);
  64. fabAdd = (FloatingActionButton) findViewById(R.id.addFloatingBtn);
  65. mSubjectsDatabaseReference = mFirebaseDatabase.getReference().child("subjects");
  66. mUserDatabaseReference = mFirebaseDatabase.getReference().child("teachers");
  67.  
  68. fabAdd.setOnClickListener(new View.OnClickListener() {
  69. @Override
  70. public void onClick(View v) {
  71. Intent intent1 = new Intent(MainActivity.this, AddNewSubject.class);
  72. intent1.putExtra("mail", mail);
  73. startActivity(intent1);
  74. }
  75. });
  76.  
  77. mRecycler.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
  78. GestureDetector detector = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener() {
  79. @Override
  80. public boolean onSingleTapUp(MotionEvent e) {
  81. return true;
  82. }
  83.  
  84. @Override
  85. public void onLongPress(MotionEvent e) {
  86. super.onLongPress(e);
  87. }
  88. });
  89.  
  90. @Override
  91. public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
  92. View child = rv.findChildViewUnder(e.getX(), e.getY());
  93. if (child != null && detector.onTouchEvent(e)) {
  94. int pos = rv.getChildAdapterPosition(child);
  95. Subject subject = subjectList.get(pos);
  96. String inName, inCode, inDate, inRoom, inPass;
  97. Intent intent = new Intent(MainActivity.this, OpenSubject.class);
  98. intent.putExtra("name", subject.getSubName());
  99. intent.putExtra("mail", mail);
  100. intent.putExtra("code", subject.getSubCode());
  101. intent.putExtra("day", subject.getSubSchedDay());
  102. intent.putExtra("room", subject.getSubRoom());
  103. intent.putExtra("pass", subject.getSubPass());
  104. intent.putExtra("timeIn", subject.getSubTimeIn());
  105. intent.putExtra("timeOut", subject.getSubTimeOut());
  106. startActivity(intent);
  107. }
  108. return false;
  109. }
  110.  
  111. @Override
  112. public void onTouchEvent(RecyclerView rv, MotionEvent e) {
  113.  
  114. }
  115.  
  116. @Override
  117. public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
  118.  
  119. }
  120. });
  121.  
  122. mFirebaseAuth = FirebaseAuth.getInstance();
  123.  
  124. attachDBReadListenerSubs();
  125. mAuthStateListener = new FirebaseAuth.AuthStateListener() {
  126. @Override
  127. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
  128. FirebaseUser user = firebaseAuth.getCurrentUser();
  129. if (user != null) {
  130. mail = user.getEmail();
  131. name = user.getDisplayName();
  132. imgURL = user.getPhotoUrl().toString();
  133. mtxtName.setText("Hi " + name + "!");
  134. mtxtMail.setText(mail);
  135. onSignedInInitialized(user.getDisplayName());
  136. Teacher teacher = new Teacher(name);
  137. mFirebaseDatabase.getReference("teachers").push().setValue(teacher);
  138. } else {
  139. onSignedOutCleanup();
  140. startActivityForResult(AuthUI.getInstance()
  141. .createSignInIntentBuilder()
  142. .setTheme(R.style.AppTheme)
  143. .setIsSmartLockEnabled(false)
  144. .setProviders(AuthUI.GOOGLE_PROVIDER)
  145. .build(),
  146. RC_SIGN_IN);
  147. }
  148.  
  149. }
  150. };
  151.  
  152. }
  153.  
  154. @Override
  155. protected void onPause() {
  156. super.onPause();
  157. if (mAuthStateListener != null) {
  158. mFirebaseAuth.removeAuthStateListener(mAuthStateListener);
  159. }
  160. //detachDatabaseReadListener();
  161. //mMessageAdapter.clear();
  162. }
  163.  
  164. @Override
  165. protected void onResume() {
  166. super.onResume();
  167. mFirebaseAuth.addAuthStateListener(mAuthStateListener);
  168. }
  169.  
  170. private void onSignedInInitialized(String username) {
  171. mUsername = username;
  172. //attachDBReadListener();
  173. //attachDatabaseReadListener();
  174. attachDBReadListenerTeachers();
  175. }
  176.  
  177. private void onSignedOutCleanup() {
  178. mUsername = ANONYMOUS;
  179. //mMessageAdapter.clear();
  180. }
  181.  
  182. public void setIntent(FirebaseUser user) {
  183. mUser = user;
  184. }
  185.  
  186. @Override
  187. public boolean onCreateOptionsMenu(Menu menu) {
  188. MenuInflater inflater = getMenuInflater();
  189. inflater.inflate(R.menu.menu, menu);
  190. return true;
  191. }
  192.  
  193. @Override
  194. public boolean onOptionsItemSelected(MenuItem item) {
  195. switch (item.getItemId()) {
  196. case R.id.sign_out_menu:
  197. AuthUI.getInstance().signOut(this);
  198. return true;
  199. default:
  200. return super.onOptionsItemSelected(item);
  201. }
  202. }
  203.  
  204. private void attachDBReadListenerSubs() {
  205. if (mChildEventListener == null) {
  206. mChildEventListener = new ChildEventListener() {
  207. @Override
  208. public void onChildAdded(DataSnapshot dataSnapshot, String s) {
  209. Subject subject = dataSnapshot.getValue(Subject.class);
  210. if (subject.getTeacherMail().equals(mail))
  211. subjectList.add(subject);
  212. if (subjectList != null)
  213. Toast.makeText(MainActivity.this, "No Subjects as of the Moment", Toast.LENGTH_SHORT).show();
  214. adapter = new TeacherProfileAdapter(getParent(), subjectList);
  215. mRecycler.setAdapter(adapter);
  216. mRecycler.setLayoutManager(new LinearLayoutManager(getParent()));
  217. }
  218.  
  219. @Override
  220. public void onChildChanged(DataSnapshot dataSnapshot, String s) {
  221.  
  222. }
  223.  
  224. @Override
  225. public void onChildRemoved(DataSnapshot dataSnapshot) {
  226. Subject subject = dataSnapshot.getValue(Subject.class);
  227. subjectList.add(subject);
  228.  
  229. }
  230.  
  231. @Override
  232. public void onChildMoved(DataSnapshot dataSnapshot, String s) {
  233.  
  234. }
  235.  
  236. @Override
  237. public void onCancelled(DatabaseError databaseError) {
  238.  
  239. }
  240. };
  241. mSubjectsDatabaseReference.addChildEventListener(mChildEventListener);
  242. }
  243. }
  244.  
  245. private void attachDBReadListenerTeachers() {
  246. if (mChildEventListener == null) {
  247. mChildEventListener = new ChildEventListener() {
  248. @Override
  249. public void onChildAdded(DataSnapshot dataSnapshot, String s) {
  250. Teacher teacher = dataSnapshot.getValue(Teacher.class);
  251. // if (teacher != null) {
  252. // if (teacher.getEmail().equals(mail)) {
  253. // teacherList.add(teacher);
  254. // if (teacher != null) {
  255. // Teacher teacher1 = new Teacher(name, mail, imgURL);
  256. // mUserDatabaseReference.push().setValue(teacher1);
  257. // }
  258. //
  259. // }
  260. // }
  261.  
  262. }
  263.  
  264. @Override
  265. public void onChildChanged(DataSnapshot dataSnapshot, String s) {
  266.  
  267. }
  268.  
  269. @Override
  270. public void onChildRemoved(DataSnapshot dataSnapshot) {
  271. Subject subject = dataSnapshot.getValue(Subject.class);
  272. subjectList.add(subject);
  273.  
  274. }
  275.  
  276. @Override
  277. public void onChildMoved(DataSnapshot dataSnapshot, String s) {
  278.  
  279. }
  280.  
  281. @Override
  282. public void onCancelled(DatabaseError databaseError) {
  283.  
  284. }
  285. };
  286. mUserDatabaseReference.addChildEventListener(mChildEventListener);
  287. }
  288. }
  289.  
  290. private void detachDatabaseReadListener() {
  291. if (mChildEventListener != null) {
  292. mSubjectsDatabaseReference.removeEventListener(mChildEventListener);
  293. mChildEventListener = null;
  294. }
  295. }
  296. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement