From 1a434dd5f45d7c12c7a6bdbc1d84024564f74bb0 Mon Sep 17 00:00:00 2001 From: Farbod Date: Thu, 9 Dec 2021 16:55:32 +0400 Subject: [PATCH] navigation done! --- .idea/misc.xml | 11 ++++ app/build.gradle | 4 ++ .../main/java/xyz/btcland/libretube/Home.kt | 59 +++++++++++++++++++ .../java/xyz/btcland/libretube/Library.kt | 59 +++++++++++++++++++ .../xyz/btcland/libretube/MainActivity.kt | 6 ++ .../xyz/btcland/libretube/Subscriptions.kt | 59 +++++++++++++++++++ app/src/main/res/drawable/ic_home.xml | 10 ++++ app/src/main/res/drawable/ic_library.xml | 10 ++++ .../main/res/drawable/ic_subscriptions.xml | 10 ++++ app/src/main/res/layout/activity_main.xml | 23 ++++++-- app/src/main/res/layout/fragment_home.xml | 14 +++++ app/src/main/res/layout/fragment_library.xml | 14 +++++ .../res/layout/fragment_subscriptions.xml | 14 +++++ app/src/main/res/menu/bottom_menu.xml | 8 +++ app/src/main/res/navigation/nav.xml | 23 ++++++++ app/src/main/res/values/strings.xml | 2 + 16 files changed, 320 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/xyz/btcland/libretube/Home.kt create mode 100644 app/src/main/java/xyz/btcland/libretube/Library.kt create mode 100644 app/src/main/java/xyz/btcland/libretube/Subscriptions.kt create mode 100644 app/src/main/res/drawable/ic_home.xml create mode 100644 app/src/main/res/drawable/ic_library.xml create mode 100644 app/src/main/res/drawable/ic_subscriptions.xml create mode 100644 app/src/main/res/layout/fragment_home.xml create mode 100644 app/src/main/res/layout/fragment_library.xml create mode 100644 app/src/main/res/layout/fragment_subscriptions.xml create mode 100644 app/src/main/res/menu/bottom_menu.xml create mode 100644 app/src/main/res/navigation/nav.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 2a4d5b521..f279d4a50 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,16 @@ + + + diff --git a/app/build.gradle b/app/build.gradle index 9af7cd97e..7ed14eab2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -35,6 +35,10 @@ dependencies { implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:2.0.4' + implementation 'com.android.support:design:28.0.0' + implementation 'android.arch.navigation:navigation-fragment-ktx:1.0.0' + implementation 'android.arch.navigation:navigation-ui-ktx:1.0.0' + implementation 'com.android.support:support-v4:28.0.0' testImplementation 'junit:junit:4.+' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' diff --git a/app/src/main/java/xyz/btcland/libretube/Home.kt b/app/src/main/java/xyz/btcland/libretube/Home.kt new file mode 100644 index 000000000..2dc0258f8 --- /dev/null +++ b/app/src/main/java/xyz/btcland/libretube/Home.kt @@ -0,0 +1,59 @@ +package xyz.btcland.libretube + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +// TODO: Rename parameter arguments, choose names that match +// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER +private const val ARG_PARAM1 = "param1" +private const val ARG_PARAM2 = "param2" + +/** + * A simple [Fragment] subclass. + * Use the [Home.newInstance] factory method to + * create an instance of this fragment. + */ +class Home : Fragment() { + // TODO: Rename and change types of parameters + private var param1: String? = null + private var param2: String? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + arguments?.let { + param1 = it.getString(ARG_PARAM1) + param2 = it.getString(ARG_PARAM2) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_home, container, false) + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment Home. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + Home().apply { + arguments = Bundle().apply { + putString(ARG_PARAM1, param1) + putString(ARG_PARAM2, param2) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/xyz/btcland/libretube/Library.kt b/app/src/main/java/xyz/btcland/libretube/Library.kt new file mode 100644 index 000000000..3dc915733 --- /dev/null +++ b/app/src/main/java/xyz/btcland/libretube/Library.kt @@ -0,0 +1,59 @@ +package xyz.btcland.libretube + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +// TODO: Rename parameter arguments, choose names that match +// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER +private const val ARG_PARAM1 = "param1" +private const val ARG_PARAM2 = "param2" + +/** + * A simple [Fragment] subclass. + * Use the [Library.newInstance] factory method to + * create an instance of this fragment. + */ +class Library : Fragment() { + // TODO: Rename and change types of parameters + private var param1: String? = null + private var param2: String? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + arguments?.let { + param1 = it.getString(ARG_PARAM1) + param2 = it.getString(ARG_PARAM2) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_library, container, false) + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment Library. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + Library().apply { + arguments = Bundle().apply { + putString(ARG_PARAM1, param1) + putString(ARG_PARAM2, param2) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/xyz/btcland/libretube/MainActivity.kt b/app/src/main/java/xyz/btcland/libretube/MainActivity.kt index 16c3b08a5..87310405b 100644 --- a/app/src/main/java/xyz/btcland/libretube/MainActivity.kt +++ b/app/src/main/java/xyz/btcland/libretube/MainActivity.kt @@ -2,10 +2,16 @@ package xyz.btcland.libretube import android.support.v7.app.AppCompatActivity import android.os.Bundle +import android.support.design.widget.BottomNavigationView +import androidx.navigation.findNavController +import androidx.navigation.ui.setupWithNavController class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + val bottomNavigationView = findViewById(R.id.bottomNav) + val navController = findNavController(R.id.fragment) + bottomNavigationView.setupWithNavController(navController) } } \ No newline at end of file diff --git a/app/src/main/java/xyz/btcland/libretube/Subscriptions.kt b/app/src/main/java/xyz/btcland/libretube/Subscriptions.kt new file mode 100644 index 000000000..0165d5e0c --- /dev/null +++ b/app/src/main/java/xyz/btcland/libretube/Subscriptions.kt @@ -0,0 +1,59 @@ +package xyz.btcland.libretube + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +// TODO: Rename parameter arguments, choose names that match +// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER +private const val ARG_PARAM1 = "param1" +private const val ARG_PARAM2 = "param2" + +/** + * A simple [Fragment] subclass. + * Use the [Subscriptions.newInstance] factory method to + * create an instance of this fragment. + */ +class Subscriptions : Fragment() { + // TODO: Rename and change types of parameters + private var param1: String? = null + private var param2: String? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + arguments?.let { + param1 = it.getString(ARG_PARAM1) + param2 = it.getString(ARG_PARAM2) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_subscriptions, container, false) + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment Subscriptions. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + Subscriptions().apply { + arguments = Bundle().apply { + putString(ARG_PARAM1, param1) + putString(ARG_PARAM2, param2) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 000000000..3a4c7dac9 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_library.xml b/app/src/main/res/drawable/ic_library.xml new file mode 100644 index 000000000..2259eafce --- /dev/null +++ b/app/src/main/res/drawable/ic_library.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_subscriptions.xml b/app/src/main/res/drawable/ic_subscriptions.xml new file mode 100644 index 000000000..ff97899aa --- /dev/null +++ b/app/src/main/res/drawable/ic_subscriptions.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 84f19512d..7043c7d15 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -6,13 +6,24 @@ android:layout_height="match_parent" tools:context=".MainActivity"> - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:menu="@menu/bottom_menu"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 000000000..58a6b3941 --- /dev/null +++ b/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml new file mode 100644 index 000000000..50efca8b1 --- /dev/null +++ b/app/src/main/res/layout/fragment_library.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_subscriptions.xml b/app/src/main/res/layout/fragment_subscriptions.xml new file mode 100644 index 000000000..c1a34ebd4 --- /dev/null +++ b/app/src/main/res/layout/fragment_subscriptions.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_menu.xml b/app/src/main/res/menu/bottom_menu.xml new file mode 100644 index 000000000..d0f18f432 --- /dev/null +++ b/app/src/main/res/menu/bottom_menu.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav.xml b/app/src/main/res/navigation/nav.xml new file mode 100644 index 000000000..3e5346f8e --- /dev/null +++ b/app/src/main/res/navigation/nav.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a9a71501f..803cbf13d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,5 @@ LibreTube + + Hello blank fragment \ No newline at end of file