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:text="@string/onboarding_scanning_enable"
android:textSize="18sp"
app:layout_constraintBottom_toTopOf="@+id/scanningFolderCheckbox"
app:layout_constraintBottom_toTopOf="@+id/autoScanningCheckbox"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
app:layout_constraintVertical_chainStyle="packed" />
<CheckBox
android:id="@+id/scanningFolderCheckbox"
android:id="@+id/autoScanningCheckbox"
android:checked="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
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:text="@string/onboarding_scan_customize"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/scanningEnableSwitch"
app:layout_constraintTop_toBottomOf="@+id/autoScanningCheckbox"
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) {
private var fragments = ArrayList<Fragment>()
private var folderFragment: OnboardingFoldersFragment = OnboardingFoldersFragment.newInstance()
init {
fragments.add(OnboardingWelcomeFragment.newInstance())
val onboardingScanningFragment = OnboardingScanningFragment.newInstance()
fragments.add(onboardingScanningFragment)
fragments.add(OnboardingScanningFragment.newInstance())
fragments.add(OnboardingThemeFragment.newInstance())
}
fun onCustomizedChanged(customizeEnabled: Boolean) {
if (customizeEnabled) {
count = if (customizeEnabled) {
fragments.add(2, folderFragment)
count = 4
4
} else {
fragments.remove(folderFragment)
count = 3
3
}
notifyDataSetChanged()
}
override fun getItemPosition(obj: Any)= PagerAdapter.POSITION_NONE
override fun getItemPosition(obj: Any): Int {
return PagerAdapter.POSITION_NONE
}
override fun getItem(position: Int): Fragment {
return fragments[position]
}
override fun getCount(): Int {
return count
}
override fun getItem(position: Int) = fragments[position]
}
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.View
import android.view.ViewGroup
import android.widget.CheckBox
import android.widget.Switch
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.ML_SCAN_OFF
import org.videolan.tools.ML_SCAN_ON
import org.videolan.tools.Settings
import org.videolan.vlc.R
class OnboardingScanningFragment : Fragment() {
private lateinit var scanningFolderCheckbox: CheckBox
private lateinit var scanningEnableSwitch: Switch
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? {
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?) {
super.onActivityCreated(savedInstanceState)
scanningEnableSwitch.setOnCheckedChangeListener { _, isChecked ->
scanningFolderCheckbox.visibility = if (isChecked) View.VISIBLE else View.GONE
val prefs = Settings.getInstance(requireActivity())
prefs.edit().putInt(KEY_MEDIALIBRARY_SCAN, if (isChecked) ML_SCAN_ON else ML_SCAN_OFF).apply()
autoScanningCheckbox.isChecked = isChecked
preferences.edit().putInt(KEY_MEDIALIBRARY_SCAN, if (isChecked) ML_SCAN_ON else ML_SCAN_OFF).apply()
viewModel.scanStorages = isChecked
scanningFolderCheckbox.isChecked = false
}
autoScanningCheckbox.setOnCheckedChangeListener { _, isChecked ->
preferences.edit().putBoolean("auto_rescan", isChecked).apply()
}
onScanningCustomizeChangedListener = requireActivity() as IOnScanningCustomizeChangedListener
scanningFolderCheckbox.isChecked = viewModel.customizeMediaFolders
@ -59,12 +48,9 @@ class OnboardingScanningFragment : Fragment() {
if (::onScanningCustomizeChangedListener.isInitialized) {
onScanningCustomizeChangedListener.onCustomizedChanged(isChecked)
}
}
}
companion object {
fun newInstance(): OnboardingScanningFragment {
return OnboardingScanningFragment()
@ -74,4 +60,4 @@ class OnboardingScanningFragment : Fragment() {
interface IOnScanningCustomizeChangedListener {
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
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.CompoundButton
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import kotlinx.android.synthetic.main.onboarding_theme.*
import org.videolan.vlc.R
import org.videolan.resources.AndroidDevices
import org.videolan.vlc.R
class OnboardingThemeFragment : Fragment(), View.OnClickListener {
private lateinit var viewModel: OnboardingViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = getOnboardingModel()
}
private val viewModel: OnboardingViewModel by activityViewModels()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.onboarding_theme, container, false)
@ -62,4 +56,4 @@ class OnboardingThemeFragment : Fragment(), View.OnClickListener {
companion object {
fun newInstance() = OnboardingThemeFragment()
}
}
}

Loading…
Cancel
Save