Proyectos de Subversion Android Microlearning - Nuevo Interface

Rev

Rev 8 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 8 Rev 9
Línea 1... Línea 1...
1
package com.cesams.twogetskills.fragment;
1
package com.cesams.twogetskills.fragment;
Línea 2... Línea 2...
2
 
2
 
Línea -... Línea 3...
-
 
3
import android.os.Bundle;
3
import android.os.Bundle;
4
 
4
 
5
import androidx.annotation.Nullable;
5
import androidx.fragment.app.Fragment;
6
import androidx.fragment.app.Fragment;
6
import androidx.lifecycle.LifecycleOwner;
7
import androidx.lifecycle.LifecycleOwner;
7
import androidx.lifecycle.Observer;
8
import androidx.lifecycle.Observer;
8
import androidx.lifecycle.ViewModelProvider;
9
import androidx.lifecycle.ViewModelProvider;
Línea -... Línea 10...
-
 
10
import androidx.recyclerview.widget.GridLayoutManager;
9
import androidx.recyclerview.widget.GridLayoutManager;
11
import androidx.recyclerview.widget.RecyclerView;
10
import androidx.recyclerview.widget.RecyclerView;
12
 
11
 
13
import android.text.Layout;
12
import android.util.Log;
14
import android.util.Log;
13
import android.view.DragEvent;
15
import android.view.DragEvent;
-
 
16
import android.view.LayoutInflater;
14
import android.view.LayoutInflater;
17
import android.view.View;
-
 
18
import android.view.ViewGroup;
-
 
19
import android.widget.Button;
15
import android.view.View;
20
import android.widget.EditText;
16
import android.view.ViewGroup;
21
import android.widget.ImageView;
Línea -... Línea 22...
-
 
22
import android.widget.ProgressBar;
-
 
23
import android.widget.TextView;
-
 
24
import android.widget.Toast;
-
 
25
 
-
 
26
import com.bumptech.glide.Glide;
-
 
27
import com.bumptech.glide.load.engine.DiskCacheStrategy;
17
import android.widget.EditText;
28
import com.bumptech.glide.load.model.GlideUrl;
18
import android.widget.TextView;
29
import com.bumptech.glide.load.model.LazyHeaders;
19
import android.widget.Toast;
30
import com.bumptech.glide.request.RequestOptions;
20
 
31
import com.cesams.twogetskills.Constants;
21
import com.cesams.twogetskills.R;
32
import com.cesams.twogetskills.R;
Línea 27... Línea 38...
27
import com.cesams.twogetskills.dao.ProgressDao;
38
import com.cesams.twogetskills.dao.ProgressDao;
28
import com.cesams.twogetskills.dao.TopicDao;
39
import com.cesams.twogetskills.dao.TopicDao;
29
import com.cesams.twogetskills.entity.Capsule;
40
import com.cesams.twogetskills.entity.Capsule;
30
import com.cesams.twogetskills.entity.Progress;
41
import com.cesams.twogetskills.entity.Progress;
31
import com.cesams.twogetskills.entity.Topic;
42
import com.cesams.twogetskills.entity.Topic;
-
 
43
import com.cesams.twogetskills.library.MD5;
32
import com.cesams.twogetskills.skeleton.ITwoGetSkills;
44
import com.cesams.twogetskills.skeleton.ITwoGetSkills;
33
import com.cesams.twogetskills.viewmodel.CapsuleViewModel;
45
import com.cesams.twogetskills.viewmodel.CapsuleViewModel;
Línea 34... Línea 46...
34
 
46
 
-
 
47
import java.util.ArrayList;
35
import java.util.ArrayList;
48
import java.util.Calendar;
36
import java.util.HashMap;
49
import java.util.HashMap;
-
 
50
import java.util.List;
-
 
51
import java.util.Random;
Línea 37... Línea 52...
37
import java.util.List;
52
import java.util.TimeZone;
38
 
53
 
39
/**
54
/**
40
 * A simple {@link Fragment} subclass.
55
 * A simple {@link Fragment} subclass.
41
 * Use the {@link WelcomeFragment#newInstance} factory method to
56
 * Use the {@link WelcomeFragment#newInstance} factory method to
42
 * create an instance of this fragment.
57
 * create an instance of this fragment.
Línea 43... Línea 58...
43
 */
58
 */
