Advertisement
gust94

GuestBookFragment

Jan 19th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.31 KB | None | 0 0
  1. package com.dss.invitup.vc.occasionPage.guestbook;
  2. import android.content.Intent;
  3. import android.graphics.Point;
  4. import android.os.Bundle;
  5. import android.support.v4.app.Fragment;
  6. import android.support.v7.widget.LinearLayoutManager;
  7. import android.support.v7.widget.RecyclerView;
  8. import android.util.TypedValue;
  9. import android.view.Display;
  10. import android.view.LayoutInflater;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.ImageView;
  14. import com.dss.invitup.MainActivity;
  15. import com.dss.invitup.R;
  16. import com.dss.invitup.adapters.GuestBookAdapter;
  17. import com.dss.invitup.events.GetGuestBookEntriesFinishedEvent;
  18. import com.dss.invitup.events.MainActivityHideLoadingEvent;
  19. import com.dss.invitup.events.MainActivityShowLoadingEvent;
  20. import com.dss.invitup.models.OccasionGuestBook;
  21. import com.dss.invitup.models.serverResponses.OccasionGuestBookEntriesResponse;
  22. import com.dss.invitup.singleton.AppController;
  23. import com.dss.invitup.singleton.InterfaceManager;
  24. import com.dss.invitup.singleton.ServerManager;
  25. import com.dss.invitup.singleton.SettingsManager;
  26. import com.dss.invitup.view.RobotoRegularTextView;
  27. import de.greenrobot.event.EventBus;
  28. import in.srain.cube.views.ptr.PtrClassicFrameLayout;
  29. import in.srain.cube.views.ptr.PtrFrameLayout;
  30. import in.srain.cube.views.ptr.PtrUIHandler;
  31. import in.srain.cube.views.ptr.indicator.PtrIndicator;
  32. import io.realm.Realm;
  33. /**
  34. * Copyright © 2016 Dihardja Software Solutions. All rights reserved.
  35. */
  36. public class GuestBookFragment extends Fragment{
  37. RecyclerView recyclerView;
  38. GuestBookAdapter guestBookAdapter;
  39. OccasionGuestBookEntriesResponse occasionGuestBookEntriesResponse;
  40. ImageView guestBookAddNewButton;
  41. LinearLayoutManager linearLayoutManager;
  42. String currentOccasionId;
  43. Realm realm;
  44. RobotoRegularTextView emptyTextView;
  45. Boolean isHasLocalData;
  46. PtrClassicFrameLayout ptrClassicFrameLayout;
  47. int placeHolderHeight;
  48. MainActivity mainActivity;
  49. @Override
  50. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  51. Bundle savedInstanceState) {
  52. View view = inflater.inflate(R.layout.fragment_guest_book, container, false);
  53. if(!EventBus.getDefault().isRegistered(this)) {
  54. EventBus.getDefault().register(this);
  55. }
  56. ptrClassicFrameLayout = (PtrClassicFrameLayout) view.findViewById(R.id.fragment_guest_book_ptrClassicFrameLayout);
  57. recyclerView = (RecyclerView) view.findViewById(R.id.fragment_guest_book_recyclerView);
  58. guestBookAddNewButton = (ImageView) view.findViewById(R.id.fragment_guest_book_addNewGuestBookImageView);
  59. emptyTextView = (RobotoRegularTextView) view.findViewById(R.id.fragment_guest_book_emptyTextView);
  60. realm = AppController.getInstance().getRealm();
  61. guestBookAdapter = new GuestBookAdapter(getActivity(), listenerInterface);
  62. linearLayoutManager = new LinearLayoutManager(getActivity());
  63. mainActivity = (MainActivity) getActivity();
  64. return view;
  65. }
  66. @Override
  67. public void onViewCreated(View view, Bundle savedInstanceState) {
  68. super.onViewCreated(view, savedInstanceState);
  69. mainActivity.position = 4;
  70. Display display = getActivity().getWindowManager().getDefaultDisplay();
  71. Point size = new Point();
  72. display.getSize(size);
  73. placeHolderHeight = size.x - (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getActivity().getResources().getDisplayMetrics());;
  74. recyclerView.setAdapter(guestBookAdapter);
  75. recyclerView.setHasFixedSize(true);
  76. linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
  77. recyclerView.setLayoutManager(linearLayoutManager);
  78. if(SettingsManager.getInstance().getCurrentUserRole() == SettingsManager.UserRole.GUEST){
  79. guestBookAddNewButton.setVisibility(View.VISIBLE);
  80. }else{
  81. guestBookAddNewButton.setVisibility(View.GONE);
  82. }
  83. recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
  84. @Override
  85. public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
  86. super.onScrollStateChanged(recyclerView, newState);
  87. }
  88. @Override
  89. public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
  90. super.onScrolled(recyclerView, dx, dy);
  91. ptrClassicFrameLayout.setEnabled(false);
  92. if(linearLayoutManager.findFirstVisibleItemPosition()==0) {
  93. View v = linearLayoutManager.getChildAt(linearLayoutManager.findFirstVisibleItemPosition());
  94. int offsetTop = v.getTop();
  95. if (offsetTop == 0) {
  96. ptrClassicFrameLayout.setEnabled(true);
  97. }
  98. }
  99. }
  100. });
  101. ptrClassicFrameLayout.addPtrUIHandler(new PtrUIHandler() {
  102. @Override
  103. public void onUIReset(PtrFrameLayout frame) {
  104. }
  105. @Override
  106. public void onUIRefreshPrepare(PtrFrameLayout frame) {
  107. }
  108. @Override
  109. public void onUIRefreshBegin(PtrFrameLayout frame) {
  110. guestBookAdapter.clearAdapter();
  111. EventBus.getDefault().post(new MainActivityShowLoadingEvent());
  112. ServerManager.getInstance().getAllOccasionGuestBook(currentOccasionId);
  113. }
  114. @Override
  115. public void onUIRefreshComplete(PtrFrameLayout frame) {
  116. }
  117. @Override
  118. public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator) {
  119. }
  120. });
  121. guestBookAddNewButton.setOnClickListener(addNewGuestBookListener);
  122. }
  123. @Override
  124. public void onResume() {
  125. super.onResume();
  126. isHasLocalData = false;
  127. if(mainActivity.isFromPushNotif){
  128. currentOccasionId = mainActivity.currentOccasionId;
  129. }else{
  130. if(SettingsManager.getInstance().getCurrentOccasion()!=null){
  131. currentOccasionId = SettingsManager.getInstance().getCurrentOccasion().getId();
  132. }
  133. }
  134. reloadLocalData();
  135. }
  136. @Override
  137. public void onDestroy(){
  138. super.onDestroy();
  139. if(EventBus.getDefault().isRegistered(this)) {
  140. EventBus.getDefault().unregister(this);
  141. }
  142. }
  143. private GuestBookAdapter.GuestBookAdapterListenerInterface listenerInterface = new GuestBookAdapter.GuestBookAdapterListenerInterface() {
  144. @Override
  145. public void onItemClicked(OccasionGuestBook occasionGuestBook) {
  146. SettingsManager.getInstance().setCurrentOccasionGuestBook(occasionGuestBook);
  147. Intent intent = new Intent(getActivity(), GuestBookDetailActivity.class);
  148. startActivity(intent);
  149. }
  150. };
  151. ImageView.OnClickListener addNewGuestBookListener = new View.OnClickListener() {
  152. @Override
  153. public void onClick(View v) {
  154. Intent i = new Intent(getActivity(),AddNewGuestBookActivity.class);
  155. getActivity().startActivity(i);
  156. }
  157. };
  158. public void reloadLocalData(){
  159. occasionGuestBookEntriesResponse = realm.where(OccasionGuestBookEntriesResponse.class)
  160. .equalTo("id",currentOccasionId).findFirst();
  161. if(occasionGuestBookEntriesResponse!=null){
  162. if(occasionGuestBookEntriesResponse.getOccasionGuestBookEntry().size()!=0){
  163. isHasLocalData = true;
  164. emptyTextView.setVisibility(View.GONE);
  165. guestBookAdapter.clearAdapter();
  166. guestBookAdapter.updateAdapter(occasionGuestBookEntriesResponse.getOccasionGuestBookEntry(), placeHolderHeight);
  167. }else{
  168. isHasLocalData = false;
  169. emptyTextView.setVisibility(View.VISIBLE);
  170. }
  171. }else{
  172. isHasLocalData = false;
  173. emptyTextView.setVisibility(View.VISIBLE);
  174. }
  175. EventBus.getDefault().post(new MainActivityShowLoadingEvent());
  176. ServerManager.getInstance().getAllOccasionGuestBook(currentOccasionId);
  177. }
  178. public void onEvent(GetGuestBookEntriesFinishedEvent event) {
  179. EventBus.getDefault().post(new MainActivityHideLoadingEvent());
  180. ptrClassicFrameLayout.refreshComplete();
  181. if(event.occasionGuestBookEntriesResponse!=null){
  182. guestBookAdapter.clearAdapter();
  183. if(event.occasionGuestBookEntriesResponse.getOccasionGuestBookEntry().size()!=0){
  184. recyclerView.setVisibility(View.VISIBLE);
  185. emptyTextView.setVisibility(View.GONE);
  186. occasionGuestBookEntriesResponse = event.occasionGuestBookEntriesResponse;
  187. guestBookAdapter.updateAdapter(occasionGuestBookEntriesResponse.getOccasionGuestBookEntry(), placeHolderHeight);
  188. }else{
  189. recyclerView.setVisibility(View.GONE);
  190. emptyTextView.setVisibility(View.VISIBLE);
  191. }
  192. }else{
  193. if(!isHasLocalData){
  194. emptyTextView.setVisibility(View.VISIBLE);
  195. }
  196. InterfaceManager.sharedInstance().showErrorMessage(getActivity(), event.errorMessage);
  197. }
  198. }
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement