Archived
Plan and personal plan now use the same Kotlin class, food fragment doesnt work properly (yet)
This commit is contained in:
@@ -48,6 +48,9 @@
|
||||
<service
|
||||
android:name=".ScheduledJobService"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
<service
|
||||
android:name=".NotificationService"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.denizd.substitutionplan
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Bundle
|
||||
import android.preference.PreferenceManager
|
||||
@@ -12,47 +13,53 @@ import com.madapps.prefrences.EasyPrefrences
|
||||
|
||||
class FoodFragment : Fragment(R.layout.food_layout) {
|
||||
|
||||
private lateinit var foodArrayList: ArrayList<Food>
|
||||
private lateinit var recyclerView: RecyclerView
|
||||
public val foodArrayList = ArrayList<Food>()
|
||||
private val mAdapter = FoodAdapter(foodArrayList)
|
||||
private lateinit var mContext: Context
|
||||
private lateinit var prefs: SharedPreferences
|
||||
// private lateinit var edit: SharedPreferences.Editor
|
||||
private lateinit var easyPrefs: EasyPrefrences
|
||||
private lateinit var foodListPopulation: ArrayList<String>
|
||||
private lateinit var recyclerView: RecyclerView
|
||||
|
||||
// override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
// return inflater.inflate(R.layout.food_layout, null)
|
||||
// } // TODO do I need this?
|
||||
override fun onAttach(context: Context) {
|
||||
super.onAttach(context)
|
||||
mContext = context
|
||||
prefs = PreferenceManager.getDefaultSharedPreferences(mContext)
|
||||
// edit = prefs.edit()
|
||||
easyPrefs = EasyPrefrences(mContext)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
val pullToRefresh = getView()?.findViewById(R.id.pullToRefresh) as SwipeRefreshLayout
|
||||
val prefs = PreferenceManager.getDefaultSharedPreferences(activity) as SharedPreferences
|
||||
// val edit = prefs.edit() as SharedPreferences.Editor
|
||||
val easyPrefs = EasyPrefrences(context!!)
|
||||
val foodListPopulation = ArrayList<String>(easyPrefs.getListString("foodListPrefs"))
|
||||
val pullToRefresh = view.findViewById<SwipeRefreshLayout>(R.id.pullToRefresh)
|
||||
foodListPopulation = ArrayList(easyPrefs.getListString("foodListPrefs"))
|
||||
|
||||
try {
|
||||
recyclerView = getView()?.findViewById(R.id.linear_food) as RecyclerView
|
||||
recyclerView = view.findViewById(R.id.linear_food)
|
||||
recyclerView.hasFixedSize()
|
||||
recyclerView.layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL ,false)
|
||||
recyclerView.layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL,false)
|
||||
recyclerView.adapter = mAdapter
|
||||
|
||||
try {
|
||||
recyclerView.removeAllViews()
|
||||
} catch (e: NullPointerException) {}
|
||||
} catch (ignored: NullPointerException) {}
|
||||
|
||||
for (i in 0..foodListPopulation.size) {
|
||||
for (i in 0 until foodListPopulation.size) {
|
||||
foodArrayList.add(Food(foodListPopulation[i]))
|
||||
mAdapter.setFood(foodArrayList)
|
||||
recyclerView.scheduleLayoutAnimation()
|
||||
}
|
||||
} catch (e: NullPointerException) {}
|
||||
} catch (ignored: NullPointerException) {}
|
||||
|
||||
if (prefs.getBoolean("autoRefresh", false)) {
|
||||
pullToRefresh.isRefreshing = true
|
||||
// coroutines
|
||||
DataFetcher(false, true, false, mContext, activity!!.application, view.rootView).execute()
|
||||
}
|
||||
|
||||
pullToRefresh.setOnRefreshListener {
|
||||
pullToRefresh.isRefreshing = true
|
||||
// coroutines
|
||||
DataFetcher(false, true, false, mContext, activity!!.application, view.rootView).execute()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class FragmentFood extends Fragment {
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
final SwipeRefreshLayout pullToRefresh = getView().findViewById(R.id.pullToRefreshFood);
|
||||
final SwipeRefreshLayout pullToRefresh = getView().findViewById(R.id.pullToRefresh);
|
||||
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
|
||||
EasyPrefrences easyPrefs = new EasyPrefrences(getContext());
|
||||
@@ -91,7 +91,7 @@ public class FragmentFood extends Fragment {
|
||||
boolean attempt = false, npe = false;
|
||||
Elements foodElements;
|
||||
Document docFood;
|
||||
final SwipeRefreshLayout pullToRefresh = getView().findViewById(R.id.pullToRefreshFood);
|
||||
final SwipeRefreshLayout pullToRefresh = getView().findViewById(R.id.pullToRefresh);
|
||||
|
||||
protected fetcher() {
|
||||
}
|
||||
|
||||
@@ -258,15 +258,15 @@ class Main : AppCompatActivity(R.layout.activity_main) {
|
||||
lateinit var fragment: Fragment
|
||||
when (item.itemId) {
|
||||
R.id.plan -> {
|
||||
fragment = FragmentPlan()
|
||||
fragment = PlanFragment(false)
|
||||
toolbarTxt.text = getString(R.string.app_name)
|
||||
}
|
||||
R.id.personal -> {
|
||||
fragment = FragmentPersonal()
|
||||
fragment = PlanFragment(true)
|
||||
toolbarTxt.text = userPlan
|
||||
}
|
||||
R.id.menu -> {
|
||||
fragment = FragmentFood()
|
||||
fragment = FoodFragment()
|
||||
toolbarTxt.text = getString(R.string.foodmenu)
|
||||
}
|
||||
R.id.openinfopanel -> {
|
||||
@@ -317,9 +317,7 @@ class Main : AppCompatActivity(R.layout.activity_main) {
|
||||
}
|
||||
appbarlayout.setExpanded(true)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun loadFragment(fragment: Fragment): Boolean {
|
||||
@@ -328,7 +326,7 @@ class Main : AppCompatActivity(R.layout.activity_main) {
|
||||
}
|
||||
|
||||
private fun notificationJob() {
|
||||
val componentName = ComponentName(this, ScheduledJobService::class.java)
|
||||
val componentName = ComponentName(this, NotificationService::class.java)
|
||||
val info = JobInfo.Builder(42, componentName)
|
||||
.setRequiresCharging(false)
|
||||
.setPersisted(true)
|
||||
|
||||
@@ -1,4 +1,50 @@
|
||||
package com.denizd.substitutionplan
|
||||
|
||||
class NotificationService {
|
||||
import android.app.job.JobParameters
|
||||
import android.app.job.JobService
|
||||
import android.preference.PreferenceManager
|
||||
import java.io.IOException
|
||||
import java.lang.NullPointerException
|
||||
import java.net.MalformedURLException
|
||||
import java.net.URL
|
||||
|
||||
class NotificationService : JobService() {
|
||||
|
||||
private var jobCancelled = false
|
||||
private val context = this
|
||||
|
||||
override fun onStartJob(params: JobParameters): Boolean {
|
||||
doBackgroundWork(params)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onStopJob(params: JobParameters?): Boolean {
|
||||
jobCancelled = true
|
||||
return true
|
||||
}
|
||||
|
||||
private fun doBackgroundWork(params: JobParameters) {
|
||||
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||
val edit = prefs.edit()
|
||||
|
||||
Thread(Runnable {
|
||||
if (jobCancelled) {
|
||||
return@Runnable
|
||||
}
|
||||
if (prefs.getBoolean("notif", false)) {
|
||||
edit.putInt("notificationTestNumberDev", prefs.getInt("notificationTestNumberDev", 0) + 1).apply()
|
||||
try {
|
||||
val url = URL("https://djd4rkn355.github.io/subst.html")
|
||||
val connection = url.openConnection()
|
||||
if (!connection.getHeaderField("Last-Modified").equals(prefs.getString("time", ""))) {
|
||||
DataFetcher(true, true, true, context, application, null).execute()
|
||||
edit.putString("time", connection.getHeaderField("Last-Modified")).apply()
|
||||
}
|
||||
} catch (ignored: NullPointerException) {}
|
||||
catch (ignored: IOException) {}
|
||||
catch (ignored: MalformedURLException) {}
|
||||
}
|
||||
jobFinished(params, false)
|
||||
}).start()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.denizd.substitutionplan
|
||||
|
||||
class PersonalFragment {
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
package com.denizd.substitutionplan
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.content.res.Configuration
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.preference.PreferenceManager
|
||||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
class PlanFragment(isPersonal: Boolean) : Fragment(R.layout.plan) {
|
||||
private lateinit var recyclerView: RecyclerView
|
||||
private lateinit var mAdapter: CardAdapter
|
||||
private lateinit var layoutManager: GridLayoutManager
|
||||
private val planCardList = ArrayList<Subst>()
|
||||
private lateinit var bottomSheetText: TextView
|
||||
private lateinit var substViewModel: SubstViewModel
|
||||
private lateinit var mContext: Context
|
||||
private lateinit var prefs: SharedPreferences
|
||||
private lateinit var edit: SharedPreferences.Editor
|
||||
private val personal = isPersonal
|
||||
|
||||
private lateinit var smileydown: TextView
|
||||
private lateinit var smileydowntext: TextView
|
||||
private lateinit var linearsmiley: LinearLayout
|
||||
private var persPlanEmpty: Boolean = true
|
||||
private val handler = Handler()
|
||||
|
||||
override fun onAttach(context: Context) {
|
||||
super.onAttach(context)
|
||||
mContext = context
|
||||
prefs = PreferenceManager.getDefaultSharedPreferences(mContext)
|
||||
edit = prefs.edit()
|
||||
}
|
||||
|
||||
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||
super.onConfigurationChanged(newConfig)
|
||||
val grid = when (newConfig.orientation) {
|
||||
Configuration.ORIENTATION_PORTRAIT -> 1
|
||||
else -> 2
|
||||
}
|
||||
layoutManager = GridLayoutManager(mContext, grid)
|
||||
recyclerView.layoutManager = layoutManager
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
val pullToRefresh = view.findViewById<SwipeRefreshLayout>(R.id.pullToRefresh)
|
||||
bottomSheetText = view.rootView.findViewById(R.id.bottom_sheet_text)
|
||||
|
||||
bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo))
|
||||
|
||||
recyclerView = view.findViewById(R.id.linearRecycler)
|
||||
recyclerView.hasFixedSize()
|
||||
|
||||
val grid = when (resources.configuration.orientation) {
|
||||
Configuration.ORIENTATION_PORTRAIT -> 1
|
||||
else -> 2
|
||||
}
|
||||
layoutManager = GridLayoutManager(mContext, grid)
|
||||
recyclerView.layoutManager = layoutManager
|
||||
|
||||
mAdapter = CardAdapter(planCardList)
|
||||
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.getBoolean("notif", false)) {
|
||||
pullToRefresh.isRefreshing = true
|
||||
DataFetcher(true, false, false, mContext, activity!!.application, view.rootView).execute()
|
||||
edit.putInt("firstTimeOpening", 3).apply()
|
||||
}
|
||||
}
|
||||
|
||||
if (prefs.getBoolean("autoRefresh", false)) {
|
||||
pullToRefresh.isRefreshing = true
|
||||
DataFetcher(true, false, false, mContext, activity!!.application, view.rootView).execute()
|
||||
bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo))
|
||||
}
|
||||
substViewModel = ViewModelProviders.of(activity!!).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.toString().isNotEmpty() && !it[i].group.equals("")) {
|
||||
if (prefs.getString("classes", "").contains(it[i].group.toString()) || it[i].group.toString().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.toString())) {
|
||||
if (prefs.getString("classes", "").contains(it[i].group.toString()) || it[i].group.toString().contains(prefs.getString("classes", "").toString())) {
|
||||
planCardList.add(it[i])
|
||||
persPlanEmpty = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// recyclerView.adapter!!.notifyDataSetChanged() // TODO check whether this is necessary
|
||||
planCardList.sortWith(Comparator { lhs, rhs -> Integer.compare(rhs.priority, lhs.priority) })
|
||||
recyclerView.scheduleLayoutAnimation()
|
||||
mAdapter.setSubst(planCardList)
|
||||
bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo))
|
||||
|
||||
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.isRefreshing = true
|
||||
DataFetcher(true, false, false, mContext, activity!!.application, view.rootView).execute()
|
||||
bottomSheetText.text = prefs.getString("informational", getString(R.string.noinfo))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -424,8 +424,6 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen
|
||||
val girlCb = dateDialogView.findViewById<CheckBox>(R.id.cb2)
|
||||
val percentage = dateDialogView.findViewById<TextView>(R.id.dating_txtp)
|
||||
|
||||
dateDialogView.findViewById<TextView>(R.id.textviewtitle).text = getString(R.string.dating)
|
||||
|
||||
datingBtn.setOnClickListener {
|
||||
try {
|
||||
val dg = MiscData()
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
android:layout_marginTop="16dp"
|
||||
android:textSize="22sp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:textColor="@color/datingPink"/>
|
||||
android:textColor="@color/datingPink"
|
||||
android:text="@string/dating"/>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -1,18 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/pullToRefreshFood"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="0dp"
|
||||
android:layout_marginTop="0dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
android:layout_marginBottom="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:id="@+id/pullToRefresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@color/background">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
|
||||
@@ -1,16 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/pullToRefresh"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="0dp"
|
||||
android:layout_marginTop="0dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
android:layout_marginBottom="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@color/background">
|
||||
|
||||
Reference in New Issue
Block a user