Proyectos de Subversion Android Microlearning

Rev

Rev 34 | 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;
34 gabriel 29
import com.cesams.twogetskills.viewdata.CapsuleRefreshUIViewData;
30
import com.cesams.twogetskills.viewdata.SlideRefreshUIViewData;
31
import com.cesams.twogetskills.viewmodel.CapsuleRefreshUIViewModel;
1 efrain 32
import com.cesams.twogetskills.viewmodel.CapsuleViewModel;
34 gabriel 33
import com.cesams.twogetskills.viewmodel.GalleryViewModel;
34
import com.cesams.twogetskills.viewmodel.SlideRefreshUIViewModel;
1 efrain 35
 
36
import java.util.ArrayList;
37
import java.util.List;
38
 
39
public class CapsuleFragment extends Fragment implements CapsuleListViewAdapter.ItemClickListener, LifecycleOwner {
40
    private final String TAG = "C2GS - CapsuleFragment";
41
    private RecyclerView listView;
42
    private CapsuleListViewAdapter adapter;
43
    private ITwoGetSkills iTwoGetSkills;
44
    private CapsuleViewModel mCapsuleViewModel;
34 gabriel 45
    private CapsuleRefreshUIViewModel mCapsuleRefreshUIViewModel;
1 efrain 46
 
47
 
48
    @Override
49
    public void onCreate(@Nullable Bundle savedInstanceState) {
50
        super.onCreate(savedInstanceState);
51
        setHasOptionsMenu(true);
52
 
53
 
54
    }
55
 
56
    @Override
57
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
58
        super.onCreateOptionsMenu(menu, inflater);
59
        menu.clear();
60
    }
61
 
62
    @Override
63
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
64
 
65
        return inflater.inflate(R.layout.fragment_capsule, container, false);
66
    }
67
 
68
    @Override
69
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
70
        super.onViewCreated(view, savedInstanceState);
71
        iTwoGetSkills = (ITwoGetSkills) getActivity();
72
 
34 gabriel 73
 
74
        mCapsuleRefreshUIViewModel = new ViewModelProvider(requireActivity()).get(CapsuleRefreshUIViewModel.class);
1 efrain 75
        mCapsuleViewModel = new ViewModelProvider(requireActivity()).get(CapsuleViewModel.class);
76
        adapter = new CapsuleListViewAdapter(requireActivity(), mCapsuleViewModel.getCapsuleArrayList());
77
        adapter.setClickListener(this);
78
 
34 gabriel 79
 
1 efrain 80
        Log.d(TAG, "Declarando el Observador");
34 gabriel 81
 
1 efrain 82
        Observer<ArrayList<Capsule>> capsuleListUpdateObserver = new Observer<ArrayList<Capsule>>() {
83
            @Override
84
            public void onChanged(ArrayList<Capsule> capsuleArrayList) {
32 gabriel 85
 
1 efrain 86
                adapter.notifyDataSetChanged();
87
            }
88
        };
89
 
90
 
91
        mCapsuleViewModel.getCapsuleMutableLiveData().observe(requireActivity(),capsuleListUpdateObserver);
92
 
93
 
32 gabriel 94
        listView = getView().findViewById(R.id.fragment_capsule_listview);
1 efrain 95
        listView.setAdapter(adapter);
96
        listView.setHasFixedSize(true);
97
 
34 gabriel 98
 
99
 
100
        loadData(false);
101
 
102
 
1 efrain 103
    }
104
 
105
 
106
    @Override
107
    public void onItemClick(View view, int position)
108
    {
109
        iTwoGetSkills.changeCapsuleActive(mCapsuleViewModel.getCapsuleArrayList().get(position).getUuid());
110
    }
111
 
112
    @Override
113
    public void onResume() {
114
        super.onResume();
115
 
34 gabriel 116
        loadData(true);
117
 
1 efrain 118
    }
43 efrain 119
 
1 efrain 120
    @Override
121
    public void onHiddenChanged(boolean hidden) {
122
        super.onHiddenChanged(hidden);
123
 
124
        Log.d(TAG, "onHiddenChanged : " + (hidden ? "true" : "false"));
125
 
126
        if(!hidden) {
34 gabriel 127
            loadData(false);
1 efrain 128
        }
129
    }
130
 
34 gabriel 131
    private void loadData(boolean background) {
1 efrain 132
 
133
        TopicDao topicDao = iTwoGetSkills.getDatabase().getTopicDao();
34 gabriel 134
        CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();
135
        List<Capsule> dbCapsules;
136
        CapsuleRefreshUIViewData CapsuleRefreshUIViewData = mCapsuleRefreshUIViewModel.getCapsuleRefreshUIViewData();
1 efrain 137
 
34 gabriel 138
        if (!background) {
139
            Topic topic = topicDao.selectByUuid(iTwoGetSkills.getTopicUuidActive());
16 gabriel 140
            iTwoGetSkills.setTitleActionBar(topic.getName());
1 efrain 141
 
34 gabriel 142
            dbCapsules = capsuleDao.selectAllByTopicUuid(topic.getUuid());
1 efrain 143
 
34 gabriel 144
 
145
            CapsuleRefreshUIViewData.setTopicViewDataName(topic.getName());
146
            CapsuleRefreshUIViewData.setTopicUuidViewData(topic.getUuid());
147
 
148
            mCapsuleRefreshUIViewModel.getCapsuleRefreshUIMutableLiveData().setValue(CapsuleRefreshUIViewData);
149
            Log.e("Cargando","Desde elemento topic");
150
 
151
 
152
        } else
153
        {
154
             dbCapsules = capsuleDao.selectAllByTopicUuid(CapsuleRefreshUIViewData.getTopicUuidViewData());
155
             iTwoGetSkills.setTitleActionBar(CapsuleRefreshUIViewData.getTopicViewDataName());
156
             Log.e("Cargando","Desde live data");
157
        }
158
 
159
 
16 gabriel 160
            mCapsuleViewModel.getCapsuleArrayList().clear();
1 efrain 161
 
16 gabriel 162
            Capsule capsule;
163
            Progress progress;
164
            ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();
165
            for(Capsule dbCapsule : dbCapsules)
166
            {
167
                capsule = new Capsule();
168
                capsule.setTopicUuid(dbCapsule.getTopicUuid());
169
                capsule.setUuid(dbCapsule.getUuid());
170
                capsule.setName(dbCapsule.getName());
171
                capsule.setDescription(dbCapsule.getDescription());
172
                capsule.setImage(dbCapsule.getImage());
173
                capsule.setPosition(dbCapsule.getPosition());
1 efrain 174
 
16 gabriel 175
 
176
                progress = progressDao.selectByCapsuleUuid(capsule.getUuid());
177
                if(progress != null) {
178
                    capsule.setCompleted( progress.getCompleted());
179
                    capsule.setViewSlides(progress.getViewSlides());
180
                    capsule.setTotalSlides( progress.getTotalSlides());
181
                    capsule.setProgress(progress.getProgress());
182
                }
183
 
184
                mCapsuleViewModel.getCapsuleArrayList().add(capsule);
1 efrain 185
            }
186
 
32 gabriel 187
        mCapsuleViewModel.getCapsuleMutableLiveData().setValue(mCapsuleViewModel.getCapsuleArrayList());
16 gabriel 188
 
1 efrain 189
        }
190
 
191
 
16 gabriel 192
    }
1 efrain 193
 
16 gabriel 194