Proyectos de Subversion Android Microlearning

Rev

Rev 36 | Rev 39 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
package com.cesams.twogetskills.fragment;
2
 
37 gabriel 3
import static androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE;
4
 
1 efrain 5
import android.os.Bundle;
6
import android.util.Log;
7
import android.view.LayoutInflater;
8
import android.view.Menu;
9
import android.view.MenuInflater;
10
import android.view.View;
11
import android.view.ViewGroup;
12
import android.widget.ImageButton;
13
 
14
import androidx.annotation.NonNull;
15
import androidx.annotation.Nullable;
16
import androidx.fragment.app.Fragment;
17
import androidx.lifecycle.LifecycleOwner;
18
import androidx.lifecycle.Observer;
19
import androidx.lifecycle.ViewModelProvider;
20
import androidx.viewpager2.widget.ViewPager2;
21
 
22
 
37 gabriel 23
import com.cesams.twogetskills.Constants;
1 efrain 24
import com.cesams.twogetskills.R;
25
import com.cesams.twogetskills.adapter.GalleryViewPageAdapter;
8 gabriel 26
import com.cesams.twogetskills.dao.DatabaseHelper;
1 efrain 27
import com.cesams.twogetskills.dao.ProgressDao;
28
import com.cesams.twogetskills.dao.SlideDao;
29
import com.cesams.twogetskills.entity.Progress;
30
import com.cesams.twogetskills.entity.Slide;
27 efrain 31
 
32
 
37 gabriel 33
import com.cesams.twogetskills.room.ResultCount;
1 efrain 34
import com.cesams.twogetskills.skeleton.ITwoGetSkills;
35 gabriel 35
import com.cesams.twogetskills.viewdata.GalleryRefreshUIViewData;
27 efrain 36
import com.cesams.twogetskills.viewdata.SlideRefreshUIViewData;
35 gabriel 37
import com.cesams.twogetskills.viewmodel.GalleryRefreshUIViewModel;
1 efrain 38
import com.cesams.twogetskills.viewmodel.GalleryViewModel;
27 efrain 39
import com.cesams.twogetskills.viewmodel.SlideRefreshUIViewModel;
3 gabriel 40
import com.wajahatkarim3.easyflipviewpager.BookFlipPageTransformer2;
1 efrain 41
 
42
import java.util.List;
43
import java.util.ArrayList;
44
 
45
//IResultActivity
46
public class GalleryFragment extends Fragment implements LifecycleOwner {
47
    private final String TAG = "C2GS - GalleryFragment";
48
    private ViewPager2 viewPager2;
49
    private ImageButton mButtonNext;
50
    private ImageButton mButtonPrevious;
51
    private GalleryViewPageAdapter adapter;
52
    private ITwoGetSkills iTwoGetSkills;
53
    private GalleryViewModel mGalleryViewModel;
27 efrain 54
    private SlideRefreshUIViewModel mSlideRefreshUIViewModel;
35 gabriel 55
    private GalleryRefreshUIViewModel mGalleryRefreshUIView;
26 gabriel 56
 
34 gabriel 57
 
1 efrain 58
    @Override
59
    public void onCreate(@Nullable Bundle savedInstanceState) {
60
        super.onCreate(savedInstanceState);
61
        setHasOptionsMenu(true);
62
 
63
    }
64
 
65
    @Override
66
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
67
        super.onCreateOptionsMenu(menu, inflater);
68
        menu.clear();
69
    }
70
 
71
    @Override
72
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
73
 
74
        return inflater.inflate(R.layout.fragment_gallery, container, false);
75
    }
76
 
77
 
78
    @Override
79
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
80
        super.onViewCreated(view, savedInstanceState);
81
        iTwoGetSkills = (ITwoGetSkills) getActivity();
82
 
35 gabriel 83
        mGalleryRefreshUIView = new ViewModelProvider(requireActivity()).get(GalleryRefreshUIViewModel.class);
27 efrain 84
        mSlideRefreshUIViewModel = new ViewModelProvider(requireActivity()).get(SlideRefreshUIViewModel.class);
1 efrain 85
        mGalleryViewModel = new ViewModelProvider(requireActivity()).get(GalleryViewModel.class);
28 efrain 86
        adapter = new GalleryViewPageAdapter(requireActivity(), mGalleryViewModel.getSlideArrayList());
1 efrain 87
 
8 gabriel 88
        viewPager2 = getView().findViewById(R.id.fragment_gallery_viewpager2);
1 efrain 89
        viewPager2.setAdapter(adapter);
90
 
8 gabriel 91
 
3 gabriel 92
        // Create an object of page transformer
93
        BookFlipPageTransformer2 bookFlipPageTransformer = new BookFlipPageTransformer2();
94
 
95
        // Enable / Disable scaling while flipping. If true, then next page will scale in (zoom in). By default, its true.
96
        bookFlipPageTransformer.setEnableScale(false);
97
 
98
        // The amount of scale the page will zoom. By default, its 5 percent.
8 gabriel 99
        bookFlipPageTransformer.setScaleAmountPercent(10f);
3 gabriel 100
 
101
        // Assign the page transformer to the ViewPager2.
102
        viewPager2.setPageTransformer(bookFlipPageTransformer);
103
 
11 gabriel 104
 
1 efrain 105
        Observer<ArrayList<Slide>> slideArrayListUpdateObserver = new Observer<ArrayList<Slide>>() {
106
            @Override
107
            public void onChanged(ArrayList<Slide> slideArrayList) {
37 gabriel 108
                //Este metodo se ejecuta si el slide Array sufre cambios
11 gabriel 109
 
110
 
34 gabriel 111
 
37 gabriel 112
 
113
 
1 efrain 114
            }
115
        };
116
 
37 gabriel 117
 
118
 
8 gabriel 119
        mGalleryViewModel.getSlideMutableLiveData().observe(requireActivity(),slideArrayListUpdateObserver);
1 efrain 120
 
121
 
11 gabriel 122
 
8 gabriel 123
        mButtonNext = getView().findViewById(R.id.fragment_gallery_button_next);
1 efrain 124
 
125
 
8 gabriel 126
 
1 efrain 127
        mButtonNext.setOnClickListener(new View.OnClickListener() {
128
            @Override
129
            public void onClick(View view) {
27 efrain 130
                SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();
131
                slideRefreshUIViewData.setNextFromButton(true);
132
                mSlideRefreshUIViewModel.getSlideRefreshUIMutableLiveData().setValue(slideRefreshUIViewData);
8 gabriel 133
 
134
                viewPager2.setCurrentItem(getItem(+1), true); //getItem(-1) for previous
1 efrain 135
            }
136
        });
137
 
8 gabriel 138
        mButtonPrevious = getView().findViewById(R.id.fragment_gallery_button_previous);
26 gabriel 139
 
1 efrain 140
        mButtonPrevious.setOnClickListener(new View.OnClickListener() {
141
            @Override
142
            public void onClick(View view) {
8 gabriel 143
              //  Log.d("Gallery ViewPager2", "CurrentItem = " + viewPager2.getCurrentItem()  );
27 efrain 144
                SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();
145
                slideRefreshUIViewData.setNextFromButton(true);
146
                mSlideRefreshUIViewModel.getSlideRefreshUIMutableLiveData().setValue(slideRefreshUIViewData);
147
 
8 gabriel 148
                viewPager2.setCurrentItem(getItem(-1), true);
149
 
1 efrain 150
            }
151
        });
152
 
34 gabriel 153
 
154
 
1 efrain 155
        viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
34 gabriel 156
 
1 efrain 157
            @Override
158
            public void onPageSelected(int position) {
159
                super.onPageSelected(position);
160
 
161
 
8 gabriel 162
                Log.e("Seleccion","de pagina");
163
              //  Log.d(TAG, "registerOnPageChangeCallback");
1 efrain 164
                Slide mItem = mGalleryViewModel.getSlideArrayList().get(position);
165
 
37 gabriel 166
                Log.e("ONPageSelecte","aqui¡ "+mItem.getType());
1 efrain 167
 
168
                iTwoGetSkills.setTitleActionBar(mItem.getName());
169
                iTwoGetSkills.changeSlideActive(mItem.getUuid(), mItem.getType(), false);
37 gabriel 170
 
171
 
172
 
173
                //Resuelve el fix de pagina vista de imagenes no marcada
174
                loadData(false,"ONPageChangeCallback");
175
 
176
 
34 gabriel 177
            }
1 efrain 178
 
37 gabriel 179
 
