diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 116beb5..4184cb4 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -12,6 +12,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 6843870..08ee739 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,14 +3,20 @@ diff --git a/app/build.gradle b/app/build.gradle index cbb104d..0f133b9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,6 +44,7 @@ dependencies { implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1' implementation 'androidx.navigation:navigation-fragment-ktx:2.5.0' implementation 'androidx.navigation:navigation-ui-ktx:2.5.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/app/src/main/java/com/sockenklaus/batterytracker/MainActivity.kt b/app/src/main/java/com/sockenklaus/batterytracker/MainActivity.kt index df8f0fb..8d8c84a 100644 --- a/app/src/main/java/com/sockenklaus/batterytracker/MainActivity.kt +++ b/app/src/main/java/com/sockenklaus/batterytracker/MainActivity.kt @@ -2,6 +2,7 @@ package com.sockenklaus.batterytracker import android.os.Bundle import android.view.Menu +import android.view.MenuItem import com.google.android.material.snackbar.Snackbar import com.google.android.material.navigation.NavigationView import androidx.navigation.findNavController @@ -11,12 +12,14 @@ import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupWithNavController import androidx.drawerlayout.widget.DrawerLayout import androidx.appcompat.app.AppCompatActivity +import androidx.navigation.NavController import com.sockenklaus.batterytracker.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { private lateinit var appBarConfiguration: AppBarConfiguration private lateinit var binding: ActivityMainBinding + private lateinit var navController: NavController override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -26,18 +29,14 @@ class MainActivity : AppCompatActivity() { setSupportActionBar(binding.appBarMain.toolbar) - binding.appBarMain.fab.setOnClickListener { view -> - Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) - .setAction("Action", null).show() - } val drawerLayout: DrawerLayout = binding.drawerLayout val navView: NavigationView = binding.navView - val navController = findNavController(R.id.nav_host_fragment_content_main) + navController = findNavController(R.id.nav_host_fragment_content_main) // Passing each menu ID as a set of Ids because each // menu should be considered as top level destinations. appBarConfiguration = AppBarConfiguration( setOf( - R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow + R.id.nav_home, R.id.nav_add_charge, R.id.nav_add_battery, R.id.nav_settings ), drawerLayout ) setupActionBarWithNavController(navController, appBarConfiguration) diff --git a/app/src/main/java/com/sockenklaus/batterytracker/ui/AddBatteryFragment.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/AddBatteryFragment.kt new file mode 100644 index 0000000..881c772 --- /dev/null +++ b/app/src/main/java/com/sockenklaus/batterytracker/ui/AddBatteryFragment.kt @@ -0,0 +1,60 @@ +package com.sockenklaus.batterytracker.ui + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.sockenklaus.batterytracker.R + +// 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 [AddBatteryFragment.newInstance] factory method to + * create an instance of this fragment. + */ +class AddBatteryFragment : 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_add_battery, 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 AddBatteryFragment. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + AddBatteryFragment().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/com/sockenklaus/batterytracker/ui/add_charge/AddChargeFragment.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/add_charge/AddChargeFragment.kt new file mode 100644 index 0000000..ad0cbc7 --- /dev/null +++ b/app/src/main/java/com/sockenklaus/batterytracker/ui/add_charge/AddChargeFragment.kt @@ -0,0 +1,32 @@ +package com.sockenklaus.batterytracker.ui.add_charge + +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 com.sockenklaus.batterytracker.R + +class AddChargeFragment : Fragment() { + + companion object { + fun newInstance() = AddChargeFragment() + } + + private lateinit var viewModel: AddChargeViewModel + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.fragment_add_charge, container, false) + } + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + viewModel = ViewModelProvider(this).get(AddChargeViewModel::class.java) + // TODO: Use the ViewModel + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/sockenklaus/batterytracker/ui/add_charge/AddChargeViewModel.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/add_charge/AddChargeViewModel.kt new file mode 100644 index 0000000..5eb5911 --- /dev/null +++ b/app/src/main/java/com/sockenklaus/batterytracker/ui/add_charge/AddChargeViewModel.kt @@ -0,0 +1,7 @@ +package com.sockenklaus.batterytracker.ui.add_charge + +import androidx.lifecycle.ViewModel + +class AddChargeViewModel : ViewModel() { + // TODO: Implement the ViewModel +} \ No newline at end of file diff --git a/app/src/main/java/com/sockenklaus/batterytracker/ui/gallery/GalleryFragment.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/gallery/GalleryFragment.kt deleted file mode 100644 index d597489..0000000 --- a/app/src/main/java/com/sockenklaus/batterytracker/ui/gallery/GalleryFragment.kt +++ /dev/null @@ -1,42 +0,0 @@ -package com.sockenklaus.batterytracker.ui.gallery - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProvider -import com.sockenklaus.batterytracker.databinding.FragmentGalleryBinding - -class GalleryFragment : Fragment() { - - private var _binding: FragmentGalleryBinding? = null - - // This property is only valid between onCreateView and - // onDestroyView. - private val binding get() = _binding!! - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - val galleryViewModel = - ViewModelProvider(this).get(GalleryViewModel::class.java) - - _binding = FragmentGalleryBinding.inflate(inflater, container, false) - val root: View = binding.root - - val textView: TextView = binding.textGallery - galleryViewModel.text.observe(viewLifecycleOwner) { - textView.text = it - } - return root - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } -} \ No newline at end of file diff --git a/app/src/main/java/com/sockenklaus/batterytracker/ui/gallery/GalleryViewModel.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/gallery/GalleryViewModel.kt deleted file mode 100644 index 447e712..0000000 --- a/app/src/main/java/com/sockenklaus/batterytracker/ui/gallery/GalleryViewModel.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.sockenklaus.batterytracker.ui.gallery - -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel - -class GalleryViewModel : ViewModel() { - - private val _text = MutableLiveData().apply { - value = "This is gallery Fragment" - } - val text: LiveData = _text -} \ No newline at end of file diff --git a/app/src/main/java/com/sockenklaus/batterytracker/ui/settings/SettingsFragment.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/settings/SettingsFragment.kt new file mode 100644 index 0000000..a37e42a --- /dev/null +++ b/app/src/main/java/com/sockenklaus/batterytracker/ui/settings/SettingsFragment.kt @@ -0,0 +1,27 @@ +package com.sockenklaus.batterytracker.ui.settings + +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 com.sockenklaus.batterytracker.R + +class SettingsFragment : Fragment() { + + companion object { + fun newInstance() = SettingsFragment() + } + + private lateinit var viewModel: SettingsViewModel + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + viewModel = ViewModelProvider(this)[SettingsViewModel::class.java] + + return inflater.inflate(R.layout.fragment_settings, container, false) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/sockenklaus/batterytracker/ui/settings/SettingsViewModel.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/settings/SettingsViewModel.kt new file mode 100644 index 0000000..6e79cfa --- /dev/null +++ b/app/src/main/java/com/sockenklaus/batterytracker/ui/settings/SettingsViewModel.kt @@ -0,0 +1,7 @@ +package com.sockenklaus.batterytracker.ui.settings + +import androidx.lifecycle.ViewModel + +class SettingsViewModel : ViewModel() { + // TODO: Implement the ViewModel +} \ No newline at end of file diff --git a/app/src/main/java/com/sockenklaus/batterytracker/ui/slideshow/SlideshowFragment.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/slideshow/SlideshowFragment.kt deleted file mode 100644 index ca8f6b3..0000000 --- a/app/src/main/java/com/sockenklaus/batterytracker/ui/slideshow/SlideshowFragment.kt +++ /dev/null @@ -1,42 +0,0 @@ -package com.sockenklaus.batterytracker.ui.slideshow - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProvider -import com.sockenklaus.batterytracker.databinding.FragmentSlideshowBinding - -class SlideshowFragment : Fragment() { - - private var _binding: FragmentSlideshowBinding? = null - - // This property is only valid between onCreateView and - // onDestroyView. - private val binding get() = _binding!! - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - val slideshowViewModel = - ViewModelProvider(this).get(SlideshowViewModel::class.java) - - _binding = FragmentSlideshowBinding.inflate(inflater, container, false) - val root: View = binding.root - - val textView: TextView = binding.textSlideshow - slideshowViewModel.text.observe(viewLifecycleOwner) { - textView.text = it - } - return root - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } -} \ No newline at end of file diff --git a/app/src/main/java/com/sockenklaus/batterytracker/ui/slideshow/SlideshowViewModel.kt b/app/src/main/java/com/sockenklaus/batterytracker/ui/slideshow/SlideshowViewModel.kt deleted file mode 100644 index d512ee0..0000000 --- a/app/src/main/java/com/sockenklaus/batterytracker/ui/slideshow/SlideshowViewModel.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.sockenklaus.batterytracker.ui.slideshow - -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel - -class SlideshowViewModel : ViewModel() { - - private val _text = MutableLiveData().apply { - value = "This is slideshow Fragment" - } - val text: LiveData = _text -} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_baseline_battery_5_bar_24.xml b/app/src/main/res/drawable/ic_baseline_battery_5_bar_24.xml new file mode 100644 index 0000000..a6b1fd5 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_5_bar_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_battery_charging_full_24.xml b/app/src/main/res/drawable/ic_baseline_battery_charging_full_24.xml new file mode 100644 index 0000000..77cdb8a --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_charging_full_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_check_24.xml b/app/src/main/res/drawable/ic_baseline_check_24.xml new file mode 100644 index 0000000..cf143d4 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_check_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_home_24.xml b/app/src/main/res/drawable/ic_baseline_home_24.xml new file mode 100644 index 0000000..5a870f5 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_home_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_settings_24.xml b/app/src/main/res/drawable/ic_baseline_settings_24.xml new file mode 100644 index 0000000..298a5a1 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_settings_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_camera.xml b/app/src/main/res/drawable/ic_menu_camera.xml deleted file mode 100644 index 634fe92..0000000 --- a/app/src/main/res/drawable/ic_menu_camera.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_menu_gallery.xml b/app/src/main/res/drawable/ic_menu_gallery.xml deleted file mode 100644 index 03c7709..0000000 --- a/app/src/main/res/drawable/ic_menu_gallery.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_menu_slideshow.xml b/app/src/main/res/drawable/ic_menu_slideshow.xml deleted file mode 100644 index 5e9e163..0000000 --- a/app/src/main/res/drawable/ic_menu_slideshow.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 6c7dd7c..3615eaa 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -22,4 +22,5 @@ android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index 8c5302c..75bd898 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -20,15 +20,8 @@ - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_add_battery.xml b/app/src/main/res/layout/fragment_add_battery.xml new file mode 100644 index 0000000..f7e98c4 --- /dev/null +++ b/app/src/main/res/layout/fragment_add_battery.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_add_charge.xml b/app/src/main/res/layout/fragment_add_charge.xml new file mode 100644 index 0000000..c529e74 --- /dev/null +++ b/app/src/main/res/layout/fragment_add_charge.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_gallery.xml b/app/src/main/res/layout/fragment_gallery.xml deleted file mode 100644 index 643fe25..0000000 --- a/app/src/main/res/layout/fragment_gallery.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml new file mode 100644 index 0000000..fda1d80 --- /dev/null +++ b/app/src/main/res/layout/fragment_settings.xml @@ -0,0 +1,31 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_slideshow.xml b/app/src/main/res/layout/fragment_slideshow.xml deleted file mode 100644 index 2141a33..0000000 --- a/app/src/main/res/layout/fragment_slideshow.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml index d7f2df2..d9275fd 100644 --- a/app/src/main/res/menu/activity_main_drawer.xml +++ b/app/src/main/res/menu/activity_main_drawer.xml @@ -6,15 +6,24 @@ + + android:id="@+id/nav_add_charge" + android:title="@string/menu_add_charge" + android:icon="@drawable/ic_baseline_battery_charging_full_24" + /> + + android:id="@+id/nav_add_battery" + android:title="@string/menu_add_battery" + android:icon="@drawable/ic_baseline_battery_5_bar_24" + /> + + \ No newline at end of file diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml index 412d5f8..4b177d2 100644 --- a/app/src/main/res/menu/main.xml +++ b/app/src/main/res/menu/main.xml @@ -1,9 +1,9 @@ - + app:showAsAction="never" />--> \ No newline at end of file diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 229ac89..54450ee 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -12,14 +12,20 @@ tools:layout="@layout/fragment_home" /> + android:id="@+id/nav_add_charge" + android:name="com.sockenklaus.batterytracker.ui.add_charge.AddChargeFragment" + android:label="@string/menu_add_charge" + tools:layout="@layout/fragment_add_charge" /> + android:id="@+id/nav_add_battery" + android:name="com.sockenklaus.batterytracker.ui.AddBatteryFragment" + android:label="@string/menu_add_battery" + tools:layout="@layout/fragment_add_battery" /> + + \ 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 559c95b..29722cc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,4 +10,12 @@ Home Gallery Slideshow + + Hello blank fragment + Settings + Save Settings + Add Charge + Add Battery + Battery ID + Save Charge \ No newline at end of file