diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f51a2c7..1a4e8be 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -43,8 +43,12 @@ implementation(libs.recyclerview) implementation(libs.retrofit2.retrofit) implementation(libs.converter.jackson) + implementation(libs.navigation.runtime.android) implementation (libs.material.v1100) testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) + implementation(libs.navigation.fragment) + implementation(libs.navigation.ui) + } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 041ace3..2179e9b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,20 +17,22 @@ android:name=".views.LoginActivity" /> - + + + - - - + + - - - - + + + diff --git a/app/src/main/java/com/example/tampopo_client/models/User.java b/app/src/main/java/com/example/tampopo_client/models/User.java new file mode 100644 index 0000000..c5092a1 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/models/User.java @@ -0,0 +1,54 @@ +package com.example.tampopo_client.models; + +public class User { + + private Integer id; //ユーザーID + private String name; //ニックネーム + private String email; //メールアドレス + private String icon; //アイコン + private String token; //トークン + + + //コンストラクタ + public User(String name, String email, String icon) { + this.name = name; + this.email = email; + this.icon = icon; + } + + + public Integer getId() { + return id; + } + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + public void setName(String name){ + this.name = name; + } + + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } + + public String getIcon() { + return icon; + } + public void setIcon(String icon){ + this.icon = icon; + } + + public String getToken() { + return token; + } + public void setToken(String token){ + this.token = token; + } +} 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/resources/UserResource.java b/app/src/main/java/com/example/tampopo_client/resources/UserResource.java new file mode 100644 index 0000000..7db852b --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/resources/UserResource.java @@ -0,0 +1,130 @@ +package com.example.tampopo_client.resources; +import com.example.tampopo_client.models.User; +import com.example.tampopo_client.models.FriendPair; +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.PUT; +import retrofit2.http.Path; +import retrofit2.http.Query; + +public interface UserResource { + + + // 全ユーザ取得 + @GET("users") + Call> getUsers(); + + // 新規アカウントを作る + @FormUrlEncoded + @POST("users") + Call createUser( + @Field("user-id") String userId, + @Field("password") String password + ); + + + // 単一アカウントの情報を返す + @GET("users/{user-id}") + Call getUser(@Path("user-id") String userId); + + // ユーザ削除 + @DELETE("users/{user-id}") + Call deleteUser( + @Path("user-id") String userId, + @Query("token") String token + ); + + + //ログイン + @FormUrlEncoded + @POST("users/{user-id}/login") + Call login( + @Path("user-id") String userId, + @Field("password") String password + ); + + //アカウントのニックネームの取得 + @GET("users/{user-id}/name") + Call getName(@Path("user-id") String userId); + + //ニックネームの変更 + @FormUrlEncoded + @PUT("users/{user-id}/name") + Call updateName( + @Path("user-id") String userId, + @Field("new-name") String newName, + @Field("token") String token + ); + + // 単一アカウントのパスワードの取得 + @GET("users/{user-id}/password") + Call getPassword( + @Path("user-id") String userId, + @Query("token") String token + ); + + //指定されたIDのパスワードを変更する + @FormUrlEncoded + @PUT("users/{user-id}/password") + Call updatePassword( + @Path("user-id") String userId, + @Field("new-password") String newPassword + ); + + //単一アカウントのemailの取得 + @GET("users/{user-id}/email") + Call getEmail(@Path("user-id") String userId); + + //指定されたIDのemailを変更する + @FormUrlEncoded + @PUT("users/{user-id}/email") + Call updateEmail( + @Path("user-id") String userId, + @Field("new-email") String newEmail, + @Field("token") String token + ); + + //指定されたIDのアイコンを返す + @GET("users/{user-id}/icon") + Call getIcon(@Path("user-id") String userId); + + //アイコンを変更する + @FormUrlEncoded + @PUT("users/{user-id}/icon") + Call updateIcon( + @Path("user-id") String userId, + @Field("new-icon") String newIcon, + @Field("token") String token + ); + + //フレンド関連だがuserに置いておく + //フレンド相手の情報の取得 + @GET("users/{user-id}/friends") + Call> getFriends( + @Path("user-id") String userId, + @Query("token") String token + ); + + //自分のペアのpid一覧(JSON)の取得 + @GET("users/{user-id}/friends/{pair-id}") + Call getFriendPair( + @Path("user-id") String userId, + @Path("pair-id") int pairId, + @Query("token") String token + ); + + //ペアの削除 + @DELETE("users/{user-id}/friends/{pair-id}") + Call deleteFriendPair( + @Path("user-id") String userId, + @Path("pair-id") int pairId, + @Query("token") String token + ); + +} diff --git a/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardFragment.java b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardFragment.java new file mode 100644 index 0000000..2dcc990 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardFragment.java @@ -0,0 +1,37 @@ +package com.example.tampopo_client.ui.dashboard; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; + +import com.example.tampopo_client.databinding.FragmentDashboardBinding; + +public class DashboardFragment extends Fragment { + + private FragmentDashboardBinding binding; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + DashboardViewModel dashboardViewModel = + new ViewModelProvider(this).get(DashboardViewModel.class); + + binding = FragmentDashboardBinding.inflate(inflater, container, false); + View root = binding.getRoot(); + + final TextView textView = binding.textDashboard; + dashboardViewModel.getText().observe(getViewLifecycleOwner(), textView::setText); + return root; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardViewModel.java b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardViewModel.java new file mode 100644 index 0000000..34b0dde --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardViewModel.java @@ -0,0 +1,19 @@ +package com.example.tampopo_client.ui.dashboard; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class DashboardViewModel extends ViewModel { + + private final MutableLiveData mText; + + public DashboardViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is dashboard fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/ui/home/HomeFragment.java b/app/src/main/java/com/example/tampopo_client/ui/home/HomeFragment.java new file mode 100644 index 0000000..e753b82 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/ui/home/HomeFragment.java @@ -0,0 +1,37 @@ +package com.example.tampopo_client.ui.home; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; + +import com.example.tampopo_client.databinding.FragmentHomeBinding; + +public class HomeFragment extends Fragment { + + private FragmentHomeBinding binding; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + HomeViewModel homeViewModel = + new ViewModelProvider(this).get(HomeViewModel.class); + + binding = FragmentHomeBinding.inflate(inflater, container, false); + View root = binding.getRoot(); + + final TextView textView = binding.textHome; + homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText); + return root; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/ui/home/HomeViewModel.java b/app/src/main/java/com/example/tampopo_client/ui/home/HomeViewModel.java new file mode 100644 index 0000000..317e835 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/ui/home/HomeViewModel.java @@ -0,0 +1,19 @@ +package com.example.tampopo_client.ui.home; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class HomeViewModel extends ViewModel { + + private final MutableLiveData mText; + + public HomeViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is home fragment"); + } + + public LiveData getText() { + return mText; + } +} \ 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/viewmodels/UserViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/UserViewModel.java new file mode 100644 index 0000000..effcf58 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/UserViewModel.java @@ -0,0 +1,72 @@ +package com.example.tampopo_client.viewmodels; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +import com.example.tampopo_client.models.User; +import com.example.tampopo_client.resources.UserResource; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +/*userだけなのでサーバーから情報を取ってくることは名前の変更 +viewModelはviewからrequestをもらってmodelに流す +88行目にviewからviewmodelをとる +viewmodelのインスタンスは1個しかなし +128 観測するという宣言をする +observeは2つ引数をもち、一つ目は固定、2つ目は 無名クラスで長い new observerとあるがこれはインスタンスを作っているわけではないここでしかない使わないローカルなクラス +observerの子クラスである。 observerの無名子クラスと生成するのとインスタンスを作成する 画面の変更をlistenしている + +viewModel側  +viewModelからsetValueで値を変えていく +updateUserName、updateEmail、login、createUserもある。それらを書いていく。viewから必要なものを出していく +*/ + +public class UserViewModel extends ViewModel { + + private final Retrofit retrofit; + private final UserResource userResource; + private final MutableLiveData user = new MutableLiveData<>(); + private final MutableLiveData token = new MutableLiveData<>(); + private final MutableLiveDataloading = new MutableLiveData<>(false); + private final MutableLiveData error = new MutableLiveData<>(); + + //コンストラクタ + public UserViewModel(){ + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/tampopo-server/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + this.userResource = retrofit.create(UserResource.class); + } + + public LiveData getUser() { return user; } + public LiveData getToken() { return token; } + public LiveDataisLoading() { return loading;} + public LiveData getError() { return error; } + + //新規登録 + public void createUser(String id, String password) { + loading.setValue(true); + userResource.createUser(id, password).enqueue(new Callback() { + @Override public void onResponse(Call c, Response res) { + loading.setValue(false); + if (res.isSuccessful()) { + user.setValue(res.body()); + } else { + error.setValue("登録失敗: " + res.code()); + } + } + @Override public void onFailure(Call c, Throwable t) { + loading.setValue(false); + error.setValue("ネットワークエラー: " + t.getMessage()); + } + }); + } + + //viewModelのところでを呼び出すがフレンド系は西村さんの方で管理する +} diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java b/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java index c7bb399..4e60537 100644 --- a/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java @@ -1,26 +1,58 @@ package com.example.tampopo_client.views; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; import androidx.activity.EdgeToEdge; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import androidx.lifecycle.ViewModelProvider; +import androidx.navigation.NavController; +import androidx.navigation.Navigation; +import com.example.tampopo_client.databinding.ActivityFriendBinding; +import androidx.navigation.ui.AppBarConfiguration; +import androidx.navigation.ui.NavigationUI; import com.example.tampopo_client.R; +import com.google.android.material.bottomnavigation.BottomNavigationView; public class FriendActivity extends AppCompatActivity { - + private ActivityFriendBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - EdgeToEdge.enable(this); - setContentView(R.layout.activity_friend); - ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { - Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); - v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); - return insets; - }); + +// EdgeToEdge.enable(this); +// setContentView(R.layout.activity_friend); +// ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { +// Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); +// v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); +// return insets; +// }); +// } + binding = ActivityFriendBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + + Toolbar toolbar = findViewById(R.id.actionbar); + setSupportActionBar(toolbar); + + BottomNavigationView navView = findViewById(R.id.nav_view); + // Passing each menu ID as a set of Ids because each + // menu should be considered as top level destinations. + AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder( + R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications) + .build(); + NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main); + NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); + NavigationUI.setupWithNavController(binding.navView, navController); } + + } \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java b/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java index b320d46..abe19ae 100644 --- a/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java +++ b/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java @@ -13,7 +13,7 @@ import android.view.ViewGroup; import com.example.tampopo_client.R; -import com.example.tampopo_client.views.placeholder.PlaceholderContent; +import com.example.tampopo_client.views.placeholder.FriendRequestContent; /** * A fragment representing a list of Items. @@ -65,7 +65,7 @@ } else { recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); } - recyclerView.setAdapter(new MyFriendRequestRecyclerViewAdapter(PlaceholderContent.ITEMS)); + recyclerView.setAdapter(new MyFriendRequestRecyclerViewAdapter(FriendRequestContent.ITEMS)); } return view; } diff --git a/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java b/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java index 3c966e0..d36fa48 100644 --- a/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java @@ -25,7 +25,7 @@ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); - Button button_register = (Button) findViewById(R.id.Registerbutton); + Button button_register = (Button) findViewById(R.id.Newregistationbutton); button_register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -33,5 +33,13 @@ startActivity(intent); } }); + button_register = (Button) findViewById(R.id.Loginbutton); + button_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(LaunchActivity.this,LoginActivity.class); + startActivity(intent); + } + }); } } diff --git a/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java b/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java index 09d6193..ebe4c76 100644 --- a/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java +++ b/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java @@ -3,24 +3,23 @@ import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import com.example.tampopo_client.views.placeholder.PlaceholderContent.PlaceholderItem; +import com.example.tampopo_client.views.placeholder.FriendRequestContent.FriendRequestItem; import com.example.tampopo_client.databinding.FragmentFriendReceivedBinding; import java.util.List; /** - * {@link RecyclerView.Adapter} that can display a {@link PlaceholderItem}. + * {@link RecyclerView.Adapter} that can display a {@link FriendRequestItem}. * TODO: Replace the implementation with code for your data type. */ public class MyFriendRequestRecyclerViewAdapter extends RecyclerView.Adapter { - private final List mValues; + private final List mValues; - public MyFriendRequestRecyclerViewAdapter(List items) { + public MyFriendRequestRecyclerViewAdapter(List items) { mValues = items; } @@ -46,7 +45,7 @@ public class ViewHolder extends RecyclerView.ViewHolder { public final TextView mIdView; public final TextView mContentView; - public PlaceholderItem mItem; + public FriendRequestItem mItem; public ViewHolder(FragmentFriendReceivedBinding binding) { super(binding.getRoot()); diff --git a/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java b/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java index 16cf924..4ba2800 100644 --- a/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java @@ -1,6 +1,9 @@ package com.example.tampopo_client.views; +import android.content.Intent; import android.os.Bundle; +import android.view.View; +import android.widget.Button; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; @@ -22,5 +25,21 @@ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); + Button button_register = (Button) findViewById(R.id.Registerbutton); + button_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(RegisterActivity.this,LoginActivity.class); + startActivity(intent); + } + }); + button_register = (Button) findViewById(R.id.Loginbutton2); + button_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(RegisterActivity.this,LoginActivity.class); + startActivity(intent); + } + }); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendRequestContent.java b/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendRequestContent.java new file mode 100644 index 0000000..fb43f8f --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendRequestContent.java @@ -0,0 +1,72 @@ +package com.example.tampopo_client.views.placeholder; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Helper class for providing sample content for user interfaces created by + * Android template wizards. + *

+ * TODO: Replace all uses of this class before publishing your app. + */ +public class FriendRequestContent { + + /** + * An array of sample (placeholder) items. + */ + public static final List ITEMS = new ArrayList(); + + /** + * A map of sample (placeholder) items, by ID. + */ + public static final Map ITEM_MAP = new HashMap(); + + private static final int COUNT = 25; + + static { + // Add some sample items. + for (int i = 1; i <= COUNT; i++) { + addItem(createPlaceholderItem(i)); + } + } + + private static void addItem(FriendRequestItem item) { + ITEMS.add(item); + ITEM_MAP.put(item.id, item); + } + + private static FriendRequestItem createPlaceholderItem(int position) { + return new FriendRequestItem(String.valueOf(position), "Item " + position, makeDetails(position)); + } + + private static String makeDetails(int position) { + StringBuilder builder = new StringBuilder(); + builder.append("Details about Item: ").append(position); + for (int i = 0; i < position; i++) { + builder.append("\nMore details information here."); + } + return builder.toString(); + } + + /** + * A placeholder item representing a piece of content. + */ + public static class FriendRequestItem { + public final String id; + public final String content; + public final String details; + + public FriendRequestItem(String id, String content, String details) { + this.id = id; + this.content = content; + this.details = details; + } + + @Override + public String toString() { + return content; + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/views/placeholder/PlaceholderContent.java b/app/src/main/java/com/example/tampopo_client/views/placeholder/PlaceholderContent.java deleted file mode 100644 index 00871a5..0000000 --- a/app/src/main/java/com/example/tampopo_client/views/placeholder/PlaceholderContent.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.example.tampopo_client.views.placeholder; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Helper class for providing sample content for user interfaces created by - * Android template wizards. - *

- * TODO: Replace all uses of this class before publishing your app. - */ -public class PlaceholderContent { - - /** - * An array of sample (placeholder) items. - */ - public static final List ITEMS = new ArrayList(); - - /** - * A map of sample (placeholder) items, by ID. - */ - public static final Map ITEM_MAP = new HashMap(); - - private static final int COUNT = 25; - - static { - // Add some sample items. - for (int i = 1; i <= COUNT; i++) { - addItem(createPlaceholderItem(i)); - } - } - - private static void addItem(PlaceholderItem item) { - ITEMS.add(item); - ITEM_MAP.put(item.id, item); - } - - private static PlaceholderItem createPlaceholderItem(int position) { - return new PlaceholderItem(String.valueOf(position), "Item " + position, makeDetails(position)); - } - - private static String makeDetails(int position) { - StringBuilder builder = new StringBuilder(); - builder.append("Details about Item: ").append(position); - for (int i = 0; i < position; i++) { - builder.append("\nMore details information here."); - } - return builder.toString(); - } - - /** - * A placeholder item representing a piece of content. - */ - public static class PlaceholderItem { - public final String id; - public final String content; - public final String details; - - public PlaceholderItem(String id, String content, String details) { - this.id = id; - this.content = content; - this.details = details; - } - - @Override - public String toString() { - return content; - } - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_friend.xml b/app/src/main/res/layout/activity_friend.xml index 79295c8..6f2939d 100644 --- a/app/src/main/res/layout/activity_friend.xml +++ b/app/src/main/res/layout/activity_friend.xml @@ -1,10 +1,86 @@ + android:paddingTop="?attr/actionBarSize"> - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_launch.xml b/app/src/main/res/layout/activity_launch.xml index e11fd8c..7ccbd4b 100644 --- a/app/src/main/res/layout/activity_launch.xml +++ b/app/src/main/res/layout/activity_launch.xml @@ -13,7 +13,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="tampopo" - android:textSize="25dp" + android:textSize="45dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" @@ -22,22 +22,24 @@ app:layout_constraintVertical_bias="0.276" />