Advertisement
gust94

ContactFragment

Jan 19th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.89 KB | None | 0 0
  1. package com.dss.invitup.vc.occasionPage.contact;
  2. import android.content.DialogInterface;
  3. import android.content.Intent;
  4. import android.graphics.Point;
  5. import android.net.Uri;
  6. import android.os.Bundle;
  7. import android.support.v4.app.Fragment;
  8. import android.support.v7.app.AlertDialog;
  9. import android.support.v7.widget.LinearLayoutManager;
  10. import android.support.v7.widget.RecyclerView;
  11. import android.view.Display;
  12. import android.view.LayoutInflater;
  13. import android.view.View;
  14. import android.view.ViewGroup;
  15. import com.dss.invitup.MainActivity;
  16. import com.dss.invitup.R;
  17. import com.dss.invitup.adapters.ContactAdapter;
  18. import com.dss.invitup.events.GetOccasionContactsFinishedEvent;
  19. import com.dss.invitup.events.MainActivityHideLoadingEvent;
  20. import com.dss.invitup.events.MainActivityShowLoadingEvent;
  21. import com.dss.invitup.models.Occasion;
  22. import com.dss.invitup.models.RealmString;
  23. import com.dss.invitup.models.serverResponses.OccasionContactResponse;
  24. import com.dss.invitup.singleton.AppController;
  25. import com.dss.invitup.singleton.InterfaceManager;
  26. import com.dss.invitup.singleton.ServerManager;
  27. import com.dss.invitup.singleton.SettingsManager;
  28. import java.util.ArrayList;
  29. import java.util.List;
  30. import de.greenrobot.event.EventBus;
  31. import in.srain.cube.views.ptr.PtrClassicFrameLayout;
  32. import in.srain.cube.views.ptr.PtrFrameLayout;
  33. import in.srain.cube.views.ptr.PtrUIHandler;
  34. import in.srain.cube.views.ptr.indicator.PtrIndicator;
  35. import io.realm.Realm;
  36. import io.realm.RealmList;
  37. /**
  38. * Copyright © 2016 Dihardja Software Solutions. All rights reserved.
  39. */
  40. public class ContactFragment extends Fragment {
  41. PtrClassicFrameLayout ptrClassicFrameLayout;
  42. RecyclerView contactRecyclerView;
  43. ContactAdapter contactAdapter;
  44. Occasion currentOccasion;
  45. Realm realm;
  46. LinearLayoutManager linearLayoutManager;
  47. int height = 0;
  48. MainActivity mainActivity;
  49. @Override
  50. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  51. Bundle savedInstanceState) {
  52. View view = inflater.inflate(R.layout.fragment_contact, container, false);
  53. if(!EventBus.getDefault().isRegistered(this)){
  54. EventBus.getDefault().register(this);
  55. }
  56. realm = AppController.getInstance().getRealm();
  57. ptrClassicFrameLayout = (PtrClassicFrameLayout) view.findViewById(R.id.fragment_contact_ptrClassicFrameLayout);
  58. contactRecyclerView = (RecyclerView) view.findViewById(R.id.fragment_contact_recyclerView);
  59. linearLayoutManager = new LinearLayoutManager(getActivity());
  60. mainActivity = (MainActivity) getActivity();
  61. return view;
  62. }
  63. @Override
  64. public void onViewCreated(View view, Bundle savedInstanceState) {
  65. super.onViewCreated(view, savedInstanceState);
  66. mainActivity.position = 1;
  67. Display display = getActivity().getWindowManager().getDefaultDisplay();
  68. Point size = new Point();
  69. display.getSize(size);
  70. height = size.y / 3;
  71. currentOccasion = SettingsManager.getInstance().getCurrentOccasion();
  72. contactAdapter = new ContactAdapter(getActivity(), listenerInterface);
  73. linearLayoutManager = new LinearLayoutManager(getActivity());
  74. linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
  75. contactRecyclerView.setHasFixedSize(true);
  76. contactRecyclerView.setLayoutManager(linearLayoutManager);
  77. contactRecyclerView.setAdapter(contactAdapter);
  78. contactRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
  79. @Override
  80. public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
  81. super.onScrollStateChanged(recyclerView, newState);
  82. }
  83. @Override
  84. public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
  85. super.onScrolled(recyclerView, dx, dy);
  86. ptrClassicFrameLayout.setEnabled(false);
  87. if(linearLayoutManager.findFirstVisibleItemPosition()==0) {
  88. View v = linearLayoutManager.getChildAt(linearLayoutManager.findFirstVisibleItemPosition());
  89. int offsetTop = v.getTop();
  90. if (offsetTop == 0) {
  91. ptrClassicFrameLayout.setEnabled(true);
  92. }
  93. }
  94. }
  95. });
  96. ptrClassicFrameLayout.addPtrUIHandler(new PtrUIHandler() {
  97. @Override
  98. public void onUIReset(PtrFrameLayout frame) {
  99. }
  100. @Override
  101. public void onUIRefreshPrepare(PtrFrameLayout frame) {
  102. }
  103. @Override
  104. public void onUIRefreshBegin(PtrFrameLayout frame) {
  105. contactAdapter.clearAdapter();
  106. EventBus.getDefault().post(new MainActivityShowLoadingEvent());
  107. ServerManager.getInstance().getOccasionContactFromOccasion(currentOccasion.getId());
  108. }
  109. @Override
  110. public void onUIRefreshComplete(PtrFrameLayout frame) {
  111. }
  112. @Override
  113. public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator) {
  114. }
  115. });
  116. reloadLocalData();
  117. }
  118. @Override
  119. public void onDestroy(){
  120. super.onDestroy();
  121. if(EventBus.getDefault().isRegistered(this)) {
  122. EventBus.getDefault().unregister(this);
  123. }
  124. }
  125. ContactAdapter.ContactAdapterListenerInterface listenerInterface = new ContactAdapter.ContactAdapterListenerInterface() {
  126. @Override
  127. public void phoneClicked(String name, RealmList<RealmString> phonesRealmList) {
  128. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  129. builder.setTitle(name);
  130. List<String> contactList = new ArrayList<String>();
  131. for (RealmString contactString : phonesRealmList) {
  132. contactList.add(contactString.getStringValue());
  133. }
  134. final CharSequence phones[] = contactList.toArray(new CharSequence[contactList.size()]);
  135. builder.setItems(phones, new DialogInterface.OnClickListener() {
  136. @Override
  137. public void onClick(DialogInterface dialog, int which) {
  138. String currentPhone = (String) phones[which];
  139. Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", currentPhone, null));
  140. startActivity(intent);
  141. }
  142. });
  143. builder.show();
  144. }
  145. @Override
  146. public void emailClicked(String email) {
  147. Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", email, null));
  148. getActivity().startActivity(emailIntent);
  149. }
  150. };
  151. public void reloadLocalData(){
  152. OccasionContactResponse occasionContactResponse = realm.where(OccasionContactResponse.class)
  153. .equalTo("id",currentOccasion.getId()).findFirst();
  154. if(occasionContactResponse!=null){
  155. if(occasionContactResponse.getContacts()!=null) {
  156. contactAdapter.updateAdapter(height, occasionContactResponse.getContacts());
  157. }
  158. }
  159. EventBus.getDefault().post(new MainActivityShowLoadingEvent());
  160. ServerManager.getInstance().getOccasionContactFromOccasion(currentOccasion.getId());
  161. }
  162. public void onEvent(GetOccasionContactsFinishedEvent event){
  163. EventBus.getDefault().post(new MainActivityHideLoadingEvent());
  164. ptrClassicFrameLayout.refreshComplete();
  165. if(event.occasionContactResponse!=null){
  166. contactAdapter.updateAdapter(height, event.occasionContactResponse.getContacts());
  167. }else{
  168. InterfaceManager.sharedInstance().showErrorMessage(getActivity(), event.errorMessage);
  169. }
  170. }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement