Skip to content

Commit

Permalink
Started with #100, separation of code to ViewModels for each Fragment
Browse files Browse the repository at this point in the history
  • Loading branch information
basshelal committed Jul 17, 2019
1 parent c740842 commit 359835d
Show file tree
Hide file tree
Showing 12 changed files with 184 additions and 90 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,15 @@ import uk.whitecrescent.waqti.frontend.FragmentNavigation
import uk.whitecrescent.waqti.frontend.PREVIOUS_FRAGMENT
import uk.whitecrescent.waqti.frontend.appearance.WaqtiColor
import uk.whitecrescent.waqti.frontend.fragments.parents.WaqtiCreateFragment
import uk.whitecrescent.waqti.frontend.fragments.parents.WaqtiCreateFragmentViewModel
import uk.whitecrescent.waqti.getViewModel
import uk.whitecrescent.waqti.invoke
import uk.whitecrescent.waqti.requestFocusAndShowKeyboard

class CreateBoardFragment : WaqtiCreateFragment<Board>() {

override lateinit var viewModel: CreateBoardFragmentViewModel

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_create_board, container, false)
Expand All @@ -32,6 +36,8 @@ class CreateBoardFragment : WaqtiCreateFragment<Board>() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)

viewModel = getViewModel()

setUpViews()
}

Expand All @@ -43,7 +49,7 @@ class CreateBoardFragment : WaqtiCreateFragment<Board>() {

}

