diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1719529..1a4e8be 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -44,6 +44,7 @@ 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) diff --git a/app/src/main/java/com/example/tampopo_client/views/LoginActivity.java b/app/src/main/java/com/example/tampopo_client/views/LoginActivity.java index d34fc94..64a5c94 100644 --- a/app/src/main/java/com/example/tampopo_client/views/LoginActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/LoginActivity.java @@ -2,22 +2,23 @@ import android.content.Intent; import android.os.Bundle; -import android.content.Intent; - import android.view.View; import android.view.View.OnClickListener; - import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import androidx.lifecycle.ViewModelProvider; -import com.example.tampopo_client.views.MainActivity; import com.example.tampopo_client.R; +import com.example.tampopo_client.Tampopo; +import com.example.tampopo_client.viewmodels.UserViewModel; public class LoginActivity extends AppCompatActivity { + UserViewModel userViewModel; @Override @@ -32,10 +33,30 @@ }); userViewModel = new ViewModelProvider(this).get(UserViewModel.class); - Button button_login = (Button) findViewById(R.id.loginbutton); - button_login.setOnClickListener(new OnClickListener(){ + userViewModel.getError().observe(this, + msg -> { + if (msg != null) { + Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); + } + }); - public void onClick(View v){ + Button button_login = (Button) findViewById(R.id.loginbutton); + button_login.setOnClickListener(new OnClickListener() { + + private Object getApplication; + + public void onClick(View v) { + EditText useridInput = (EditText) findViewById(R.id.userIDText); + String userid = useridInput.getText().toString(); + EditText passwordInput = (EditText) findViewById(R.id.PasswordText); + String password = passwordInput.getText().toString(); + userViewModel.login(userid, password); + + userViewModel.getToken().getValue(); + //TODO:上記のトークンを使ってTampopoクラスにセットするコードを書く + //((Tampopo)this.getApplication).setToken(token); + + Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); @@ -43,9 +64,9 @@ }); Button button_createaccount = (Button) findViewById(R.id.createaccountbutton); - button_createaccount.setOnClickListener(new OnClickListener(){ + button_createaccount.setOnClickListener(new OnClickListener() { - public void onClick(View v){ + public void onClick(View v) { Intent intent = new Intent(LoginActivity.this, RegisterActivity.class); startActivity(intent); } 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 c253be2..21e3aae 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,12 +1,20 @@ package com.example.tampopo_client.views; import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.EditText; +import android.widget.GridView; import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.TextView; import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; @@ -16,6 +24,14 @@ public class MainActivity extends AppCompatActivity { + private EditText editMessage; + private ImageButton sendButton; + private GridView wordGroup; + private LinearLayout messageList; + //アクティビティの選択肢 + private String[] words = {"ひまnow","あそぼ!","そろそろ会いたない〜?", "勉強なう", "電話しよ~", "お風呂入ってくる~","今暇だよー!","いそがしい~!!"}; + private Button openDialogButton; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -54,5 +70,78 @@ // } // }); + messageList = findViewById(R.id.messageList); + + // ボタンを押すとダイアログ表示(トリガー用) + openDialogButton = findViewById(R.id.openDialogButton); + openDialogButton.setOnClickListener(v -> showInputDialog()); + + } + private void showInputDialog() { + // カスタムビュー読み込み + View dialogView = getLayoutInflater().inflate(R.layout.main_dialog, null); + EditText editTextInput = dialogView.findViewById(R.id.editTextInput); + GridView wordGrid = dialogView.findViewById(R.id.wordGrid); + ImageButton sendButton = dialogView.findViewById(R.id.sendButton); + + // 語群セット + ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, words); + wordGrid.setAdapter(adapter); + + // 語群クリックで入力欄にセット + wordGrid.setOnItemClickListener((parent, view, position, id) -> { + editTextInput.setText(words[position]); + // 入力欄にフォーカス&キーボード表示 + editTextInput.requestFocus(); + InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); + imm.showSoftInput(editTextInput, InputMethodManager.SHOW_IMPLICIT); + }); + + // ダイアログ生成 + AlertDialog dialog = new AlertDialog.Builder(this) + .setView(dialogView) + .create(); + + // 送信ボタン処理 + sendButton.setOnClickListener(v -> { + String message = editTextInput.getText().toString().trim(); + int length = message.length(); + if (!message.isEmpty()) { + if(length > 20){ + openDialogButton.setTextSize(7); + }else if(length > 10){ + openDialogButton.setTextSize(10); + }else{ + openDialogButton.setTextSize(12); + } + openDialogButton.setMaxLines(10); + openDialogButton.setLineSpacing(4.0f,1.2f); + openDialogButton.setText(message); + editTextInput.setText(""); + dialog.dismiss(); // ダイアログを閉じる + }else{ + openDialogButton.setText(""); + } + }); + + dialog.show(); + } + + private void addMessageToHome(String message) { + TextView textView = new TextView(this); + textView.setText(message); + textView.setPadding(10, 10, 10, 10); + textView.setBackgroundColor(Color.parseColor("#E0E0E0")); + int length = message.length(); + if(length > 10){ + textView.setTextSize(5); + }else if(length > 7){ + textView.setTextSize(8); + }else{ + textView.setTextSize(10); + } + textView.setMaxLines(10); + textView.setLineSpacing(4.0f,1.2f); + messageList.addView(textView); } } \ No newline at end of file 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 ebe4c76..9640389 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 @@ -33,7 +33,7 @@ @Override public void onBindViewHolder(final ViewHolder holder, int position) { holder.mItem = mValues.get(position); - holder.mIdView.setText(mValues.get(position).id); + //holder.mIdView.setText(mValues.get(position).id); holder.mContentView.setText(mValues.get(position).content); } @@ -43,13 +43,13 @@ } public class ViewHolder extends RecyclerView.ViewHolder { - public final TextView mIdView; + //public final TextView mIdView; public final TextView mContentView; public FriendRequestItem mItem; public ViewHolder(FragmentFriendReceivedBinding binding) { super(binding.getRoot()); - mIdView = binding.itemNumber; + //mIdView = binding.itemNumber; mContentView = binding.content; } 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 index fb43f8f..cd141e8 100644 --- 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 @@ -5,26 +5,17 @@ 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. - */ + //FriendRequestを格納するリスト public static final List ITEMS = new ArrayList(); - /** - * A map of sample (placeholder) items, by ID. - */ + //各アイテムにアクセスするためのID付きマップ*/ public static final Map ITEM_MAP = new HashMap(); - private static final int COUNT = 25; + private static final int COUNT = 30; //データ30個作成 + //アイテムを初期化時に追加する static { // Add some sample items. for (int i = 1; i <= COUNT; i++) { @@ -32,15 +23,18 @@ } } + //アイテムをリストとマップの両方に登録するメソッド private static void addItem(FriendRequestItem item) { ITEMS.add(item); ITEM_MAP.put(item.id, item); } + //位置(1,2,...)に応じたFriendRequestItem を生成するメソッド private static FriendRequestItem createPlaceholderItem(int position) { - return new FriendRequestItem(String.valueOf(position), "Item " + position, makeDetails(position)); + return new FriendRequestItem(String.valueOf(position), "ユーザー名 ", makeDetails(position)); } + //詳細説明用の文字列を作るメソッド。position に応じて「詳細情報」がたくさん増える private static String makeDetails(int position) { StringBuilder builder = new StringBuilder(); builder.append("Details about Item: ").append(position); @@ -50,13 +44,11 @@ return builder.toString(); } - /** - * A placeholder item representing a piece of content. - */ + //FriendRequestを表す1件のデータ public static class FriendRequestItem { - public final String id; - public final String content; - public final String details; + public final String id; //アイテムのID + public final String content; //表示される名前 + public final String details; //詳細説明 public FriendRequestItem(String id, String content, String details) { this.id = id; diff --git a/app/src/main/res/drawable/comment.png b/app/src/main/res/drawable/comment.png new file mode 100644 index 0000000..963fbb5 --- /dev/null +++ b/app/src/main/res/drawable/comment.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 8685ed1..ff32829 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" + android:background="#E0F7FA" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".views.MainActivity"> @@ -52,15 +53,67 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0" /> - + app:layout_constraintVertical_bias="0.534" + app:shapeAppearance="@style/circle" + app:strokeColor="@color/black" + app:strokeWidth="2dp"/> + + + + + + + + + + + + +