Browse Source

Onboarding: add "auto rescan" option

merge-requests/509/head
Geoffrey Métais 6 years ago
committed by Geoffrey Métais
parent
commit
1fe13df4b0
  1. 18
      application/vlc-android/res/layout/onboarding_scanning.xml
  2. 33
      application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingFragmentPagerAdapter.kt
  3. 38
      application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingScanningFragment.kt
  4. 14
      application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingThemeFragment.kt

18
application/vlc-android/res/layout/onboarding_scanning.xml

@ -56,21 +56,33 @@
android:checked="true" android:checked="true"
android:text="@string/onboarding_scanning_enable" android:text="@string/onboarding_scanning_enable"
android:textSize="18sp" android:textSize="18sp"
app:layout_constraintBottom_toTopOf="@+id/scanningFolderCheckbox" app:layout_constraintBottom_toTopOf="@+id/autoScanningCheckbox"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4" app:layout_constraintTop_toBottomOf="@+id/textView4"
app:layout_constraintVertical_chainStyle="packed" /> app:layout_constraintVertical_chainStyle="packed" />
<CheckBox <CheckBox
android:id="@+id/scanningFolderCheckbox" android:id="@+id/autoScanningCheckbox"
android:checked="true"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="@string/auto_rescan_summary"
app:layout_constraintTop_toBottomOf="@+id/scanningEnableSwitch"
app:layout_constraintBottom_toTopOf="@+id/scanningFolderCheckbox"
tools:layout_editor_absoluteX="8dp" />
<CheckBox
android:id="@+id/scanningFolderCheckbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:text="@string/onboarding_scan_customize" android:text="@string/onboarding_scan_customize"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/scanningEnableSwitch" app:layout_constraintTop_toBottomOf="@+id/autoScanningCheckbox"
tools:layout_editor_absoluteX="8dp" /> tools:layout_editor_absoluteX="8dp" />

33
application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingFragmentPagerAdapter.kt

@ -7,46 +7,29 @@ import androidx.viewpager.widget.PagerAdapter
class OnboardingFragmentPagerAdapter(private val fragmentManager: FragmentManager, private var count: Int) : FragmentStatePagerAdapter(fragmentManager) { class OnboardingFragmentPagerAdapter(private val fragmentManager: FragmentManager, private var count: Int) : FragmentStatePagerAdapter(fragmentManager) {
private var fragments = ArrayList<Fragment>() private var fragments = ArrayList<Fragment>()
private var folderFragment: OnboardingFoldersFragment = OnboardingFoldersFragment.newInstance() private var folderFragment: OnboardingFoldersFragment = OnboardingFoldersFragment.newInstance()
init { init {
fragments.add(OnboardingWelcomeFragment.newInstance()) fragments.add(OnboardingWelcomeFragment.newInstance())
val onboardingScanningFragment = OnboardingScanningFragment.newInstance() fragments.add(OnboardingScanningFragment.newInstance())
fragments.add(onboardingScanningFragment)
fragments.add(OnboardingThemeFragment.newInstance()) fragments.add(OnboardingThemeFragment.newInstance())
} }
fun onCustomizedChanged(customizeEnabled: Boolean) { fun onCustomizedChanged(customizeEnabled: Boolean) {
if (customizeEnabled) { count = if (customizeEnabled) {
fragments.add(2, folderFragment) fragments.add(2, folderFragment)
count = 4 4
} else { } else {
fragments.remove(folderFragment) fragments.remove(folderFragment)
count = 3 3
} }
notifyDataSetChanged() notifyDataSetChanged()
} }
override fun getItemPosition(obj: Any)= PagerAdapter.POSITION_NONE
override fun getItemPosition(obj: Any): Int { override fun getItem(position: Int) = fragments[position]
return PagerAdapter.POSITION_NONE
}
override fun getItem(position: Int): Fragment {
return fragments[position]
}
override fun getCount(): Int {
return count
}
} override fun getCount() = count
}

38
application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingScanningFragment.kt

@ -4,50 +4,39 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.CheckBox
import android.widget.Switch
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import org.videolan.vlc.R import androidx.fragment.app.activityViewModels
import kotlinx.android.synthetic.main.onboarding_scanning.*
import org.videolan.tools.KEY_MEDIALIBRARY_SCAN import org.videolan.tools.KEY_MEDIALIBRARY_SCAN
import org.videolan.tools.ML_SCAN_OFF import org.videolan.tools.ML_SCAN_OFF
import org.videolan.tools.ML_SCAN_ON import org.videolan.tools.ML_SCAN_ON
import org.videolan.tools.Settings import org.videolan.tools.Settings
import org.videolan.vlc.R
class OnboardingScanningFragment : Fragment() { class OnboardingScanningFragment : Fragment() {
private lateinit var scanningFolderCheckbox: CheckBox
private lateinit var scanningEnableSwitch: Switch
lateinit var onScanningCustomizeChangedListener: IOnScanningCustomizeChangedListener lateinit var onScanningCustomizeChangedListener: IOnScanningCustomizeChangedListener
private lateinit var viewModel: OnboardingViewModel private val viewModel: OnboardingViewModel by activityViewModels()
private val preferences by lazy { Settings.getInstance(requireActivity()) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = getOnboardingModel()
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.onboarding_scanning, container, false) return inflater.inflate(R.layout.onboarding_scanning, container, false)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
scanningFolderCheckbox = view.findViewById(R.id.scanningFolderCheckbox)
scanningEnableSwitch = view.findViewById(R.id.scanningEnableSwitch)
super.onViewCreated(view, savedInstanceState)
}
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState) super.onActivityCreated(savedInstanceState)
scanningEnableSwitch.setOnCheckedChangeListener { _, isChecked -> scanningEnableSwitch.setOnCheckedChangeListener { _, isChecked ->
scanningFolderCheckbox.visibility = if (isChecked) View.VISIBLE else View.GONE scanningFolderCheckbox.visibility = if (isChecked) View.VISIBLE else View.GONE
val prefs = Settings.getInstance(requireActivity()) autoScanningCheckbox.isChecked = isChecked
prefs.edit().putInt(KEY_MEDIALIBRARY_SCAN, if (isChecked) ML_SCAN_ON else ML_SCAN_OFF).apply() preferences.edit().putInt(KEY_MEDIALIBRARY_SCAN, if (isChecked) ML_SCAN_ON else ML_SCAN_OFF).apply()
viewModel.scanStorages = isChecked viewModel.scanStorages = isChecked
scanningFolderCheckbox.isChecked = false scanningFolderCheckbox.isChecked = false
} }
autoScanningCheckbox.setOnCheckedChangeListener { _, isChecked ->
preferences.edit().putBoolean("auto_rescan", isChecked).apply()
}
onScanningCustomizeChangedListener = requireActivity() as IOnScanningCustomizeChangedListener onScanningCustomizeChangedListener = requireActivity() as IOnScanningCustomizeChangedListener
scanningFolderCheckbox.isChecked = viewModel.customizeMediaFolders scanningFolderCheckbox.isChecked = viewModel.customizeMediaFolders
@ -59,12 +48,9 @@ class OnboardingScanningFragment : Fragment() {
if (::onScanningCustomizeChangedListener.isInitialized) { if (::onScanningCustomizeChangedListener.isInitialized) {
onScanningCustomizeChangedListener.onCustomizedChanged(isChecked) onScanningCustomizeChangedListener.onCustomizedChanged(isChecked)
} }
} }
} }
companion object { companion object {
fun newInstance(): OnboardingScanningFragment { fun newInstance(): OnboardingScanningFragment {
return OnboardingScanningFragment() return OnboardingScanningFragment()
@ -74,4 +60,4 @@ class OnboardingScanningFragment : Fragment() {
interface IOnScanningCustomizeChangedListener { interface IOnScanningCustomizeChangedListener {
fun onCustomizedChanged(customizeEnabled: Boolean) fun onCustomizedChanged(customizeEnabled: Boolean)
} }

14
application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingThemeFragment.kt

@ -1,26 +1,20 @@
package org.videolan.vlc.gui.onboarding package org.videolan.vlc.gui.onboarding
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.CompoundButton
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import kotlinx.android.synthetic.main.onboarding_theme.* import kotlinx.android.synthetic.main.onboarding_theme.*
import org.videolan.vlc.R
import org.videolan.resources.AndroidDevices import org.videolan.resources.AndroidDevices
import org.videolan.vlc.R
class OnboardingThemeFragment : Fragment(), View.OnClickListener { class OnboardingThemeFragment : Fragment(), View.OnClickListener {
private lateinit var viewModel: OnboardingViewModel private val viewModel: OnboardingViewModel by activityViewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = getOnboardingModel()
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.onboarding_theme, container, false) return inflater.inflate(R.layout.onboarding_theme, container, false)
@ -62,4 +56,4 @@ class OnboardingThemeFragment : Fragment(), View.OnClickListener {
companion object { companion object {
fun newInstance() = OnboardingThemeFragment() fun newInstance() = OnboardingThemeFragment()
} }
} }

Loading…
Cancel
Save