Rev 28 | Rev 32 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
package com.cesams.twogetskills.fragment;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.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.skeleton.ITwoGetSkills;import com.cesams.twogetskills.viewdata.SlideRefreshUIViewData;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;@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();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) {SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();//if(DatabaseHelper.imagenviewerontrol.equals("SI")) {if (slideRefreshUIViewData.isImagenViewerControl()) {adapter.notifyItemChanged(viewPager2.getCurrentItem());}}};mGalleryViewModel.getSlideMutableLiveData().observe(requireActivity(),slideArrayListUpdateObserver);mButtonNext = getView().findViewById(R.id.fragment_gallery_button_next);mButtonNext.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// Log.e("Gallery ViewPager2", "CurrentItem = " + viewPager2.getCurrentItem()+1 );// Log.e("Gallery ViewPager2", "Size = " + mGalleryViewModel.getSlideArrayList().size() );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.setPageTransformer(new ZoomOutPageTransformer());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);iTwoGetSkills.setTitleActionBar(mItem.getName());iTwoGetSkills.changeSlideActive(mItem.getUuid(), mItem.getType(), false);loadData(true);}});}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);}@Overridepublic void onHiddenChanged(boolean hidden) {super.onHiddenChanged(hidden);//Refrescar cuando se cambia de capsulaadapter.notifyDataSetChanged();iTwoGetSkills.getPreference().save();// Log.d(TAG, "onHiddenChanged : " + (hidden ? "true" : "false"));if(!hidden) {loadData(true);}}private void loadData(boolean setValue) {SlideDao slideDao = iTwoGetSkills.getDatabase().getSlideDao();List<Slide> dbSlides = slideDao.selectAllByCapsuleUuid(iTwoGetSkills.getCapsuleUuidActive());Progress progress;ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();boolean showFinish = false;progress = progressDao.selectByTopicUuid(iTwoGetSkills.getTopicUuidActive());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);}Log.d(TAG, "slide position : " + position);//Validamos la lista, si esta vacia o nulaif (mGalleryViewModel.getSlideArrayList() == null ||mGalleryViewModel.getSlideArrayList().size() == 0) {iTwoGetSkills.setTitleActionBar(iTwoGetSkills.getPreference().getSlideName());} else {iTwoGetSkills.setTitleActionBar(mGalleryViewModel.getSlideArrayList().get(position).getName());//Guardo el nombre en el Preference..iTwoGetSkills.getPreference().setSlideName(mGalleryViewModel.getSlideArrayList().get(position).getName());iTwoGetSkills.getPreference().save();//Entrar a ver una pagina especifica que quieras ver de la lista, pero colisiona con el next and back buttons//viewPager2.setCurrentItem(position, false);}SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();Log.e("Lo que viene", " En el booleano: " + slideRefreshUIViewData.isNextFromButton());if (!slideRefreshUIViewData.isNextFromButton()) {if (slideRefreshUIViewData.isCambioSlide()) {viewPager2.setCurrentItem(position, false);}}//Cuando ejecuto los visores de capsula como el reproductor de video y regreso, me aseguro de marcar vista el slideif (slideRefreshUIViewData.isResumenVisores()) {//viewPager2.setCurrentItem(position, false);Log.e("Hago", "Lo de actualizar resumen");adapter.notifyItemChanged(position);}slideRefreshUIViewData.setCambioSlide(false);slideRefreshUIViewData.setResumenVisores(false);slideRefreshUIViewData.setNextFromButton(false);mSlideRefreshUIViewModel.getSlideRefreshUIMutableLiveData().setValue(slideRefreshUIViewData);/*DatabaseHelper.CambioSlide = "NO";DatabaseHelper.ResumenVisores = "NO";isnextfrombutton = false;*/if (setValue) {mGalleryViewModel.getSlideMutableLiveData().setValue(mGalleryViewModel.getSlideArrayList());} else {mGalleryViewModel.getSlideMutableLiveData().postValue(mGalleryViewModel.getSlideArrayList());}}}