Skip to content

Commit

Permalink
Merge pull request #20 from Gwamegis/feat/requestSong
Browse files Browse the repository at this point in the history
[Feat] 응원곡 신청하기 기능
  • Loading branch information
JIWON1923 authored May 21, 2023
2 parents 2c22b7a + a7ac596 commit fa80cee
Show file tree
Hide file tree
Showing 16 changed files with 258 additions and 37 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ android {
applicationId "com.soi.moya"
minSdk 24
targetSdk 33
versionCode 8
versionName "1.0.2"
versionCode 11
versionName "1.1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
android:exported="false" />
<activity
android:name=".MainActivity"
android:windowSoftInputMode="adjustResize"
android:exported="false">

</activity>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/com/soi/moya/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ class HomeFragment : Fragment() {
}.attach()
})

viewModel.setPointColor(pointColor)


// intent Select Team Activity
mainBanner.setOnClickListener {
Expand Down
7 changes: 7 additions & 0 deletions app/src/main/java/com/soi/moya/MusicViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@ import androidx.lifecycle.ViewModel

class MusicViewModel: ViewModel() {
private var _data = MutableLiveData<List<MusicModel>>()
private var _pointColor = MutableLiveData<Int>()

var teamMusicList: List<MusicModel> = emptyList()
var playerMusicList: List<MusicModel> = emptyList()
var pointColor: LiveData<Int> = _pointColor

fun setData(data: List<MusicModel>) {
_data.postValue(data)
Expand All @@ -19,6 +22,10 @@ class MusicViewModel: ViewModel() {
}
}

fun setPointColor(color: Int) {
_pointColor.value = color
}

fun fetchData(): LiveData<List<MusicModel>> {
return _data
}
Expand Down
33 changes: 33 additions & 0 deletions app/src/main/java/com/soi/moya/PlayerSongFragment.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
package com.soi.moya

import android.content.Intent
import android.graphics.drawable.GradientDrawable
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.WebView
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.ListView
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.fragment.app.activityViewModels

class PlayerSongFragment : Fragment() {
Expand Down Expand Up @@ -36,9 +42,31 @@ class PlayerSongFragment : Fragment() {

val adapter = SongListViewAdapter(musicData)
val listView = view.findViewById<ListView>(R.id.songListView)
val footerView = LayoutInflater.from(context).inflate(R.layout.request_song_view, null, false)
val pointColor = viewModel.pointColor.value

val songRequestText = footerView.findViewById<TextView>(R.id.songRequestText)
val sendIcon = footerView.findViewById<ImageView>(R.id.songRequestIcon)
val requestButton = footerView.findViewById<LinearLayout>(R.id.songRequestButton)

val drawable = ContextCompat.getDrawable(requireContext(), R.drawable.point_floating_button)
if (drawable is GradientDrawable) {
drawable.setStroke(dpToPx(1.6), ContextCompat.getColor(requireContext(), pointColor!!))
requestButton.background = drawable // 보더 색상 설정
}

requestButton.setOnClickListener {
val webView = WebView(requireContext())
webView.loadUrl("https://forms.gle/522hhU1Riq5wQhbv7")
}

songRequestText.setTextColor(ContextCompat.getColor(requireContext(), pointColor!!))
sendIcon.setColorFilter(ContextCompat.getColor(requireContext(), pointColor))

listView.addFooterView(footerView)
listView.adapter = adapter


listView.setOnItemClickListener { adapterView, view, i, l ->
val intent = Intent(requireContext(), PlaySongActivity::class.java)
intent.putExtra("title", musicData[i].title)
Expand All @@ -47,4 +75,9 @@ class PlayerSongFragment : Fragment() {
startActivity(intent)
}
}

private fun dpToPx(dp: Double): Int {
val density = resources.displayMetrics.density
return (dp * density + 0.5f).toInt()
}
}
22 changes: 15 additions & 7 deletions app/src/main/java/com/soi/moya/SearchFragment.kt
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
package com.soi.moya

import android.annotation.SuppressLint
import android.app.AlertDialog
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.WebView
import android.widget.LinearLayout
import android.widget.ListView
import android.widget.SearchView
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar

class SearchFragment : Fragment() {

private lateinit var viewModel: MusicViewModel
private lateinit var adapter: SongListViewAdapter
private var musicData: List<MusicModel> = emptyList()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

}

@SuppressLint("MissingInflatedId")
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
Expand All @@ -37,7 +37,8 @@ class SearchFragment : Fragment() {
val hintText = view.findViewById<TextView>(R.id.searchHintTextView)
val emptyText = view.findViewById<TextView>(R.id.emptyListTextView)
val searchView = view.findViewById<SearchView>(R.id.searchView)

val songRequestButton = view.findViewById<LinearLayout>(R.id.songRequestButton)
var songRequestView = view.findViewById<LinearLayout>(R.id.songRequestView)
viewModel = ViewModelProvider(requireActivity())[MusicViewModel::class.java]
adapter = SongListViewAdapter(emptyList())
listView.adapter = adapter
Expand All @@ -60,7 +61,6 @@ class SearchFragment : Fragment() {
startActivity(intent)
}


searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
searchView.clearFocus()
Expand All @@ -82,18 +82,26 @@ class SearchFragment : Fragment() {
if (newText.isNullOrBlank()) {
emptyText.visibility = View.GONE
listView.visibility = View.GONE
songRequestView.visibility = View.GONE
hintText.visibility = View.VISIBLE
} else {
adapter.filter.filter(newText)
listView.visibility = View.VISIBLE
val filteredResult = musicData.filter { it.title.contains(newText, true) }
emptyText.visibility = if (filteredResult.isEmpty()) View.VISIBLE else View.GONE
songRequestView.visibility = emptyText.visibility
hintText.visibility = View.GONE
}
return true
}
})

songRequestButton.setOnClickListener {
val webView = WebView(requireContext())
webView.loadUrl("https://forms.gle/522hhU1Riq5wQhbv7")
}


return view
}

Expand Down
34 changes: 33 additions & 1 deletion app/src/main/java/com/soi/moya/TeamSongFragment.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
package com.soi.moya

import android.content.Intent
import android.graphics.drawable.GradientDrawable
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.WebView
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.ListView
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.fragment.app.activityViewModels


Expand Down Expand Up @@ -36,6 +42,25 @@ class TeamSongFragment : Fragment() {
musicData = viewModel.teamMusicList
val adapter = SongListViewAdapter(musicData)
val listView = view.findViewById<ListView>(R.id.songListView)
val footerView = LayoutInflater.from(context).inflate(R.layout.request_song_view, null, false)
val pointColor = viewModel.pointColor.value

val songRequestText = footerView.findViewById<TextView>(R.id.songRequestText)
val sendIcon = footerView.findViewById<ImageView>(R.id.songRequestIcon)
val songRequestButton = footerView.findViewById<LinearLayout>(R.id.songRequestButton)
val drawable = ContextCompat.getDrawable(requireContext(), R.drawable.point_floating_button)
if (drawable is GradientDrawable) {
drawable.setStroke(dpToPx(1.6), ContextCompat.getColor(requireContext(), pointColor!!))
songRequestButton.background = drawable // 보더 색상 설정
}

songRequestButton.background = drawable

songRequestText.setTextColor(ContextCompat.getColor(requireContext(), pointColor!!))
sendIcon.setColorFilter(ContextCompat.getColor(requireContext(), pointColor!!))

listView.addFooterView(footerView)

listView.adapter = adapter

listView.setOnItemClickListener { adapterView, view, i, l ->
Expand All @@ -45,6 +70,13 @@ class TeamSongFragment : Fragment() {
intent.putExtra("url", musicData[i].url)
startActivity(intent)
}

songRequestButton.setOnClickListener {
val webView = WebView(requireContext())
webView.loadUrl("https://forms.gle/522hhU1Riq5wQhbv7")
}
}
private fun dpToPx(dp: Double): Int {
val density = resources.displayMetrics.density
return (dp * density + 0.5f).toInt()
}
}
8 changes: 8 additions & 0 deletions app/src/main/res/drawable/floating_button.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" /> <!-- 배경 색상 설정 -->
<stroke
android:width="1.6dp"
android:color="@color/main_green" />
<corners android:radius="50dp" />
</shape>
8 changes: 8 additions & 0 deletions app/src/main/res/drawable/point_floating_button.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<stroke
android:width="1.6dp"
android:color="@color/main_green" />
<corners android:radius="50dp" />
</shape>
Binary file added app/src/main/res/drawable/send_icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainActivity"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
Expand All @@ -21,7 +22,7 @@
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="0dp"
android:layout_height="56dp"
android:layout_height="60dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/layout/fragment_player_song.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
android:id="@+id/songListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@color/listBorder"
android:dividerHeight="1dp"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="111dp" />

Expand Down
Loading

0 comments on commit fa80cee

Please sign in to comment.