Adapted PlanFragment into a superclass inherited by GeneralPlanFragment and PersonalPlanFragment, changed text layout attribute for dialogues

This commit is contained in:
Deniz Düzgören
2019-07-22 19:10:25 +02:00
parent d3d727d2ae
commit 0576ca0d1a
14 changed files with 112 additions and 103 deletions
@@ -290,8 +290,7 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte
sdf.applyPattern(newDateFormat) sdf.applyPattern(newDateFormat)
val sb = StringBuilder() val sb = StringBuilder()
val lastupdated = sb.append(mContext.getText(R.string.lastupdatedK)).append(sdf.format(d)).toString() val lastupdated = sb.append(mContext.getText(R.string.lastupdatedK)).append(sdf.format(d)).toString()
Snackbar.make(snackbarview, lastupdated, Snackbar.LENGTH_LONG) Snackbar.make(snackbarview, lastupdated, Snackbar.LENGTH_LONG).show()
.setAction("Action", null).show()
} }
} }
} }
@@ -302,8 +301,7 @@ class DataFetcher(isplan: Boolean, ismenu: Boolean, isjobservice: Boolean, conte
pullToRefresh.isRefreshing = false pullToRefresh.isRefreshing = false
} catch (ignored: Exception) {} } catch (ignored: Exception) {}
val snackbarview = v.findViewById<View>(R.id.coordination) val snackbarview = v.findViewById<View>(R.id.coordination)
Snackbar.make(snackbarview, mContext.getText(R.string.nointernet), Snackbar.LENGTH_LONG) Snackbar.make(snackbarview, mContext.getText(R.string.nointernet), Snackbar.LENGTH_LONG).show()
.setAction("Action", null).show()
} }
} }
return null return null
@@ -0,0 +1,18 @@
package com.denizd.substitutionplan
import android.os.Bundle
import android.view.View
import androidx.lifecycle.Observer
class GeneralPlanFragment : PlanFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
substViewModel.allSubst?.observe(this, Observer<List<Subst>> {
mAdapter.setSubst(it)
recyclerView.scheduleLayoutAnimation()
bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo))
})
}
}
@@ -244,11 +244,11 @@ class Main : AppCompatActivity(R.layout.activity_main) {
} }
lateinit var fragment: Fragment lateinit var fragment: Fragment
if (prefs.getBoolean("defaultPersonalised", false)) { if (prefs.getBoolean("defaultPersonalised", false)) {
fragment = mPlanFragment(true) fragment = PersonalPlanFragment()
bottomNav.selectedItemId = R.id.personal bottomNav.selectedItemId = R.id.personal
toolbarTxt.text = userPlan toolbarTxt.text = userPlan
} else { } else {
fragment = mPlanFragment(false) fragment = GeneralPlanFragment()
bottomNav.selectedItemId = R.id.plan bottomNav.selectedItemId = R.id.plan
toolbarTxt.text = getString(R.string.app_name) toolbarTxt.text = getString(R.string.app_name)
} }
@@ -259,11 +259,11 @@ class Main : AppCompatActivity(R.layout.activity_main) {
lateinit var fragment: Fragment lateinit var fragment: Fragment
when (item.itemId) { when (item.itemId) {
R.id.plan -> { R.id.plan -> {
fragment = mPlanFragment(false) fragment = GeneralPlanFragment()
toolbarTxt.text = getString(R.string.app_name) toolbarTxt.text = getString(R.string.app_name)
} }
R.id.personal -> { R.id.personal -> {
fragment = mPlanFragment(true) fragment = PersonalPlanFragment()
toolbarTxt.text = userPlan toolbarTxt.text = userPlan
} }
R.id.menu -> { R.id.menu -> {
@@ -327,14 +327,6 @@ class Main : AppCompatActivity(R.layout.activity_main) {
} }
} }
private fun mPlanFragment(ispersonal: Boolean): PlanFragment {
val f = PlanFragment()
val bdl = Bundle(1)
bdl.putBoolean("ispersonal", ispersonal)
f.arguments = bdl
return f
}
private fun loadFragment(fragment: Fragment): Boolean { private fun loadFragment(fragment: Fragment): Boolean {
supportFragmentManager.beginTransaction().replace(R.id.fragment_container, fragment).commit() supportFragmentManager.beginTransaction().replace(R.id.fragment_container, fragment).commit()
return true return true
@@ -0,0 +1,58 @@
package com.denizd.substitutionplan
import android.os.Bundle
import android.view.View
import androidx.lifecycle.Observer
class PersonalPlanFragment : PlanFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
smileydown = view.findViewById(R.id.smileydown)
smileydowntext = view.findViewById(R.id.smileydowntext)
linearsmiley = view.findViewById(R.id.linearsmiley)
substViewModel.allSubst?.observe(this, Observer<List<Subst>> {
planCardList.clear()
smileydown.visibility = View.GONE
smileydowntext.visibility = View.GONE
linearsmiley.visibility = View.GONE
persPlanEmpty = true
recyclerView.visibility = View.VISIBLE
for (i in 0 until it.size) {
if (prefs.getString("courses", "").isEmpty() && prefs.getString("classes", "").isNotEmpty()) {
if (it[i].group.isNotEmpty() && !it[i].group.equals("")) {
if (prefs.getString("classes", "").contains(it[i].group) || it[i].group.contains(prefs.getString("classes", "").toString())) {
planCardList.add(it[i])
persPlanEmpty = false
}
}
} else if (prefs.getString("classes", "").isNotEmpty() && prefs.getString("courses", "").isNotEmpty()) {
if (!it[i].group.equals("") && !it[i].course.equals("")) {
if (prefs.getString("courses", "").contains(it[i].course)) {
if (prefs.getString("classes", "").contains(it[i].group) || it[i].group.contains(prefs.getString("classes", "").toString())) {
planCardList.add(it[i])
persPlanEmpty = false
}
}
}
}
}
planCardList.sortWith(Comparator { lhs, rhs -> Integer.compare(rhs.priority, lhs.priority) })
recyclerView.scheduleLayoutAnimation()
mAdapter.setSubst(planCardList)
handler.postDelayed({
if (persPlanEmpty) {
recyclerView.visibility = View.GONE
smileydown.visibility = View.VISIBLE
smileydowntext.visibility = View.VISIBLE
linearsmiley.visibility = View.VISIBLE
linearsmiley.scheduleLayoutAnimation()
}
}, 64)
})
}
}
@@ -18,23 +18,22 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
class PlanFragment : Fragment(R.layout.plan) { open class PlanFragment : Fragment(R.layout.plan) {
private lateinit var recyclerView: RecyclerView lateinit var recyclerView: RecyclerView
private lateinit var mAdapter: CardAdapter lateinit var mAdapter: CardAdapter
private lateinit var layoutManager: GridLayoutManager private lateinit var layoutManager: GridLayoutManager
private val planCardList = ArrayList<Subst>() val planCardList = ArrayList<Subst>()
private lateinit var bottomSheetText: TextView lateinit var bottomSheetText: TextView
private lateinit var substViewModel: SubstViewModel lateinit var substViewModel: SubstViewModel
private lateinit var mContext: Context lateinit var mContext: Context
private lateinit var prefs: SharedPreferences lateinit var prefs: SharedPreferences
private lateinit var edit: SharedPreferences.Editor lateinit var edit: SharedPreferences.Editor
private var personal = false
private lateinit var smileydown: TextView lateinit var smileydown: TextView
private lateinit var smileydowntext: TextView lateinit var smileydowntext: TextView
private lateinit var linearsmiley: LinearLayout lateinit var linearsmiley: LinearLayout
private var persPlanEmpty: Boolean = true var persPlanEmpty: Boolean = true
private val handler = Handler() val handler = Handler()
override fun onAttach(context: Context) { override fun onAttach(context: Context) {
super.onAttach(context) super.onAttach(context)
@@ -62,16 +61,10 @@ class PlanFragment : Fragment(R.layout.plan) {
recyclerView.layoutManager = layoutManager recyclerView.layoutManager = layoutManager
} }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
personal = arguments!!.getBoolean("ispersonal")
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
val pullToRefresh = view.findViewById<SwipeRefreshLayout>(R.id.pullToRefresh) val pullToRefresh = view.findViewById<SwipeRefreshLayout>(R.id.pullToRefresh)
bottomSheetText = view.rootView.findViewById(R.id.bottom_sheet_text) bottomSheetText = view.rootView.findViewById(R.id.bottom_sheet_text)
bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo)) bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo))
recyclerView = view.findViewById(R.id.linearRecycler) recyclerView = view.findViewById(R.id.linearRecycler)
@@ -96,12 +89,6 @@ class PlanFragment : Fragment(R.layout.plan) {
mAdapter = CardAdapter(planCardList) mAdapter = CardAdapter(planCardList)
recyclerView.adapter = mAdapter recyclerView.adapter = mAdapter
if (personal) {
smileydown = view.findViewById(R.id.smileydown)
smileydowntext = view.findViewById(R.id.smileydowntext)
linearsmiley = view.findViewById(R.id.linearsmiley)
}
if (prefs.getInt("firstTimeOpening", 0) == 2) { if (prefs.getInt("firstTimeOpening", 0) == 2) {
if (!prefs.getBoolean("notif", false)) { if (!prefs.getBoolean("notif", false)) {
pullToRefresh.isRefreshing = true pullToRefresh.isRefreshing = true
@@ -116,52 +103,6 @@ class PlanFragment : Fragment(R.layout.plan) {
bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo)) bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo))
} }
substViewModel = ViewModelProviders.of(this).get(SubstViewModel::class.java) substViewModel = ViewModelProviders.of(this).get(SubstViewModel::class.java)
substViewModel.allSubst?.observe(this, Observer<List<Subst>> {
if (personal) {
planCardList.clear()
smileydown.visibility = View.GONE
smileydowntext.visibility = View.GONE
linearsmiley.visibility = View.GONE
persPlanEmpty = true
recyclerView.visibility = View.VISIBLE
for (i in 0 until it.size) {
if (prefs.getString("courses", "").isEmpty() && prefs.getString("classes", "").isNotEmpty()) {
if (it[i].group.isNotEmpty() && !it[i].group.equals("")) {
if (prefs.getString("classes", "").contains(it[i].group) || it[i].group.contains(prefs.getString("classes", "").toString())) {
planCardList.add(it[i])
persPlanEmpty = false
}
}
} else if (prefs.getString("classes", "").isNotEmpty() && prefs.getString("courses", "").isNotEmpty()) {
if (!it[i].group.equals("") && !it[i].course.equals("")) {
if (prefs.getString("courses", "").contains(it[i].course)) {
if (prefs.getString("classes", "").contains(it[i].group) || it[i].group.contains(prefs.getString("classes", "").toString())) {
planCardList.add(it[i])
persPlanEmpty = false
}
}
}
}
planCardList.sortWith(Comparator { lhs, rhs -> Integer.compare(rhs.priority, lhs.priority) })
recyclerView.scheduleLayoutAnimation()
mAdapter.setSubst(planCardList)
handler.postDelayed({
if (persPlanEmpty) {
recyclerView.visibility = View.GONE
smileydown.visibility = View.VISIBLE
smileydowntext.visibility = View.VISIBLE
linearsmiley.visibility = View.VISIBLE
linearsmiley.scheduleLayoutAnimation()
}
}, 64)
}
} else {
mAdapter.setSubst(it)
recyclerView.scheduleLayoutAnimation()
}
bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo))
})
pullToRefresh.setOnRefreshListener { pullToRefresh.setOnRefreshListener {
pullToRefresh.isRefreshing = true pullToRefresh.isRefreshing = true
@@ -200,7 +200,7 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen
"\n • jsoup HTML parser © 2009-2018 Jonathan Hedley, licensed under the open source MIT Licence" + "\n • jsoup HTML parser © 2009-2018 Jonathan Hedley, licensed under the open source MIT Licence" +
"\n\nFont:\n • Manrope © 2018-2019 Michael Sharanda, licensed under the SIL Open Font Licence 1.1" + "\n\nFont:\n • Manrope © 2018-2019 Michael Sharanda, licensed under the SIL Open Font Licence 1.1" +
"\n\nIcons:\n • bqlqn\n • fjstudio\n • Freepik\n • Smashicons\n • © 2013-2019 Freepik Company S.L., licensed under Creative Commons BY 3.0" + "\n\nIcons:\n • bqlqn\n • fjstudio\n • Freepik\n • Smashicons\n • © 2013-2019 Freepik Company S.L., licensed under Creative Commons BY 3.0" +
"\n\nMarketing & Publishing:\n • Leon Becker\n • Alex Lick\n • Batuhan Özcan\n • Erich Kerkesner") "\n\nAdditional help:\n • Leon Becker\n • Alex Lick\n • Batuhan Özcan\n • Erich Kerkesner")
} }
R.id.btnTerms -> { R.id.btnTerms -> {
createDialog("Terms & Conditions", "These terms automatically apply to anyone using this app - therefore, please make sure to read them carefully before using the app. Copying or modifying parts of the app or the entire app, as well as creating derivative versions, is prohibited without permission. This app is intellectual property of the developer.\n" + createDialog("Terms & Conditions", "These terms automatically apply to anyone using this app - therefore, please make sure to read them carefully before using the app. Copying or modifying parts of the app or the entire app, as well as creating derivative versions, is prohibited without permission. This app is intellectual property of the developer.\n" +
+3 -1
View File
@@ -21,7 +21,9 @@
app:popupTheme="@style/AppThemeLight.PopupOverlay" app:popupTheme="@style/AppThemeLight.PopupOverlay"
app:titleTextColor="@color/accent" app:titleTextColor="@color/accent"
app:contentInsetStart="0dp" app:contentInsetStart="0dp"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed"> app:layout_scrollFlags="scroll|enterAlwaysCollapsed"
app:layout_collapseMode="pin"
android:layout_gravity="bottom">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
+2 -1
View File
@@ -15,7 +15,8 @@
android:textSize="22sp" android:textSize="22sp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:textColor="@color/datingPink" android:textColor="@color/datingPink"
android:text="@string/dating"/> android:text="@string/dating"
android:textAlignment="center"/>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
@@ -14,7 +14,8 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:textSize="22sp" android:textSize="22sp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:textColor="@color/textcolor"/> android:textColor="@color/textcolor"
android:textAlignment="center"/>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
+2 -1
View File
@@ -14,7 +14,8 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:textSize="22sp" android:textSize="22sp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:textColor="@color/textcolor"/> android:textColor="@color/textcolor"
android:textAlignment="center"/>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="wrap_content" android:layout_width="wrap_content"
+2 -1
View File
@@ -12,7 +12,8 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:textSize="22sp" android:textSize="22sp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:textColor="@color/textcolor"/> android:textColor="@color/textcolor"
android:textAlignment="center"/>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
+2 -1
View File
@@ -12,7 +12,8 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:textSize="22sp" android:textSize="22sp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:textColor="@color/textcolor"/> android:textColor="@color/textcolor"
android:textAlignment="center"/>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="wrap_content" android:layout_width="wrap_content"
+2 -1
View File
@@ -12,7 +12,8 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:textSize="22sp" android:textSize="22sp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:textColor="@color/textcolor"/> android:textColor="@color/textcolor"
android:textAlignment="center"/>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="wrap_content" android:layout_width="wrap_content"
-6
View File
@@ -123,18 +123,12 @@
<string name="courseWat">WAT</string> <string name="courseWat">WAT</string>
<string name="courseFor">Special Education</string> <string name="courseFor">Special Education</string>
<string name="courseWp">WP &amp; "Methodenstunde"</string> <string name="courseWp">WP &amp; "Methodenstunde"</string>
<string name="clearall">Clear all</string> <string name="clearall">Clear all</string>
<string name="allcolourscleared">Colours for all courses have been cleared</string> <string name="allcolourscleared">Colours for all courses have been cleared</string>
<string name="chromecompatible">No Chrome-compatible browser found</string> <string name="chromecompatible">No Chrome-compatible browser found</string>
<string name="noyoutube">YouTube app not found</string> <string name="noyoutube">YouTube app not found</string>
<string name="showinfo">Show info tab in navigation bar</string> <string name="showinfo">Show info tab in navigation bar</string>
<string name="swipeindependent">Independent of swipe gesture</string> <string name="swipeindependent">Independent of swipe gesture</string>
<string name="lastupdatedK">"Last updated: "</string> <string name="lastupdatedK">"Last updated: "</string>
<string name="darkmode2">Enables night mode</string> <string name="darkmode2">Enables night mode</string>
</resources> </resources>