44
public class WelcomeFragment extends Fragment implements CapsuleListViewAdapter.ItemClickListener, LifecycleOwner {
59
public class WelcomeFragment extends Fragment implements CapsuleListViewAdapter.ItemClickListener, LifecycleOwner {
45
 
60
 
46
    TextView username;
61
    TextView username, titulotarjeta, progresoporcentaje; ProgressBar progresotarjeta;
47
    private ITwoGetSkills iTwoGetSkills;
62
    private ITwoGetSkills iTwoGetSkills; View card;
48
    ArrayList<HashMap<String, String>> capsuleList;
63
    ArrayList<HashMap<String, String>> capsuleList;
49
    private CardViewAdapter adapter;
64
    private CardViewAdapter adapter; ImageView imagetarjeta;
50
    private TabsCapsulesAdapter adapter2;
-
 
Línea 51... Línea 65...
51
    RecyclerView capsulas, categorizados;
65
    private TabsCapsulesAdapter adapter2;
52
    EditText busqueda; TextView textowelcome;
66
    RecyclerView capsulas, categorizados;
53
 
67
    EditText busqueda; TextView textowelcome; Button continuar;
Línea 77... Línea 91...
77
        View view= inflater.inflate(R.layout.fragment_welcome, container, false);
91
        View view= inflater.inflate(R.layout.fragment_welcome, container, false);
Línea 78... Línea 92...
78
 
92
 
79
        username=view.findViewById(R.id.textView14);
93
        username=view.findViewById(R.id.textView14);
80
        textowelcome= view.findViewById(R.id.textView15);
94
        textowelcome= view.findViewById(R.id.textView15);
-
 
95
        busqueda=view.findViewById(R.id.busqueda);
81
        busqueda=view.findViewById(R.id.busqueda);
96
        card= view.findViewById(R.id.include);
Línea -... Línea 97...
-
 
97
        capsuleList = new ArrayList<>();
-
 
98
 
-
 
99
        //Tarjeta Principal
-
 
100
        titulotarjeta = view.findViewById(R.id.titleview); progresotarjeta= view.findViewById(R.id.progressBar2); imagetarjeta= view.findViewById(R.id.imagelist);
-
 
101
        continuar = view.findViewById(R.id.button); progresoporcentaje = view.findViewById(R.id.textView16);
82
        capsuleList = new ArrayList<>();
102
 
Línea 83... Línea 103...
83
 
103
 
Línea 84... Línea 104...
84
        username.setText("¡Hola, "+(iTwoGetSkills.getPreference().getFirstName() +"!"));
104
        username.setText("¡Hola, "+(iTwoGetSkills.getPreference().getFirstName() +"!"));
85
 
105
 
86
 
106
 
87
        loadData();
107
        loadData();
88
 
108
 
89
        busqueda.setOnFocusChangeListener(new View.OnFocusChangeListener() {
109
        busqueda.setOnFocusChangeListener(new View.OnFocusChangeListener() {
90
            @Override
110
            @Override
91
            public void onFocusChange(View v, boolean hasFocus) {
111
            public void onFocusChange(View v, boolean hasFocus) {
92
                if(hasFocus)
112
                if(hasFocus)
Línea 93... Línea 113...
93
                {
113
                {
Línea 120... Línea 140...
120
            public boolean onFling(int velocityX, int velocityY) {
140
            public boolean onFling(int velocityX, int velocityY) {
Línea 121... Línea 141...
121
 
141
 
Línea 122... Línea 142...
122
                if (categorizados.canScrollVertically(-1) ) {
142
                if (categorizados.canScrollVertically(-1) ) {
123
 
143
 
124
                    Log.e("Se activa", "On fling");
144
                    Log.e("Se activa", "On fling");
125
                    capsulas.setVisibility(View.GONE);
145
                    card.setVisibility(View.GONE);
126
                    username.setVisibility(View.GONE);
146
                    username.setVisibility(View.GONE);
127
                    textowelcome.setVisibility(View.GONE);
147
                    textowelcome.setVisibility(View.GONE);
128
                }else
148
                }else
129
                {
149
                {
130
                    capsulas.setVisibility(View.VISIBLE);
150
                    card.setVisibility(View.VISIBLE);
131
                    username.setVisibility(View.VISIBLE);
151
                    username.setVisibility(View.VISIBLE);
Línea 132... Línea 152...
132
                    textowelcome.setVisibility(View.VISIBLE);
152
                    textowelcome.setVisibility(View.VISIBLE);
Línea 152... Línea 172...
152
        });
172
        });
153
*/
173
*/
154
        return view;
174
        return view;
155
    }
175
    }
Línea -... Línea 176...
-
 
176
 
-
 
177
    @Override
-
 
178
    public void onResume() {
-
 
179
        super.onResume();
-
 
180
        loadContinuecard();
-
 
181
    }
-
 
182
 
-
 
183
    @Override
-
 
184
    public void onHiddenChanged(boolean hidden) {
-
 
185
        super.onHiddenChanged(hidden);
-
 
186
 
-
 
187
        Log.e("TAG", "onHiddenChanged : " + (hidden ? "true" : "false"));
-
 
188
 
-
 
189
        if(!hidden) {
-
 
190
            loadContinuecard();
-
 
191
        }
-
 
192
    }
-
 
193
 
-
 
194
    private void loadContinuecard(){
-
 
195
 
-
 
196
        Log.e("Cargo datos"," en tarjeta principal");
-
 
197
 
-
 
198
        //Capsula de primera tarjeta
-
 
199
        CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();
-
 
200
 
-
 
201
        Progress progress;
-
 
202
        ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();
-
 
203
 
-
 
204
        List<Capsule> dbCapsules= capsuleDao.selectAll();
-
 
205
        for(Capsule dbCapsule : dbCapsules)
-
 
206
        {
-
 
207
            progress = progressDao.selectByCapsuleUuid(dbCapsule.getUuid());
-
 
208
 
-
 
209
            if (progress != null) {
-
 
210
 
-
 
211
                    Log.e("Progreso", ": " + progress.getProgress());
-
 
212
 
-
 
213
                    if (progress.getProgress() < 100) {
-
 
214
                        titulotarjeta.setText(dbCapsule.getName());
-
 
215
                        progresotarjeta.setProgress((int) progress.getProgress());
-
 
216
                        progresoporcentaje.setText("" + progress.getProgress() + " %");
-
 
217
 
-
 
218
                        iTwoGetSkills.getPreference().setCapsuleUuidActive(dbCapsule.getUuid());
-
 
219
                        iTwoGetSkills.getPreference().setTopicUuidActive(dbCapsule.getTopicUuid());
-
 
220
 
-
 
221
                        if (dbCapsule.getImage() != null && !dbCapsule.getImage().equals("")) {
-
 
222
 
-
 
223
                            TimeZone timeZone = TimeZone.getTimeZone("UTC");
-
 
224
                            Calendar calendar = Calendar.getInstance(timeZone);
-
 
225
                            TimeZone tz = calendar.getTimeZone();
-
 
226
                            int created = (int) (calendar.getTimeInMillis() / 1000);
-
 
227
 
-
 
228
                            Random random = new Random(created);
-
 
229
                            int rand = 1000 + random.nextInt(8999);
-
 
230
 
-
 
231
 
-
 
232
                            String deviceUuid = iTwoGetSkills.getPreference().getDeviceUuid();
-
 
233
                            String password = iTwoGetSkills.getPreference().getPassword();
-
 
234
 
-
 
235
 
-
 
236
                            String secret = MD5.generar(password + ':' + created + ':' + rand);
-
 
237
                            GlideUrl url = new GlideUrl(dbCapsule.getImage(), new LazyHeaders.Builder()
-
 
238
                                    .addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.HTTP_HEADER_ACCEPT_VALUE)
-
 
239
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_TOKEN, deviceUuid)
-
 
240
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_SECRET, secret)
-
 
241
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(created))
-
 
242
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(rand))
-
 
243
                                    .build());
-
 
244
 
-
 
245
                            RequestOptions options = new RequestOptions()
-
 
246
                                    .diskCacheStrategy(DiskCacheStrategy.ALL);
-
 
247
 
-
 
248
                            Glide.with(getContext()).load(url)
-
 
249
                                    .thumbnail()
-
 
250
                                    .apply(options)
-
 
251
                                    .into(imagetarjeta);
-
 
252
                        }
-
 
253
                    }
-
 
254
 
-
 
255
                }
-
 
256
 
-
 
257
        }
-
 
258
 
-
 
259
        continuar.setOnClickListener(v -> {
-
 
260
 
-
 
261
            iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_SLIDES);
-
 
262
        });
-
 
263
 
-
 
264
        //Fin de primer tarjeta
-
 
265
 
Línea 156... Línea 266...
156
 
266
    }
157
 
267
 
Línea 158... Línea 268...
158
    private void loadData()
268
    private void loadData()
159
    {
269
    {
Línea 160... Línea 270...
160
 
270
 
161
        TopicDao topicDao = iTwoGetSkills.getDatabase().getTopicDao();
271
        TopicDao topicDao = iTwoGetSkills.getDatabase().getTopicDao();
Línea -... Línea 272...
-
 
272
        ArrayList<Topic> dbTopics = (ArrayList<Topic>) topicDao.selectAll();
-
 
273
 
-
 
274
        List<Capsule> dbCapsules;
162
        ArrayList<Topic> dbTopics = (ArrayList<Topic>) topicDao.selectAll();
275
        CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();
Línea 163... Línea 276...
163
 
276
 
Línea -... Línea 277...
-
 
277
 
164
        List<Capsule> dbCapsules;
278
 
165
        CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();
279
 
166
 
280
        for (Topic dbTopic : dbTopics) {
Línea 167... Línea 281...
167
        for (Topic dbTopic : dbTopics) {
281
 
Línea -... Línea 282...
-
 
282
            dbCapsules = capsuleDao.selectAllByTopicUuid(dbTopic.getUuid());
-
 
283
 
168
 
284
 
169
            dbCapsules = capsuleDao.selectAllByTopicUuid(dbTopic.getUuid());
285
            Capsule capsule;
170
 
286
            Progress progress;
171
            Capsule capsule;
287
            ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();
172
            Progress progress;
288