34 gabriel 180
            @Override
181
            public void onPageScrollStateChanged(int state) {
182
                super.onPageScrollStateChanged(state);
1 efrain 183
 
37 gabriel 184
 
185
                SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();
186
 
187
 
188
                if (slideRefreshUIViewData.isImagenViewerControl() && state==ViewPager2.SCROLL_STATE_IDLE) {
189
 
190
 
191
                    adapter.notifyItemChanged(viewPager2.getCurrentItem());
192
                    //     adapter.notifyDataSetChanged();
193
 
34 gabriel 194
                }
37 gabriel 195
 
1 efrain 196
            }
197
        });
198
 
8 gabriel 199
 
37 gabriel 200
 
201
        loadData(false,"OnCreate");
202
 
1 efrain 203
    }
204
 
8 gabriel 205
    private int getItem(int i) {
206
        return viewPager2.getCurrentItem() + i;
207
    }
20 gabriel 208
 
1 efrain 209
    @Override
20 gabriel 210
    public void onPause() {
211
        super.onPause();
212
    }
213
 
214
    @Override
1 efrain 215
    public void onResume() {
216
        super.onResume();
217
 
29 efrain 218
        iTwoGetSkills.getPreference().save();
26 gabriel 219
 
27 efrain 220
        SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();
221
        slideRefreshUIViewData.setResumenVisores(true);
222
        mSlideRefreshUIViewModel.getSlideRefreshUIMutableLiveData().setValue(slideRefreshUIViewData);
223
 
224
        //DatabaseHelper.ResumenVisores="SI";
225
 
10 gabriel 226
        Log.e("OnResumen"," Aqui llegue");
1 efrain 227
 
37 gabriel 228
        loadData(true,"OnResume");
1 efrain 229
    }
230
 
231
 
232
    @Override
233
    public void onHiddenChanged(boolean hidden) {
234
        super.onHiddenChanged(hidden);
235
 
236
 
37 gabriel 237
 
238
        Log.e("Cargo", "en el on hidde");
239
 
240
 
29 efrain 241
        iTwoGetSkills.getPreference().save();
1 efrain 242
 
243
        if(!hidden) {
37 gabriel 244
            loadData( false, "hidden");
245
            adapter.notifyDataSetChanged();
246
 
1 efrain 247
        }
248
    }
249
 
37 gabriel 250
    private void loadData( boolean background, String origen) {
1 efrain 251
 
37 gabriel 252
        Log.e("Ejecuto","Load data: "+origen);
253
 
35 gabriel 254
        GalleryRefreshUIViewData galleryRefreshUIViewData = mGalleryRefreshUIView.getGalleryRefreshUIViewData();
1 efrain 255
 
256
        SlideDao slideDao = iTwoGetSkills.getDatabase().getSlideDao();
257
        Progress progress;
35 gabriel 258
        boolean showFinish = false;
259
        List<Slide> dbSlides;
1 efrain 260
        ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();
261
 
35 gabriel 262
        if(!background)
263
        {
264
            dbSlides = slideDao.selectAllByCapsuleUuid(iTwoGetSkills.getCapsuleUuidActive());
4 gabriel 265
 
266
 
35 gabriel 267
            progress = progressDao.selectByTopicUuid(iTwoGetSkills.getTopicUuidActive());
268
 
269
 
270
            galleryRefreshUIViewData.setCapsuleUuid(iTwoGetSkills.getCapsuleUuidActive());
271
            galleryRefreshUIViewData.setTopicUuidViewData(iTwoGetSkills.getTopicUuidActive());
272
 
37 gabriel 273
            mGalleryRefreshUIView.getGalleryRefreshUIMutableLiveData().setValue(galleryRefreshUIViewData);
274
 
275
            Log.e("Cargo desde", "MainThread");
276
 
35 gabriel 277
        }
278
        else
279
 
280
        {
281
            dbSlides=slideDao.selectAllByCapsuleUuid(galleryRefreshUIViewData.getCapsuleUuid());
282
            progress= progressDao.selectByTopicUuid(galleryRefreshUIViewData.getTopicUuidViewData());
37 gabriel 283
 
284
            Log.e("Cargo desde", "LiveData");
285
 
35 gabriel 286
        }
287
 
288
 
37 gabriel 289
 
290
 
17 gabriel 291
        if (progress != null) {
1 efrain 292
            showFinish = progress.getProgress() >= 100 && progress.getCompleted() == 0;
293
        }
17 gabriel 294
        if (!showFinish) {
1 efrain 295
            progress = progressDao.selectByCapsuleUuid(iTwoGetSkills.getCapsuleUuidActive());
17 gabriel 296
            if (progress != null) {
1 efrain 297
                showFinish = progress.getProgress() >= 100 && progress.getCompleted() == 0;
298
            }
299
        }
300
 
301
        mGalleryViewModel.getSlideArrayList().clear();
302
 
303
        int i = 0;
304
        int position = 0;
305
        Slide slide;
17 gabriel 306
        for (Slide dbSlide : dbSlides) {
1 efrain 307
            slide = new Slide();
308
            slide.setTopicUuid(dbSlide.getTopicUuid());
309
            slide.setCapsuleUuid(dbSlide.getCapsuleUuid());
310
            slide.setQuizUuid(dbSlide.getQuizUuid());
311
            slide.setUuid(dbSlide.getUuid());
312
            slide.setName(dbSlide.getName());
313
            slide.setDescription(dbSlide.getDescription());
314
            slide.setType(dbSlide.getType());
315
            slide.setFile(dbSlide.getFile());
316
            slide.setBackground(dbSlide.getBackground());
317
            slide.setPosition(dbSlide.getPosition());
318
 
319
 
17 gabriel 320
            if (slide.getUuid().equals(iTwoGetSkills.getSlideUuidActive())) {
1 efrain 321
                position = i;
322
            }
323
 
324
            progress = progressDao.selectBySlideUuid(slide.getUuid());
17 gabriel 325
            if (progress != null) {
1 efrain 326
                slide.setCompleted(progress.getCompleted());
327
            } else {
328
                slide.setCompleted(0);
329
            }
330
            slide.setShowFinish(showFinish);
331
            i++;
332
 
333
            mGalleryViewModel.getSlideArrayList().add(slide);
334
        }
335
 
336
 
337
 
32 gabriel 338
           iTwoGetSkills.setTitleActionBar(mGalleryViewModel.getSlideArrayList().get(position).getName());
20 gabriel 339
 
37 gabriel 340
           // Log.e("Aqui"," "+mGalleryViewModel.getSlideArrayList().get(position).getType());
8 gabriel 341
 
342
 
37 gabriel 343
 
27 efrain 344
            SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUIViewModel.getSlideRefreshUIViewData();
17 gabriel 345
 
27 efrain 346
            if (!slideRefreshUIViewData.isNextFromButton()) {
347
                if (slideRefreshUIViewData.isCambioSlide()) {
17 gabriel 348
                    viewPager2.setCurrentItem(position, false);
37 gabriel 349
                    Log.e("Actualizo", "No es boton next pero cambio");
17 gabriel 350
                }
351
 
8 gabriel 352
            }
37 gabriel 353
 
17 gabriel 354
            //Cuando ejecuto los visores de capsula como el reproductor de video y regreso, me aseguro de marcar vista el slide
27 efrain 355
            if (slideRefreshUIViewData.isResumenVisores()) {
37 gabriel 356
 
357
                adapter.notifyItemChanged(viewPager2.getCurrentItem());
358
                Log.e("Resumen","De visores");
359
 
17 gabriel 360
            }
37 gabriel 361
 
27 efrain 362
            slideRefreshUIViewData.setCambioSlide(false);
363
            slideRefreshUIViewData.setResumenVisores(false);
364
            slideRefreshUIViewData.setNextFromButton(false);
37 gabriel 365
 
27 efrain 366
            mSlideRefreshUIViewModel.getSlideRefreshUIMutableLiveData().setValue(slideRefreshUIViewData);
367
            /*
17 gabriel 368
            DatabaseHelper.CambioSlide = "NO";
369
            DatabaseHelper.ResumenVisores = "NO";
370
            isnextfrombutton = false;
27 efrain 371
             */
372
 
36 gabriel 373
 
374
            mGalleryViewModel.getSlideMutableLiveData().setValue(mGalleryViewModel.getSlideArrayList());
375
 
1 efrain 376
        }
377
 
20 gabriel 378
 
27 efrain 379
 
380
 
381
 
1 efrain 382
}