- package com.example.citrusclient.views;
-
- import android.app.Activity;
- import android.content.Context;
- import android.graphics.Color;
- import android.media.Image;
- import android.os.Bundle;
-
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.fragment.app.Fragment;
- import androidx.lifecycle.Observer;
- import androidx.lifecycle.ViewModelProvider;
- import androidx.recyclerview.widget.GridLayoutManager;
- import androidx.recyclerview.widget.LinearLayoutManager;
- import androidx.recyclerview.widget.RecyclerView;
-
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.Button;
- import android.widget.GridLayout;
-
- import com.example.citrusclient.Citrus;
- import com.example.citrusclient.R;
- import com.example.citrusclient.models.Book;
- import com.example.citrusclient.viewmodels.BooksViewModel;
- import com.google.android.material.floatingactionbutton.FloatingActionButton;
- import com.google.android.material.snackbar.Snackbar;
-
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.HashMap;
- import java.util.List;
-
- /**
- * A simple {@link Fragment} subclass.
- * Use the {@link MyBookshelfFragment#newInstance} factory method to
- * create an instance of this fragment.
- */
- public class MyBookshelfFragment extends Fragment {
-
- // TODO: Rename parameter arguments, choose names that match
- // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
- private static final String ARG_PARAM1 = "param1";
- private static final String ARG_PARAM2 = "param2";
-
- // TODO: Rename and change types of parameters
- private String mParam1;
- private String mParam2;
-
- public MyBookshelfFragment() {
- // Required empty public constructor
- }
-
- /**
- * Use this factory method to create a new instance of
- * this fragment using the provided parameters.
- *
- * @param param1 Parameter 1.
- * @param param2 Parameter 2.
- * @return A new instance of fragment MyBookshelfFragment.
- */
- // TODO: Rename and change types and number of parameters
- public static MyBookshelfFragment newInstance(String param1, String param2) {
- MyBookshelfFragment fragment = new MyBookshelfFragment();
- Bundle args = new Bundle();
- args.putString(ARG_PARAM1, param1);
- args.putString(ARG_PARAM2, param2);
- fragment.setArguments(args);
- return fragment;
- }
-
-
- private List<Book> bookList;
- BooksViewModel booksViewModel;
-
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if (getArguments() != null) {
- mParam1 = getArguments().getString(ARG_PARAM1);
- mParam2 = getArguments().getString(ARG_PARAM2);
- }
-
- booksViewModel = new ViewModelProvider(this).get(BooksViewModel.class);
-
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
-
- return inflater.inflate(R.layout.fragment_my_bookshelf_fragment, container, false);
-
- }
-
-
-
- @Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
-
-
- Citrus citrus = (Citrus)(getActivity().getApplication());
- String token = citrus.getToken();
- String accountId = citrus.getAccountId();
-
- bookList = new ArrayList<>();
- // bookList.add(new Book("a", 1, "a", true, "#ff0000"));
-
- RecyclerView recyclerView = view.findViewById(R.id.my_books_list);
- recyclerView.setHasFixedSize(true);
- RecyclerView.LayoutManager layoutManager = new GridLayoutManager(view.getContext(), 2);
- //new LinearLayoutManager(view.getContext());
- recyclerView.setLayoutManager(layoutManager);
- MyBookshelfAdapter bookAdapter = new MyBookshelfAdapter(bookList, getActivity());
- recyclerView.setAdapter(bookAdapter);
-
- FloatingActionButton addButton = view.findViewById(R.id.book_add_button);
- addButton.setOnClickListener(v -> {
- ((MainActivity) getActivity()).showFragment(new CreateBookFragment());
- });
-
- booksViewModel.getBookLiveData().observe(getViewLifecycleOwner(), new Observer<HashMap<Integer, Book>>() {
- @Override
- public void onChanged(HashMap<Integer, Book> integerBookHashMap) {
- if(integerBookHashMap != null){
- bookList = new ArrayList<>(integerBookHashMap.values());
- }else{
- bookList = new ArrayList<>();
- }
- bookAdapter.setBooks(bookList);
- }
- });
-
- booksViewModel.loadBooks(accountId, token);
-
-
- }
-
- }
-
- class MyBookshelfAdapter extends RecyclerView.Adapter<MyBookshelfAdapter.MyBookViewHolder>{
-
- private List<Book> bookList;
- private Context context;
-
- MyBookshelfAdapter(List<Book> book, Context context){
- this.bookList = book;
- this.context = context;
- }
-
- public void setBooks(List<Book> books){
- bookList = books;
- notifyDataSetChanged();
- }
-
- @NonNull
- @Override
- public MyBookViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.a_book, parent, false);
- return new MyBookViewHolder(view);
- }
-
- @Override
- public void onBindViewHolder(@NonNull MyBookViewHolder holder, int position) {
- Book bookData = this.bookList.get(position);
- holder.bookButton.setText(bookData.getTitle());
- int red = Integer.parseInt(bookData.getColor().substring(1, 3), 16);
- int green = Integer.parseInt(bookData.getColor().substring(3, 5), 16);
- int blue = Integer.parseInt(bookData.getColor().substring(5, 7), 16);
- holder.bookButton.setBackgroundColor(Color.rgb(red, green, blue));
- holder.bookButton.setTextColor(Color.rgb(255 - red, 255 - green, 255 - blue));
- holder.bookButton.setOnClickListener(v -> {
- Calendar c = Calendar.getInstance();
- Activity activity = (Activity) context;
- Citrus citrus = (Citrus) activity.getApplication();
- citrus.setCurYear(c.get(Calendar.YEAR));
- citrus.setCurMonth(c.get(Calendar.MONTH) + 1);
- citrus.setCurDay(c.get(Calendar.DATE));
- citrus.setCurBookId(bookData.getBookId());
- ((MainActivity) activity).showFragment(new HomeFragment());
-
- });
- }
-
- @Override
- public int getItemCount() {
- return bookList.size();
- }
-
- static class MyBookViewHolder extends RecyclerView.ViewHolder{
- Button bookButton;
- public MyBookViewHolder(@NonNull View itemView) {
- super(itemView);
- bookButton = itemView.findViewById(R.id.book_button);
- }
- }
-
- }