Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.dss.invitup.vc.homePage;
- import android.content.Intent;
- import android.graphics.Point;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.util.Log;
- import android.util.TypedValue;
- import android.view.Display;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.FrameLayout;
- import com.bumptech.glide.Glide;
- import com.bumptech.glide.load.resource.drawable.GlideDrawable;
- import com.bumptech.glide.request.RequestListener;
- import com.bumptech.glide.request.target.Target;
- import com.dss.invitup.MainActivity;
- import com.dss.invitup.R;
- import com.dss.invitup.adapters.HomePageAdapter;
- import com.dss.invitup.events.ArchivedEventButtonTapped;
- import com.dss.invitup.events.GetOccasionsFinishedEvent;
- import com.dss.invitup.events.HostAnEventButtonTapped;
- import com.dss.invitup.events.JoinAnEventButtonTapped;
- import com.dss.invitup.events.ProfileTappedEvent;
- import com.dss.invitup.events.RefreshHomePageOccasionEvent;
- import com.dss.invitup.models.Occasion;
- import com.dss.invitup.models.User;
- import com.dss.invitup.models.serverResponses.OccasionsResponse;
- 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 com.dss.invitup.vc.login.LoginMainPageActivity;
- import de.greenrobot.event.EventBus;
- import de.hdodenhof.circleimageview.CircleImageView;
- 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;
- /**
- * Copyright © 2016 Dihardja Software Solutions. All rights reserved.
- */
- public class HomePageFragment extends Fragment {
- OccasionsResponse theOccasionsResponse;
- Realm realm;
- User currentUser;
- PtrClassicFrameLayout homePagePtrClassicFrameLayout;
- FrameLayout rootFrameLayout, profilePictureFrameLayout;
- RecyclerView homePageRecyclerView;
- CircleImageView profileCircleImageView, profileCircleImageViewLoading;
- HomePageAdapter homePageAdapter;
- LinearLayoutManager linearLayoutManager;
- Point size;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_home_page, container, false);
- realm = AppController.getInstance().getRealm();
- currentUser = SettingsManager.getInstance().getCurrentUser();
- rootFrameLayout = (FrameLayout) view.findViewById(R.id.fragment_home_page_rootFrameLayout);
- homePagePtrClassicFrameLayout = (PtrClassicFrameLayout) view.findViewById(R.id.fragment_home_page_ptrClassicFrameLayout);
- homePageRecyclerView = (RecyclerView) view.findViewById(R.id.fragment_home_page_recyclerView);
- profilePictureFrameLayout = (FrameLayout) view.findViewById(R.id.fragment_home_page_profileImageFrameLayout);
- profileCircleImageView = (CircleImageView) view.findViewById(R.id.fragment_home_page_profileImage);
- profileCircleImageViewLoading = (CircleImageView) view.findViewById(R.id.fragment_home_page_profileImageLoading);
- return view;
- }
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- if (!EventBus.getDefault().isRegistered(this)) {
- EventBus.getDefault().register(this);
- }
- Display display = getActivity().getWindowManager().getDefaultDisplay();
- size = new Point();
- display.getSize(size);
- linearLayoutManager = new LinearLayoutManager(getActivity());
- linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
- homePageRecyclerView.setLayoutManager(linearLayoutManager);
- homePageRecyclerView.setHasFixedSize(true);
- homePageAdapter = new HomePageAdapter(getActivity(), listenerInterface);
- homePageRecyclerView.setAdapter(homePageAdapter);
- homePageRecyclerView.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);
- homePagePtrClassicFrameLayout.setEnabled(false);
- if(linearLayoutManager.findFirstVisibleItemPosition()==0){
- View v = linearLayoutManager.getChildAt(linearLayoutManager.findFirstVisibleItemPosition());
- int offsetTop = v.getTop();
- if(offsetTop==60){
- homePagePtrClassicFrameLayout.setEnabled(true);
- }
- }
- }
- });
- if(currentUser.getImageURL()!=null){
- if(!currentUser.getImageURL().equals("")) {
- profileCircleImageViewLoading.setVisibility(View.VISIBLE);
- Glide.with(getActivity()).load(currentUser.getImageURL()).listener(new RequestListener<String, GlideDrawable>() {
- @Override
- public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
- return false;
- }
- @Override
- public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
- profileCircleImageViewLoading.setVisibility(View.GONE);
- return false;
- }
- }).into(profileCircleImageView);
- }
- else{
- profileCircleImageView.setImageDrawable(getActivity().getResources().getDrawable(R.drawable.profile));
- }
- }
- profilePictureFrameLayout.setOnClickListener(profilePhotoListener);
- homePagePtrClassicFrameLayout.addPtrUIHandler(new PtrUIHandler() {
- @Override
- public void onUIReset(PtrFrameLayout frame) {
- homePageAdapter.notifyDataSetChanged();
- }
- @Override
- public void onUIRefreshPrepare(PtrFrameLayout frame) {
- }
- @Override
- public void onUIRefreshBegin(PtrFrameLayout frame) {
- InterfaceManager.sharedInstance().showLoading(rootFrameLayout,getActivity());
- ServerManager.getInstance().getAllOccasions(currentUser.getId());
- }
- @Override
- public void onUIRefreshComplete(PtrFrameLayout frame) {
- InterfaceManager.sharedInstance().hideLoading();
- }
- @Override
- public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator) {
- }
- });
- }
- @Override
- public void onResume() {
- super.onResume();
- reloadLocalData();
- }
- FrameLayout.OnClickListener profilePhotoListener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- EventBus.getDefault().post(new ProfileTappedEvent());
- }
- };
- HomePageAdapter.HomePageAdapterListenerInterface listenerInterface = new HomePageAdapter.HomePageAdapterListenerInterface() {
- @Override
- public void sectionTapped(String buttonText) {
- if(buttonText.equalsIgnoreCase(getActivity().getResources().getString(R.string.title_event_archived))){
- EventBus.getDefault().post(new ArchivedEventButtonTapped());
- }
- }
- @Override
- public void itemTapped(Occasion theOccasion, String userRole) {
- if(userRole.equalsIgnoreCase("invited")){
- SettingsManager.getInstance().setCurrentUserRole(SettingsManager.UserRole.INVITED);
- }else if(userRole.equalsIgnoreCase("host")){
- SettingsManager.getInstance().setCurrentUserRole(SettingsManager.UserRole.HOST);
- }else if(userRole.equalsIgnoreCase("guest")){
- SettingsManager.getInstance().setCurrentUserRole(SettingsManager.UserRole.GUEST);
- }
- SettingsManager.getInstance().setCurrentOccasion(theOccasion);
- Intent i = new Intent(getActivity(), MainActivity.class);
- getActivity().startActivity(i);
- }
- @Override
- public void buttonTapped(String buttonText) {
- if(buttonText.equalsIgnoreCase(getActivity().getResources().getString(R.string.button_host_event))){
- EventBus.getDefault().post(new HostAnEventButtonTapped());
- }else if(buttonText.equalsIgnoreCase(getActivity().getResources().getString(R.string.button_join_event))){
- EventBus.getDefault().post(new JoinAnEventButtonTapped());
- }
- }
- };
- public void reloadLocalData(){
- setHeightContentRecyclerView();
- theOccasionsResponse = realm.where(OccasionsResponse.class).equalTo("id",currentUser.getId()).findFirst();
- if(theOccasionsResponse!=null){
- initOccasionView();
- }
- InterfaceManager.sharedInstance().showLoading(rootFrameLayout,getActivity());
- ServerManager.getInstance().getAllOccasions(currentUser.getId());
- }
- public void initOccasionView(){
- homePageAdapter.updateAdapter(theOccasionsResponse.getInvitedOccasionsGuests(), theOccasionsResponse.getManagedOccasions(), theOccasionsResponse.getJoinedOccasions());
- setHeightContentRecyclerView();
- }
- public void setHeightContentRecyclerView(){
- final RecyclerView.LayoutParams params = new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT);
- homePageRecyclerView.measure(View.MeasureSpec.makeMeasureSpec(params.width, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
- params.leftMargin = 25;
- params.rightMargin = 25;
- Log.v("height rec:",homePageRecyclerView.getMeasuredHeight()+"");
- if(homePageRecyclerView.getMeasuredHeight() != 0 && SettingsManager.getInstance().getActivityJustMade()){
- SettingsManager.getInstance().setHeightOccasionsRecycledView(homePageRecyclerView.getMeasuredHeight());
- }
- if ( (size.y - SettingsManager.getInstance().getHeightOccasionsRecycledView()) > 92) {
- params.topMargin = (size.y - SettingsManager.getInstance().getHeightOccasionsRecycledView()) / 2;
- } else {
- params.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 46, getActivity().getResources().getDisplayMetrics());
- }
- if(SettingsManager.getInstance().getHeightOccasionsRecycledView() == 0){
- if((size.y - homePageRecyclerView.getMeasuredHeight()) < 46){
- params.topMargin = 46;
- }
- }
- if(params.topMargin < 46){
- params.topMargin = 46;
- }
- homePageRecyclerView.setLayoutParams(params);
- }
- public void onEvent(GetOccasionsFinishedEvent event){
- InterfaceManager.sharedInstance().hideLoading();
- homePagePtrClassicFrameLayout.refreshComplete();
- if(event.occasionsResponse!=null){
- SettingsManager.getInstance().setCurrentUserOccasionResponse(event.occasionsResponse);
- theOccasionsResponse = event.occasionsResponse;
- initOccasionView();
- }else{
- if(event.errorMessage.equalsIgnoreCase("Token is false or has expired") || event.errorMessage.equalsIgnoreCase("user not found")){
- SettingsManager.getInstance().setCurrentUser(null);
- SettingsManager.getInstance().setCurrentUserId(null);
- InterfaceManager.sharedInstance().showErrorMessage(getActivity(), getResources().getString(R.string.token_expired));
- Intent i = new Intent(getActivity(),LoginMainPageActivity.class);
- startActivity(i);
- getActivity().finish();
- InterfaceManager.sharedInstance().hideLoading();
- }else{
- InterfaceManager.sharedInstance().showErrorMessage(getActivity(),event.errorMessage);
- InterfaceManager.sharedInstance().hideLoading();
- }
- }
- }
- public void onEvent(RefreshHomePageOccasionEvent event){
- InterfaceManager.sharedInstance().showLoading(rootFrameLayout,getActivity());
- ServerManager.getInstance().getAllOccasions(currentUser.getId());
- }
- @Override
- public void onDestroy(){
- super.onDestroy();
- if(EventBus.getDefault().isRegistered(this)) {
- EventBus.getDefault().unregister(this);
- }
- }
- }
Add Comment
Please, Sign In to add comment