private inline fun setUpAppBar() {
override fun setUpAppBar() {
mainActivity.appBar {
backgroundColor = WaqtiColor.TRANSPARENT.toAndroidColor
elevation = 0F
Expand Down Expand Up @@ -87,3 +93,11 @@ class CreateBoardFragment : WaqtiCreateFragment<Board>() {
}

}

class CreateBoardFragmentViewModel : WaqtiCreateFragmentViewModel<Board>() {

override fun createElement(fromFragment: Board): Board {
TODO()
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,16 @@ import uk.whitecrescent.waqti.frontend.FragmentNavigation
import uk.whitecrescent.waqti.frontend.PREVIOUS_FRAGMENT
import uk.whitecrescent.waqti.frontend.appearance.WaqtiColor
import uk.whitecrescent.waqti.frontend.fragments.parents.WaqtiCreateFragment
import uk.whitecrescent.waqti.frontend.fragments.parents.WaqtiCreateFragmentViewModel
import uk.whitecrescent.waqti.getViewModel
import uk.whitecrescent.waqti.invoke
import uk.whitecrescent.waqti.requestFocusAndShowKeyboard
import uk.whitecrescent.waqti.scrollToEnd

class CreateListFragment : WaqtiCreateFragment<TaskList>() {

override lateinit var viewModel: CreateListFragmentViewModel

var boardID: ID = 0L

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
Expand All @@ -38,6 +42,8 @@ class CreateListFragment : WaqtiCreateFragment<TaskList>() {

boardID = mainActivityVM.boardID

viewModel = getViewModel()

setUpViews()

}
Expand All @@ -50,7 +56,7 @@ class CreateListFragment : WaqtiCreateFragment<TaskList>() {

}

private inline fun setUpAppBar() {
override fun setUpAppBar() {
mainActivity.appBar {
backgroundColor = WaqtiColor.TRANSPARENT.toAndroidColor
elevation = 0F
Expand Down Expand Up @@ -97,3 +103,11 @@ class CreateListFragment : WaqtiCreateFragment<TaskList>() {
mainActivity.supportFragmentManager.popBackStack()
}
}

class CreateListFragmentViewModel : WaqtiCreateFragmentViewModel<TaskList>() {

override fun createElement(fromFragment: TaskList): TaskList {
TODO()
}

}
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:Suppress("NOTHING_TO_INLINE")

package uk.whitecrescent.waqti.frontend.fragments.create

import android.annotation.SuppressLint
Expand All @@ -7,7 +9,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.lifecycle.ViewModel
import kotlinx.android.synthetic.main.fragment_create_task.*
import kotlinx.android.synthetic.main.property_card.view.*
import org.jetbrains.anko.backgroundColor
Expand All @@ -26,6 +27,7 @@ import uk.whitecrescent.waqti.frontend.appearance.WaqtiColor
import uk.whitecrescent.waqti.frontend.customview.dialogs.DateTimePickerDialog
import uk.whitecrescent.waqti.frontend.customview.dialogs.EditTextDialog
import uk.whitecrescent.waqti.frontend.fragments.parents.WaqtiCreateFragment
import uk.whitecrescent.waqti.frontend.fragments.parents.WaqtiCreateFragmentViewModel
import uk.whitecrescent.waqti.getViewModel
import uk.whitecrescent.waqti.invoke
import uk.whitecrescent.waqti.isNotDefault
Expand All @@ -34,10 +36,9 @@ import uk.whitecrescent.waqti.requestFocusAndShowKeyboard
import uk.whitecrescent.waqti.rfcFormatted
import uk.whitecrescent.waqti.smoothScrollToEnd

@Suppress("NOTHING_TO_INLINE")
class CreateTaskFragment : WaqtiCreateFragment<Task>() {

private lateinit var viewModel: CreateTaskFragmentViewModel
override lateinit var viewModel: CreateTaskFragmentViewModel
private var boardID: ID = 0L
private var listID: ID = 0L

Expand Down Expand Up @@ -73,7 +74,7 @@ class CreateTaskFragment : WaqtiCreateFragment<Task>() {

}

private inline fun setUpAppBar() {
override fun setUpAppBar() {
mainActivity.appBar {
backgroundColor = WaqtiColor.TRANSPARENT.toAndroidColor
elevation = 0F
Expand Down Expand Up @@ -169,11 +170,7 @@ class CreateTaskFragment : WaqtiCreateFragment<Task>() {
}

override fun createElement(): Task {
return Task(mainActivity.appBar.editTextView.text.toString()).apply {
setTime()
setDeadline()
setDescription()
}
return viewModel.createElement(Task(mainActivity.appBar.editTextView.text.toString()))
}

private inline fun hideProperties() {
Expand Down Expand Up @@ -217,10 +214,44 @@ class CreateTaskFragment : WaqtiCreateFragment<Task>() {

}

class CreateTaskFragmentViewModel : ViewModel() {
class CreateTaskFragmentViewModel : WaqtiCreateFragmentViewModel<Task>() {

var taskTime: Time = DEFAULT_TIME
var taskDeadline: Time = DEFAULT_TIME
var taskDescription: String = DEFAULT_DESCRIPTION

override fun createElement(fromFragment: Task): Task {
return fromFragment.apply {
setTime()
setDeadline()
setDescription()
}
}

private inline fun Task.setTime() {
taskTime.also {
if (it.isNotDefault) {
//if (taskTime_propertyCard.constraint_checkBox.isChecked) setTimeConstraintValue (it) else
setTimePropertyValue(it)
}
}
}

private inline fun Task.setDeadline() {
taskDeadline.also {
if (it.isNotDefault) {
//if (taskDeadline_propertyCard.constraint_checkBox.isChecked) setDeadlineConstraintValue(it) else
setDeadlinePropertyValue(it)
}
}
}

private inline fun Task.setDescription() {
taskDescription.also {
if (it.isNotDefault) setDescriptionValue(it)
}
}

}


Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,6 @@ class AboutFragment : WaqtiFragment() {
}

override fun setUpViews() {
mainActivity.appBar {
elevation = DEFAULT_ELEVATION
leftImageBack()
editTextView {
removeAllTextChangedListeners()
isEditable = false
text = SpannableStringBuilder(getString(R.string.about))
}
rightImageView.isInvisible = true
}
mainActivity.resetColorScheme()
val view = AboutPage(mainActivity)
.isRTL(false)

Expand Down Expand Up @@ -98,6 +87,20 @@ class AboutFragment : WaqtiFragment() {
})
}

override fun setUpAppBar() {
mainActivity.appBar {
elevation = DEFAULT_ELEVATION
leftImageBack()
editTextView {
removeAllTextChangedListeners()
isEditable = false
text = SpannableStringBuilder(getString(R.string.about))
}
rightImageView.isInvisible = true
}
mainActivity.resetColorScheme()
}

override fun finish() {

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,18 +41,7 @@ class SettingsFragment : WaqtiFragment() {

@SuppressLint("SetTextI18n")
override fun setUpViews() {
mainActivity.appBar {
elevation = DEFAULT_ELEVATION
leftImageBack()
editTextView {
textColor = WaqtiColor.WAQTI_WHITE.toAndroidColor
removeAllTextChangedListeners()
isEditable = false
text = SpannableStringBuilder(getString(R.string.settings))
}
rightImageView.isInvisible = true
}
mainActivity.resetColorScheme()
setUpAppBar()

taskListWidthSetting_seekBar {

Expand Down Expand Up @@ -139,6 +128,21 @@ class SettingsFragment : WaqtiFragment() {

}

override fun setUpAppBar() {
mainActivity.appBar {
elevation = DEFAULT_ELEVATION
leftImageBack()
editTextView {
textColor = WaqtiColor.WAQTI_WHITE.toAndroidColor
removeAllTextChangedListeners()
isEditable = false
text = SpannableStringBuilder(getString(R.string.settings))
}
rightImageView.isInvisible = true
}
mainActivity.resetColorScheme()
}

@SuppressLint("SetTextI18n")
private inline fun resetSettingsToDefaults() {
taskListWidthSetting_seekBar {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,21 @@ import uk.whitecrescent.waqti.backend.Cacheable

abstract class WaqtiCreateFragment<E : Cacheable> : WaqtiFragment(true) {

protected abstract val viewModel: WaqtiCreateFragmentViewModel<E>

protected abstract fun createElement(): E

}

abstract class WaqtiCreateFragmentViewModel<E : Cacheable> : WaqtiFragmentViewModel() {

/**
* Create the element that this [WaqtiCreateFragment] is in charge of creating.
*
* Ideally this function will take in a created [E] already set up with options and parameters
* from the fragment, this is the [fromFragment] parameter. Then on that [E] this function
* can then further perform any changes to it.
*/
abstract fun createElement(fromFragment: E): E

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package uk.whitecrescent.waqti.frontend.fragments.parents

import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModel
import androidx.transition.TransitionInflater
import uk.whitecrescent.waqti.R
import uk.whitecrescent.waqti.frontend.MainActivity
Expand Down Expand Up @@ -44,6 +45,10 @@ abstract class WaqtiFragment(val animate: Boolean = true) : Fragment() {

protected abstract fun setUpViews()

protected abstract fun setUpAppBar()

protected abstract fun finish()

}
}

abstract class WaqtiFragmentViewModel : ViewModel()
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
package uk.whitecrescent.waqti.frontend.fragments.parents

import uk.whitecrescent.waqti.backend.Cacheable

abstract class WaqtiViewFragment<E : Cacheable>(animate: Boolean = true) : WaqtiFragment(animate) {

override fun setUpViews() {}

protected abstract fun setUpViews(element: E)

}
abstract class WaqtiViewFragment(animate: Boolean = true) : WaqtiFragment(animate)
Loading

0 comments on commit 359835d

Please sign in to comment.