diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1f943f0..3599197 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -17,7 +17,7 @@
android:networkSecurityConfig="@xml/network_security_config">
+ android:exported="false">
books;
//getter
public String getToken(){
return token;
@@ -17,6 +24,10 @@
return accountId;
}
public Integer getCurBookId(){return curBookId;}
+ public Integer getCurYear() {return curYear;}
+ public Integer getCurMouth(){return curMonth;}
+ public Integer getCurDay(){return curDay;}
+ public ArrayList getBook(){return books;}
//setter
public void setToken(String token){
@@ -26,4 +37,8 @@
this.accountId = accountId;
}
public void setCurBookId(Integer curBookId){this.curBookId = curBookId;}
+ public void setCurYear(Integer curYear){this.curYear = curYear;}
+ public void setCurMonth(Integer curMonth){this.curMonth = curMonth;}
+ public void setCurDay(Integer curDay){this.curDay = curDay;}
+ public void setBook(ArrayList books){this.books = books;}
}
diff --git a/app/src/main/java/com/example/citrusclient/models/Todo.java b/app/src/main/java/com/example/citrusclient/models/Todo.java
index 69b4eff..ef088fb 100644
--- a/app/src/main/java/com/example/citrusclient/models/Todo.java
+++ b/app/src/main/java/com/example/citrusclient/models/Todo.java
@@ -19,6 +19,10 @@
todoId = tid;
}
+ public Todo(){}
+
+
+
//セッター
public void setTitle(String t) {title = t;}
public void setCheck(boolean c) {check = c;}
diff --git a/app/src/main/java/com/example/citrusclient/rest/TodosRest.java b/app/src/main/java/com/example/citrusclient/rest/TodosRest.java
index 52f8fab..3b38e87 100644
--- a/app/src/main/java/com/example/citrusclient/rest/TodosRest.java
+++ b/app/src/main/java/com/example/citrusclient/rest/TodosRest.java
@@ -19,14 +19,14 @@
public interface TodosRest {
- @GET("/accounts/{account_id}/books/{book_id}/todos")
+ @GET("accounts/{account_id}/books/{book_id}/todos")
Call>>>> getAllTodos(
@Path("account_id") String accountId,
@Path("book_id") Integer bookId,
@Query("token") String token
);
- @GET("/accounts/{account_id}/books/{book_id}/todos/{year}/{month}")
+ @GET("accounts/{account_id}/books/{book_id}/todos/{year}/{month}")
Call>> getTodosByMonth(
@Path("account_id") String accountId,
@Path("book_id") Integer bookId,
@@ -35,7 +35,7 @@
@Query("token") String token
);
- @GET("/accounts/{account_id}/books/{book_id}/todos/{year}/{month}/{day}")
+ @GET("accounts/{account_id}/books/{book_id}/todos/{year}/{month}/{day}")
Call> getTodosByDay(
@Path("account_id") String accountId,
@Path("book_id") Integer bookId,
@@ -45,7 +45,7 @@
@Query("token") String token
);
- @GET("/accounts/{account_id}/books/{book_id}/todos/{year}/{month}/{day}/{todo_id}")
+ @GET("accounts/{account_id}/books/{book_id}/todos/{year}/{month}/{day}/{todo_id}")
Call getTodoById(
@Path("account_id") String accountId,
@Path("book_id") Integer bookId,
@@ -57,7 +57,7 @@
);
@FormUrlEncoded
- @POST("/accounts/{account_id}/books/{book_id}/todos/{year}/{month}/{day}")
+ @POST("accounts/{account_id}/books/{book_id}/todos/{year}/{month}/{day}")
Call createTodo(
@Path("account_id") String accountId,
@Path("book_id") Integer bookId,
@@ -68,7 +68,7 @@
@Field("token") String token
);
@FormUrlEncoded
- @PUT("/accounts/{account_id}/books/{book_id}/todos/{year}/{month}/{day}/{todo_id}/check")
+ @PUT("accounts/{account_id}/books/{book_id}/todos/{year}/{month}/{day}/{todo_id}/check")
Call setCheck(
@Path("account_id") String accountId,
@Path("book_id") Integer bookId,
@@ -80,7 +80,7 @@
@Field("token") String token
);
- @DELETE("/accounts/{account_id}/books/{book_id}/todos/{year}/{month}/{day}/{todo_id}")
+ @DELETE("accounts/{account_id}/books/{book_id}/todos/{year}/{month}/{day}/{todo_id}")
Call deleteTodoById(
@Path("account_id") String accountId,
@Path("book_id") Integer bookId,
diff --git a/app/src/main/java/com/example/citrusclient/views/CreateBookFragment.java b/app/src/main/java/com/example/citrusclient/views/CreateBookFragment.java
index 1984939..666efc0 100644
--- a/app/src/main/java/com/example/citrusclient/views/CreateBookFragment.java
+++ b/app/src/main/java/com/example/citrusclient/views/CreateBookFragment.java
@@ -7,16 +7,26 @@
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
+import android.text.Editable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import com.example.citrusclient.Citrus;
import com.example.citrusclient.R;
+import com.example.citrusclient.viewmodels.BooksViewModel;
+import com.google.android.material.textfield.TextInputEditText;
+
import android.graphics.Color;//ボタンの色変更
import android.os.Bundle;
import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import org.w3c.dom.Text;
/**
@@ -57,6 +67,7 @@
return fragment;
}
+ BooksViewModel booksViewModel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -64,6 +75,8 @@
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
+
+ booksViewModel = new ViewModelProvider(this).get(BooksViewModel.class);
}
@Override
@@ -77,7 +90,9 @@
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); //親クラスである Fragment の onViewCreated() メソッドを呼び出す
-
+ Citrus citrus = (Citrus)(getActivity().getApplication());
+ String token = citrus.getToken();
+ String accountId = citrus.getAccountId();
//ここから書く
// MainActivityにこのフラグメントを設定するした二つのどっちか
//((MainActivity) getContext()).setCreateBookFragment(this);//フラグメントとアクティビティ間での情報のやり取りがあるとき
@@ -85,8 +100,46 @@
view.findViewById(R.id.save_button).setOnClickListener(new View.OnClickListener() {
@Override
- public void onClick(View view) {
- ((MainActivity) getActivity()).showFragment(new MyBookshelfFragment());
+ public void onClick(View view2) {
+ EditText editname = (EditText) view.findViewById(R.id.book_name); //本の名前を入力する
+ Editable bookeditable = editname.getText();
+ TextView textbookname = (TextView) view.findViewById(R.id.set_book_name); //本の名前が無かったら入力してと表示する
+ if (bookeditable == null) { //本の名前がなかったら
+ System.out.println("本の名前を入力してください");
+
+ if (textbookname != null) {
+ textbookname.setText("本の名前を入力してください!");
+ } else {
+ System.out.println("textbookname が null");
+ }
+ } else {
+ String bookname = bookeditable.toString().trim();
+// String bookname = editname.getText().toString().trim();
+ if (bookname == null || bookname.length() == 0) { //本の名前がなかったら
+ System.out.println("本の名前を入力してください");
+
+ if (textbookname != null) {
+ textbookname.setText("本の名前を入力してください!");
+ } else {
+ System.out.println("textbookname が null");
+ }
+ } else {
+ System.out.println(bookname);
+// String textbook = textbookname.getText().toString().trim();
+ //本を保存するコードを書く?
+
+
+
+
+ booksViewModel.createBook("bird",bookname,"#00FF00",true,"xyz"); //BooksViewModelを呼び出して本を作る
+ //画面が本棚に戻る
+
+
+
+
+ ((MainActivity) getActivity()).showFragment(new MyBookshelfFragment()); //本棚に戻る
+ }
+ }
}
});
diff --git a/app/src/main/java/com/example/citrusclient/views/HomeFragment.java b/app/src/main/java/com/example/citrusclient/views/HomeFragment.java
new file mode 100644
index 0000000..d2f14ab
--- /dev/null
+++ b/app/src/main/java/com/example/citrusclient/views/HomeFragment.java
@@ -0,0 +1,168 @@
+package com.example.citrusclient.views;
+
+import android.graphics.Color;
+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.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.CheckBox;
+
+import com.example.citrusclient.Citrus;
+import com.example.citrusclient.R;
+import com.example.citrusclient.models.Book;
+import com.example.citrusclient.models.Todo;
+import com.example.citrusclient.viewmodels.TodosViewModel;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Use the {@link HomeFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class HomeFragment 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 HomeFragment() {
+ // 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 HomeFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ public static HomeFragment newInstance(String param1, String param2) {
+ HomeFragment fragment = new HomeFragment();
+ Bundle args = new Bundle();
+ args.putString(ARG_PARAM1, param1);
+ args.putString(ARG_PARAM2, param2);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (getArguments() != null) {
+ mParam1 = getArguments().getString(ARG_PARAM1);
+ mParam2 = getArguments().getString(ARG_PARAM2);
+ }
+
+ todosViewModel = new ViewModelProvider(this).get(TodosViewModel.class);
+
+ }
+
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+
+ return inflater.inflate(R.layout.fragment_home, container, false);
+ }
+
+ private List todoList;
+ TodosViewModel todosViewModel;
+
+ 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();
+
+ todoList = new ArrayList<>();
+ todoList.add(new Todo("a", true, 2024, 06, 27, 1));
+
+ RecyclerView recyclerView = view.findViewById(R.id.my_todos_list);
+ recyclerView.setHasFixedSize(true);
+ RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(view.getContext());
+ recyclerView.setLayoutManager(layoutManager);
+ MyTodoshelfAdapter todoAdapter = new MyTodoshelfAdapter(todoList);
+ recyclerView.setAdapter(todoAdapter);
+
+ todosViewModel.getTodosByDayLiveData().observe(getViewLifecycleOwner(), new Observer>() {
+ @Override
+ public void onChanged(HashMap idTodoHashMap) {
+ if(idTodoHashMap != null) {
+ todoList = new ArrayList<>(idTodoHashMap.values());
+ todoAdapter.setTodos(todoList);
+ }
+ }
+ });
+
+ todosViewModel.loadTodosByDay("bird", 1, 2024, 6, 2, "xyz");
+ }
+
+}
+class MyTodoshelfAdapter extends RecyclerView.Adapter {
+
+ private List todoList;
+
+ MyTodoshelfAdapter(List todo) {
+ this.todoList = todo;
+ }
+
+ public void setTodos(List todos) {
+ todoList = todos;
+ notifyDataSetChanged();
+ }
+
+ @NonNull
+ @Override
+ public MyTodoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.a_todo, parent, false);
+ return new MyTodoViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull MyTodoViewHolder holder, int position) {
+ Todo todoData = this.todoList.get(position);
+ holder.todoButton.setText(todoData.getTitle());
+ holder.todoCheckBox.setChecked(todoData.getCheck());
+ }
+
+ @Override
+ public int getItemCount() {
+ return todoList.size();
+ }
+
+ static class MyTodoViewHolder extends RecyclerView.ViewHolder {
+ Button todoButton;
+ CheckBox todoCheckBox;
+ public MyTodoViewHolder(@NonNull View itemView) {
+ super(itemView);
+ todoButton = itemView.findViewById(R.id.todo_button);
+ todoCheckBox = itemView.findViewById(R.id.todo_checkBox);
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/citrusclient/views/LoginActivity.java b/app/src/main/java/com/example/citrusclient/views/LoginActivity.java
index 0ce103a..bae33bb 100644
--- a/app/src/main/java/com/example/citrusclient/views/LoginActivity.java
+++ b/app/src/main/java/com/example/citrusclient/views/LoginActivity.java
@@ -25,8 +25,21 @@
return insets;
});
- Button nextButton = (Button)findViewById(R.id.button);
- nextButton.setOnClickListener(new View.OnClickListener(){
+ // username = findViewById(R.id.username);
+ // password = findViewById(R.id.password);
+ // loginButton = findViewById(R.id.loginButton);
+
+ Button loginButton = (Button)findViewById(R.id.loginButton);
+ loginButton.setOnClickListener(new View.OnClickListener(){
+
+ public void onClick(View v){
+ Intent intent = new Intent(LoginActivity.this,MainActivity.class);
+ startActivity(intent);
+ }
+ });
+ Button newButton = (Button)findViewById(R.id.newAccount);
+ newButton.setOnClickListener(new View.OnClickListener(){
+
public void onClick(View v){
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
diff --git a/app/src/main/java/com/example/citrusclient/views/MainActivity.java b/app/src/main/java/com/example/citrusclient/views/MainActivity.java
index ba4142f..1374c62 100644
--- a/app/src/main/java/com/example/citrusclient/views/MainActivity.java
+++ b/app/src/main/java/com/example/citrusclient/views/MainActivity.java
@@ -73,9 +73,9 @@
if(itemId == R.id.book){// 本棚
showFragment(new MyBookshelfFragment());
} else if(itemId == R.id.search){//検索
- showFragment(new CreateBookFragment());
- } else if(itemId == R.id.home){//ホーム
+ } else if(itemId == R.id.home){//ホーム
+ showFragment(new HomeFragment());
}else if(itemId == R.id.calendar){ //カレンダ
}else if(itemId == R.id.face){//マイページ
diff --git a/app/src/main/java/com/example/citrusclient/views/MyBookshelfFragment.java b/app/src/main/java/com/example/citrusclient/views/MyBookshelfFragment.java
index 5bbb9ca..606bfbf 100644
--- a/app/src/main/java/com/example/citrusclient/views/MyBookshelfFragment.java
+++ b/app/src/main/java/com/example/citrusclient/views/MyBookshelfFragment.java
@@ -1,5 +1,7 @@
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;
@@ -28,6 +30,7 @@
import com.google.android.material.snackbar.Snackbar;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
@@ -107,14 +110,14 @@
String accountId = citrus.getAccountId();
bookList = new ArrayList<>();
- bookList.add(new Book("a", 1, "a", true, "#ff0000"));
+// 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);
+ MyBookshelfAdapter bookAdapter = new MyBookshelfAdapter(bookList, getActivity());
recyclerView.setAdapter(bookAdapter);
FloatingActionButton addButton = view.findViewById(R.id.book_add_button);
@@ -140,9 +143,11 @@
class MyBookshelfAdapter extends RecyclerView.Adapter{
private List bookList;
+ private Context context;
- MyBookshelfAdapter(List book){
+ MyBookshelfAdapter(List book, Context context){
this.bookList = book;
+ this.context = context;
}
public void setBooks(List books){
@@ -166,6 +171,17 @@
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
diff --git a/app/src/main/java/com/example/citrusclient/views/SignUpActivity.java b/app/src/main/java/com/example/citrusclient/views/SignUpActivity.java
index e092f40..f62348f 100644
--- a/app/src/main/java/com/example/citrusclient/views/SignUpActivity.java
+++ b/app/src/main/java/com/example/citrusclient/views/SignUpActivity.java
@@ -2,6 +2,7 @@
import android.content.Intent;
import android.os.Bundle;
+import android.os.Handler;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
@@ -23,6 +24,7 @@
import org.w3c.dom.Text;
+
public class SignUpActivity extends AppCompatActivity {
private Retrofit retrofit;
@@ -72,6 +74,7 @@
String id = editid.getText().toString().trim();
EditText editpw = (EditText) findViewById(R.id.put_pw);
String pw = editpw.getText().toString().trim();
+ final Handler handler = new Handler();
//入力欄が空欄の時
if(id.isEmpty() && pw.isEmpty() && id.trim().isEmpty() && pw.trim().isEmpty()){
@@ -92,8 +95,14 @@
citrus.setAccountId(id);
//画面遷移
- Intent intent = new Intent(SignUpActivity.this,MainActivity.class);
- startActivity(intent);
+ handler.post(new Runnable() {
+ @Override
+ public void run() {
+ Intent intent = new Intent(SignUpActivity.this,MainActivity.class);
+ startActivity(intent);
+ }
+ });
+
}else{
//通信可能(ただしエラーが発生した場合)
diff --git a/app/src/main/res/drawable/loginbkg_1.png b/app/src/main/res/drawable/loginbkg_1.png
new file mode 100644
index 0000000..30ce199
--- /dev/null
+++ b/app/src/main/res/drawable/loginbkg_1.png
Binary files differ
diff --git a/app/src/main/res/layout/a_todo.xml b/app/src/main/res/layout/a_todo.xml
new file mode 100644
index 0000000..386d570
--- /dev/null
+++ b/app/src/main/res/layout/a_todo.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 7f1f784..775e98c 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -1,64 +1,112 @@
-
+
-
-
-
-
-
-
+
+ android:id="@+id/newAccount"
+ android:layout_width="300dp"
+ android:layout_height="58dp"
+ android:layout_marginBottom="88dp"
+ android:backgroundTint="#00BCD4"
+ android:text="新規登録はこちら"
+ android:textSize="18sp"
+ app:cornerRadius="20dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/linearLayout" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sign_up.xml b/app/src/main/res/layout/activity_sign_up.xml
index a6ba2c0..e4842d2 100644
--- a/app/src/main/res/layout/activity_sign_up.xml
+++ b/app/src/main/res/layout/activity_sign_up.xml
@@ -13,6 +13,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="新規登録"
+ android:textSize="34sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
@@ -72,7 +73,9 @@
android:id="@+id/button_signup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:backgroundTint="#C6F6A9"
android:text="新規作成"
+ android:textColor="#0B0A0A"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/fragment_create_book.xml b/app/src/main/res/layout/fragment_create_book.xml
index b35d8d7..c40085c 100644
--- a/app/src/main/res/layout/fragment_create_book.xml
+++ b/app/src/main/res/layout/fragment_create_book.xml
@@ -83,19 +83,32 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.571" />
-
+ app:layout_constraintVertical_bias="0.255" />
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
new file mode 100644
index 0000000..3259298
--- /dev/null
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+ />
+
+
+
+
+
+
+
+
+
+