gust94

HomePageFragment

Jan 19th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.10 KB | None | 0 0
  1. package com.dss.invitup.vc.homePage;
  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.Log;
  9. import android.util.TypedValue;
  10. import android.view.Display;
  11. import android.view.LayoutInflater;
  12. import android.view.View;
  13. import android.view.ViewGroup;
  14. import android.widget.FrameLayout;
  15. import com.bumptech.glide.Glide;
  16. import com.bumptech.glide.load.resource.drawable.GlideDrawable;
  17. import com.bumptech.glide.request.RequestListener;
  18. import com.bumptech.glide.request.target.Target;
  19. import com.dss.invitup.MainActivity;
  20. import com.dss.invitup.R;
  21. import com.dss.invitup.adapters.HomePageAdapter;
  22. import com.dss.invitup.events.ArchivedEventButtonTapped;
  23. import com.dss.invitup.events.GetOccasionsFinishedEvent;
  24. import com.dss.invitup.events.HostAnEventButtonTapped;
  25. import com.dss.invitup.events.JoinAnEventButtonTapped;
  26. import com.dss.invitup.events.ProfileTappedEvent;
  27. import com.dss.invitup.events.RefreshHomePageOccasionEvent;
  28. import com.dss.invitup.models.Occasion;
  29. import com.dss.invitup.models.User;
  30. import com.dss.invitup.models.serverResponses.OccasionsResponse;
  31. import com.dss.invitup.singleton.AppController;
  32. import com.dss.invitup.singleton.InterfaceManager;
  33. import com.dss.invitup.singleton.ServerManager;
  34. import com.dss.invitup.singleton.SettingsManager;
  35. import com.dss.invitup.vc.login.LoginMainPageActivity;
  36. import de.greenrobot.event.EventBus;
  37. import de.hdodenhof.circleimageview.CircleImageView;
  38. import in.srain.cube.views.ptr.PtrClassicFrameLayout;
  39. import in.srain.cube.views.ptr.PtrFrameLayout;
  40. import in.srain.cube.views.ptr.PtrUIHandler;
  41. import in.srain.cube.views.ptr.indicator.PtrIndicator;
  42. import io.realm.Realm;
  43. /**
  44. * Copyright © 2016 Dihardja Software Solutions. All rights reserved.
  45. */
  46. public class HomePageFragment extends Fragment {
  47. OccasionsResponse theOccasionsResponse;
  48. Realm realm;
  49. User currentUser;
  50. PtrClassicFrameLayout homePagePtrClassicFrameLayout;
  51. FrameLayout rootFrameLayout, profilePictureFrameLayout;
  52. RecyclerView homePageRecyclerView;
  53. CircleImageView profileCircleImageView, profileCircleImageViewLoading;
  54. HomePageAdapter homePageAdapter;
  55. LinearLayoutManager linearLayoutManager;
  56. Point size;
  57. @Override
  58. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  59. Bundle savedInstanceState) {
  60. View view = inflater.inflate(R.layout.fragment_home_page, container, false);
  61. realm = AppController.getInstance().getRealm();
  62. currentUser = SettingsManager.getInstance().getCurrentUser();
  63. rootFrameLayout = (FrameLayout) view.findViewById(R.id.fragment_home_page_rootFrameLayout);
  64. homePagePtrClassicFrameLayout = (PtrClassicFrameLayout) view.findViewById(R.id.fragment_home_page_ptrClassicFrameLayout);
  65. homePageRecyclerView = (RecyclerView) view.findViewById(R.id.fragment_home_page_recyclerView);
  66. profilePictureFrameLayout = (FrameLayout) view.findViewById(R.id.fragment_home_page_profileImageFrameLayout);
  67. profileCircleImageView = (CircleImageView) view.findViewById(R.id.fragment_home_page_profileImage);
  68. profileCircleImageViewLoading = (CircleImageView) view.findViewById(R.id.fragment_home_page_profileImageLoading);
  69. return view;
  70. }
  71. @Override
  72. public void onViewCreated(View view, Bundle savedInstanceState) {
  73. super.onViewCreated(view, savedInstanceState);
  74. if (!EventBus.getDefault().isRegistered(this)) {
  75. EventBus.getDefault().register(this);
  76. }
  77. Display display = getActivity().getWindowManager().getDefaultDisplay();
  78. size = new Point();
  79. display.getSize(size);
  80. linearLayoutManager = new LinearLayoutManager(getActivity());
  81. linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
  82. homePageRecyclerView.setLayoutManager(linearLayoutManager);
  83. homePageRecyclerView.setHasFixedSize(true);
  84. homePageAdapter = new HomePageAdapter(getActivity(), listenerInterface);
  85. homePageRecyclerView.setAdapter(homePageAdapter);
  86. homePageRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
  87. @Override
  88. public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
  89. super.onScrollStateChanged(recyclerView, newState);
  90. }
  91. @Override
  92. public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
  93. super.onScrolled(recyclerView, dx, dy);
  94. homePagePtrClassicFrameLayout.setEnabled(false);
  95. if(linearLayoutManager.findFirstVisibleItemPosition()==0){
  96. View v = linearLayoutManager.getChildAt(linearLayoutManager.findFirstVisibleItemPosition());
  97. int offsetTop = v.getTop();
  98. if(offsetTop==60){
  99. homePagePtrClassicFrameLayout.setEnabled(true);
  100. }
  101. }
  102. }
  103. });
  104. if(currentUser.getImageURL()!=null){
  105. if(!currentUser.getImageURL().equals("")) {
  106. profileCircleImageViewLoading.setVisibility(View.VISIBLE);
  107. Glide.with(getActivity()).load(currentUser.getImageURL()).listener(new RequestListener<String, GlideDrawable>() {
  108. @Override
  109. public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
  110. return false;
  111. }
  112. @Override
  113. public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
  114. profileCircleImageViewLoading.setVisibility(View.GONE);
  115. return false;
  116. }
  117. }).into(profileCircleImageView);
  118. }
  119. else{
  120.  
  121. profileCircleImageView.setImageDrawable(getActivity().getResources().getDrawable(R.drawable.profile));
  122. }
  123. }
  124. profilePictureFrameLayout.setOnClickListener(profilePhotoListener);
  125. homePagePtrClassicFrameLayout.addPtrUIHandler(new PtrUIHandler() {
  126. @Override
  127. public void onUIReset(PtrFrameLayout frame) {
  128. homePageAdapter.notifyDataSetChanged();
  129. }
  130. @Override
  131. public void onUIRefreshPrepare(PtrFrameLayout frame) {
  132. }
  133. @Override
  134. public void onUIRefreshBegin(PtrFrameLayout frame) {
  135. InterfaceManager.sharedInstance().showLoading(rootFrameLayout,getActivity());
  136. ServerManager.getInstance().getAllOccasions(currentUser.getId());
  137. }
  138. @Override
  139. public void onUIRefreshComplete(PtrFrameLayout frame) {
  140. InterfaceManager.sharedInstance().hideLoading();
  141. }
  142. @Override
  143. public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator) {
  144. }
  145. });
  146. }
  147. @Override
  148. public void onResume() {
  149. super.onResume();
  150. reloadLocalData();
  151. }
  152. FrameLayout.OnClickListener profilePhotoListener = new View.OnClickListener() {
  153. @Override
  154. public void onClick(View v) {
  155. EventBus.getDefault().post(new ProfileTappedEvent());
  156. }
  157. };
  158. HomePageAdapter.HomePageAdapterListenerInterface listenerInterface = new HomePageAdapter.HomePageAdapterListenerInterface() {
  159. @Override
  160. public void sectionTapped(String buttonText) {
  161. if(buttonText.equalsIgnoreCase(getActivity().getResources().getString(R.string.title_event_archived))){
  162. EventBus.getDefault().post(new ArchivedEventButtonTapped());
  163. }
  164. }
  165. @Override
  166. public void itemTapped(Occasion theOccasion, String userRole) {
  167. if(userRole.equalsIgnoreCase("invited")){
  168. SettingsManager.getInstance().setCurrentUserRole(SettingsManager.UserRole.INVITED);
  169. }else if(userRole.equalsIgnoreCase("host")){
  170. SettingsManager.getInstance().setCurrentUserRole(SettingsManager.UserRole.HOST);
  171. }else if(userRole.equalsIgnoreCase("guest")){
  172. SettingsManager.getInstance().setCurrentUserRole(SettingsManager.UserRole.GUEST);
  173. }
  174. SettingsManager.getInstance().setCurrentOccasion(theOccasion);
  175. Intent i = new Intent(getActivity(), MainActivity.class);
  176. getActivity().startActivity(i);
  177. }
  178. @Override
  179. public void buttonTapped(String buttonText) {
  180. if(buttonText.equalsIgnoreCase(getActivity().getResources().getString(R.string.button_host_event))){
  181. EventBus.getDefault().post(new HostAnEventButtonTapped());
  182. }else if(buttonText.equalsIgnoreCase(getActivity().getResources().getString(R.string.button_join_event))){
  183. EventBus.getDefault().post(new JoinAnEventButtonTapped());
  184. }
  185. }
  186. };
  187. public void reloadLocalData(){
  188. setHeightContentRecyclerView();
  189. theOccasionsResponse = realm.where(OccasionsResponse.class).equalTo("id",currentUser.getId()).findFirst();
  190. if(theOccasionsResponse!=null){
  191. initOccasionView();
  192. }
  193. InterfaceManager.sharedInstance().showLoading(rootFrameLayout,getActivity());
  194. ServerManager.getInstance().getAllOccasions(currentUser.getId());
  195. }
  196. public void initOccasionView(){
  197. homePageAdapter.updateAdapter(theOccasionsResponse.getInvitedOccasionsGuests(), theOccasionsResponse.getManagedOccasions(), theOccasionsResponse.getJoinedOccasions());
  198. setHeightContentRecyclerView();
  199. }
  200. public void setHeightContentRecyclerView(){
  201. final RecyclerView.LayoutParams params = new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT);
  202. homePageRecyclerView.measure(View.MeasureSpec.makeMeasureSpec(params.width, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
  203. params.leftMargin = 25;
  204. params.rightMargin = 25;
  205. Log.v("height rec:",homePageRecyclerView.getMeasuredHeight()+"");
  206. if(homePageRecyclerView.getMeasuredHeight() != 0 && SettingsManager.getInstance().getActivityJustMade()){
  207. SettingsManager.getInstance().setHeightOccasionsRecycledView(homePageRecyclerView.getMeasuredHeight());
  208. }
  209. if ( (size.y - SettingsManager.getInstance().getHeightOccasionsRecycledView()) > 92) {
  210. params.topMargin = (size.y - SettingsManager.getInstance().getHeightOccasionsRecycledView()) / 2;
  211. } else {
  212. params.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 46, getActivity().getResources().getDisplayMetrics());
  213. }
  214. if(SettingsManager.getInstance().getHeightOccasionsRecycledView() == 0){
  215. if((size.y - homePageRecyclerView.getMeasuredHeight()) < 46){
  216. params.topMargin = 46;
  217. }
  218. }
  219. if(params.topMargin < 46){
  220. params.topMargin = 46;
  221. }
  222. homePageRecyclerView.setLayoutParams(params);
  223. }
  224. public void onEvent(GetOccasionsFinishedEvent event){
  225. InterfaceManager.sharedInstance().hideLoading();
  226. homePagePtrClassicFrameLayout.refreshComplete();
  227. if(event.occasionsResponse!=null){
  228. SettingsManager.getInstance().setCurrentUserOccasionResponse(event.occasionsResponse);
  229. theOccasionsResponse = event.occasionsResponse;
  230. initOccasionView();
  231. }else{
  232. if(event.errorMessage.equalsIgnoreCase("Token is false or has expired") || event.errorMessage.equalsIgnoreCase("user not found")){
  233. SettingsManager.getInstance().setCurrentUser(null);
  234. SettingsManager.getInstance().setCurrentUserId(null);
  235. InterfaceManager.sharedInstance().showErrorMessage(getActivity(), getResources().getString(R.string.token_expired));
  236. Intent i = new Intent(getActivity(),LoginMainPageActivity.class);
  237. startActivity(i);
  238. getActivity().finish();
  239. InterfaceManager.sharedInstance().hideLoading();
  240. }else{
  241. InterfaceManager.sharedInstance().showErrorMessage(getActivity(),event.errorMessage);
  242. InterfaceManager.sharedInstance().hideLoading();
  243. }
  244. }
  245. }
  246. public void onEvent(RefreshHomePageOccasionEvent event){
  247. InterfaceManager.sharedInstance().showLoading(rootFrameLayout,getActivity());
  248. ServerManager.getInstance().getAllOccasions(currentUser.getId());
  249. }
  250. @Override
  251. public void onDestroy(){
  252. super.onDestroy();
  253. if(EventBus.getDefault().isRegistered(this)) {
  254. EventBus.getDefault().unregister(this);
  255. }
  256. }
  257. }
Add Comment
Please, Sign In to add comment