diff --git a/app/src/main/java/com/example/tampopo_client/resources/FriendRequestResource.java b/app/src/main/java/com/example/tampopo_client/resources/FriendRequestResource.java deleted file mode 100644 index 9d3eb0b..0000000 --- a/app/src/main/java/com/example/tampopo_client/resources/FriendRequestResource.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.example.tampopo_client.resources; - - -import com.example.tampopo_client.models.FriendRequest; - -import java.util.List; - -import retrofit2.Call; -import retrofit2.http.DELETE; -import retrofit2.http.Field; -import retrofit2.http.FormUrlEncoded; -import retrofit2.http.GET; -import retrofit2.http.POST; -import retrofit2.http.Path; -import retrofit2.http.Query; - -public interface FriendRequestResource { - - //このAPIではリクエストのボディをx-www-form-urlencoded という形式で送ります - @FormUrlEncoded - @POST("friend-requests") - Call postFriendRequest( - @Field("sender-id") String senderId, - @Field("receiver-id") String receiverId, - @Field("token") String token - ); - - @GET("friend-requests") - Call> getFriendRequests( - @Query("token") String token - ); - - @DELETE("friend-requests/{friend-request-id}") - Call deleteFriendRequest( - @Path("friend-request-id") String friendRequestId, - @Query("token") String token - ); -} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/resources/FriendRequestsResource.java b/app/src/main/java/com/example/tampopo_client/resources/FriendRequestsResource.java new file mode 100644 index 0000000..d119b3d --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/resources/FriendRequestsResource.java @@ -0,0 +1,38 @@ +package com.example.tampopo_client.resources; + + +import com.example.tampopo_client.models.FriendRequest; + +import java.util.List; + +import retrofit2.Call; +import retrofit2.http.DELETE; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; +import retrofit2.http.POST; +import retrofit2.http.Path; +import retrofit2.http.Query; + +public interface FriendRequestsResource { + + //このAPIではリクエストのボディをx-www-form-urlencoded という形式で送ります + @FormUrlEncoded + @POST("friend-requests") + Call postFriendRequest( + @Field("sender-id") String senderId, + @Field("receiver-id") String receiverId, + @Field("token") String token + ); + + @GET("friend-requests") + Call> getFriendRequests( + @Query("token") String token + ); + + @DELETE("friend-requests/{friend-request-id}") + Call deleteFriendRequest( + @Path("friend-request-id") String friendRequestId, + @Query("token") String token + ); +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java new file mode 100644 index 0000000..fb1c277 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java @@ -0,0 +1,40 @@ +package com.example.tampopo_client.viewModels; + +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +import com.example.tampopo_client.models.FriendRequest; +import com.example.tampopo_client.resources.FriendRequestsResource; + +import java.util.List; + +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +public class FriendReceivedRequestViewModel extends ViewModel { + //サーバー(API)と通信するためのツール + private final Retrofit retrofit; + //APIの窓口 + private final FriendRequestsResource friendRequestsResource; + //自分が受け取った申請 + private final MutableLiveData> receivedRequests ; + //通信結果の状態 + private final MutableLiveData operationResult ; + + public FriendReceivedRequestViewModel() { + + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/tampopo-server/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + this.friendRequestsResource = retrofit.create(FriendRequestsResource.class); + this.receivedRequests = new MutableLiveData<>(); + this.operationResult = new MutableLiveData<>(); + } + //viewがobserve出来るように + public MutableLiveData> getSentRequestsLiveData() { + return receivedRequests; + } + + +} diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java new file mode 100644 index 0000000..6676003 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java @@ -0,0 +1,126 @@ +package com.example.tampopo_client.viewModels; + +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +import com.example.tampopo_client.models.FriendRequest; +import com.example.tampopo_client.resources.FriendRequestsResource; + + +import java.util.List; + +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +public class FriendSentRequestViewModel extends ViewModel { + //サーバー(API)と通信するためのツール + private final Retrofit retrofit; + // APIの窓口 + private final FriendRequestsResource friendRequestsResource; + //自分が送った申請 + private final MutableLiveData> sentRequests ; + //変数がfinalやから一回しか代入できません + //sentRequestで呼び出される、viewモデルの下のコンストラクターがアンドロイドがで呼び出される + // 処理の進行中 + private final MutableLiveData operationResult ; + + + + public FriendSentRequestViewModel() { + + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/tampopo-server/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + + this.friendRequestsResource = retrofit.create(FriendRequestsResource.class); + this.sentRequests = new MutableLiveData<>(); + this.operationResult = new MutableLiveData<>(); + + } + //viewがobserve出来るように + public MutableLiveData> getSentRequestsLiveData() { + return sentRequests; + } + +//Mutable Livedataの宣言 + + + + + +// /** +// * GET 全sentリクエスト取得 +// */ +/* public void loadFriendRequests(String token) { + Call> call = friendRequestResource.getFriendRequests(token); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.isSuccessful()) { + HttpCookie requestsLiveData; + requestsLiveData.setValue(response.body()); + } else { + System.out.println("取得失敗: " + response.code()); + } + }*/ +// +// @Override +// public void onFailure(Call> call, Throwable t) { +// System.out.println("通信エラー: " + t.getMessage()); +// } +// }); +// } +// +// /** +// * POST リクエスト送信 +// */ +// public void createFriendRequest(String senderId, String receiverId, String token) { +// Call call = friendRequestResource.postFriendRequest(senderId, receiverId, token); +// call.enqueue(new Callback() { +// @Override +// public void onResponse(Call call, Response response) { +// if (response.isSuccessful()) { +// operationResultLiveData.setValue(true); +// loadFriendRequests(token); +// } else { +// operationResultLiveData.setValue(false); +// System.out.println("Failed POST: " + response.code()); +// } +// } +// +// @Override +// public void onFailure(Call call, Throwable t) { +// operationResultLiveData.setValue(false); +// System.out.println("通信エラー: " + t.getMessage()); +// } +// }); +// } +// +// /** +// * DELETE リクエスト削除 +// */ +// public void deleteFriendRequest(String friendRequestId, String token) { +// Call call = friendRequestResource.deleteFriendRequest(friendRequestId, token); +// call.enqueue(new Callback() { +// @Override +// public void onResponse(Call call, Response response) { +// if (response.isSuccessful()) { +// operationResultLiveData.setValue(true); +// loadFriendRequests(token); +// } else { +// operationResultLiveData.setValue(false); +// System.out.println("削除失敗: " + response.code()); +// } +// } +// +// @Override +// public void onFailure(Call call, Throwable t) { +// operationResultLiveData.setValue(false); +// System.out.println(" 通信エラー " + t.getMessage()); +// } +// }); +// } +//} + +} diff --git a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java index e9a31b3..c253be2 100644 --- a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java @@ -1,6 +1,10 @@ package com.example.tampopo_client.views; +import android.content.Intent; import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.ImageButton; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; @@ -22,5 +26,33 @@ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); + + //メイン画面からフレンド一覧画面への遷移 + ImageButton friendButton = (ImageButton) findViewById(R.id.friend); + friendButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + Intent intent = new Intent(MainActivity.this, FriendActivity.class); + startActivity(intent); + } + }); + + //メイン画面から通知一覧画面への遷移 +// ImageButton notificationButton = (ImageButton)findViewById(R.id.notification); +// notificationButton.setOnClickListener(new View.OnClickListener() { +// public void onClick(View v) { +// Intent intent = new Intent(MainActivity.this,notificationActivity. class); +// startActivity(intent); +// } +// }); + + //メイン画面から設定画面への遷移 +// ImageButton settingButton = (ImageButton)findViewById(R.id.setting); +// settingButton.setOnClickListener(new View.OnClickListener() { +// public void onClick(View v) { +// Intent intent = new Intent(MainActivity.this,settingActivity. class); +// startActivity(intent); +// } +// }); + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/friend.png b/app/src/main/res/drawable/friend.png new file mode 100644 index 0000000..0d7c63c --- /dev/null +++ b/app/src/main/res/drawable/friend.png Binary files differ diff --git a/app/src/main/res/drawable/icon_cat.jpg b/app/src/main/res/drawable/icon_cat.jpg new file mode 100644 index 0000000..c9a5ce9 --- /dev/null +++ b/app/src/main/res/drawable/icon_cat.jpg Binary files differ diff --git a/app/src/main/res/drawable/notification.png b/app/src/main/res/drawable/notification.png new file mode 100644 index 0000000..83e49f4 --- /dev/null +++ b/app/src/main/res/drawable/notification.png Binary files differ diff --git a/app/src/main/res/drawable/setting.png b/app/src/main/res/drawable/setting.png new file mode 100644 index 0000000..2b39b62 --- /dev/null +++ b/app/src/main/res/drawable/setting.png Binary files differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 86a5d97..8685ed1 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,15 +5,62 @@ android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".MainActivity"> + tools:context=".views.MainActivity"> - + + + + + + + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.598" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3361ad6..7ba44f5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,6 @@ tampopo-client + ホーム画面からフレンド一覧への画面遷移ボタン + ホーム画面から通知一覧への画面遷移ボタン + ホーム画面から設定画面への画面遷移ボタン \ No newline at end of file