Rev 36 | Rev 39 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
package com.cesams.twogetskills.fragment;import static androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageButton;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.fragment.app.Fragment;import androidx.lifecycle.LifecycleOwner;import androidx.lifecycle.Observer;import androidx.lifecycle.ViewModelProvider;import androidx.viewpager2.widget.ViewPager2;import com.cesams.twogetskills.Constants;import com.cesams.twogetskills.R;import com.cesams.twogetskills.adapter.GalleryViewPageAdapter;import com.cesams.twogetskills.dao.DatabaseHelper;import com.cesams.twogetskills.dao.ProgressDao;import com.cesams.twogetskills.dao.SlideDao;import com.cesams.twogetskills.entity.Progress;import com.cesams.twogetskills.entity.Slide;import com.cesams.twogetskills.room.ResultCount;import com.cesams.twogetskills.skeleton.ITwoGetSkills;import com.cesams.twogetskills.viewdata.GalleryRefreshUIViewData;import com.cesams.twogetskills.viewdata.SlideRefreshUIViewData;import com.cesams.twogetskills.viewmodel.GalleryRefreshUIViewModel;import com.cesams.twogetskills.viewmodel.GalleryViewModel;import com.cesams.twogetskills.viewmodel.SlideRefreshUIViewModel;import com.wajahatkarim3.easyflipviewpager.BookFlipPageTransformer2;import java.util.List;import java.util.ArrayList;//IResultActivitypublic class GalleryFragment extends Fragment implements LifecycleOwner {private final String TAG = "C2GS - GalleryFragment";private ViewPager2 viewPager2;private ImageButton mButtonNext;private ImageButton mButtonPrevious;private GalleryViewPageAdapter adapter;private ITwoGetSkills iTwoGetSkills;private GalleryViewModel mGalleryViewModel;private SlideRefreshUIViewModel mSlideRefreshUIViewModel;private GalleryRefreshUIViewModel mGalleryRefreshUIView;@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setHasOptionsMenu(true);}@Overridepublic void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {super.onCreateOptionsMenu(menu, inflater);menu.clear();}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment_gallery, container, false);}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);iTwoGetSkills = (ITwoGetSkills) getActivity();mGalleryRefreshUIView = new ViewModelProvider(requireActivity()).get(GalleryRefreshUIViewModel.class);mSlideRefreshUIViewModel = new ViewModelProvider(requireActivity()).get(SlideRefreshUIViewModel.class);mGalleryViewModel = new ViewModelProvider(requireActivity()).get(GalleryViewModel.class);adapter = new GalleryViewPageAdapter(requireActivity(), mGalleryViewModel.getSlideArrayList());viewPager2 = getView().findViewById(R.id.fragment_gallery_viewpager2);viewPager2.setAdapter(adapter);// Create an object of page transformerBookFlipPageTransformer2 bookFlipPageTransformer = new BookFlipPageTransformer2();// Enable / Disable scaling while flipping. If true, then next page will scale in (zoom in). By default, its true.bookFlipPageTransformer.setEnableScale(false);// The amount of scale the page will zoom. By default, its 5 percent.bookFlipPageTransformer.setScaleAmountPercent(10f);// Assign the page transformer to the ViewPager2.viewPager2.setPageTransformer(bookFlipPageTransformer);Observer<ArrayList<Slide>> slideArrayListUpdateObserver = new Observer<ArrayList<Slide>>() {@Overridepublic void onChanged(ArrayList<Slide> slideArrayList) {//Este metodo se ejecuta si el slide Array sufre cambios}};mGalleryViewModel.getSlideMutableLiveData().observe(requireActivity(),slideArrayListUpdateObserver);mButtonNext = getView().findViewById(R.id.fragment_gallery_button_next);mButtonNext.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();slideRefreshUIViewData.setNextFromButton(true);mSlideRefreshUIViewModel.getSlideRefreshUIMutableLiveData().setValue(slideRefreshUIViewData);viewPager2.setCurrentItem(getItem(+1), true); //getItem(-1) for previous}});mButtonPrevious = getView().findViewById(R.id.fragment_gallery_button_previous);mButtonPrevious.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// Log.d("Gallery ViewPager2", "CurrentItem = " + viewPager2.getCurrentItem() );SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();slideRefreshUIViewData.setNextFromButton(true);mSlideRefreshUIViewModel.getSlideRefreshUIMutableLiveData().setValue(slideRefreshUIViewData);viewPager2.setCurrentItem(getItem(-1), true);}});viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {@Overridepublic void onPageSelected(int position) {super.onPageSelected(position);Log.e("Seleccion","de pagina");// Log.d(TAG, "registerOnPageChangeCallback");Slide mItem = mGalleryViewModel.getSlideArrayList().get(position);Log.e("ONPageSelecte","aqui¡ "+mItem.getType());iTwoGetSkills.setTitleActionBar(mItem.getName());iTwoGetSkills.changeSlideActive(mItem.getUuid(), mItem.getType(), false);//Resuelve el fix de pagina vista de imagenes no marcadaloadData(false,"ONPageChangeCallback");}@Overridepublic void onPageScrollStateChanged(int state) {super.onPageScrollStateChanged(state);SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();if (slideRefreshUIViewData.isImagenViewerControl() && state==ViewPager2.SCROLL_STATE_IDLE) {adapter.notifyItemChanged(viewPager2.getCurrentItem());// adapter.notifyDataSetChanged();}}});loadData(false,"OnCreate");}private int getItem(int i) {return viewPager2.getCurrentItem() + i;}@Overridepublic void onPause() {super.onPause();}@Overridepublic void onResume() {super.onResume();iTwoGetSkills.getPreference().save();SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();slideRefreshUIViewData.setResumenVisores(true);mSlideRefreshUIViewModel.getSlideRefreshUIMutableLiveData().setValue(slideRefreshUIViewData);//DatabaseHelper.ResumenVisores="SI";Log.e("OnResumen"," Aqui llegue");loadData(true,"OnResume");}@Overridepublic void onHiddenChanged(boolean hidden) {super.onHiddenChanged(hidden);Log.e("Cargo", "en el on hidde");iTwoGetSkills.getPreference().save();if(!hidden) {loadData( false, "hidden");adapter.notifyDataSetChanged();}}private void loadData( boolean background, String origen) {Log.e("Ejecuto","Load data: "+origen);GalleryRefreshUIViewData galleryRefreshUIViewData = mGalleryRefreshUIView.getGalleryRefreshUIViewData();SlideDao slideDao = iTwoGetSkills.getDatabase().getSlideDao();Progress progress;boolean showFinish = false;List<Slide> dbSlides;ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();if(!background){dbSlides = slideDao.selectAllByCapsuleUuid(iTwoGetSkills.getCapsuleUuidActive());progress = progressDao.selectByTopicUuid(iTwoGetSkills.getTopicUuidActive());galleryRefreshUIViewData.setCapsuleUuid(iTwoGetSkills.getCapsuleUuidActive());galleryRefreshUIViewData.setTopicUuidViewData(iTwoGetSkills.getTopicUuidActive());mGalleryRefreshUIView.getGalleryRefreshUIMutableLiveData().setValue(galleryRefreshUIViewData);Log.e("Cargo desde", "MainThread");}else{dbSlides=slideDao.selectAllByCapsuleUuid(galleryRefreshUIViewData.getCapsuleUuid());progress= progressDao.selectByTopicUuid(galleryRefreshUIViewData.getTopicUuidViewData());Log.e("Cargo desde", "LiveData");}if (progress != null) {showFinish = progress.getProgress() >= 100 && progress.getCompleted() == 0;}if (!showFinish) {progress = progressDao.selectByCapsuleUuid(iTwoGetSkills.getCapsuleUuidActive());if (progress != null) {showFinish = progress.getProgress() >= 100 && progress.getCompleted() == 0;}}mGalleryViewModel.getSlideArrayList().clear();int i = 0;int position = 0;Slide slide;for (Slide dbSlide : dbSlides) {slide = new Slide();slide.setTopicUuid(dbSlide.getTopicUuid());slide.setCapsuleUuid(dbSlide.getCapsuleUuid());slide.setQuizUuid(dbSlide.getQuizUuid());slide.setUuid(dbSlide.getUuid());slide.setName(dbSlide.getName());slide.setDescription(dbSlide.getDescription());slide.setType(dbSlide.getType());slide.setFile(dbSlide.getFile());slide.setBackground(dbSlide.getBackground());slide.setPosition(dbSlide.getPosition());if (slide.getUuid().equals(iTwoGetSkills.getSlideUuidActive())) {position = i;}progress = progressDao.selectBySlideUuid(slide.getUuid());if (progress != null) {slide.setCompleted(progress.getCompleted());} else {slide.setCompleted(0);}slide.setShowFinish(showFinish);i++;mGalleryViewModel.getSlideArrayList().add(slide);}iTwoGetSkills.setTitleActionBar(mGalleryViewModel.getSlideArrayList().get(position).getName());// Log.e("Aqui"," "+mGalleryViewModel.getSlideArrayList().get(position).getType());SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();if (!slideRefreshUIViewData.isNextFromButton()) {if (slideRefreshUIViewData.isCambioSlide()) {viewPager2.setCurrentItem(position, false);Log.e("Actualizo", "No es boton next pero cambio");}}//Cuando ejecuto los visores de capsula como el reproductor de video y regreso, me aseguro de marcar vista el slideif (slideRefreshUIViewData.isResumenVisores()) {adapter.notifyItemChanged(viewPager2.getCurrentItem());Log.e("Resumen","De visores");}slideRefreshUIViewData.setCambioSlide(false);slideRefreshUIViewData.setResumenVisores(false);slideRefreshUIViewData.setNextFromButton(false);mSlideRefreshUIViewModel.getSlideRefreshUIMutableLiveData().setValue(slideRefreshUIViewData);/*DatabaseHelper.CambioSlide = "NO";DatabaseHelper.ResumenVisores = "NO";isnextfrombutton = false;*/mGalleryViewModel.getSlideMutableLiveData().setValue(mGalleryViewModel.getSlideArrayList());}}