Proyectos de Subversion Android Microlearning

Rev

Ir a la última revisión | | 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
 
5
import androidx.annotation.NonNull;
6
import androidx.annotation.Nullable;
7
import androidx.fragment.app.Fragment;
8
 
9
import android.text.TextUtils;
10
import android.util.Log;
11
import android.view.LayoutInflater;
12
import android.view.Menu;
13
import android.view.MenuInflater;
14
import android.view.View;
15
import android.view.ViewGroup;
16
 
17
import com.bumptech.glide.Glide;
18
import com.bumptech.glide.load.engine.DiskCacheStrategy;
19
import com.bumptech.glide.load.model.GlideUrl;
20
import com.bumptech.glide.load.model.LazyHeaders;
21
import com.bumptech.glide.request.RequestOptions;
22
import com.cesams.twogetskills.Constants;
23
import com.cesams.twogetskills.R;
24
 
25
import android.widget.ImageView;
26
import android.widget.TextView;
27
 
28
import androidx.lifecycle.LifecycleOwner;
29
import androidx.lifecycle.Observer;
30
import androidx.lifecycle.ViewModelProvider;
31
import androidx.recyclerview.widget.LinearLayoutManager;
32
import androidx.recyclerview.widget.RecyclerView;
33
import com.cesams.twogetskills.adapter.TimelineListViewAdapter;
34
import com.cesams.twogetskills.dao.UserLogDao;
35
import com.cesams.twogetskills.entity.UserLog;
36
import com.cesams.twogetskills.library.MD5;
37
import com.cesams.twogetskills.skeleton.ITwoGetSkills;
38
import com.cesams.twogetskills.viewmodel.TimeLineViewModel;
39
 
40
import java.util.ArrayList;
41
import java.util.Calendar;
42
import java.util.List;
43
import java.util.Random;
44
import java.util.TimeZone;
45
 
46
 
47
public class TimelineFragment extends Fragment  implements LifecycleOwner  {
48
    private final String TAG = "C2GS - TimeLineFragment";
49
    private RecyclerView listView;
50
    private TimelineListViewAdapter adapter;
51
    private ITwoGetSkills iTwoGetSkills;
52
    private ImageView
53
            headerUserImage;
54
    private TextView headerUserName;
55
    private TextView headerUserEmail;
56
    private TimeLineViewModel mTimeLineViewModel;
57
 
58
 
59
    @Override
60
    public void onCreate(@Nullable Bundle savedInstanceState) {
61
        super.onCreate(savedInstanceState);
62
        setHasOptionsMenu(true);
63
 
64
 
65
    }
66
 
67
    @Override
68
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
69
        super.onCreateOptionsMenu(menu, inflater);
70
        menu.clear();
71
    }
72
 
73
    @Override
74
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
75
 
76
        return inflater.inflate(R.layout.fragment_timeline, container, false);
77
    }
78
 
79
    @Override
80
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
81
        super.onViewCreated(view, savedInstanceState);
82
        iTwoGetSkills = (ITwoGetSkills) getActivity();
83
        iTwoGetSkills.setTitleActionBar(getActivity().getString(R.string.menu_timeline));
84
 
85
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
86
        layoutManager.scrollToPosition(0);
87
 
88
        mTimeLineViewModel = new ViewModelProvider(requireActivity()).get(TimeLineViewModel.class);
89
        adapter = new TimelineListViewAdapter(getActivity(), mTimeLineViewModel.getUserLogArrayList());
90
 
91
        Observer<ArrayList<UserLog>> timeLineArrayListUpdateObserver = new Observer<ArrayList<UserLog>>() {
92
            @Override
93
            public void onChanged(ArrayList<UserLog> UserLogArrayList) {
94
                adapter.notifyDataSetChanged();
95
            }
96
        };
97
 
98
 
99
        mTimeLineViewModel.getUserLogMutableLiveData().observe(requireActivity(),timeLineArrayListUpdateObserver);
100
 
101
 
102
        listView = (RecyclerView) getView().findViewById(R.id.fragment_timeline_listview);
103
        listView.setAdapter(adapter);
104
        listView.setLayoutManager(layoutManager);
105
 
106
 
107
        headerUserImage = (ImageView)  getView().findViewById(R.id.fragment_timeline_header_user_image);
