created dedicated tabPager for programme
parent
c20727fca7
commit
3e51df6a87
|
|
@ -38,8 +38,11 @@ class MainActivity : BaseActivity() {
|
||||||
val bottomNavigationView : BottomNavigationView = findViewById(R.id.bottom_nav)
|
val bottomNavigationView : BottomNavigationView = findViewById(R.id.bottom_nav)
|
||||||
|
|
||||||
//val navGraphIds = listOf(R.navigation.home, R.navigation.list, R.navigation.form)
|
//val navGraphIds = listOf(R.navigation.home, R.navigation.list, R.navigation.form)
|
||||||
val navGraphIds = listOf(R.navigation.navigation_nowplaying, R.navigation.navigation_songs,
|
val navGraphIds = listOf(
|
||||||
R.navigation.navigation_news)
|
R.navigation.navigation_nowplaying,
|
||||||
|
R.navigation.navigation_songs,
|
||||||
|
R.navigation.navigation_news,
|
||||||
|
R.navigation.navigation_programme)
|
||||||
|
|
||||||
// Setup the bottom navigation view with a list of navigation graphs
|
// Setup the bottom navigation view with a list of navigation graphs
|
||||||
val controller = bottomNavigationView.setupWithNavController(
|
val controller = bottomNavigationView.setupWithNavController(
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,6 @@ class Programme (val title: String, private val periodicity: Int, private val ho
|
||||||
{
|
{
|
||||||
res.add(weekdays[i])
|
res.add(weekdays[i])
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return res.toString().drop(1).dropLast(1) // drop '[' and ']'
|
return res.toString().drop(1).dropLast(1) // drop '[' and ']'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
package fr.forum_thalie.tsumugi.ui.songs
|
package fr.forum_thalie.tsumugi.ui
|
||||||
|
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentPagerAdapter
|
import androidx.fragment.app.FragmentPagerAdapter
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
|
|
||||||
|
|
||||||
class SongsPagerAdapter(f: FragmentManager, t: Int) : FragmentPagerAdapter(f, t){
|
class APagerAdapter(f: FragmentManager, t: Int) : FragmentPagerAdapter(f, t){
|
||||||
|
|
||||||
private val fragmentList = ArrayList<Fragment>()
|
private val fragmentList = ArrayList<Fragment>()
|
||||||
private val fragmentTitleList = ArrayList<String>()
|
private val fragmentTitleList = ArrayList<String>()
|
||||||
|
|
@ -1,19 +1,13 @@
|
||||||
package fr.forum_thalie.tsumugi.ui.songs.programme
|
package fr.forum_thalie.tsumugi.ui.programme
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.util.Log
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import fr.forum_thalie.tsumugi.R
|
import fr.forum_thalie.tsumugi.R
|
||||||
import fr.forum_thalie.tsumugi.colorBlue
|
|
||||||
import fr.forum_thalie.tsumugi.colorWhited
|
|
||||||
import fr.forum_thalie.tsumugi.planning.Programme
|
import fr.forum_thalie.tsumugi.planning.Programme
|
||||||
import fr.forum_thalie.tsumugi.tag
|
|
||||||
import kotlinx.android.synthetic.main.programme_view.view.*
|
|
||||||
import kotlinx.android.synthetic.main.song_view.view.*
|
|
||||||
|
|
||||||
class ProgrammeAdapter(private val dataSet: ArrayList<Programme>
|
class ProgrammeAdapter(private val dataSet: ArrayList<Programme>
|
||||||
/*,
|
/*,
|
||||||
|
|
@ -30,7 +24,9 @@ class ProgrammeAdapter(private val dataSet: ArrayList<Programme>
|
||||||
// create a new view
|
// create a new view
|
||||||
val view = LayoutInflater.from(parent.context)
|
val view = LayoutInflater.from(parent.context)
|
||||||
.inflate(R.layout.programme_view, parent, false) as ConstraintLayout
|
.inflate(R.layout.programme_view, parent, false) as ConstraintLayout
|
||||||
return MyViewHolder(view)
|
return MyViewHolder(
|
||||||
|
view
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace the contents of a view (invoked by the layout manager)
|
// Replace the contents of a view (invoked by the layout manager)
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package fr.forum_thalie.tsumugi.ui.songs.programme
|
package fr.forum_thalie.tsumugi.ui.programme
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
|
@ -10,11 +10,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import fr.forum_thalie.tsumugi.R
|
import fr.forum_thalie.tsumugi.R
|
||||||
import fr.forum_thalie.tsumugi.planning.Planning
|
import fr.forum_thalie.tsumugi.planning.Planning
|
||||||
import fr.forum_thalie.tsumugi.playerstore.PlayerStore
|
|
||||||
import fr.forum_thalie.tsumugi.ui.songs.queuelp.LastPlayedFragment
|
|
||||||
import fr.forum_thalie.tsumugi.ui.songs.queuelp.SongAdaptater
|
|
||||||
|
|
||||||
class ProgrammeFragment : Fragment() {
|
class ProgrammeDayFragment(day: String) : Fragment() {
|
||||||
|
|
||||||
private lateinit var recyclerView: RecyclerView
|
private lateinit var recyclerView: RecyclerView
|
||||||
private lateinit var viewAdapter: RecyclerView.Adapter<*>
|
private lateinit var viewAdapter: RecyclerView.Adapter<*>
|
||||||
|
|
@ -25,9 +22,10 @@ class ProgrammeFragment : Fragment() {
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
// Inflate the layout for this fragment
|
// Inflate the layout for this fragment
|
||||||
val root = inflater.inflate(R.layout.fragment_programme, container, false)
|
val root = inflater.inflate(R.layout.fragment_programme_day, container, false)
|
||||||
viewManager = LinearLayoutManager(context)
|
viewManager = LinearLayoutManager(context)
|
||||||
viewAdapter = ProgrammeAdapter(Planning.instance.programmes)
|
viewAdapter =
|
||||||
|
ProgrammeAdapter(Planning.instance.programmes)
|
||||||
recyclerView = root.findViewById<RecyclerView>(R.id.programme_recycler).apply {
|
recyclerView = root.findViewById<RecyclerView>(R.id.programme_recycler).apply {
|
||||||
// use this setting to improve performance if you know that changes
|
// use this setting to improve performance if you know that changes
|
||||||
// in content do not change the layout size of the RecyclerView
|
// in content do not change the layout size of the RecyclerView
|
||||||
|
|
@ -50,6 +48,7 @@ class ProgrammeFragment : Fragment() {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun newInstance() = ProgrammeFragment()
|
fun newInstance(day: String) =
|
||||||
|
ProgrammeDayFragment(day)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
package fr.forum_thalie.tsumugi.ui.programme
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.fragment.app.FragmentPagerAdapter
|
||||||
|
import androidx.viewpager.widget.ViewPager
|
||||||
|
import com.google.android.material.tabs.TabLayout
|
||||||
|
import fr.forum_thalie.tsumugi.R
|
||||||
|
import fr.forum_thalie.tsumugi.ui.APagerAdapter
|
||||||
|
import fr.forum_thalie.tsumugi.weekdays
|
||||||
|
|
||||||
|
class ProgrammeFragment : Fragment() {
|
||||||
|
|
||||||
|
private lateinit var adapter : APagerAdapter
|
||||||
|
private lateinit var root: View
|
||||||
|
private lateinit var viewPager: ViewPager
|
||||||
|
|
||||||
|
override fun onCreateView(
|
||||||
|
inflater: LayoutInflater,
|
||||||
|
container: ViewGroup?,
|
||||||
|
savedInstanceState: Bundle?
|
||||||
|
): View? {
|
||||||
|
|
||||||
|
root = inflater.inflate(R.layout.fragment_programme, container, false)
|
||||||
|
viewPager = root.findViewById(R.id.dayTabPager)
|
||||||
|
adapter = APagerAdapter(childFragmentManager, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
|
||||||
|
// You can add more fragments to the adapter, to display more information (for example with R/a/dio, queue, request, faves...)
|
||||||
|
weekdays.forEach {
|
||||||
|
adapter.addFragment(ProgrammeDayFragment.newInstance(it), it)
|
||||||
|
}
|
||||||
|
|
||||||
|
viewPager.adapter = adapter
|
||||||
|
|
||||||
|
val tabLayout : TabLayout = root.findViewById(R.id.dayTabLayout)
|
||||||
|
tabLayout.setupWithViewPager(viewPager)
|
||||||
|
Log.d(tag, "SongFragment view created")
|
||||||
|
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -10,12 +10,13 @@ import androidx.fragment.app.FragmentPagerAdapter
|
||||||
import androidx.viewpager.widget.ViewPager
|
import androidx.viewpager.widget.ViewPager
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import fr.forum_thalie.tsumugi.R
|
import fr.forum_thalie.tsumugi.R
|
||||||
import fr.forum_thalie.tsumugi.ui.songs.programme.ProgrammeFragment
|
import fr.forum_thalie.tsumugi.ui.APagerAdapter
|
||||||
|
import fr.forum_thalie.tsumugi.ui.programme.ProgrammeDayFragment
|
||||||
import fr.forum_thalie.tsumugi.ui.songs.queuelp.LastPlayedFragment
|
import fr.forum_thalie.tsumugi.ui.songs.queuelp.LastPlayedFragment
|
||||||
|
|
||||||
class SongsFragment : Fragment() {
|
class SongsFragment : Fragment() {
|
||||||
|
|
||||||
private lateinit var adapter : SongsPagerAdapter
|
private lateinit var adapter : APagerAdapter
|
||||||
private lateinit var root: View
|
private lateinit var root: View
|
||||||
private lateinit var viewPager: ViewPager
|
private lateinit var viewPager: ViewPager
|
||||||
|
|
||||||
|
|
@ -27,11 +28,12 @@ class SongsFragment : Fragment() {
|
||||||
|
|
||||||
root = inflater.inflate(R.layout.fragment_songs, container, false)
|
root = inflater.inflate(R.layout.fragment_songs, container, false)
|
||||||
viewPager = root.findViewById(R.id.tabPager)
|
viewPager = root.findViewById(R.id.tabPager)
|
||||||
adapter = SongsPagerAdapter(childFragmentManager, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
|
adapter = APagerAdapter(
|
||||||
|
childFragmentManager,
|
||||||
|
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
|
||||||
|
)
|
||||||
adapter.addFragment(LastPlayedFragment.newInstance(), getString(R.string.lp))
|
adapter.addFragment(LastPlayedFragment.newInstance(), getString(R.string.lp))
|
||||||
|
|
||||||
// You can add more fragments to the adapter, to display more information (for example with R/a/dio, queue, request, faves...)
|
// You can add more fragments to the adapter, to display more information (for example with R/a/dio, queue, request, faves...)
|
||||||
adapter.addFragment(ProgrammeFragment.newInstance(), getString(R.string.programme))
|
|
||||||
|
|
||||||
viewPager.adapter = adapter
|
viewPager.adapter = adapter
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:tint="#FFFFFF"
|
||||||
|
android:alpha="0.8">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M19,3h-1L18,1h-2v2L8,3L8,1L6,1v2L5,3c-1.11,0 -1.99,0.9 -1.99,2L3,19c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM19,19L5,19L5,8h14v11zM7,10h5v5L7,15z"/>
|
||||||
|
</vector>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 229 B |
Binary file not shown.
|
After Width: | Height: | Size: 144 B |
Binary file not shown.
|
After Width: | Height: | Size: 215 B |
Binary file not shown.
|
After Width: | Height: | Size: 313 B |
|
|
@ -1,19 +1,45 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent" >
|
||||||
android:layout_margin="8dp"
|
|
||||||
tools:context=".ui.songs.programme.ProgrammeFragment">
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
|
||||||
|
<androidx.viewpager.widget.ViewPager
|
||||||
|
android:id="@+id/dayTabPager"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:id="@+id/programme_recycler"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
android:scrollbars="vertical"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" >
|
||||||
|
|
||||||
|
<com.google.android.material.tabs.TabLayout
|
||||||
|
android:id="@+id/dayTabLayout"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:tabMode="scrollable"
|
||||||
|
app:tabGravity="center"
|
||||||
|
app:tabIndicatorFullWidth="true"
|
||||||
|
android:paddingBottom="8dp"
|
||||||
>
|
>
|
||||||
|
<!--
|
||||||
|
<com.google.android.material.tabs.TabItem
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Last played" />
|
||||||
|
|
||||||
</androidx.recyclerview.widget.RecyclerView>
|
<com.google.android.material.tabs.TabItem
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Queue" />
|
||||||
|
|
||||||
</LinearLayout>
|
<com.google.android.material.tabs.TabItem
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Request" />
|
||||||
|
-->
|
||||||
|
</com.google.android.material.tabs.TabLayout>
|
||||||
|
</androidx.viewpager.widget.ViewPager>
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_margin="8dp"
|
||||||
|
tools:context=".ui.programme.ProgrammeDayFragment">
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:id="@+id/programme_recycler"
|
||||||
|
android:scrollbars="vertical"
|
||||||
|
>
|
||||||
|
|
||||||
|
</androidx.recyclerview.widget.RecyclerView>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
@ -16,27 +16,32 @@
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/programme_start"
|
android:id="@+id/programme_start"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintTop_toBottomOf="@id/programme_days"
|
app:layout_constraintTop_toBottomOf="@id/programme_days"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
android:gravity="start"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/programme_name"
|
android:id="@+id/programme_name"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintTop_toBottomOf="@id/programme_start"
|
app:layout_constraintTop_toTopOf="@id/programme_start"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toEndOf="@id/programme_start"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:gravity="end"
|
||||||
|
android:textAlignment="textEnd"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/programme_end"
|
android:id="@+id/programme_end"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintTop_toBottomOf="@id/programme_name"
|
app:layout_constraintTop_toBottomOf="@id/programme_start"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="@id/programme_start"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
android:gravity="start"
|
||||||
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
|
|
||||||
|
|
@ -16,5 +16,10 @@
|
||||||
android:icon="@drawable/ic_newspaper"
|
android:icon="@drawable/ic_newspaper"
|
||||||
android:title="@string/title_news"/>
|
android:title="@string/title_news"/>
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/navigation_programme"
|
||||||
|
android:icon="@drawable/ic_programme"
|
||||||
|
android:title="@string/programme"/>
|
||||||
|
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/navigation_programme"
|
||||||
|
app:startDestination="@id/fragment_programme"
|
||||||
|
tools:ignore="UnusedNavigation">
|
||||||
|
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/fragment_programme"
|
||||||
|
android:name="fr.forum_thalie.tsumugi.ui.programme.ProgrammeFragment"
|
||||||
|
android:label="@string/title_programme" />
|
||||||
|
|
||||||
|
</navigation>
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
<string name="title_queue_lp">Songs</string>
|
<string name="title_queue_lp">Songs</string>
|
||||||
<string name="title_chat">Chat</string>
|
<string name="title_chat">Chat</string>
|
||||||
<string name="title_news">News</string>
|
<string name="title_news">News</string>
|
||||||
|
<string name="title_programme">Programme</string>
|
||||||
|
|
||||||
<string name="now_playing_notification_title_template">Now playing: %1$s</string>
|
<string name="now_playing_notification_title_template">Now playing: %1$s</string>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue