Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.sky.vsuwt_schedule_.ui.home;
- import android.annotation.SuppressLint;
- import android.content.Context;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.graphics.Typeface;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.Button;
- import android.widget.ProgressBar;
- import android.widget.TextView;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.fragment.app.Fragment;
- import androidx.recyclerview.widget.LinearLayoutManager;
- import androidx.recyclerview.widget.RecyclerView;
- import com.android.volley.AuthFailureError;
- import com.android.volley.DefaultRetryPolicy;
- import com.android.volley.NetworkError;
- import com.android.volley.NoConnectionError;
- import com.android.volley.ParseError;
- import com.android.volley.RequestQueue;
- import com.android.volley.Response;
- import com.android.volley.ServerError;
- import com.android.volley.TimeoutError;
- import com.android.volley.VolleyError;
- import com.android.volley.toolbox.JsonArrayRequest;
- import com.android.volley.toolbox.Volley;
- import com.sky.vsuwt_schedule_.Common.config;
- import com.sky.vsuwt_schedule_.R;
- import com.sky.vsuwt_schedule_.activities.checkInternet;
- import com.sky.vsuwt_schedule_.adapters.lessonAdapter;
- import com.sky.vsuwt_schedule_.models.lessonModel;
- import com.sky.vsuwt_schedule_.models.listModel;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Objects;
- import static android.graphics.Typeface.BOLD;
- public class HomeFragment extends Fragment {
- // private SharedPreferences mySettings;
- private com.sky.vsuwt_schedule_.adapters.lessonAdapter lessonAdapter;
- private ArrayList<lessonModel> lessons = new ArrayList<>();
- private final String LOG_TAG = "myLogs";
- private RequestQueue requestQueue;
- SharedPreferences mySaves;
- String weekstr; // переменная где хранится тип недели
- private String weekUrl = "";
- private Button show_before;
- private Button show_next;
- TextView textDate;
- RecyclerView recyclerView;
- public ArrayList<listModel> lists = new ArrayList<>();
- TextView textWeek;
- public String hardVariable = "";
- private int b = 0;
- ProgressBar progressBar0;
- ProgressBar progressBar1;
- private RequestQueue requestQueue1;
- public View onCreateView(@NonNull LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
- return inflater.inflate(R.layout.fragment_home, container, false);
- }
- @Override
- public void onResume() {
- super.onResume();
- if (!config.isOnline()){
- Objects.requireNonNull(getActivity()).finish();
- Intent intent = new Intent(getContext(), checkInternet.class);
- // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );
- startActivity(intent);
- }
- // else if (!config.isHostReachable(getContext())){
- //
- // Objects.requireNonNull(getActivity()).finish();
- // Intent intent = new Intent(getContext(), checkServer.class);
- // // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );
- // startActivity(intent);
- //
- // }
- progressBar0.setVisibility(View.VISIBLE);
- progressBar1.setVisibility(View.VISIBLE);
- //
- getLists();
- Log.i("text: ", hardVariable);
- // if (hardVariable.equals("up")){
- //
- // weekstr = "v";
- //
- // textWeek.setText("Верхняя");
- //
- // }
- // else if (hardVariable.equals("down")) {
- //
- // weekstr = "n";
- //
- // textWeek.setText("Нижняя");
- //
- // }
- progressBar0.setVisibility(View.INVISIBLE);
- progressBar1.setVisibility(View.INVISIBLE);
- if (mySaves.contains("url")) {
- weekUrl = "http://vsuwt.ru/schedule/android.php?newsMobile=true&clear_cache=Y&getWeekB=true&b="+b+"§ionCode=" + mySaves.getString("url", "hey")+weekstr;
- }
- lessons.clear();
- getlessons();
- lessonAdapter.notifyDataSetChanged();
- //
- // }
- }
- @SuppressLint("ClickableViewAccessibility")
- @Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- mySaves = Objects.requireNonNull(this.getActivity()).getSharedPreferences("url", Context.MODE_PRIVATE);
- progressBar0 = view.findViewById(R.id.sch_progress_week);
- progressBar1 = view.findViewById(R.id.sch_progress_top);
- //weekIndicator = findViewById(R.id.week_indicator);
- //show_current = view.findViewById(R.id.home);
- show_next = view.findViewById(R.id.homeNext_week);
- show_next.setEnabled(true);
- show_before = view.findViewById(R.id.homeBefore_week);
- show_before.setEnabled(true);
- textDate = view.findViewById(R.id.textViewCurrentDate);
- textWeek = view.findViewById(R.id.textView_currentWeek);
- Typeface activitiesTypes = Typeface.createFromAsset(Objects.requireNonNull(getContext()).getAssets(), "FuturaDemiC.ttf");
- Typeface weekFont = Typeface.createFromAsset(Objects.requireNonNull(getContext()).getAssets(), "FuturaLightC.ttf");
- show_next.setTypeface(activitiesTypes, BOLD);
- show_before.setTypeface(activitiesTypes, BOLD);
- textDate.setTypeface(activitiesTypes, BOLD);
- textWeek.setTypeface(weekFont);
- show_next.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- // flag = true;
- if (!hardVariable.equals("stop")) {
- //Страница определяет по сегодняшнему дню * b , тип недели (Верх или низ)
- //Мы грузим в приложении неделю
- //при пролистывании меняется b
- // Функция загрузки текущей типа недели
- b = b + 1;
- getLists();
- hardVariable = lists.get(0).getListName();
- if (hardVariable.equals("up")){
- weekstr = "v";
- textWeek.setText("Верхняя");
- }
- else if (hardVariable.equals("down")){
- weekstr = "n";
- textWeek.setText("Нижняя");
- }
- //weekIndicator.setText("Следующая неделя");
- weekUrl = "http://vsuwt.ru/schedule/android.php?newsMobile=true&clear_cache=Y&getWeekB=true&b=" + b + "§ionCode=" + mySaves.getString("url", "hey") + weekstr;
- progressBar0.setVisibility(View.VISIBLE);
- progressBar1.setVisibility(View.VISIBLE);
- lessons.clear();
- getlessons();
- lessonAdapter.notifyDataSetChanged();
- }
- }
- });
- //
- show_before.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //weekIndicator.setText("Предыдущая неделя");
- //flag = true;
- if (!hardVariable.equals("stop")) {
- b = b - 1;
- getLists();
- hardVariable = lists.get(0).getListName();
- if (hardVariable.equals("up")){
- weekstr = "v";
- textWeek.setText("Верхняя");
- }
- else {
- weekstr = "n";
- textWeek.setText("Нижняя");
- }
- //метод загрузки типа недели
- weekUrl = "http://vsuwt.ru/schedule/android.php?newsMobile=true&clear_cache=Y&getWeekB=true&b=" + b + "§ionCode=" + mySaves.getString("url", "hey") + weekstr;
- progressBar0.setVisibility(View.VISIBLE);
- progressBar1.setVisibility(View.VISIBLE);
- lessons.clear();
- getlessons();
- lessonAdapter.notifyDataSetChanged();
- }
- }
- });
- LinearLayoutManager ln = new LinearLayoutManager(getContext());
- recyclerView = view.findViewById(R.id.recycle_shc_main);
- recyclerView.setHasFixedSize(true);
- //recyclerView.setNestedScrollingEnabled(false);
- // recyclerView.getRecycledViewPool().setMaxRecycledViews(7, 0);
- recyclerView.setLayoutManager(ln);
- lessonAdapter = new lessonAdapter(getContext(), lessons);
- recyclerView.setAdapter(lessonAdapter);
- //recyclerView.addOnScrollListener(prOnScrollListener);
- // ln.scrollToPositionWithOffset(calendDay(),0);
- requestQueue1 = Volley.newRequestQueue(Objects.requireNonNull(getContext()));
- requestQueue = Volley.newRequestQueue(Objects.requireNonNull(getContext()));
- // mySettings = Objects.requireNonNull(this.getActivity()).getSharedPreferences("checkInternet", Context.MODE_PRIVATE);
- }
- private void getlessons() {
- //add to requestQueue
- requestQueue.add(getDataFromServer());
- show_next.setEnabled(false);
- show_before.setEnabled(false);
- //increment page number
- // page = page + 2;
- //remove any loading progress here
- }
- private JsonArrayRequest getDataFromServer() {
- //good practice to put a loading progress here
- //Json request begins
- JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(weekUrl,
- new Response.Listener<JSONArray>() {
- @Override
- public void onResponse(JSONArray response) {
- //this is called when a response is gotten from the server
- //after getting the data, I need to parse it the view
- parseData(response);
- // Log.i("URL", Config.pListURL);
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- if (error instanceof TimeoutError || error instanceof NoConnectionError) {
- //TODO
- // Toast.makeText(getContext(), "time out", Toast.LENGTH_SHORT).show();
- } else if (error instanceof AuthFailureError) {
- //TODO
- } else if (error instanceof ServerError) {
- //TODO
- //Toast.makeText(getContext(), "server error", Toast.LENGTH_SHORT).show();
- } else if (error instanceof NetworkError) {
- //TODO
- // Toast.makeText(getContext(), "network error", Toast.LENGTH_SHORT).show();
- } else if (error instanceof ParseError) {
- //TODO
- // Toast.makeText(getContext(), "parse error", Toast.LENGTH_SHORT).show();
- }
- /* progressBar.setVisibility(View.GONE); */
- //If an error occurs that means end of the list has reached
- //Toast.makeText(getContext(), "No More Result Available", Toast.LENGTH_SHORT).show();
- }
- });
- // requestQueue = Volley.newRequestQueue(Objects.requireNonNull(getContext()));
- //some retrypoilicy for bad network
- jsonArrayRequest.setRetryPolicy(new DefaultRetryPolicy(10000,0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
- //return array
- return jsonArrayRequest;
- }
- private void parseData(JSONArray response) {
- Log.i("Response: ", String.valueOf(response));
- //create a forLoop
- try {
- JSONArray jsw = response.getJSONArray(0);
- textWeek.setText(jsw.getString(0));
- } catch (JSONException e) {
- e.printStackTrace();
- }
- for(int i =1; i < response.length(); i++){
- lessonModel lModel = new lessonModel();
- JSONObject jsonObject;
- //because from here they could be failures, so we use try and catch
- try{
- //get json object
- jsonObject = response.getJSONObject(i);
- Log.i("Response: ", String.valueOf(jsonObject));
- //add data from object to objects in ListUnit
- lModel.setIs_day(jsonObject.getString("isDay"));
- lModel.setL1Name(jsonObject.getString("l1Name"));
- lModel.setL2Name(jsonObject.getString("l2Name"));
- lModel.setL3Name(jsonObject.getString("l3Name"));
- lModel.setL4Name(jsonObject.getString("l4Name"));
- lModel.setL5Name(jsonObject.getString("l5Name"));
- lModel.setL6Name(jsonObject.getString("l6Name"));
- lModel.setL7Name(jsonObject.getString("l7Name"));
- lModel.setL8Name(jsonObject.getString("l8Name"));
- lModel.setL1type(jsonObject.getString("l1type"));
- lModel.setL2type(jsonObject.getString("l2type"));
- lModel.setL3type(jsonObject.getString("l3type"));
- lModel.setL4type(jsonObject.getString("l4type"));
- lModel.setL5type(jsonObject.getString("l5type"));
- lModel.setL6type(jsonObject.getString("l6type"));
- lModel.setL7type(jsonObject.getString("l7type"));
- lModel.setL8type(jsonObject.getString("l8type"));
- lModel.setL1Class(jsonObject.getString("l1Class"));
- lModel.setL2Class(jsonObject.getString("l2Class"));
- lModel.setL3Class(jsonObject.getString("l3Class"));
- lModel.setL4Class(jsonObject.getString("l4Class"));
- lModel.setL5Class(jsonObject.getString("l5Class"));
- lModel.setL6Class(jsonObject.getString("l6Class"));
- lModel.setL7Class(jsonObject.getString("l7Class"));
- lModel.setL8Class(jsonObject.getString("l8Class"));
- lModel.setL1Teacher(jsonObject.getString("l1Teacher"));
- lModel.setL2Teacher(jsonObject.getString("l2Teacher"));
- lModel.setL3Teacher(jsonObject.getString("l3Teacher"));
- lModel.setL4Teacher(jsonObject.getString("l4Teacher"));
- lModel.setL5Teacher(jsonObject.getString("l5Teacher"));
- lModel.setL6Teacher(jsonObject.getString("l6Teacher"));
- lModel.setL7Teacher(jsonObject.getString("l7Teacher"));
- lModel.setL8Teacher(jsonObject.getString("l8Teacher"));
- lModel.setGetCurrentLesson(jsonObject.getString("currentLesson"));
- lModel.setIsChanges(jsonObject.getString("changes"));
- lModel.setIsDate(jsonObject.getString("date"));
- }catch (JSONException e){
- e.printStackTrace();
- }
- //add all the above to the array list
- lessons.add(lModel);
- }
- textDate.setText(lessons.get(0).getIsDate()+" - "+lessons.get(6).getIsDate());
- //notify the adapter that some things has changed
- //recyclerView.smoothScrollToPosition(calendDay());
- recyclerView.scrollToPosition(calendDay());
- lessonAdapter.notifyDataSetChanged();
- progressBar0.setVisibility(View.GONE);
- progressBar1.setVisibility(View.GONE);
- show_next.setEnabled(true);
- show_before.setEnabled(true);
- }
- private int calendDay (){
- Calendar myCalendar = Calendar.getInstance();
- int weekDay = 0;
- int dayOfWeek = myCalendar.get(Calendar.DAY_OF_WEEK);
- switch (dayOfWeek)
- {
- case Calendar.MONDAY:
- weekDay = 0;
- break;
- case Calendar.TUESDAY:
- weekDay = 1;
- break;
- case Calendar.WEDNESDAY:
- weekDay = 2;
- break;
- case Calendar.THURSDAY:
- weekDay = 3;
- break;
- case Calendar.FRIDAY:
- weekDay = 4;
- break;
- case Calendar.SATURDAY:
- weekDay = 5;
- break;
- case Calendar.SUNDAY:
- weekDay = 6;
- break;
- }
- return weekDay;
- }
- public void getLists() {
- //add to requestQueue
- requestQueue1.add(getListsData());
- }
- public JsonArrayRequest getListsData() {
- JsonArrayRequest jsonArrayRequest = new JsonArrayRequest("http://vsuwt.ru/schedule/typeweek.php?newsMobile=true&&b=" +b,
- new Response.Listener<JSONArray>() {
- @Override
- public void onResponse(JSONArray response) {
- //this is called when a response is gotten from the server
- //after getting the data, I need to parse it the view
- parseListsData(response);
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- if (error instanceof TimeoutError || error instanceof NoConnectionError) {
- //TODO
- // Toast.makeText(getContext(), "time out", Toast.LENGTH_SHORT).show();
- } else if (error instanceof AuthFailureError) {
- //TODO
- } else if (error instanceof ServerError) {
- //TODO
- // Toast.makeText(getContext(), "server error", Toast.LENGTH_SHORT).show();
- } else if (error instanceof NetworkError) {
- //TODO
- // Toast.makeText(getContext(), "network error", Toast.LENGTH_SHORT).show();
- } else if (error instanceof ParseError) {
- //TODO
- // Toast.makeText(getContext(), "parse error", Toast.LENGTH_SHORT).show();
- }
- /* progressBar.setVisibility(View.GONE); */
- //If an error occurs that means end of the list has reached
- // Toast.makeText(getApplicationContext(), "No More Result Available", Toast.LENGTH_SHORT).show();
- }
- });
- //some retrypoilicy for bad network
- jsonArrayRequest.setRetryPolicy(new DefaultRetryPolicy(10000,0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
- //return array
- return jsonArrayRequest;
- }
- public void parseListsData(JSONArray response) {
- Log.i("Response: ", String.valueOf(response));
- //create a forLoop
- for(int i =0; i < response.length(); i++){
- listModel listModel = new listModel();
- JSONObject jsonObject;
- //because from here they could be failures, so we use try and catch
- try{
- //get json object
- jsonObject = response.getJSONObject(i);
- Log.i("Response: ", String.valueOf(jsonObject));
- //add data from object to objects in ListUnit
- hardVariable = jsonObject.getString("name");
- // listModel.setListName(jsonObject.getString("name"));
- }catch (JSONException e){
- e.printStackTrace();
- }
- lists.add(listModel);
- Log.i("text: ", hardVariable);
- // Log.i("Response: ", String.valueOf(lists.get(0).getListName()));
- // hardVariable = lists.get(0).getListName();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement