Proyectos de Subversion Android Microlearning

Rev

Rev 32 | 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
 
3
import android.os.Bundle;
4
import android.util.Log;
5
import android.view.LayoutInflater;
6
import android.view.Menu;
7
import android.view.MenuInflater;
8
import android.view.View;
9
import android.view.ViewGroup;
10
 
11
import androidx.annotation.NonNull;
12
import androidx.annotation.Nullable;
13
import androidx.fragment.app.Fragment;
14
import androidx.lifecycle.LifecycleOwner;
15
import androidx.lifecycle.Observer;
16
import androidx.lifecycle.ViewModelProvider;
17
import androidx.recyclerview.widget.RecyclerView;
18
 
19
import com.cesams.twogetskills.R;
20
import com.cesams.twogetskills.adapter.SlideListViewAdapter;
21
import com.cesams.twogetskills.dao.CapsuleDao;
22
import com.cesams.twogetskills.dao.ProgressDao;
23
import com.cesams.twogetskills.dao.SlideDao;
24
import com.cesams.twogetskills.entity.Capsule;
25
import com.cesams.twogetskills.entity.Progress;
26
import com.cesams.twogetskills.entity.Slide;
27
import com.cesams.twogetskills.skeleton.ITwoGetSkills;
34 gabriel 28
import com.cesams.twogetskills.viewdata.SlideRefreshUIViewData;
29
import com.cesams.twogetskills.viewmodel.SlideRefreshUIViewModel;
1 efrain 30
import com.cesams.twogetskills.viewmodel.SlideViewModel;
31
 
32
import java.util.List;
33
import java.util.ArrayList;
34
 
35
//, IReloadData
36
public class SlideFragment extends Fragment implements SlideListViewAdapter.ItemClickListener, LifecycleOwner {
37
    private final String TAG = "C2GS - SlideFragment";
38
    private RecyclerView listView;
39
    //private List<Slide> items;
40
    private SlideListViewAdapter adapter;
41
    private ITwoGetSkills iTwoGetSkills;
42
    private SlideViewModel mSlideViewModel;
34 gabriel 43
    private SlideRefreshUIViewModel mSlideRefreshUi;
1 efrain 44
 
45
    @Override
46
    public void onCreate(@Nullable Bundle savedInstanceState) {
47
        super.onCreate(savedInstanceState);
48
        setHasOptionsMenu(true);
49
 
50
    }
51
 
52
    @Override
53
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
54
        super.onCreateOptionsMenu(menu, inflater);
55
        menu.clear();
56
    }
57
 
58
    @Override
59
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
60
        return inflater.inflate(R.layout.fragment_slide, container, false);
61
    }
62
 
63
    @Override
64
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
65
        super.onViewCreated(view, savedInstanceState);
66
        iTwoGetSkills = (ITwoGetSkills) getActivity();
67
 
68
 
69
        //GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 2);
70
 
71
        //items = new List<>();
72
 
73
        mSlideViewModel = new ViewModelProvider(requireActivity()).get(SlideViewModel.class);
34 gabriel 74
        mSlideRefreshUi = new ViewModelProvider(requireActivity()).get(SlideRefreshUIViewModel.class);
75
 
1 efrain 76
        adapter = new SlideListViewAdapter(getActivity(), mSlideViewModel.getSlideArrayList());
77
        adapter.setClickListener(this);
78
 
32 gabriel 79
        listView = getView().findViewById(R.id.fragment_slide_listview);
1 efrain 80
        listView.setAdapter(adapter);
81
        //listView.setLayoutManager( gridLayoutManager);
82
        listView.setHasFixedSize(true);
83
 
84
        Observer<ArrayList<Slide>> slideArrayListUpdateObserver = new Observer<ArrayList<Slide>>() {
85
            @Override
86
            public void onChanged(ArrayList<Slide> slideArrayList) {
87
                adapter.notifyDataSetChanged();
88
            }
89
        };
90
 
91
 
92
 
93
        mSlideViewModel.getSlideMutableLiveData().observe(requireActivity(),slideArrayListUpdateObserver);
94
 
34 gabriel 95
        loadData(false);
96
 
1 efrain 97
    }
98
 
99
    @Override
100
    public void onResume() {
101
        super.onResume();
102
 
103
        Log.d(TAG, "onResume");
34 gabriel 104
        loadData(true);
1 efrain 105
    }
106
 
107
 
108
 
109
 
110
    @Override
111
    public void onHiddenChanged(boolean hidden) {
112
        super.onHiddenChanged(hidden);
113
 
34 gabriel 114
       // Log.d(TAG, "onHiddenChanged : " + (hidden ? "true" : "false"));
1 efrain 115
 
116
        if(!hidden) {
34 gabriel 117
            loadData(false);
118
            Log.e("Cargando","desde oculto");
1 efrain 119
        }
120
    }
121
 
34 gabriel 122
    private void loadData(boolean background) {
16 gabriel 123
 
124
 
34 gabriel 125
        SlideRefreshUIViewData slideRefreshUIViewData = mSlideRefreshUi.getSlideRefreshUIViewData();
126
        List<Slide> dbSlides;
127
        SlideDao slideDao = iTwoGetSkills.getDatabase().getSlideDao();
1 efrain 128
 
34 gabriel 129
        if(!background){
1 efrain 130
 
34 gabriel 131
            CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();
132
            Capsule capsule = capsuleDao.selectByUuid(iTwoGetSkills.getCapsuleUuidActive());
133
            iTwoGetSkills.setTitleActionBar(capsule.getName());
134
 
135
            dbSlides  = slideDao.selectAllByCapsuleUuid(iTwoGetSkills.getCapsuleUuidActive());
136
 
137
            slideRefreshUIViewData.setCapsuleNameActiveViewData(capsule.getName());
138
            slideRefreshUIViewData.setCapsuleUuidActiveViewData(iTwoGetSkills.getCapsuleUuidActive());
139
 
140
        }
141
        else
142
        {
143
            iTwoGetSkills.setTitleActionBar(slideRefreshUIViewData.getCapsuleNameActiveViewData());
144
            dbSlides = slideDao.selectAllByCapsuleUuid(slideRefreshUIViewData.getCapsuleUuidActiveViewData());
145
 
146
        }
147
 
148
 
149
 
1 efrain 150
        mSlideViewModel.getSlideArrayList().clear();
151
 
152
 
153
        Slide slide;
154
        Progress progress;
155
        ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();
156
        for(Slide dbSlide : dbSlides)
157
        {
158
            slide = new Slide();
159
            slide.setTopicUuid(dbSlide.getTopicUuid());
160
            slide.setCapsuleUuid(dbSlide.getCapsuleUuid());
161
            slide.setQuizUuid(dbSlide.getQuizUuid());
162
            slide.setUuid(dbSlide.getUuid());
163
            slide.setName(dbSlide.getName());
164
            slide.setDescription(dbSlide.getDescription());
165
            slide.setType(dbSlide.getType());
166
            slide.setFile(dbSlide.getFile());
167
            slide.setBackground(dbSlide.getBackground());
168
            slide.setPosition(dbSlide.getPosition());
169
 
170
            progress = progressDao.selectBySlideUuid(slide.getUuid());
171
            if(progress != null) {
172
                slide.setCompleted(progress.getCompleted());
173
 
174
            } else {
175
                slide.setCompleted(0);
176
            }
4 gabriel 177
 
178
 
1 efrain 179
            slide.setShowFinish(false);
180
 
181
 
182
            mSlideViewModel.getSlideArrayList().add(slide);
183
        }
184
 
185
       mSlideViewModel.getSlideMutableLiveData().setValue(mSlideViewModel.getSlideArrayList());
32 gabriel 186
 
1 efrain 187
    }
188
 
189
 
190
    @Override
191
    public void onItemClick(View view, int position)
192
    {
193
        iTwoGetSkills.changeSlideActive(mSlideViewModel.getSlideArrayList().get(position).getUuid(), mSlideViewModel.getSlideArrayList().get(position).getType(), true);
194
    }
195
}