108
        if(!TextUtils.isEmpty(iTwoGetSkills.getPreference().getImage())) {
109
 
110
            TimeZone timeZone = TimeZone.getTimeZone("UTC");
111
            Calendar calendar = Calendar.getInstance(timeZone);
112
            TimeZone tz = calendar.getTimeZone();
113
            int created =  (int) (calendar.getTimeInMillis() / 1000);
114
 
115
            Random random = new Random(created);
116
            int rand = 1000 + random.nextInt(8999);
117
 
118
 
119
            String deviceUuid = iTwoGetSkills.getPreference().getDeviceUuid();
120
            String password =  iTwoGetSkills.getPreference().getPassword();
121
 
122
            Log.d(TAG, "token = " + deviceUuid);
123
            Log.d(TAG, "created = " + created);
124
            Log.d(TAG, "rand = " + rand);
125
            Log.d(TAG, "calc = " + password + ':' +  created + ':' + rand);
126
 
127
            String secret = MD5.generar(password + ':' +  created + ':' + rand);
128
 
129
            GlideUrl url = new GlideUrl(iTwoGetSkills.getPreference().getImage(), new LazyHeaders.Builder()
130
                    .addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.HTTP_HEADER_ACCEPT_VALUE)
131
                    .addHeader(Constants.HTTP_HEADER_SECURITY_TOKEN, deviceUuid)
132
                    .addHeader(Constants.HTTP_HEADER_SECURITY_SECRET, secret)
133
                    .addHeader(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(created))
134
                    .addHeader(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(rand))
135
                    .build());
136
 
137
            RequestOptions options = new RequestOptions()
138
                    .diskCacheStrategy(DiskCacheStrategy.ALL);
139
 
140
            Glide.with(requireActivity()).load(url)
141
                    .thumbnail()
142
                    .apply(options)
143
                    .into(headerUserImage);
144
        }
145
 
146
        headerUserName =  (TextView) getView().findViewById(R.id.fragment_timeline_header_user_name);
147
        headerUserName.setText((iTwoGetSkills.getPreference().getFirstName() + " " + iTwoGetSkills.getPreference().getLastName()).trim());
148
        headerUserEmail =  (TextView) getView().findViewById(R.id.fragment_timeline_header_header_user_email);
149
        headerUserEmail.setText(iTwoGetSkills.getPreference().getEmail());
150
 
151
 
152
    }
153
    @Override
154
    public void onResume() {
155
        super.onResume();
156
 
157
        Log.d(TAG, "onResume");
158
        loadData();
159
    }
160
 
161
 
162
 
163
 
164
    @Override
165
    public void onHiddenChanged(boolean hidden) {
166
        super.onHiddenChanged(hidden);
167
 
168
        Log.d(TAG, "onHiddenChanged : " + (hidden ? "true" : "false"));
169
 
170
        if(!hidden) {
171
            loadData();
172
        }
173
    }
174
 
175
    private void loadData()
176
    {
177
 
178
        UserLogDao userLogDao = iTwoGetSkills.getDatabase().getUserLogDao();
179
        List<UserLog> dbUserLogs = userLogDao.selectAll();
180
 
181
        mTimeLineViewModel.getUserLogArrayList().clear();
182
        UserLog userlog;
183
 
184
        for(UserLog dbUserLog : dbUserLogs)
185
        {
186
            userlog = new UserLog();
187
            userlog.setId(dbUserLog.getId());
188
            userlog.setCompanyUuid(dbUserLog.getCompanyUuid());
189
            userlog.setTopicUuid(dbUserLog.getTopicUuid());
190
            userlog.setCapsuleUuid(dbUserLog.getCapsuleUuid());
191
            userlog.setSlideUuid(dbUserLog.getSlideUuid());
192
            userlog.setActivity(dbUserLog.getActivity());
193
            userlog.setAddedOn(dbUserLog.getAddedOn());
194
 
195
            mTimeLineViewModel.getUserLogArrayList().add(userlog);
196
        }
197
 
198
 
199
 
200
        mTimeLineViewModel.getUserLogMutableLiveData().setValue(mTimeLineViewModel.getUserLogArrayList());
201
    }
202
 
203
 
204
}