diff --git a/mobile/.idea/deploymentTargetDropDown.xml b/mobile/.idea/deploymentTargetDropDown.xml index 0c0c338..bd67f56 100644 --- a/mobile/.idea/deploymentTargetDropDown.xml +++ b/mobile/.idea/deploymentTargetDropDown.xml @@ -2,7 +2,7 @@ - + diff --git a/mobile/app/build.gradle.kts b/mobile/app/build.gradle.kts index e35bf27..3e4e713 100644 --- a/mobile/app/build.gradle.kts +++ b/mobile/app/build.gradle.kts @@ -4,15 +4,15 @@ plugins { } android { - namespace = "com.odweta.solen" + namespace = "com.odweta.solon" compileSdk = 34 defaultConfig { - applicationId = "com.odweta.solen" + applicationId = "com.odweta.solon" minSdk = 28 targetSdk = 34 versionCode = 1 - versionName = "1.0" + versionName = "0.5" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/mobile/app/src/main/ic_launcher-playstore.png b/mobile/app/src/main/ic_launcher-playstore.png index ecaca23..6f21e06 100644 Binary files a/mobile/app/src/main/ic_launcher-playstore.png and b/mobile/app/src/main/ic_launcher-playstore.png differ diff --git a/mobile/app/src/main/java/com/odweta/solen/MainFragment.kt b/mobile/app/src/main/java/com/odweta/solen/MainFragment.kt deleted file mode 100644 index 8178165..0000000 --- a/mobile/app/src/main/java/com/odweta/solen/MainFragment.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.odweta.solen - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment - -class MainFragment : Fragment() { - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.activity_main, container, false) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - MainActivity.setListener(requireContext()) - MainActivity.callSetupMain(view, savedInstanceState) - } -} \ No newline at end of file diff --git a/mobile/app/src/main/java/com/odweta/solen/AboutFragment.kt b/mobile/app/src/main/java/com/odweta/solon/AboutFragment.kt similarity index 97% rename from mobile/app/src/main/java/com/odweta/solen/AboutFragment.kt rename to mobile/app/src/main/java/com/odweta/solon/AboutFragment.kt index 48cb959..4d538c3 100644 --- a/mobile/app/src/main/java/com/odweta/solen/AboutFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/AboutFragment.kt @@ -1,8 +1,7 @@ -package com.odweta.solen +package com.odweta.solon import android.app.Dialog import android.content.Intent -import android.graphics.Paint import android.net.Uri import android.os.Bundle import android.text.Spannable @@ -18,7 +17,6 @@ import android.view.ViewGroup import android.view.Window import android.widget.TextView import android.widget.Toast -import androidx.core.content.ContextCompat import androidx.fragment.app.DialogFragment import kotlin.math.abs diff --git a/mobile/app/src/main/java/com/odweta/solen/Account.kt b/mobile/app/src/main/java/com/odweta/solon/Account.kt similarity index 91% rename from mobile/app/src/main/java/com/odweta/solen/Account.kt rename to mobile/app/src/main/java/com/odweta/solon/Account.kt index b10a952..c2b1746 100644 --- a/mobile/app/src/main/java/com/odweta/solen/Account.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Account.kt @@ -1,4 +1,4 @@ -package com.odweta.solen +package com.odweta.solon import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -20,12 +20,6 @@ class Account(val username: String, val password: String, private val error: Int return Account("", "", 1) } - fun clearAccountFile() { - val file = File(Vars.fileDir, Vars.accountDataFilePath) - file.delete() - file.createNewFile() - } - fun haveSaved(): Boolean { /* check if a file exists * no -> create it and return false diff --git a/mobile/app/src/main/java/com/odweta/solen/CalWeekFragment.kt b/mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt similarity index 98% rename from mobile/app/src/main/java/com/odweta/solen/CalWeekFragment.kt rename to mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt index f13d4af..55a322c 100644 --- a/mobile/app/src/main/java/com/odweta/solen/CalWeekFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt @@ -1,4 +1,4 @@ -package com.odweta.solen +package com.odweta.solon import android.annotation.SuppressLint import android.content.res.Resources @@ -7,7 +7,6 @@ import android.graphics.drawable.GradientDrawable import android.os.Bundle import android.os.Handler import android.os.Looper -import android.util.Log import android.view.Gravity import android.view.LayoutInflater import android.view.View @@ -24,15 +23,8 @@ import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2 -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -import java.time.DayOfWeek import java.time.LocalDate import java.time.LocalTime diff --git a/mobile/app/src/main/java/com/odweta/solen/Dialogs.kt b/mobile/app/src/main/java/com/odweta/solon/Dialogs.kt similarity index 93% rename from mobile/app/src/main/java/com/odweta/solen/Dialogs.kt rename to mobile/app/src/main/java/com/odweta/solon/Dialogs.kt index 0d1b350..4018c35 100644 --- a/mobile/app/src/main/java/com/odweta/solen/Dialogs.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Dialogs.kt @@ -1,9 +1,8 @@ -package com.odweta.solen +package com.odweta.solon import android.app.AlertDialog import android.content.Context import android.view.LayoutInflater -import androidx.fragment.app.DialogFragment class Dialogs { class LanguageChange(context: Context) : AlertDialog(context) { diff --git a/mobile/app/src/main/java/com/odweta/solen/MainActivity.kt b/mobile/app/src/main/java/com/odweta/solon/MainActivity.kt similarity index 65% rename from mobile/app/src/main/java/com/odweta/solen/MainActivity.kt rename to mobile/app/src/main/java/com/odweta/solon/MainActivity.kt index 6ed6cde..6560d37 100644 --- a/mobile/app/src/main/java/com/odweta/solen/MainActivity.kt +++ b/mobile/app/src/main/java/com/odweta/solon/MainActivity.kt @@ -1,34 +1,23 @@ -package com.odweta.solen +package com.odweta.solon import android.app.Dialog import android.content.Context import android.content.Intent import android.os.Bundle import android.view.View -import android.view.ViewGroup import android.widget.Button import android.widget.EditText -import android.widget.FrameLayout -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView import android.widget.Toast -import androidx.transition.AutoTransition import androidx.appcompat.app.AppCompatActivity -import androidx.core.content.ContextCompat -import androidx.fragment.app.DialogFragment import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope -import com.google.android.material.bottomnavigation.BottomNavigationView -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext -import org.json.JSONObject interface MainActivityListener { - fun setupMain(view: View, savedInstanceState: Bundle?) fun onSignIn(view: View, wantDelete: Boolean, dialog: Dialog?) + + fun launchPhase1() } class MainActivity : AppCompatActivity(), MainActivityListener { @@ -36,10 +25,6 @@ class MainActivity : AppCompatActivity(), MainActivityListener { private var toastShowing: Boolean = false private var toastShown: Boolean = false private var toast2Shown: Boolean = false - private var done: Boolean = false - private var role: String = " - Student" - private lateinit var navbar: BottomNavigationView - private lateinit var toolbar: TextView // @section COMPANION companion object { @@ -51,14 +36,14 @@ class MainActivity : AppCompatActivity(), MainActivityListener { } } - fun callSetupMain(view: View, savedInstanceState: Bundle?) { - intfc?.setupMain(view, savedInstanceState) - } - fun callOnSignIn(view: View, wantDelete: Boolean, dialog: Dialog?) { intfc?.onSignIn(view, wantDelete, dialog) } + fun callLaunchPhase1() { + intfc?.launchPhase1() + } + fun quit(context: Context) { // Create an Intent to launch the home screen val homeIntent = Intent(Intent.ACTION_MAIN) @@ -91,86 +76,6 @@ class MainActivity : AppCompatActivity(), MainActivityListener { } } - override fun setupMain(view: View, savedInstanceState: Bundle?) { - toolbar = view.findViewById(R.id.toolbar) - - if ( - Util.fileToString(Vars.userDataFilePath) != "" && - JSONObject(Util.fileToString(Vars.userDataFilePath)).has("fullName") - ) { - toolbar.text = - JSONObject(Util.fileToString(Vars.userDataFilePath)).getString("fullName") + - role - } else { - toolbar.text = "Přihlašte se, prosím." - } - - navbar = findViewById(R.id.bottomNav) - - var frag = supportFragmentManager.findFragmentById(R.id.fragmentContainer) - - if (!Vars.resetNav) { - if (frag == null || frag is CalWeekFragment) { - frag = CalWeekFragment() - navbar.selectedItemId = R.id.nav_timetable - } - if (frag is MarksFragment) { - frag = MarksFragment() - navbar.selectedItemId = R.id.nav_marks - } - if (frag is MenuFragment) { - frag = MenuFragment() - navbar.selectedItemId = R.id.nav_menu - } - } else { - frag = CalWeekFragment() - navbar.selectedItemId = R.id.nav_timetable - Vars.resetNav = false - } - - supportFragmentManager.beginTransaction() - .replace(R.id.fragmentContainer, frag) - .commit() - - navbar.setOnItemSelectedListener { - val ft = supportFragmentManager.beginTransaction() - - when (it.itemId) { - R.id.nav_timetable -> { - ft.setCustomAnimations( - R.anim.slide_up, - R.anim.slide_down, - ) - ft.replace(R.id.fragmentContainer, CalWeekFragment()) - } - - R.id.nav_marks -> { - ft.setCustomAnimations( - R.anim.slide_up, - R.anim.slide_down, - ) - ft.replace(R.id.fragmentContainer, MarksFragment()) - } - - R.id.nav_menu -> { - ft.setCustomAnimations( - R.anim.slide_up, - R.anim.slide_down, - ) - ft.replace(R.id.fragmentContainer, MenuFragment()) - } - - else -> return@setOnItemSelectedListener false - } - - ft.commit() - true - } - - setOnInternetAvailListener() - done = true - } - @@ -219,14 +124,13 @@ class MainActivity : AppCompatActivity(), MainActivityListener { btn.text = "Přihlásit se" } - Account.save(acc) - lifecycleScope.launch { val valid = Account.isValid(acc) checked = true if (valid) { + Account.save(acc) if (!wantDelete) { dialog?.dismiss() } @@ -244,58 +148,6 @@ class MainActivity : AppCompatActivity(), MainActivityListener { } } - private fun setOnInternetAvailListener() { - lifecycleScope.launch { - while (true) { - if (Util.internetAvail(applicationContext) && !Vars.internetAvail) { - Vars.internetAvail = Util.internetAvail(applicationContext) - withContext(Dispatchers.Main) { - fetchNewData() - } - } else if (!Vars.internetAvail) { - Vars.internetAvail = Util.internetAvail(applicationContext) - toolbar.text = "Bez připojení k internetu." - } else { - Vars.internetAvail = Util.internetAvail(applicationContext) - } - delay(1000) // Check for internet availability every second - } - } - } - - private fun fetchNewData() { - lifecycleScope.launch { - done = false - while (!done) { - toolbar.text = "Načítání nových dat" - delay(300) - toolbar.text = "Načítání nových dat." - delay(300) - toolbar.text = "Načítání nových dat.." - delay(300) - toolbar.text = "Načítání nových dat..." - delay(300) - } - - role = if (Parsing.userIsParent()) { - " - Rodič" - } else { - " - Student" - } - - toolbar.text = - JSONObject(Util.fileToString(Vars.userDataFilePath)).getString("fullName") + - role - } - - lifecycleScope.launch { - launchPhase1() - } - } - - - - // @section LAUNCH private fun launch() { @@ -321,7 +173,7 @@ class MainActivity : AppCompatActivity(), MainActivityListener { } } - private fun launchPhase1() { + override fun launchPhase1() { val toast: Toast = Toast.makeText( applicationContext, "Nelze načíst data, zkuste se připojit k internetu.", @@ -369,18 +221,12 @@ class MainActivity : AppCompatActivity(), MainActivityListener { week = Parsing.parseTimeTableJSON(timeTableJSON) // fetch and parse marks - lifecycleScope.launch { - Vars.marksJSON = """{"message": "Zatím žádné známky, zkuste aktualizovat data."}""" + Vars.marksJSON = Network.getMarksJSON() - Vars.marksJSON = Network.getMarksJSON() + Vars.marksAvailOffline = + Util.saveStringToFile(Vars.marksFilePath, Vars.marksJSON) - //Log.d("MARKS_JSON", JSONObject(Vars.marksJSON).getJSONArray("subjects").toString()) - - Vars.marksAvailOffline = - Util.saveStringToFile(Vars.marksFilePath, Vars.marksJSON) - - Vars.marks = Parsing.parseMarksJSON(Vars.marksJSON) - } + Vars.marks = Parsing.parseMarksJSON(Vars.marksJSON) // continue to launch phase 2 launchPhase2() diff --git a/mobile/app/src/main/java/com/odweta/solon/MainFragment.kt b/mobile/app/src/main/java/com/odweta/solon/MainFragment.kt new file mode 100644 index 0000000..ddeb9ea --- /dev/null +++ b/mobile/app/src/main/java/com/odweta/solon/MainFragment.kt @@ -0,0 +1,172 @@ +package com.odweta.solon + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope +import com.google.android.material.bottomnavigation.BottomNavigationView +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import org.json.JSONObject + +class MainFragment : Fragment() { + private var done: Boolean = false + private var role: String = " - Student" + private lateinit var navbar: BottomNavigationView + private lateinit var toolbar: TextView + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.activity_main, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + MainActivity.setListener(requireContext()) + setup(view) + } + + private fun setup(view: View) { + toolbar = view.findViewById(R.id.toolbar) + + if ( + Util.fileToString(Vars.userDataFilePath) != "" && + JSONObject(Util.fileToString(Vars.userDataFilePath)).has("fullName") + ) { + toolbar.text = + JSONObject(Util.fileToString(Vars.userDataFilePath)).getString("fullName") + + role + } else { + toolbar.text = "Přihlašte se, prosím." + } + + navbar = view.findViewById(R.id.bottomNav) + + var frag = requireFragmentManager().findFragmentById(R.id.fragmentContainer) + + if (!Vars.resetNav) { + if (frag == null || frag is CalWeekFragment) { + frag = CalWeekFragment() + navbar.selectedItemId = R.id.nav_timetable + } + if (frag is MarksFragment) { + frag = MarksFragment() + navbar.selectedItemId = R.id.nav_marks + } + if (frag is MenuFragment) { + frag = MenuFragment() + navbar.selectedItemId = R.id.nav_menu + } + } else { + frag = CalWeekFragment() + navbar.selectedItemId = R.id.nav_timetable + Vars.resetNav = false + } + + requireFragmentManager().beginTransaction() + .replace(R.id.fragmentContainer, frag) + .commit() + + navbar.setOnItemSelectedListener { + val ft = requireFragmentManager().beginTransaction() + + when (it.itemId) { + R.id.nav_timetable -> { + ft.setCustomAnimations( + R.anim.slide_up, + R.anim.slide_down, + ) + ft.replace(R.id.fragmentContainer, CalWeekFragment()) + } + + R.id.nav_marks -> { + ft.setCustomAnimations( + R.anim.slide_up, + R.anim.slide_down, + ) + ft.replace(R.id.fragmentContainer, MarksFragment()) + } + + R.id.nav_menu -> { + ft.setCustomAnimations( + R.anim.slide_up, + R.anim.slide_down, + ) + ft.replace(R.id.fragmentContainer, MenuFragment()) + } + + else -> return@setOnItemSelectedListener false + } + + ft.commit() + true + } + + setOnInternetAvailListener() + done = true + } + + private fun setOnInternetAvailListener() { + lifecycleScope.launch { + while (true) { + if (Util.internetAvail(requireContext()) && !Vars.internetAvail) { + Vars.internetAvail = Util.internetAvail(requireContext()) + withContext(Dispatchers.Main) { + fetchNewData() + } + } else if (!Vars.internetAvail) { + Vars.internetAvail = Util.internetAvail(requireContext()) + toolbar.text = "Bez připojení k internetu." + } else { + Vars.internetAvail = Util.internetAvail(requireContext()) + } + delay(1000) // Check for internet availability every second + } + } + } + + private fun fetchNewData() { + lifecycleScope.launch { + done = false + while (!done) { + toolbar.text = "Načítání nových dat" + delay(300) + toolbar.text = "Načítání nových dat." + delay(300) + toolbar.text = "Načítání nových dat.." + delay(300) + toolbar.text = "Načítání nových dat..." + delay(300) + toolbar.text = "Načítání nových dat.." + delay(300) + toolbar.text = "Načítání nových dat." + delay(300) + toolbar.text = "Načítání nových dat" + delay(300) + } + + role = if (Parsing.userIsParent()) { + " - Rodič" + } else { + " - Student" + } + + toolbar.text = + JSONObject(Util.fileToString(Vars.userDataFilePath)).getString("fullName") + + role + } + + lifecycleScope.launch { + MainActivity.callLaunchPhase1() + } + } +} \ No newline at end of file diff --git a/mobile/app/src/main/java/com/odweta/solen/MarksFragment.kt b/mobile/app/src/main/java/com/odweta/solon/MarksFragment.kt similarity index 85% rename from mobile/app/src/main/java/com/odweta/solen/MarksFragment.kt rename to mobile/app/src/main/java/com/odweta/solon/MarksFragment.kt index c33efef..921eb9c 100644 --- a/mobile/app/src/main/java/com/odweta/solen/MarksFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/MarksFragment.kt @@ -1,4 +1,4 @@ -package com.odweta.solen +package com.odweta.solon import android.graphics.Typeface import android.graphics.drawable.GradientDrawable @@ -25,10 +25,6 @@ class MarksFragment : Fragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - val view = inflater.inflate(R.layout.activity_marks, container, false) - - val root = view.findViewById(R.id.root) - if (Vars.marksAvailOffline && !Util.fileIsEmpty(Vars.marksFilePath)) { Vars.marksJSON = Util.fileToString(Vars.marksFilePath) Vars.marksAvailOffline = Util.saveStringToFile(Vars.marksFilePath, Vars.marksJSON) @@ -41,13 +37,32 @@ class MarksFragment : Fragment() { } } - root.addView(createSpace()) - for (subject in Vars.marks.keys) { - root.addView(Vars.marks[subject]?.let { createMarkView(it) }) - root.addView(createSpace()) - } + if ( + Vars.marks.keys.contains("-") && + Vars.marks.keys.size == 1 + ) { + val view = inflater.inflate(R.layout.activity_no_marks, container, false) - return view + val root = view.findViewById(R.id.no_mark_container) + + for (subject in Vars.marks.keys) { + root.addView(Vars.marks[subject]?.let { createMarkView(it) }) + } + + return view + } else { + val view = inflater.inflate(R.layout.activity_marks, container, false) + + val root = view.findViewById(R.id.root) + + root.addView(createSpace()) + for (subject in Vars.marks.keys) { + root.addView(Vars.marks[subject]?.let { createMarkView(it) }) + root.addView(createSpace()) + } + + return view + } } private fun createSpace(): Space { @@ -155,6 +170,25 @@ class MarksFragment : Fragment() { ) markRoot.background = markDrawable + if (marks[0].subject == "Zatím žádné známky.") { + markRoot.gravity = Gravity.CENTER + val tv = TextView(requireContext()) + tv.text = "Zatím žádné známky." + tv.textSize = 30f + tv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.white + ) + ) + tv.gravity = Gravity.CENTER + tv.setTypeface(customFont, Typeface.BOLD) + + markRoot.addView(tv) + + return markRoot + } + val avgDrawable = GradientDrawable() avgDrawable.shape = GradientDrawable.RECTANGLE avgDrawable.cornerRadius = resources.getDimension(R.dimen.corner_radius) diff --git a/mobile/app/src/main/java/com/odweta/solen/MenuFragment.kt b/mobile/app/src/main/java/com/odweta/solon/MenuFragment.kt similarity index 93% rename from mobile/app/src/main/java/com/odweta/solen/MenuFragment.kt rename to mobile/app/src/main/java/com/odweta/solon/MenuFragment.kt index 7ecd91a..a5d73a2 100644 --- a/mobile/app/src/main/java/com/odweta/solen/MenuFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/MenuFragment.kt @@ -1,15 +1,11 @@ -package com.odweta.solen +package com.odweta.solon import android.app.AlertDialog -import android.app.Dialog import android.os.Bundle -import androidx.fragment.app.DialogFragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.view.Window import android.widget.Button -import android.widget.ImageView import androidx.fragment.app.Fragment import kotlin.system.exitProcess diff --git a/mobile/app/src/main/java/com/odweta/solen/Network.kt b/mobile/app/src/main/java/com/odweta/solon/Network.kt similarity index 99% rename from mobile/app/src/main/java/com/odweta/solen/Network.kt rename to mobile/app/src/main/java/com/odweta/solon/Network.kt index 64ed87c..35fde5d 100644 --- a/mobile/app/src/main/java/com/odweta/solen/Network.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Network.kt @@ -1,6 +1,5 @@ -package com.odweta.solen +package com.odweta.solon -import android.util.Log import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import okhttp3.FormBody diff --git a/mobile/app/src/main/java/com/odweta/solen/Parsing.kt b/mobile/app/src/main/java/com/odweta/solon/Parsing.kt similarity index 98% rename from mobile/app/src/main/java/com/odweta/solen/Parsing.kt rename to mobile/app/src/main/java/com/odweta/solon/Parsing.kt index 85ce4aa..6651c93 100644 --- a/mobile/app/src/main/java/com/odweta/solen/Parsing.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Parsing.kt @@ -1,6 +1,5 @@ -package com.odweta.solen +package com.odweta.solon -import android.util.Log import org.json.JSONObject import java.time.LocalDateTime import java.time.format.DateTimeFormatter @@ -239,7 +238,9 @@ class Parsing { } fun parseMarksJSON(jsonString: String): MutableMap> { - if (!JSONObject(jsonString).has("marks")) { + // no marks + val json = JSONObject(jsonString) + if (json.has("marks") && json.getJSONArray("marks").length() == 0) { val noMarks = mutableMapOf>() val list = mutableListOf() list.add(Mark().none()) diff --git a/mobile/app/src/main/java/com/odweta/solen/SettingsFragment.kt b/mobile/app/src/main/java/com/odweta/solon/SettingsFragment.kt similarity index 90% rename from mobile/app/src/main/java/com/odweta/solen/SettingsFragment.kt rename to mobile/app/src/main/java/com/odweta/solon/SettingsFragment.kt index fec91a2..e396cd5 100644 --- a/mobile/app/src/main/java/com/odweta/solen/SettingsFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/SettingsFragment.kt @@ -1,8 +1,7 @@ -package com.odweta.solen +package com.odweta.solon import android.app.Dialog import android.os.Bundle -import android.util.Log import android.view.GestureDetector import android.view.GestureDetector.SimpleOnGestureListener import androidx.fragment.app.DialogFragment @@ -12,14 +11,7 @@ import android.view.View import android.view.ViewGroup import android.view.Window import android.widget.Button -import android.widget.ImageView -import android.widget.LinearLayout import android.widget.ScrollView -import androidx.appcompat.app.AppCompatActivity -import androidx.lifecycle.lifecycleScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -import kotlin.math.abs class SettingsFragment : DialogFragment() { private lateinit var scrollView: ScrollView diff --git a/mobile/app/src/main/java/com/odweta/solen/SignInFragment.kt b/mobile/app/src/main/java/com/odweta/solon/SignInFragment.kt similarity index 95% rename from mobile/app/src/main/java/com/odweta/solen/SignInFragment.kt rename to mobile/app/src/main/java/com/odweta/solon/SignInFragment.kt index e7f7c15..10730e1 100644 --- a/mobile/app/src/main/java/com/odweta/solen/SignInFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/SignInFragment.kt @@ -1,19 +1,15 @@ -package com.odweta.solen +package com.odweta.solon import android.app.Dialog -import android.content.DialogInterface import android.os.Bundle import android.view.GestureDetector -import android.view.Gravity import androidx.fragment.app.DialogFragment import android.view.LayoutInflater import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.view.Window -import android.view.WindowManager import android.widget.Button -import androidx.core.content.ContextCompat import kotlin.math.abs class SignInFragment : DialogFragment() { diff --git a/mobile/app/src/main/java/com/odweta/solen/SignInMainFragment.kt b/mobile/app/src/main/java/com/odweta/solon/SignInMainFragment.kt similarity index 88% rename from mobile/app/src/main/java/com/odweta/solen/SignInMainFragment.kt rename to mobile/app/src/main/java/com/odweta/solon/SignInMainFragment.kt index bc2396d..892c328 100644 --- a/mobile/app/src/main/java/com/odweta/solen/SignInMainFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/SignInMainFragment.kt @@ -1,13 +1,11 @@ -package com.odweta.solen +package com.odweta.solon import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button -import android.widget.ImageView import androidx.fragment.app.Fragment -import com.bumptech.glide.Glide class SignInMainFragment : Fragment() { override fun onCreateView( diff --git a/mobile/app/src/main/java/com/odweta/solen/SplashFragment.kt b/mobile/app/src/main/java/com/odweta/solon/SplashFragment.kt similarity index 97% rename from mobile/app/src/main/java/com/odweta/solen/SplashFragment.kt rename to mobile/app/src/main/java/com/odweta/solon/SplashFragment.kt index 84c7813..548569e 100644 --- a/mobile/app/src/main/java/com/odweta/solen/SplashFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/SplashFragment.kt @@ -1,4 +1,4 @@ -package com.odweta.solen +package com.odweta.solon import android.os.Bundle import android.view.LayoutInflater diff --git a/mobile/app/src/main/java/com/odweta/solen/Util.kt b/mobile/app/src/main/java/com/odweta/solon/Util.kt similarity index 98% rename from mobile/app/src/main/java/com/odweta/solen/Util.kt rename to mobile/app/src/main/java/com/odweta/solon/Util.kt index 8be3f73..8afd631 100644 --- a/mobile/app/src/main/java/com/odweta/solen/Util.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Util.kt @@ -1,4 +1,4 @@ -package com.odweta.solen +package com.odweta.solon import android.content.Context import android.content.res.Resources @@ -6,7 +6,6 @@ import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.util.DisplayMetrics import android.view.WindowManager -import org.json.JSONObject import java.io.File import java.io.IOException import java.nio.charset.Charset diff --git a/mobile/app/src/main/java/com/odweta/solen/Vars.kt b/mobile/app/src/main/java/com/odweta/solon/Vars.kt similarity index 95% rename from mobile/app/src/main/java/com/odweta/solen/Vars.kt rename to mobile/app/src/main/java/com/odweta/solon/Vars.kt index 6d50f53..6ed3d8c 100644 --- a/mobile/app/src/main/java/com/odweta/solen/Vars.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Vars.kt @@ -1,6 +1,5 @@ -package com.odweta.solen +package com.odweta.solon -import kotlinx.coroutines.withContext import okhttp3.OkHttpClient import java.io.File diff --git a/mobile/app/src/main/res/layout/activity_no_marks.xml b/mobile/app/src/main/res/layout/activity_no_marks.xml new file mode 100644 index 0000000..45e50df --- /dev/null +++ b/mobile/app/src/main/res/layout/activity_no_marks.xml @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/mobile/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/mobile/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 4ae7d12..036d09b 100644 --- a/mobile/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/mobile/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/mobile/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/mobile/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 4ae7d12..036d09b 100644 --- a/mobile/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/mobile/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/mobile/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/mobile/app/src/main/res/mipmap-hdpi/ic_launcher.webp index bdfe9f2..66fd7b9 100755 Binary files a/mobile/app/src/main/res/mipmap-hdpi/ic_launcher.webp and b/mobile/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/mobile/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/mobile/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp index 46f2ae0..788f65c 100644 Binary files a/mobile/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp and b/mobile/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/mobile/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/mobile/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp index edf392e..d342480 100644 Binary files a/mobile/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/mobile/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/mobile/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/mobile/app/src/main/res/mipmap-mdpi/ic_launcher.webp index 11a115d..19df17a 100644 Binary files a/mobile/app/src/main/res/mipmap-mdpi/ic_launcher.webp and b/mobile/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/mobile/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/mobile/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp index 58b2bf3..59edf6c 100644 Binary files a/mobile/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp and b/mobile/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/mobile/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/mobile/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp index d18c01f..bb6f2b4 100644 Binary files a/mobile/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/mobile/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher.webp index 5d20516..a9d87df 100644 Binary files a/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp index eda666d..c6beb59 100644 Binary files a/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp and b/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index 293a2f4..dbb0661 100644 Binary files a/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/mobile/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp index 5aa40f1..f7383b8 100644 Binary files a/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp index 57fd0cf..339668d 100644 Binary files a/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp and b/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index cbaa363..92afba6 100644 Binary files a/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/mobile/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp index 33ad949..f8f4a69 100644 Binary files a/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp index be57ceb..84530a7 100644 Binary files a/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp and b/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp index e723f1f..2c4af8e 100644 Binary files a/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/mobile/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/mobile/app/src/main/res/values/ic_launcher_background.xml b/mobile/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..beab31f --- /dev/null +++ b/mobile/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #000000 + \ No newline at end of file diff --git a/mobile/app/src/main/res/values/strings.xml b/mobile/app/src/main/res/values/strings.xml index 7579b78..f28ff8c 100644 --- a/mobile/app/src/main/res/values/strings.xml +++ b/mobile/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - Solen + Solon Calendar for this week ŠkolaOnLine Enhanced