Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.dss.invitup.vc.occasionPage.contact;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.graphics.Point;
- import android.net.Uri;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.support.v7.app.AlertDialog;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.view.Display;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import com.dss.invitup.MainActivity;
- import com.dss.invitup.R;
- import com.dss.invitup.adapters.ContactAdapter;
- import com.dss.invitup.events.GetOccasionContactsFinishedEvent;
- import com.dss.invitup.events.MainActivityHideLoadingEvent;
- import com.dss.invitup.events.MainActivityShowLoadingEvent;
- import com.dss.invitup.models.Occasion;
- import com.dss.invitup.models.RealmString;
- import com.dss.invitup.models.serverResponses.OccasionContactResponse;
- import com.dss.invitup.singleton.AppController;
- import com.dss.invitup.singleton.InterfaceManager;
- import com.dss.invitup.singleton.ServerManager;
- import com.dss.invitup.singleton.SettingsManager;
- import java.util.ArrayList;
- import java.util.List;
- import de.greenrobot.event.EventBus;
- import in.srain.cube.views.ptr.PtrClassicFrameLayout;
- import in.srain.cube.views.ptr.PtrFrameLayout;
- import in.srain.cube.views.ptr.PtrUIHandler;
- import in.srain.cube.views.ptr.indicator.PtrIndicator;
- import io.realm.Realm;
- import io.realm.RealmList;
- /**
- * Copyright © 2016 Dihardja Software Solutions. All rights reserved.
- */
- public class ContactFragment extends Fragment {
- PtrClassicFrameLayout ptrClassicFrameLayout;
- RecyclerView contactRecyclerView;
- ContactAdapter contactAdapter;
- Occasion currentOccasion;
- Realm realm;
- LinearLayoutManager linearLayoutManager;
- int height = 0;
- MainActivity mainActivity;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_contact, container, false);
- if(!EventBus.getDefault().isRegistered(this)){
- EventBus.getDefault().register(this);
- }
- realm = AppController.getInstance().getRealm();
- ptrClassicFrameLayout = (PtrClassicFrameLayout) view.findViewById(R.id.fragment_contact_ptrClassicFrameLayout);
- contactRecyclerView = (RecyclerView) view.findViewById(R.id.fragment_contact_recyclerView);
- linearLayoutManager = new LinearLayoutManager(getActivity());
- mainActivity = (MainActivity) getActivity();
- return view;
- }
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- mainActivity.position = 1;
- Display display = getActivity().getWindowManager().getDefaultDisplay();
- Point size = new Point();
- display.getSize(size);
- height = size.y / 3;
- currentOccasion = SettingsManager.getInstance().getCurrentOccasion();
- contactAdapter = new ContactAdapter(getActivity(), listenerInterface);
- linearLayoutManager = new LinearLayoutManager(getActivity());
- linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
- contactRecyclerView.setHasFixedSize(true);
- contactRecyclerView.setLayoutManager(linearLayoutManager);
- contactRecyclerView.setAdapter(contactAdapter);
- contactRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- super.onScrollStateChanged(recyclerView, newState);
- }
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- super.onScrolled(recyclerView, dx, dy);
- ptrClassicFrameLayout.setEnabled(false);
- if(linearLayoutManager.findFirstVisibleItemPosition()==0) {
- View v = linearLayoutManager.getChildAt(linearLayoutManager.findFirstVisibleItemPosition());
- int offsetTop = v.getTop();
- if (offsetTop == 0) {
- ptrClassicFrameLayout.setEnabled(true);
- }
- }
- }
- });
- ptrClassicFrameLayout.addPtrUIHandler(new PtrUIHandler() {
- @Override
- public void onUIReset(PtrFrameLayout frame) {
- }
- @Override
- public void onUIRefreshPrepare(PtrFrameLayout frame) {
- }
- @Override
- public void onUIRefreshBegin(PtrFrameLayout frame) {
- contactAdapter.clearAdapter();
- EventBus.getDefault().post(new MainActivityShowLoadingEvent());
- ServerManager.getInstance().getOccasionContactFromOccasion(currentOccasion.getId());
- }
- @Override
- public void onUIRefreshComplete(PtrFrameLayout frame) {
- }
- @Override
- public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator) {
- }
- });
- reloadLocalData();
- }
- @Override
- public void onDestroy(){
- super.onDestroy();
- if(EventBus.getDefault().isRegistered(this)) {
- EventBus.getDefault().unregister(this);
- }
- }
- ContactAdapter.ContactAdapterListenerInterface listenerInterface = new ContactAdapter.ContactAdapterListenerInterface() {
- @Override
- public void phoneClicked(String name, RealmList<RealmString> phonesRealmList) {
- AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
- builder.setTitle(name);
- List<String> contactList = new ArrayList<String>();
- for (RealmString contactString : phonesRealmList) {
- contactList.add(contactString.getStringValue());
- }
- final CharSequence phones[] = contactList.toArray(new CharSequence[contactList.size()]);
- builder.setItems(phones, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- String currentPhone = (String) phones[which];
- Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", currentPhone, null));
- startActivity(intent);
- }
- });
- builder.show();
- }
- @Override
- public void emailClicked(String email) {
- Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", email, null));
- getActivity().startActivity(emailIntent);
- }
- };
- public void reloadLocalData(){
- OccasionContactResponse occasionContactResponse = realm.where(OccasionContactResponse.class)
- .equalTo("id",currentOccasion.getId()).findFirst();
- if(occasionContactResponse!=null){
- if(occasionContactResponse.getContacts()!=null) {
- contactAdapter.updateAdapter(height, occasionContactResponse.getContacts());
- }
- }
- EventBus.getDefault().post(new MainActivityShowLoadingEvent());
- ServerManager.getInstance().getOccasionContactFromOccasion(currentOccasion.getId());
- }
- public void onEvent(GetOccasionContactsFinishedEvent event){
- EventBus.getDefault().post(new MainActivityHideLoadingEvent());
- ptrClassicFrameLayout.refreshComplete();
- if(event.occasionContactResponse!=null){
- contactAdapter.updateAdapter(height, event.occasionContactResponse.getContacts());
- }else{
- InterfaceManager.sharedInstance().showErrorMessage(getActivity(), event.errorMessage);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement