Proyectos de Subversion Android Microlearning

Rev

Rev 25 | 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;
16 gabriel 20
import com.cesams.twogetskills.activity.MainActivity;
1 efrain 21
import com.cesams.twogetskills.adapter.CapsuleListViewAdapter;
22
import com.cesams.twogetskills.dao.CapsuleDao;
23
import com.cesams.twogetskills.dao.ProgressDao;
24
import com.cesams.twogetskills.dao.TopicDao;
25
import com.cesams.twogetskills.entity.Capsule;
26
import com.cesams.twogetskills.entity.Progress;
27
import com.cesams.twogetskills.entity.Topic;
28
import com.cesams.twogetskills.skeleton.ITwoGetSkills;
29
import com.cesams.twogetskills.viewmodel.CapsuleViewModel;
30
 
31
import java.util.ArrayList;
32
import java.util.List;
33
 
34
public class CapsuleFragment extends Fragment implements CapsuleListViewAdapter.ItemClickListener, LifecycleOwner {
35
    private final String TAG = "C2GS - CapsuleFragment";
36
    private RecyclerView listView;
37
    private CapsuleListViewAdapter adapter;
38
    private ITwoGetSkills iTwoGetSkills;
39
    private CapsuleViewModel mCapsuleViewModel;
40
 
41
 
42
    @Override
43
    public void onCreate(@Nullable Bundle savedInstanceState) {
44
        super.onCreate(savedInstanceState);
45
        setHasOptionsMenu(true);
46
 
47
 
48
    }
49
 
50
    @Override
51
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
52
        super.onCreateOptionsMenu(menu, inflater);
53
        menu.clear();
54
    }
55
 
56
    @Override
57
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
58
 
59
        return inflater.inflate(R.layout.fragment_capsule, container, false);
60
    }
61
 
62
    @Override
63
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
64
        super.onViewCreated(view, savedInstanceState);
65
        iTwoGetSkills = (ITwoGetSkills) getActivity();
66
 
25 gabriel 67
 
1 efrain 68
       // GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 2);
69
 
70
 
71
        mCapsuleViewModel = new ViewModelProvider(requireActivity()).get(CapsuleViewModel.class);
72
        adapter = new CapsuleListViewAdapter(requireActivity(), mCapsuleViewModel.getCapsuleArrayList());
73
        adapter.setClickListener(this);
74
 
75
        Log.d(TAG, "Declarando el Observador");
76
        Observer<ArrayList<Capsule>> capsuleListUpdateObserver = new Observer<ArrayList<Capsule>>() {
77
            @Override
78
            public void onChanged(ArrayList<Capsule> capsuleArrayList) {
79
                Log.d(TAG, "Observador - Actualizar lista de cápsulas");
80
                //adapter.updateCapsuleList(capsuleArrayList);
81
                adapter.notifyDataSetChanged();
82
            }
83
        };
84
 
85
 
86
        mCapsuleViewModel.getCapsuleMutableLiveData().observe(requireActivity(),capsuleListUpdateObserver);
87
 
88
 
89
        listView = (RecyclerView) getView().findViewById(R.id.fragment_capsule_listview);
90
        listView.setAdapter(adapter);
91
       // listView.setLayoutManager( gridLayoutManager);
92
        listView.setHasFixedSize(true);
93
 
94
 
95
 
96
    }
97
 
98
 
99
    @Override
100
    public void onItemClick(View view, int position)
101
    {
102
        iTwoGetSkills.changeCapsuleActive(mCapsuleViewModel.getCapsuleArrayList().get(position).getUuid());
103
    }
104
 
105
    @Override
106
    public void onResume() {
107
        super.onResume();
108
 
109
        Log.d(TAG, "onResume");
110
        loadData();
111
    }
112
 
113
 
114
 
115
 
116
    @Override
117
    public void onHiddenChanged(boolean hidden) {
118
        super.onHiddenChanged(hidden);
119
 
120
        Log.d(TAG, "onHiddenChanged : " + (hidden ? "true" : "false"));
121
 
122
        if(!hidden) {
123
            loadData();
124
        }
125
    }
126
 
127
    private void loadData()
128
    {
129
 
16 gabriel 130
        Log.e("Cargando ","Capsule Load");
131
 
1 efrain 132
        TopicDao topicDao = iTwoGetSkills.getDatabase().getTopicDao();
133
        Topic topic = topicDao.selectByUuid(iTwoGetSkills.getTopicUuidActive());
134
 
16 gabriel 135
        if (topic == null)
136
        {
1 efrain 137
 
25 gabriel 138
            //Cargando preferencias
139
            String uuiTopic= iTwoGetSkills.getPreference().getTopicUuidActive();
140
            String nameTopic= iTwoGetSkills.getPreference().getTopicNameActive();
141
 
142
            iTwoGetSkills.setTitleActionBar(nameTopic);
143
 
144
            CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();
145
            List<Capsule> dbCapsules = capsuleDao.selectAllByTopicUuid(uuiTopic);
146
 
147
            mCapsuleViewModel.getCapsuleArrayList().clear();
148
 
149
            Capsule capsule;
150
            Progress progress;
151
            ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();
152
            for(Capsule dbCapsule : dbCapsules)
153
            {
154
                capsule = new Capsule();
155
                capsule.setTopicUuid(dbCapsule.getTopicUuid());
156
                capsule.setUuid(dbCapsule.getUuid());
157
                capsule.setName(dbCapsule.getName());
158
                capsule.setDescription(dbCapsule.getDescription());
159
                capsule.setImage(dbCapsule.getImage());
160
                capsule.setPosition(dbCapsule.getPosition());
161
 
162
 
163
                progress = progressDao.selectByCapsuleUuid(capsule.getUuid());
164
                if(progress != null) {
165
                    capsule.setCompleted( progress.getCompleted());
166
                    capsule.setViewSlides(progress.getViewSlides());
167
                    capsule.setTotalSlides( progress.getTotalSlides());
168
                    capsule.setProgress(progress.getProgress());
169
                }
170
 
171
                mCapsuleViewModel.getCapsuleArrayList().add(capsule);
172
            }
173
 
174
 
16 gabriel 175
        }
176
        else{
25 gabriel 177
 
16 gabriel 178
            iTwoGetSkills.setTitleActionBar(topic.getName());
1 efrain 179
 
25 gabriel 180
            //Salvando a preferencias
181
            iTwoGetSkills.getPreference().setTopicUuidActive(topic.getUuid());
182
            iTwoGetSkills.getPreference().setTopicNameActive(topic.getName());
1 efrain 183
 
29 efrain 184
            iTwoGetSkills.getPreference().save();
25 gabriel 185
 
16 gabriel 186
            CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();
187
            List<Capsule> dbCapsules = capsuleDao.selectAllByTopicUuid(topic.getUuid());
1 efrain 188
 
16 gabriel 189
            mCapsuleViewModel.getCapsuleArrayList().clear();
1 efrain 190
 
16 gabriel 191
            Capsule capsule;
192
            Progress progress;
193
            ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();
194
            for(Capsule dbCapsule : dbCapsules)
195
            {
196
                capsule = new Capsule();
197
                capsule.setTopicUuid(dbCapsule.getTopicUuid());
198
                capsule.setUuid(dbCapsule.getUuid());
199
                capsule.setName(dbCapsule.getName());
200
                capsule.setDescription(dbCapsule.getDescription());
201
                capsule.setImage(dbCapsule.getImage());
202
                capsule.setPosition(dbCapsule.getPosition());
1 efrain 203
 
16 gabriel 204
 
205
                progress = progressDao.selectByCapsuleUuid(capsule.getUuid());
206
                if(progress != null) {
207
                    capsule.setCompleted( progress.getCompleted());
208
                    capsule.setViewSlides(progress.getViewSlides());
209
                    capsule.setTotalSlides( progress.getTotalSlides());
210
                    capsule.setProgress(progress.getProgress());
211
                }
212
 
213
                mCapsuleViewModel.getCapsuleArrayList().add(capsule);
1 efrain 214
            }
215
 
16 gabriel 216
 
1 efrain 217
        }
25 gabriel 218
        mCapsuleViewModel.getCapsuleMutableLiveData().setValue(mCapsuleViewModel.getCapsuleArrayList());
1 efrain 219
 
220
 
16 gabriel 221
    }
1 efrain 222
 
16 gabriel 223
 
1 efrain 224
}