From e94d933e4c5334e7b1b97614ba622dae5c91b81a Mon Sep 17 00:00:00 2001 From: bhvrgav Date: Tue, 26 Apr 2022 13:25:51 +0200 Subject: [PATCH 01/38] UI Changes --- .idea/misc.xml | 1 + app/src/main/res/drawable/button_selector.xml | 15 --------------- .../res/drawable/secondary_button_selector.xml | 16 ---------------- app/src/main/res/layout/fragment_friends.xml | 8 ++------ app/src/main/res/layout/fragment_info_page_.xml | 13 ++----------- app/src/main/res/layout/friend_card2.xml | 13 ++++--------- app/src/main/res/values/colors.xml | 6 ------ 7 files changed, 9 insertions(+), 63 deletions(-) delete mode 100644 app/src/main/res/drawable/button_selector.xml delete mode 100644 app/src/main/res/drawable/secondary_button_selector.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 496685b0..e568432f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -25,6 +25,7 @@ + diff --git a/app/src/main/res/drawable/button_selector.xml b/app/src/main/res/drawable/button_selector.xml deleted file mode 100644 index accea9c2..00000000 --- a/app/src/main/res/drawable/button_selector.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/secondary_button_selector.xml b/app/src/main/res/drawable/secondary_button_selector.xml deleted file mode 100644 index 6cafac7a..00000000 --- a/app/src/main/res/drawable/secondary_button_selector.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_friends.xml b/app/src/main/res/layout/fragment_friends.xml index 819aa800..3d38ae68 100644 --- a/app/src/main/res/layout/fragment_friends.xml +++ b/app/src/main/res/layout/fragment_friends.xml @@ -4,7 +4,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/primary" tools:context=".ui.friends.FriendsFragment" android:id="@+id/fragment_friends"> @@ -13,7 +12,7 @@ android:layout_width="73dp" android:layout_height="54dp" android:layout_marginTop="3dp" - android:background="@drawable/secondary_button_selector" + android:background="@drawable/rounded_corners" android:src="@drawable/search_vector" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -24,11 +23,8 @@ android:layout_width="329dp" android:layout_height="54dp" android:layout_marginTop="3dp" - android:background="@drawable/rounded_corners" - android:backgroundTint="@color/tertiary2" android:gravity="center" android:text="@string/friends" - android:textColor="@color/secondary" android:textSize="24sp" android:textStyle="bold" app:layout_constraintEnd_toStartOf="@+id/addButton" @@ -43,7 +39,7 @@ android:layout_marginStart="10dp" android:layout_marginTop="60dp" android:layout_marginEnd="10dp" - android:layout_marginBottom="65dp" + android:layout_marginBottom="90dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/fragment_info_page_.xml b/app/src/main/res/layout/fragment_info_page_.xml index 84f9bfb1..82011187 100644 --- a/app/src/main/res/layout/fragment_info_page_.xml +++ b/app/src/main/res/layout/fragment_info_page_.xml @@ -12,8 +12,8 @@ android:id="@+id/infoPage_playButton" android:layout_width="73dp" android:layout_height="54dp" - android:background="@drawable/secondary_button_selector" android:src="@drawable/playgame_vector" + android:background="@drawable/rounded_corners" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/displayPicture_infoPage" app:layout_constraintTop_toTopOf="parent" @@ -35,7 +35,7 @@ android:id="@+id/infoPage_backButton" android:layout_width="73dp" android:layout_height="54dp" - android:background="@drawable/secondary_button_selector" + android:background="@drawable/rounded_corners" android:src="@drawable/back_vector" app:layout_constraintEnd_toStartOf="@+id/displayPicture_infoPage" app:layout_constraintStart_toStartOf="parent" @@ -47,7 +47,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Username" - android:textColor="@color/tertiary2" android:textSize="24dp" android:textStyle="bold" app:layout_constraintBottom_toTopOf="@+id/statsText" @@ -82,7 +81,6 @@ android:layout_height="wrap_content" android:layout_marginVertical="8dp" android:text="Stats" - android:textColor="@color/tertiary2" android:textSize="20dp" app:layout_constraintBottom_toTopOf="@+id/statsCardView" app:layout_constraintEnd_toEndOf="parent" @@ -112,7 +110,6 @@ android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:text="Win Rate" - android:textColor="@color/tertiary2" android:textSize="16dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/globalRankingText_infoPage" @@ -128,7 +125,6 @@ android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:text="Ranking(Global)" - android:textColor="@color/tertiary2" android:textSize="16dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="@+id/localRankingText_infoPage" @@ -141,7 +137,6 @@ android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:text="Ranking(Local)" - android:textColor="@color/tertiary2" android:textSize="16dp" app:layout_constraintBottom_toTopOf="@+id/globalRankingText_infoPage" app:layout_constraintStart_toStartOf="@+id/tournamentWonText_infoPage" @@ -154,7 +149,6 @@ android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:text="Tournaments Won" - android:textColor="@color/tertiary2" android:textSize="16dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/gamesPlayedText_infoPage" @@ -168,7 +162,6 @@ android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:text="Games Won" - android:textColor="@color/tertiary2" android:textSize="16dp" app:layout_constraintBottom_toTopOf="@+id/winRateText_infoPage" app:layout_constraintStart_toStartOf="parent" @@ -181,7 +174,6 @@ android:layout_marginStart="5dp" android:layout_marginBottom="4dp" android:text="Games Played" - android:textColor="@color/tertiary2" android:textSize="16dp" app:layout_constraintBottom_toTopOf="@+id/gamesWonText_infoPage" app:layout_constraintStart_toStartOf="parent" @@ -197,7 +189,6 @@ android:layout_height="wrap_content" android:layout_marginVertical="8dp" android:text="Match History" - android:textColor="@color/tertiary2" android:textSize="20dp" app:layout_constraintBottom_toTopOf="@+id/matchHistoryScrollView" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/friend_card2.xml b/app/src/main/res/layout/friend_card2.xml index 5154c8e1..531193f8 100644 --- a/app/src/main/res/layout/friend_card2.xml +++ b/app/src/main/res/layout/friend_card2.xml @@ -11,9 +11,7 @@ android:id="@+id/friendCard" android:layout_width="match_parent" android:layout_height="wrap_content" - app:cardElevation="15dp" - app:cardBackgroundColor="@color/secondary" - app:cardCornerRadius="12sp" + app:cardCornerRadius="20sp" app:layout_constraintTop_toTopOf="parent" tools:layout_editor_absoluteX="10dp"> @@ -28,7 +26,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="RPSKing88" - android:textColor="@color/tertiary2" + android:textSize="20sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/onlineImage" @@ -63,8 +61,8 @@ android:layout_marginTop="5dp" android:layout_marginEnd="5dp" android:layout_marginBottom="5dp" - android:background="@drawable/button_selector" android:src="@drawable/challenge_vector" + android:background="@drawable/rounded_corners" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -76,7 +74,7 @@ android:layout_marginTop="5dp" android:layout_marginEnd="5dp" android:layout_marginBottom="5dp" - android:background="@drawable/button_selector" + android:background="@drawable/rounded_corners" android:src="@drawable/info_vector" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/playButton" @@ -90,7 +88,6 @@ android:lines="3" android:maxLines="3" android:text="Win Rate: 63.3%" - android:textColor="@color/tertiary2" android:textSize="10sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/infoButton" @@ -104,7 +101,6 @@ android:lines="3" android:maxLines="3" android:text="Games Played: 120" - android:textColor="@color/tertiary2" android:textSize="10sp" app:layout_constraintBottom_toTopOf="@+id/gamesWonText" app:layout_constraintEnd_toStartOf="@+id/infoButton" @@ -117,7 +113,6 @@ android:lines="3" android:maxLines="3" android:text="Games Won: 76" - android:textColor="@color/tertiary2" android:textSize="10sp" app:layout_constraintBottom_toTopOf="@+id/winRateText" app:layout_constraintEnd_toStartOf="@+id/infoButton" diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 7fed05b1..d4193aca 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -7,12 +7,6 @@ #FF018786 #FF000000 #FFFFFFFF - #191919 - #2D4263 - #475469 - #C84B31 - #ECDBBA - #9e9177 #78D4F1 #437d8f #575757 From 24f27a6e3cc34b7fb90e6e47b3bfb04ab7edcb20 Mon Sep 17 00:00:00 2001 From: bhvrgav Date: Wed, 27 Apr 2022 16:38:12 +0200 Subject: [PATCH 02/38] Added search feature --- .idea/misc.xml | 2 +- .../rps/ui/friends/FriendsFragmentTest.kt | 15 ++++++- app/src/main/AndroidManifest.xml | 4 +- .../epfl/sweng/rps/models/FakeFriendsData.kt | 2 +- .../sweng/rps/ui/friends/FriendsFragment.kt | 40 ++++++++++++++++- .../sweng/rps/ui/friends/friendlistAdapter.kt | 2 +- .../drawable/ic_baseline_friend_request.xml | 5 +++ app/src/main/res/layout/fragment_friends.xml | 44 ++++++++++--------- 8 files changed, 86 insertions(+), 28 deletions(-) create mode 100644 app/src/main/res/drawable/ic_baseline_friend_request.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index e568432f..14cff0e0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -14,7 +14,7 @@ - + diff --git a/app/src/androidTest/java/ch/epfl/sweng/rps/ui/friends/FriendsFragmentTest.kt b/app/src/androidTest/java/ch/epfl/sweng/rps/ui/friends/FriendsFragmentTest.kt index bf0e7174..e38a2282 100644 --- a/app/src/androidTest/java/ch/epfl/sweng/rps/ui/friends/FriendsFragmentTest.kt +++ b/app/src/androidTest/java/ch/epfl/sweng/rps/ui/friends/FriendsFragmentTest.kt @@ -1,11 +1,12 @@ package ch.epfl.sweng.rps.ui.friends +import android.view.KeyEvent import android.view.View import android.widget.ImageButton import androidx.test.espresso.Espresso.onView import androidx.test.espresso.UiController import androidx.test.espresso.ViewAction -import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.action.ViewActions.* import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition import androidx.test.espresso.matcher.ViewMatchers.* @@ -18,6 +19,7 @@ import org.hamcrest.Matcher import org.junit.Rule import org.junit.Test +import kotlin.test.assertContains class FriendsFragmentTest { @@ -148,6 +150,17 @@ class FriendsFragmentTest { onView(withId(R.id.fragment_game)).check(matches(isDisplayed())) } + /* @Test + fun test_correctResultsShown_onSearchTextEntered(){ + onView(withId(R.id.userNameSearch)).perform(click()) + onView(withId(R.id.search_src_text)).perform(typeText("Rock")) + + onView(withId(R.id.friendListRecyclerView)) + .perform(actionOnItemAtPosition(LIST_ITEM,ClickButtonAction.clickInfoButton(R.id.infoButton))) + onView(withId(R.id.userName_infoPage)).check(matches(withText(thisFriend.username))) + + } */ + } class ClickButtonAction { companion object { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index db59e746..c62d2647 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,7 +17,9 @@ + android:theme="@style/Theme.RockPaperScissors.NoActionBar" + android:windowSoftInputMode="adjustNothing" + /> (R.id.friendListRecyclerView) + val searchView = view.findViewById(R.id.userNameSearch) + val filterFriend = mutableListOf() //Get info from Fake Data object and display + filterFriend.addAll(friends) recyclerView.layoutManager = LinearLayoutManager(activity) - recyclerView.adapter = FriendListAdapter(friends, this) + recyclerView.adapter = FriendListAdapter(filterFriend, this) + + searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener{ + override fun onQueryTextSubmit(query: String?): Boolean { + TODO("Not yet implemented") + } + + @SuppressLint("NotifyDataSetChanged") + override fun onQueryTextChange(newText: String?): Boolean { + filterFriend.clear() + val searchText = newText!!.toLowerCase(Locale.getDefault()) + if (searchText.isNotEmpty()){ + + friends.forEach{ + + if (it.username.toLowerCase(Locale.getDefault()).contains(searchText)){ + filterFriend.add(it) + } + } + recyclerView.adapter!!.notifyDataSetChanged() + } + else { + filterFriend.clear() + filterFriend.addAll(friends) + recyclerView.adapter!!.notifyDataSetChanged() + } + return false + } + }) } - //Button Click Listeners + //Button Click Listeners override fun onButtonClick(position: Int, friends: List, view: View) { val username = friends[position].username val gamesPlayed = friends[position].gamesPlayed diff --git a/app/src/main/java/ch/epfl/sweng/rps/ui/friends/friendlistAdapter.kt b/app/src/main/java/ch/epfl/sweng/rps/ui/friends/friendlistAdapter.kt index 43b91658..c735679a 100644 --- a/app/src/main/java/ch/epfl/sweng/rps/ui/friends/friendlistAdapter.kt +++ b/app/src/main/java/ch/epfl/sweng/rps/ui/friends/friendlistAdapter.kt @@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView import ch.epfl.sweng.rps.models.FriendsInfo class FriendListAdapter( - private val friends : List, + private val friends : MutableList, private val listener : OnButtonClickListener ) : RecyclerView.Adapter(){ diff --git a/app/src/main/res/drawable/ic_baseline_friend_request.xml b/app/src/main/res/drawable/ic_baseline_friend_request.xml new file mode 100644 index 00000000..8ae4b847 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_friend_request.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/fragment_friends.xml b/app/src/main/res/layout/fragment_friends.xml index 3d38ae68..8b99db23 100644 --- a/app/src/main/res/layout/fragment_friends.xml +++ b/app/src/main/res/layout/fragment_friends.xml @@ -7,44 +7,46 @@ tools:context=".ui.friends.FriendsFragment" android:id="@+id/fragment_friends"> + + - - + \ No newline at end of file From 52b3fb3415a7f5dca09b79befffd12495423f760 Mon Sep 17 00:00:00 2001 From: bhvrgav Date: Thu, 28 Apr 2022 14:03:22 +0200 Subject: [PATCH 03/38] Added Test --- .../epfl/sweng/rps/ui/friends/FriendsFragmentTest.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/androidTest/java/ch/epfl/sweng/rps/ui/friends/FriendsFragmentTest.kt b/app/src/androidTest/java/ch/epfl/sweng/rps/ui/friends/FriendsFragmentTest.kt index e38a2282..6f83c8fb 100644 --- a/app/src/androidTest/java/ch/epfl/sweng/rps/ui/friends/FriendsFragmentTest.kt +++ b/app/src/androidTest/java/ch/epfl/sweng/rps/ui/friends/FriendsFragmentTest.kt @@ -150,16 +150,17 @@ class FriendsFragmentTest { onView(withId(R.id.fragment_game)).check(matches(isDisplayed())) } - /* @Test + @Test fun test_correctResultsShown_onSearchTextEntered(){ + onView(withId(R.id.nav_friends)).perform(click()) onView(withId(R.id.userNameSearch)).perform(click()) - onView(withId(R.id.search_src_text)).perform(typeText("Rock")) + onView(withId(R.id.userNameSearch)).perform(typeText("Rock")) onView(withId(R.id.friendListRecyclerView)) - .perform(actionOnItemAtPosition(LIST_ITEM,ClickButtonAction.clickInfoButton(R.id.infoButton))) - onView(withId(R.id.userName_infoPage)).check(matches(withText(thisFriend.username))) + .perform(actionOnItemAtPosition(0,ClickButtonAction.clickInfoButton(R.id.infoButton))) + onView(withId(R.id.userName_infoPage)).check(matches(withText("RockFirst"))) - } */ + } } class ClickButtonAction { From db7bbc9abedc1548933b9f4c5a8f343820039286 Mon Sep 17 00:00:00 2001 From: bhvrgav Date: Thu, 5 May 2022 16:50:16 +0200 Subject: [PATCH 04/38] Working on connecting db --- .idea/misc.xml | 3 ++ .../ch/epfl/sweng/rps/db/FirebaseHelper.kt | 38 ++++++++++++- .../epfl/sweng/rps/db/FirebaseRepository.kt | 4 +- .../ch/epfl/sweng/rps/db/LocalRepository.kt | 5 ++ .../sweng/rps/models/FriendRequestInfo.kt | 6 +++ .../java/ch/epfl/sweng/rps/models/User.kt | 2 +- .../sweng/rps/ui/friends/AddFriendFragment.kt | 21 ++++++++ .../sweng/rps/ui/friends/FriendsFragment.kt | 11 +++- .../ui/friends/MyFriendRequestsFragment.kt | 20 +++++++ .../sweng/rps/ui/friends/RequestFragment.kt | 54 +++++++++++++++++++ .../sweng/rps/ui/friends/RequestViewModel.kt | 7 +++ .../main/res/layout/fragment_add_friend.xml | 30 +++++++++++ .../layout/fragment_my_friend_requests.xml | 15 ++++++ app/src/main/res/layout/request_fragment.xml | 38 +++++++++++++ .../main/res/navigation/mobile_navigation.xml | 12 +++++ .../main/res/navigation/nav_request_page.xml | 26 +++++++++ 16 files changed, 287 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/ch/epfl/sweng/rps/models/FriendRequestInfo.kt create mode 100644 app/src/main/java/ch/epfl/sweng/rps/ui/friends/AddFriendFragment.kt create mode 100644 app/src/main/java/ch/epfl/sweng/rps/ui/friends/MyFriendRequestsFragment.kt create mode 100644 app/src/main/java/ch/epfl/sweng/rps/ui/friends/RequestFragment.kt create mode 100644 app/src/main/java/ch/epfl/sweng/rps/ui/friends/RequestViewModel.kt create mode 100644 app/src/main/res/layout/fragment_add_friend.xml create mode 100644 app/src/main/res/layout/fragment_my_friend_requests.xml create mode 100644 app/src/main/res/layout/request_fragment.xml create mode 100644 app/src/main/res/navigation/nav_request_page.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 14cff0e0..e2f03f91 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -11,6 +11,7 @@ + @@ -19,12 +20,14 @@ + + diff --git a/app/src/main/java/ch/epfl/sweng/rps/db/FirebaseHelper.kt b/app/src/main/java/ch/epfl/sweng/rps/db/FirebaseHelper.kt index ea417d54..776c65fb 100644 --- a/app/src/main/java/ch/epfl/sweng/rps/db/FirebaseHelper.kt +++ b/app/src/main/java/ch/epfl/sweng/rps/db/FirebaseHelper.kt @@ -10,6 +10,7 @@ import java.text.SimpleDateFormat import java.util.* + object FirebaseHelper { fun processUserArguments(vararg pairs: Pair): Map { return pairs.associate { t -> t.first.value to t.second } @@ -139,11 +140,46 @@ object FirebaseHelper { return allPlayers } + suspend fun getFriends(): List { + val fbRepo = ServiceLocator.getInstance().repository + val friends = fbRepo.getFriends() + val friendList = mutableListOf() + + for (friend in friends) { + val user = fbRepo.getUser(friend)?:continue + val userStats = fbRepo.statsOfUser(friend) + val friendsInfo = FriendsInfo( + username = user.username?:"UsernameEmpty", + gamesPlayed = userStats.total_games, + gamesWon = userStats.wins, + winRate = userStats.winRate, + isOnline = true) + + friendList.add(friendsInfo) + } + return friendList + } + suspend fun getFriendReqs(): List { + val fbRepo = ServiceLocator.getInstance().repository + val friendRequest = fbRepo.listFriendRequests() + val friendList = mutableListOf() + + for (reqs in friendRequest) { + val user = fbRepo.getUser(reqs.)?:continue + val userStats = fbRepo.statsOfUser(reqs) + val friendsInfo = FriendRequestInfo( + username = user.username?:"UsernameEmpty", + uid = reqs + ) + friendList.add(friendsInfo) + } + return friendList + } + } -} diff --git a/app/src/main/java/ch/epfl/sweng/rps/db/FirebaseRepository.kt b/app/src/main/java/ch/epfl/sweng/rps/db/FirebaseRepository.kt index 6a89b5a7..5b6d19f0 100644 --- a/app/src/main/java/ch/epfl/sweng/rps/db/FirebaseRepository.kt +++ b/app/src/main/java/ch/epfl/sweng/rps/db/FirebaseRepository.kt @@ -37,6 +37,8 @@ class FirebaseRepository private constructor( firebase.usersCollection.document(uid).update(arguments).await() } + + override suspend fun getUser(uid: String): User? { val user = firebase.usersCollection.document(uid).get().await() return user?.toObject() @@ -108,8 +110,6 @@ class FirebaseRepository private constructor( .await().documents.map{ it.toObject()!! } - - } override suspend fun gamesOfUser(uid: String): List { diff --git a/app/src/main/java/ch/epfl/sweng/rps/db/LocalRepository.kt b/app/src/main/java/ch/epfl/sweng/rps/db/LocalRepository.kt index f48a5795..7ab80fb7 100644 --- a/app/src/main/java/ch/epfl/sweng/rps/db/LocalRepository.kt +++ b/app/src/main/java/ch/epfl/sweng/rps/db/LocalRepository.kt @@ -41,6 +41,11 @@ class LocalRepository(private var uid: String? = null) : Repository { return users[uid]!! } + var allUsers = mutableListOf() + override suspend fun getAllUsers(): List { + return allUsers + } + override suspend fun getUserProfilePictureUrl(uid:String): URI? { val cond = getUser(uid).has_profile_photo return if (cond) { diff --git a/app/src/main/java/ch/epfl/sweng/rps/models/FriendRequestInfo.kt b/app/src/main/java/ch/epfl/sweng/rps/models/FriendRequestInfo.kt new file mode 100644 index 00000000..92f442b1 --- /dev/null +++ b/app/src/main/java/ch/epfl/sweng/rps/models/FriendRequestInfo.kt @@ -0,0 +1,6 @@ +package ch.epfl.sweng.rps.models + +data class FriendRequestInfo( + val username: String, + val uid: String + ) diff --git a/app/src/main/java/ch/epfl/sweng/rps/models/User.kt b/app/src/main/java/ch/epfl/sweng/rps/models/User.kt index 18ba7caa..259504e6 100644 --- a/app/src/main/java/ch/epfl/sweng/rps/models/User.kt +++ b/app/src/main/java/ch/epfl/sweng/rps/models/User.kt @@ -6,7 +6,7 @@ import android.util.Log * */ data class User( - val username: String? = "", + var username: String? = "", val uid: String = "", diff --git a/app/src/main/java/ch/epfl/sweng/rps/ui/friends/AddFriendFragment.kt b/app/src/main/java/ch/epfl/sweng/rps/ui/friends/AddFriendFragment.kt new file mode 100644 index 00000000..99331c16 --- /dev/null +++ b/app/src/main/java/ch/epfl/sweng/rps/ui/friends/AddFriendFragment.kt @@ -0,0 +1,21 @@ +package ch.epfl.sweng.rps.ui.friends + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import ch.epfl.sweng.rps.R + + +class AddFriendFragment : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_add_friend, container, false) + } + +} \ No newline at end of file diff --git a/app/src/main/java/ch/epfl/sweng/rps/ui/friends/FriendsFragment.kt b/app/src/main/java/ch/epfl/sweng/rps/ui/friends/FriendsFragment.kt index be20575d..b64dbcf7 100644 --- a/app/src/main/java/ch/epfl/sweng/rps/ui/friends/FriendsFragment.kt +++ b/app/src/main/java/ch/epfl/sweng/rps/ui/friends/FriendsFragment.kt @@ -7,6 +7,7 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageButton import android.widget.Toast import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager @@ -18,6 +19,7 @@ import ch.epfl.sweng.rps.models.FriendsInfo import java.util.* import kotlin.collections.ArrayList import android.widget.SearchView +import androidx.navigation.NavDirections import kotlinx.android.synthetic.main.fragment_friends.* @@ -40,18 +42,24 @@ class FriendsFragment : Fragment(), FriendListAdapter.OnButtonClickListener { val recyclerView = view.findViewById(R.id.friendListRecyclerView) val searchView = view.findViewById(R.id.userNameSearch) val filterFriend = mutableListOf() - + val requestBtn = view.findViewById(R.id.requestButton) //Get info from Fake Data object and display filterFriend.addAll(friends) recyclerView.layoutManager = LinearLayoutManager(activity) recyclerView.adapter = FriendListAdapter(filterFriend, this) + requestBtn.setOnClickListener{ + findNavController().navigate(FriendsFragmentDirections.actionNavFriendsToRequestFragment()) + } + searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener{ override fun onQueryTextSubmit(query: String?): Boolean { TODO("Not yet implemented") } + + @SuppressLint("NotifyDataSetChanged") override fun onQueryTextChange(newText: String?): Boolean { filterFriend.clear() @@ -108,6 +116,7 @@ class FriendsFragment : Fragment(), FriendListAdapter.OnButtonClickListener { //Move to game fragment on button click findNavController().navigate(FriendsFragmentDirections.actionNavFriendsToGameFragment2()) } + } diff --git a/app/src/main/java/ch/epfl/sweng/rps/ui/friends/MyFriendRequestsFragment.kt b/app/src/main/java/ch/epfl/sweng/rps/ui/friends/MyFriendRequestsFragment.kt new file mode 100644 index 00000000..99cf2a59 --- /dev/null +++ b/app/src/main/java/ch/epfl/sweng/rps/ui/friends/MyFriendRequestsFragment.kt @@ -0,0 +1,20 @@ +package ch.epfl.sweng.rps.ui.friends + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import ch.epfl.sweng.rps.R + +class MyFriendRequestsFragment : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_my_friend_requests, container, false) + } + +} \ No newline at end of file diff --git a/app/src/main/java/ch/epfl/sweng/rps/ui/friends/RequestFragment.kt b/app/src/main/java/ch/epfl/sweng/rps/ui/friends/RequestFragment.kt new file mode 100644 index 00000000..9ee18d7f --- /dev/null +++ b/app/src/main/java/ch/epfl/sweng/rps/ui/friends/RequestFragment.kt @@ -0,0 +1,54 @@ +package ch.epfl.sweng.rps.ui.friends + +import androidx.lifecycle.ViewModelProvider +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import androidx.fragment.app.FragmentManager +import androidx.navigation.fragment.findNavController +import ch.epfl.sweng.rps.R +import kotlinx.android.synthetic.main.fragment_match_details.* +import kotlinx.android.synthetic.main.request_fragment.* + +class RequestFragment : Fragment() { + + companion object { + fun newInstance() = RequestFragment() + } + + private lateinit var viewModel: RequestViewModel + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.request_fragment, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val addFrdFrg = AddFriendFragment() + val myFrdReqFrg = MyFriendRequestsFragment() + val addFrdBtn = view.findViewById