diff --git a/.gitignore b/.gitignore index e7ded9f4..047ad745 100644 --- a/.gitignore +++ b/.gitignore @@ -23,7 +23,7 @@ build/ local.properties # Proguard folder generated by Eclipse -proguard/ +#proguard/ # Log Files *.log diff --git a/.idea/copyright/Kacper.xml b/.idea/copyright/Kacper.xml new file mode 100644 index 00000000..a4d5e6ec --- /dev/null +++ b/.idea/copyright/Kacper.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 284dd50e..f834a4ed 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -10,7 +10,7 @@ diff --git a/app/proguard/android-job.pro b/app/proguard/android-job.pro new file mode 100644 index 00000000..3f1a67be --- /dev/null +++ b/app/proguard/android-job.pro @@ -0,0 +1,14 @@ +-dontwarn com.evernote.android.job.gcm.** +-dontwarn com.evernote.android.job.GcmAvailableHelper +-dontwarn com.evernote.android.job.work.** +-dontwarn com.evernote.android.job.WorkManagerAvailableHelper + +-keep public class com.evernote.android.job.v21.PlatformJobService +-keep public class com.evernote.android.job.v14.PlatformAlarmService +-keep public class com.evernote.android.job.v14.PlatformAlarmReceiver +-keep public class com.evernote.android.job.JobBootReceiver +-keep public class com.evernote.android.job.JobRescheduleService +-keep public class com.evernote.android.job.gcm.PlatformGcmService +-keep public class com.evernote.android.job.work.PlatformWorker + +-keep class com.evernote.android.job.** { *; } \ No newline at end of file diff --git a/app/proguard/app.pro b/app/proguard/app.pro new file mode 100644 index 00000000..162b8fa9 --- /dev/null +++ b/app/proguard/app.pro @@ -0,0 +1,42 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile +-keep class android.support.v7.widget.** { *; } + +-keep class pl.szczodrzynski.edziennik.utils.models.** { *; } +-keep class pl.szczodrzynski.edziennik.data.db.modules.events.Event { *; } +-keep class pl.szczodrzynski.edziennik.data.db.modules.events.EventFull { *; } +-keepclassmembers class pl.szczodrzynski.edziennik.widgets.WidgetConfig { public *; } +-keepnames class pl.szczodrzynski.edziennik.WidgetTimetable +-keepnames class pl.szczodrzynski.edziennik.notifications.WidgetNotifications +-keepnames class pl.szczodrzynski.edziennik.luckynumber.WidgetLuckyNumber + +-keep class .R +-keep class **.R$* { + ; +} + +-keepattributes SourceFile,LineNumberTable +#-printmapping mapping.txt + +-keep class okhttp3.** { *; } + +-keep class com.google.android.material.tabs.** {*;} \ No newline at end of file diff --git a/app/proguard/blurry.pro b/app/proguard/blurry.pro new file mode 100644 index 00000000..980f404e --- /dev/null +++ b/app/proguard/blurry.pro @@ -0,0 +1 @@ +-keep class android.support.v8.renderscript.** { *; } \ No newline at end of file diff --git a/app/proguard/cafebar.pro b/app/proguard/cafebar.pro new file mode 100644 index 00000000..6f8147fd --- /dev/null +++ b/app/proguard/cafebar.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in D:\AndroidSDK/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;} +-keep class android.support.v7.graphics.** { *; } +-dontwarn android.support.v7.graphics.** + +-keep class android.support.design.widget.** { *; } +-keep interface android.support.design.widget.** { *; } +-dontwarn android.support.design.** diff --git a/app/proguard/eventbus.pro b/app/proguard/eventbus.pro new file mode 100644 index 00000000..cf6b3480 --- /dev/null +++ b/app/proguard/eventbus.pro @@ -0,0 +1,10 @@ +-keepattributes *Annotation* +-keepclassmembers class * { + @org.greenrobot.eventbus.Subscribe ; +} +-keep enum org.greenrobot.eventbus.ThreadMode { *; } + +# Only required if you use AsyncExecutor +-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent { + (java.lang.Throwable); +} \ No newline at end of file diff --git a/app/proguard/iconics.pro b/app/proguard/iconics.pro new file mode 100644 index 00000000..0aa62122 --- /dev/null +++ b/app/proguard/iconics.pro @@ -0,0 +1,14 @@ +# Android iconics library - https://github.com/mikepenz/Android-Iconics +# Warning: works ONLY with iconics > 1.0.0 +# +# Tested on gradle config: +# +# compile 'com.mikepenz:iconics-core:1.7.1@aar' +# + +-keep class com.mikepenz.iconics.** { *; } +-keep class com.mikepenz.community_material_typeface_library.CommunityMaterial +-keep class com.mikepenz.fontawesome_typeface_library.FontAwesome +-keep class com.mikepenz.google_material_typeface_library.GoogleMaterial +-keep class com.mikepenz.meteocons_typeface_library.Meteoconcs +-keep class com.mikepenz.octicons_typeface_library.Octicons \ No newline at end of file diff --git a/app/proguard/jsoup.pro b/app/proguard/jsoup.pro new file mode 100644 index 00000000..cb139ecd --- /dev/null +++ b/app/proguard/jsoup.pro @@ -0,0 +1 @@ +-keep class org.jsoup.** \ No newline at end of file diff --git a/app/proguard/mhttp.pro b/app/proguard/mhttp.pro new file mode 100644 index 00000000..6d3e4e38 --- /dev/null +++ b/app/proguard/mhttp.pro @@ -0,0 +1,48 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/wangchao/Work/android-sdk/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} +-dontwarn im.wangchao.** +-dontwarn okio.** +-dontwarn javax.annotation.Nullable +-dontwarn javax.annotation.ParametersAreNonnullByDefault +-keep class im.wangchao.** { *; } +-keep class **_HttpBinder { *; } +-keepclasseswithmembernames class * { + @im.wangchao.* ; +} +-keepclasseswithmembernames class * { + @im.wangchao.* ; +} +-keepclassmembers class * implements java.io.Serializable { + static final long serialVersionUID; + private static final java.io.ObjectStreamField[] serialPersistentFields; + !static !transient ; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} +# okhttp +-dontwarn okhttp3.** +-dontwarn okio.** +-dontwarn javax.annotation.** +-dontwarn org.conscrypt.** +# A resource is loaded with a relative path so the package of this class must be preserved. +-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase + +# If you do not use Rx: +-dontwarn rx.** \ No newline at end of file diff --git a/app/proguard/okhttp3.pro b/app/proguard/okhttp3.pro new file mode 100644 index 00000000..d17d3566 --- /dev/null +++ b/app/proguard/okhttp3.pro @@ -0,0 +1,19 @@ +# JSR 305 annotations are for embedding nullability information. +-dontwarn javax.annotation.** + +# A resource is loaded with a relative path so the package of this class must be preserved. +-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase + +# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. +-dontwarn org.codehaus.mojo.animal_sniffer.* + +# OkHttp platform used only on JVM and when Conscrypt dependency is available. +-dontwarn okhttp3.internal.platform.ConscryptPlatform + +# This is added for okhttp 3.1.2 bug fix as shown at https://github.com/square/okhttp/issues/2323 +-keepclassmembers class * implements javax.net.ssl.SSLSocketFactory { + private javax.net.ssl.SSLSocketFactory delegate; +} + +-keepnames class sun.security.ssl.SSLContextImpl +-keepnames class javax.net.ssl.SSLSocketFactory diff --git a/app/proguard/szkolny-font.pro b/app/proguard/szkolny-font.pro new file mode 100644 index 00000000..4e48be73 --- /dev/null +++ b/app/proguard/szkolny-font.pro @@ -0,0 +1 @@ +-keep class com.mikepenz.szkolny_font_typeface_library.SzkolnyFont { *; } diff --git a/app/proguard/wear.pro b/app/proguard/wear.pro new file mode 100644 index 00000000..f1b42451 --- /dev/null +++ b/app/proguard/wear.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9031bd28..974eb812 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,22 +29,22 @@ @@ -57,7 +57,7 @@ |_| |_|_| \___|_.__/ \__,_|___/\___/ --> @@ -72,7 +72,7 @@ |___/ --> @@ -113,14 +113,14 @@ android:theme="@style/Base.Theme.AppCompat" /> - + - \ No newline at end of file + diff --git a/app/src/main/assets/pl-changelog.html b/app/src/main/assets/pl-changelog.html index e87bb90e..60bb4418 100644 --- a/app/src/main/assets/pl-changelog.html +++ b/app/src/main/assets/pl-changelog.html @@ -31,6 +31,38 @@ +

Wersja 3.1, 2019-09-29

+
    +
  • Poprawiony interfejs zadań domowych.
  • +
  • Librus: wyświetlanie komentarzy ocen.
  • +
  • Librus: wyświetlanie nieobecności nauczycieli w Terminarzu.
  • +
  • Librus: usprawniona synchronizacja ocen.
  • +
  • Poprawki angielskiego tłumaczenia.
  • +
+ +

Wersja 3.0.3, 2019-09-26

+
    +
  • Librus: poprawka kilku błędów synchronizacji.
  • +
  • Vulcan: prawidłowe oznaczanie wiadomości jako przeczytana.
  • +
  • Vulcan: poprawiona synchronizacja wiadomości i frekwencji.
  • +
  • Vulcan: poprawka błędów logowania.
  • +
+ +

Wersja 3.0.2, 2019-09-24

+
    +
  • Librus: pobieranie Bieżących ocen opisowych.
  • +
  • Poprawki UI: kolor ikon paska statusu w jasnym motywie.
  • +
  • Poprawka braku skanera QR do przekazywania powiadomień.
  • +
  • Poprawka wyboru koloru i daty własnego wydarzenia, które crashowały aplikację.
  • +
+ +

Wersja 3.0.1, 2019-09-19

+
    +
  • Librus: Poprawa błędu synchronizacji.
  • +
  • Poprawki UI związane z paskiem nawigacji.
  • +
  • Mobidziennik: Pobieranie ocen w niektórych przedmiotach.
  • +
+

Wersja 3.0, 2019-09-13

  • Nowy wygląd i sposób nawigacji w całej aplikacji.
  • diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/App.java b/app/src/main/java/pl/szczodrzynski/edziennik/App.java index 2938bec2..5596a664 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/App.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/App.java @@ -66,18 +66,18 @@ import me.leolin.shortcutbadger.ShortcutBadger; import okhttp3.ConnectionSpec; import okhttp3.OkHttpClient; import okhttp3.TlsVersion; -import pl.szczodrzynski.edziennik.activities.CrashActivity; -import pl.szczodrzynski.edziennik.api.Edziennik; -import pl.szczodrzynski.edziennik.api.Iuczniowie; -import pl.szczodrzynski.edziennik.api.Librus; -import pl.szczodrzynski.edziennik.api.Mobidziennik; -import pl.szczodrzynski.edziennik.api.Vulcan; -import pl.szczodrzynski.edziennik.datamodels.AppDb; -import pl.szczodrzynski.edziennik.datamodels.DebugLog; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.models.AppConfig; +import pl.szczodrzynski.edziennik.ui.modules.base.CrashActivity; +import pl.szczodrzynski.edziennik.data.api.Edziennik; +import pl.szczodrzynski.edziennik.data.api.Iuczniowie; +import pl.szczodrzynski.edziennik.data.api.Librus; +import pl.szczodrzynski.edziennik.data.api.Mobidziennik; +import pl.szczodrzynski.edziennik.data.api.Vulcan; +import pl.szczodrzynski.edziennik.data.db.AppDb; +import pl.szczodrzynski.edziennik.data.db.modules.debuglog.DebugLog; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.utils.models.AppConfig; import pl.szczodrzynski.edziennik.network.NetworkUtils; import pl.szczodrzynski.edziennik.network.TLSSocketFactory; import pl.szczodrzynski.edziennik.receivers.JobsCreator; @@ -86,8 +86,8 @@ import pl.szczodrzynski.edziennik.utils.PermissionChecker; import pl.szczodrzynski.edziennik.utils.Themes; import pl.szczodrzynski.edziennik.utils.Utils; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_VULCAN; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_VULCAN; public class App extends androidx.multidex.MultiDexApplication { private static final String TAG = "App"; @@ -351,7 +351,7 @@ public class App extends androidx.multidex.MultiDexApplication { .setIcon(Icon.createWithResource(this, R.mipmap.ic_shortcut_homework)) //.setIcon(getDesktopIconFromIconics(SzkolnyFont.Icon.szf_file_document_edit)) .setIntent(new Intent(Intent.ACTION_MAIN, null, this, MainActivity.class) - .putExtra("fragmentId", MainActivity.DRAWER_ITEM_HOMEWORKS)) + .putExtra("fragmentId", MainActivity.DRAWER_ITEM_HOMEWORK)) .build(); ShortcutInfo shortcutMessages = new ShortcutInfo.Builder(mContext, "item_messages") diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt index ac4d5366..a0ba4713 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt @@ -11,8 +11,9 @@ import com.google.gson.JsonArray import com.google.gson.JsonElement import com.google.gson.JsonObject import im.wangchao.mhttp.Response -import pl.szczodrzynski.edziennik.datamodels.Profile -import pl.szczodrzynski.edziennik.datamodels.Teacher +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile +import pl.szczodrzynski.navlib.R import pl.szczodrzynski.navlib.crc16 import pl.szczodrzynski.navlib.getColorFromRes import java.text.SimpleDateFormat diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt index 414c41f7..6cf8dec7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt @@ -19,7 +19,7 @@ import com.mikepenz.iconics.typeface.library.community.material.CommunityMateria import com.mikepenz.iconics.typeface.library.szkolny.font.SzkolnyFont import com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem -import pl.szczodrzynski.edziennik.datamodels.Metadata.* +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.* import pl.szczodrzynski.edziennik.utils.Themes import pl.szczodrzynski.navlib.NavView import pl.szczodrzynski.navlib.SystemBarsUtil @@ -30,6 +30,7 @@ import pl.szczodrzynski.navlib.drawer.items.DrawerPrimaryItem import pl.szczodrzynski.navlib.drawer.items.withAppTitle import pl.szczodrzynski.navlib.getColorFromAttr import androidx.appcompat.widget.PopupMenu +import androidx.core.graphics.ColorUtils import androidx.navigation.NavOptions import com.danimahardhika.cafebar.CafeBar import com.mikepenz.iconics.IconicsColor @@ -40,21 +41,35 @@ import com.mikepenz.materialdrawer.model.ProfileDrawerItem import com.mikepenz.materialdrawer.model.interfaces.IProfile import pl.droidsonroids.gif.GifDrawable import pl.szczodrzynski.edziennik.App.APP_URL -import pl.szczodrzynski.edziennik.api.AppError -import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.* -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback +import pl.szczodrzynski.edziennik.data.api.AppError +import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.* +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile -import pl.szczodrzynski.edziennik.datamodels.ProfileFull -import pl.szczodrzynski.edziennik.dialogs.ChangelogDialog -import pl.szczodrzynski.edziennik.fragments.* -import pl.szczodrzynski.edziennik.login.LoginActivity -import pl.szczodrzynski.edziennik.messages.MessagesDetailsFragment -import pl.szczodrzynski.edziennik.messages.MessagesFragment -import pl.szczodrzynski.edziennik.models.NavTarget +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull +import pl.szczodrzynski.edziennik.ui.dialogs.changelog.ChangelogDialog +import pl.szczodrzynski.edziennik.ui.modules.homework.HomeworkFragment +import pl.szczodrzynski.edziennik.ui.modules.login.LoginActivity +import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesDetailsFragment +import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesFragment +import pl.szczodrzynski.edziennik.utils.models.NavTarget import pl.szczodrzynski.edziennik.network.ServerRequest import pl.szczodrzynski.edziennik.sync.SyncJob +import pl.szczodrzynski.edziennik.ui.modules.agenda.AgendaFragment +import pl.szczodrzynski.edziennik.ui.modules.announcements.AnnouncementsFragment +import pl.szczodrzynski.edziennik.ui.modules.attendance.AttendanceFragment +import pl.szczodrzynski.edziennik.ui.modules.base.DebugFragment +import pl.szczodrzynski.edziennik.ui.modules.feedback.FeedbackFragment +import pl.szczodrzynski.edziennik.ui.modules.feedback.HelpFragment +import pl.szczodrzynski.edziennik.ui.modules.grades.editor.GradesEditorFragment +import pl.szczodrzynski.edziennik.ui.modules.grades.GradesFragment +import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment +import pl.szczodrzynski.edziennik.ui.modules.behaviour.BehaviourFragment +import pl.szczodrzynski.edziennik.ui.modules.notifications.NotificationsFragment +import pl.szczodrzynski.edziennik.ui.modules.settings.ProfileManagerFragment +import pl.szczodrzynski.edziennik.ui.modules.settings.SettingsNewFragment +import pl.szczodrzynski.edziennik.ui.modules.timetable.TimetableFragment import pl.szczodrzynski.edziennik.utils.SwipeRefreshLayoutNoTouch import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem @@ -82,9 +97,9 @@ class MainActivity : AppCompatActivity() { const val DRAWER_ITEM_AGENDA = 12 const val DRAWER_ITEM_GRADES = 13 const val DRAWER_ITEM_MESSAGES = 17 - const val DRAWER_ITEM_HOMEWORKS = 14 - const val DRAWER_ITEM_NOTICES = 15 - const val DRAWER_ITEM_ATTENDANCES = 16 + const val DRAWER_ITEM_HOMEWORK = 14 + const val DRAWER_ITEM_BEHAVIOUR = 15 + const val DRAWER_ITEM_ATTENDANCE = 16 const val DRAWER_ITEM_ANNOUNCEMENTS = 18 const val DRAWER_ITEM_NOTIFICATIONS = 20 const val DRAWER_ITEM_SETTINGS = 101 @@ -108,17 +123,17 @@ class MainActivity : AppCompatActivity() { .isStatic(true) .withPopToHome(false) - list += NavTarget(DRAWER_ITEM_TIMETABLE, R.string.menu_timetable, RegisterTimetableFragment::class) + list += NavTarget(DRAWER_ITEM_TIMETABLE, R.string.menu_timetable, TimetableFragment::class) .withIcon(CommunityMaterial.Icon2.cmd_timetable) .withBadgeTypeId(TYPE_LESSON_CHANGE) .isInDrawer(true) - list += NavTarget(DRAWER_ITEM_AGENDA, R.string.menu_agenda, RegisterAgendaDefaultFragment::class) + list += NavTarget(DRAWER_ITEM_AGENDA, R.string.menu_agenda, AgendaFragment::class) .withIcon(CommunityMaterial.Icon.cmd_calendar) .withBadgeTypeId(TYPE_EVENT) .isInDrawer(true) - list += NavTarget(DRAWER_ITEM_GRADES, R.string.menu_grades, RegisterGradesFragment::class) + list += NavTarget(DRAWER_ITEM_GRADES, R.string.menu_grades, GradesFragment::class) .withIcon(CommunityMaterial.Icon2.cmd_numeric_5_box) .withBadgeTypeId(TYPE_GRADE) .isInDrawer(true) @@ -128,29 +143,29 @@ class MainActivity : AppCompatActivity() { .withBadgeTypeId(TYPE_MESSAGE) .isInDrawer(true) - list += NavTarget(DRAWER_ITEM_HOMEWORKS, R.string.menu_homework, RegisterHomeworksFragment::class) + list += NavTarget(DRAWER_ITEM_HOMEWORK, R.string.menu_homework, HomeworkFragment::class) .withIcon(SzkolnyFont.Icon.szf_file_document_edit) .withBadgeTypeId(TYPE_HOMEWORK) .isInDrawer(true) - list += NavTarget(DRAWER_ITEM_NOTICES, R.string.menu_notices, RegisterNoticesFragment::class) + list += NavTarget(DRAWER_ITEM_BEHAVIOUR, R.string.menu_notices, BehaviourFragment::class) .withIcon(CommunityMaterial.Icon2.cmd_message_alert) .withBadgeTypeId(TYPE_NOTICE) .isInDrawer(true) - list += NavTarget(DRAWER_ITEM_ATTENDANCES, R.string.menu_attendances, RegisterAttendancesFragment::class) + list += NavTarget(DRAWER_ITEM_ATTENDANCE, R.string.menu_attendance, AttendanceFragment::class) .withIcon(CommunityMaterial.Icon.cmd_calendar_remove) .withBadgeTypeId(TYPE_ATTENDANCE) .isInDrawer(true) - list += NavTarget(DRAWER_ITEM_ANNOUNCEMENTS, R.string.menu_announcements, RegisterAnnouncementsFragment::class) + list += NavTarget(DRAWER_ITEM_ANNOUNCEMENTS, R.string.menu_announcements, AnnouncementsFragment::class) .withIcon(CommunityMaterial.Icon.cmd_bulletin_board) .withBadgeTypeId(TYPE_ANNOUNCEMENT) .isInDrawer(true) // static drawer items - list += NavTarget(DRAWER_ITEM_NOTIFICATIONS, R.string.menu_notifications, RegisterNotificationsFragment::class) + list += NavTarget(DRAWER_ITEM_NOTIFICATIONS, R.string.menu_notifications, NotificationsFragment::class) .withIcon(CommunityMaterial.Icon.cmd_bell_ring) .isInDrawer(true) .isStatic(true) @@ -229,8 +244,8 @@ class MainActivity : AppCompatActivity() { drawer.init(this@MainActivity) SystemBarsUtil(this@MainActivity).run { - paddingByKeyboard = b.navView - appFullscreen = true + //paddingByKeyboard = b.navView + appFullscreen = false statusBarColor = getColorFromAttr(context, android.R.attr.colorBackground) statusBarDarker = false statusBarFallbackLight = COLOR_HALF_TRANSPARENT @@ -239,6 +254,16 @@ class MainActivity : AppCompatActivity() { b.navView.configSystemBarsUtil(this) + // fix for setting status bar color to window color, outside of navlib + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + window.statusBarColor = statusBarColor + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ColorUtils.calculateLuminance(statusBarColor) > 0.6) { + window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + } + + // TODO fix navlib navbar detection, orientation change issues, status bar color setting if not fullscreen + commit() } @@ -511,9 +536,9 @@ class MainActivity : AppCompatActivity() { DRAWER_ITEM_TIMETABLE -> FEATURE_TIMETABLE DRAWER_ITEM_AGENDA -> FEATURE_AGENDA DRAWER_ITEM_GRADES -> FEATURE_GRADES - DRAWER_ITEM_HOMEWORKS -> FEATURE_HOMEWORKS - DRAWER_ITEM_NOTICES -> FEATURE_NOTICES - DRAWER_ITEM_ATTENDANCES -> FEATURE_ATTENDANCES + DRAWER_ITEM_HOMEWORK -> FEATURE_HOMEWORK + DRAWER_ITEM_BEHAVIOUR -> FEATURE_NOTICES + DRAWER_ITEM_ATTENDANCE -> FEATURE_ATTENDANCE DRAWER_ITEM_MESSAGES -> when (MessagesFragment.pageSelection) { 1 -> FEATURE_MESSAGES_OUTBOX else -> FEATURE_MESSAGES_INBOX @@ -527,9 +552,9 @@ class MainActivity : AppCompatActivity() { DRAWER_ITEM_TIMETABLE -> R.string.sync_feature_timetable DRAWER_ITEM_AGENDA -> R.string.sync_feature_agenda DRAWER_ITEM_GRADES -> R.string.sync_feature_grades - DRAWER_ITEM_HOMEWORKS -> R.string.sync_feature_homeworks - DRAWER_ITEM_NOTICES -> R.string.sync_feature_notices - DRAWER_ITEM_ATTENDANCES -> R.string.sync_feature_attendances + DRAWER_ITEM_HOMEWORK -> R.string.sync_feature_homework + DRAWER_ITEM_BEHAVIOUR -> R.string.sync_feature_notices + DRAWER_ITEM_ATTENDANCE -> R.string.sync_feature_attendance DRAWER_ITEM_MESSAGES -> when (MessagesFragment.pageSelection) { 1 -> R.string.sync_feature_messages_outbox else -> R.string.sync_feature_messages_inbox @@ -729,6 +754,9 @@ class MainActivity : AppCompatActivity() { drawer.close() drawer.setSelection(target.id, fireOnClick = false) navView.toolbar.setTitle(target.title ?: target.name) + navView.bottomBar.fabEnable = false + navView.bottomBar.fabExtended = false + navView.bottomBar.setFabOnClickListener(null) Log.d("NavDebug", "Navigating from ${navTarget.fragmentClass?.java?.simpleName} to ${target.fragmentClass?.java?.simpleName}") @@ -837,7 +865,19 @@ class MainActivity : AppCompatActivity() { fun gainAttention() { b.navView.postDelayed({ navView.gainAttentionOnBottomBar() + }, 2000) + } + + fun gainAttentionFAB() { + navView.bottomBar.fabExtended = false + + b.navView.postDelayed({ + navView.bottomBar.fabExtended = true }, 1000) + + b.navView.postDelayed({ + navView.bottomBar.fabExtended = false + }, 3000) } /* _____ _ _ diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/Notifier.java b/app/src/main/java/pl/szczodrzynski/edziennik/Notifier.java index 000fc179..fa13e360 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/Notifier.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/Notifier.java @@ -16,9 +16,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; import pl.szczodrzynski.edziennik.receivers.BootReceiver; import pl.szczodrzynski.edziennik.sync.SyncJob; import pl.szczodrzynski.edziennik.sync.SyncService; @@ -221,7 +221,7 @@ public class Notifier { | . ` |/ _ \| __| | _| |/ __/ _` | __| |/ _ \| '_ \ | |\ | (_) | |_| | | | | (_| (_| | |_| | (_) | | | | |_| \_|\___/ \__|_|_| |_|\___\__,_|\__|_|\___/|_| |*/ - public void add(pl.szczodrzynski.edziennik.models.Notification notification) { + public void add(pl.szczodrzynski.edziennik.utils.models.Notification notification) { app.appConfig.notifications.add(notification); } @@ -235,8 +235,8 @@ public class Notifier { } int unreadCount = 0; - List notificationList = new ArrayList<>(); - for (pl.szczodrzynski.edziennik.models.Notification notification: app.appConfig.notifications) { + List notificationList = new ArrayList<>(); + for (pl.szczodrzynski.edziennik.utils.models.Notification notification: app.appConfig.notifications) { if (!notification.notified) { notification.seen = false; notification.notified = true; @@ -250,7 +250,7 @@ public class Notifier { } } - for (pl.szczodrzynski.edziennik.models.Notification notification: notificationList) { + for (pl.szczodrzynski.edziennik.utils.models.Notification notification: notificationList) { Intent intent = new Intent(app, MainActivity.class); notification.fillIntent(intent); PendingIntent pendingIntent = PendingIntent.getActivity(app, notification.id, intent, 0); @@ -258,9 +258,9 @@ public class Notifier { // title, text, type, date .setContentTitle(notification.title) .setContentText(notification.text) - .setSubText(pl.szczodrzynski.edziennik.models.Notification.stringType(app, notification.type)) + .setSubText(pl.szczodrzynski.edziennik.utils.models.Notification.stringType(app, notification.type)) .setWhen(notification.addedDate) - .setTicker(app.getString(R.string.notification_ticker_format, pl.szczodrzynski.edziennik.models.Notification.stringType(app, notification.type))) + .setTicker(app.getString(R.string.notification_ticker_format, pl.szczodrzynski.edziennik.utils.models.Notification.stringType(app, notification.type))) // icon, color, lights, priority .setSmallIcon(R.drawable.ic_notification) .setColor(notificationColor) @@ -349,7 +349,7 @@ public class Notifier { } public void dump() { - for (pl.szczodrzynski.edziennik.models.Notification notification: app.appConfig.notifications) { + for (pl.szczodrzynski.edziennik.utils.models.Notification notification: app.appConfig.notifications) { Log.d(TAG, "Profile"+notification.profileId+" Notification from "+ Date.fromMillis(notification.addedDate).getFormattedString()+" "+ Time.fromMillis(notification.addedDate).getStringHMS()+" - "+notification.text); } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/WidgetTimetable.java b/app/src/main/java/pl/szczodrzynski/edziennik/WidgetTimetable.java index 4f7fb527..21496078 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/WidgetTimetable.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/WidgetTimetable.java @@ -28,22 +28,22 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; -import pl.szczodrzynski.edziennik.datamodels.EventFull; -import pl.szczodrzynski.edziennik.datamodels.LessonChange; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.fragments.HomeFragment; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.ItemWidgetTimetableModel; -import pl.szczodrzynski.edziennik.models.Time; -import pl.szczodrzynski.edziennik.models.Week; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.ItemWidgetTimetableModel; +import pl.szczodrzynski.edziennik.utils.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Week; import pl.szczodrzynski.edziennik.widgets.WidgetConfig; import pl.szczodrzynski.edziennik.sync.SyncJob; import pl.szczodrzynski.edziennik.widgets.timetable.LessonDetailsActivity; import pl.szczodrzynski.edziennik.widgets.timetable.WidgetTimetableService; import static pl.szczodrzynski.edziennik.ExtensionsKt.filterOutArchived; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK; import static pl.szczodrzynski.edziennik.utils.Utils.bs; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/MessageListCallback.java b/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/MessageListCallback.java deleted file mode 100644 index 77137a0e..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/MessageListCallback.java +++ /dev/null @@ -1,9 +0,0 @@ -package pl.szczodrzynski.edziennik.api.interfaces; - -import java.util.List; - -import pl.szczodrzynski.edziennik.datamodels.MessageFull; - -public interface MessageListCallback { - void onSuccess(List messageList); -} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/RecipientListGetCallback.java b/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/RecipientListGetCallback.java deleted file mode 100644 index dce9ec9d..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/RecipientListGetCallback.java +++ /dev/null @@ -1,9 +0,0 @@ -package pl.szczodrzynski.edziennik.api.interfaces; - -import java.util.List; - -import pl.szczodrzynski.edziennik.datamodels.Teacher; - -public interface RecipientListGetCallback { - void onSuccess(List teacherList); -} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/Api.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/Api.kt deleted file mode 100644 index 4af2e0e5..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/Api.kt +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) Kuba Szczodrzyński 2019-9-21. - */ - -package pl.szczodrzynski.edziennik.api.v2 - -import com.crashlytics.android.Crashlytics -import pl.szczodrzynski.edziennik.api.AppError -import pl.szczodrzynski.edziennik.api.v2.models.Data - -open class Api(open val data: Data) { - fun finishWithError(error: AppError) { - try { - data.saveData() - } catch (e: Exception) { - Crashlytics.logException(e) - } - - } -} \ No newline at end of file diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/ApiService.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/ApiService.kt index 88710709..758ff166 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/ApiService.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/ApiService.kt @@ -8,7 +8,6 @@ import android.app.Service import android.content.Intent import android.os.IBinder import android.util.Log -import androidx.core.app.NotificationCompat import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -21,8 +20,8 @@ import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface import pl.szczodrzynski.edziennik.api.v2.librus.Librus import pl.szczodrzynski.edziennik.api.v2.models.ApiError import pl.szczodrzynski.edziennik.api.v2.models.ApiTask -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile import kotlin.math.min class ApiService : Service() { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/Features.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/Features.kt index 5f4bab44..b9b5cd59 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/Features.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/Features.kt @@ -6,17 +6,16 @@ package pl.szczodrzynski.edziennik.api.v2 import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_AGENDA import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ANNOUNCEMENTS -import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ATTENDANCES +import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ATTENDANCE import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_GRADES import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOME -import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORKS +import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORK import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_MESSAGES -import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_NOTICES +import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_BEHAVIOUR import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_TIMETABLE -import pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED -import pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT -import pl.szczodrzynski.edziennik.messages.MessagesFragment -import pl.szczodrzynski.edziennik.messages.MessagesListFragment +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT +import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesFragment const val FEATURE_ALL = 0 const val FEATURE_TIMETABLE = 1 @@ -77,9 +76,9 @@ object Features { TYPE_SENT -> listOf(FEATURE_MESSAGES_OUTBOX) else -> listOf(FEATURE_MESSAGES_INBOX, FEATURE_MESSAGES_OUTBOX) } - DRAWER_ITEM_HOMEWORKS -> listOf(FEATURE_HOMEWORK) - DRAWER_ITEM_NOTICES -> listOf(FEATURE_NOTICES) - DRAWER_ITEM_ATTENDANCES -> listOf(FEATURE_ATTENDANCES) + DRAWER_ITEM_HOMEWORK -> listOf(FEATURE_HOMEWORK) + DRAWER_ITEM_BEHAVIOUR -> listOf(FEATURE_NOTICES) + DRAWER_ITEM_ATTENDANCE -> listOf(FEATURE_ATTENDANCES) DRAWER_ITEM_ANNOUNCEMENTS -> listOf(FEATURE_ANNOUNCEMENTS) else -> getAllFeatures() } + getAllNecessary() diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/Librus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/Librus.kt index e1db1e50..e82a9c82 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/Librus.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/Librus.kt @@ -6,16 +6,17 @@ package pl.szczodrzynski.edziennik.api.v2.librus import android.util.Log import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.api.v2.* +import pl.szczodrzynski.edziennik.api.v2.CODE_INTERNAL_LIBRUS_ACCOUNT_410 +import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_NOT_NEEDED +import pl.szczodrzynski.edziennik.api.v2.endpoints import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus -import pl.szczodrzynski.edziennik.api.v2.librus.login.* +import pl.szczodrzynski.edziennik.api.v2.librusLoginMethods import pl.szczodrzynski.edziennik.api.v2.models.ApiError import pl.szczodrzynski.edziennik.api.v2.models.Endpoint -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile import pl.szczodrzynski.edziennik.utils.Utils.d class Librus(val app: App, val profile: Profile?, val loginStore: LoginStore, val callback: EdziennikCallback) : EdziennikInterface { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusEndpoints.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusEndpoints.kt index 7d981d48..51df39ec 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusEndpoints.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusEndpoints.kt @@ -5,13 +5,9 @@ package pl.szczodrzynski.edziennik.api.v2.librus import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.api.v2.* +import pl.szczodrzynski.edziennik.api.v2.ENDPOINT_LIBRUS_API_ME import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApiMe -import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusApi -import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusMessages -import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusPortal -import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusSynergia import pl.szczodrzynski.edziennik.utils.Utils class LibrusEndpoints(val data: DataLibrus, val onSuccess: () -> Unit) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusOld.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusOld.kt deleted file mode 100644 index f801e97b..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusOld.kt +++ /dev/null @@ -1,170 +0,0 @@ -package pl.szczodrzynski.edziennik.api.v2.librus - -import android.content.Context -import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.api.AppError -import pl.szczodrzynski.edziennik.api.interfaces.* -import pl.szczodrzynski.edziennik.api.v2.* -import pl.szczodrzynski.edziennik.api.v2.librus.firstlogin.FirstLoginLibrus -import pl.szczodrzynski.edziennik.api.v2.librus.firstlogin.FirstLoginSynergia -import pl.szczodrzynski.edziennik.api.v2.models.Data -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.MessageFull -import pl.szczodrzynski.edziennik.datamodels.Profile -import pl.szczodrzynski.edziennik.datamodels.ProfileFull -import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo -import pl.szczodrzynski.edziennik.models.Endpoint -import java.lang.Exception - -class LibrusOld(val app: App, val profile: Profile?, val loginStore: LoginStore) : OldEdziennikInterface { - private val TAG = "librus.Librus" - - lateinit var syncCallback: SyncCallback - lateinit var featureList: ArrayList - lateinit var data: Data - var onLogin: (() -> Unit)? = null - val internalErrorList = ArrayList() - - fun isError(error: AppError?): Boolean { - if (error == null) - return false - syncCallback.onError(null, error) - return true - } - - - /* _ _ _ - | | (_) | - | | _| |__ _ __ _ _ ___ - | | | | '_ \| '__| | | / __| - | |____| | |_) | | | |_| \__ \ - |______|_|_.__/|_| \__,_|__*/ - - private fun firstLoginLibrus() { - FirstLoginLibrus(app, loginStore, syncCallback) { profileList -> - syncCallback.onLoginFirst(profileList, loginStore) - } - } - private fun synergiaTokenExtractor() { - if (profile == null) { - throw Exception("Profile may not be null") - } - - } - /* _____ _ - / ____| (_) - | (___ _ _ _ __ ___ _ __ __ _ _ __ _ - \___ \| | | | '_ \ / _ \ '__/ _` | |/ _` | - ____) | |_| | | | | __/ | | (_| | | (_| | - |_____/ \__, |_| |_|\___|_| \__, |_|\__,_| - __/ | __/ | - |___/ |__*/ - private fun loginSynergia() { - - } - private fun firstLoginSynergia() { - FirstLoginSynergia(app, loginStore, syncCallback) { profileList -> - syncCallback.onLoginFirst(profileList, loginStore) - } - } - /* _ _____ _______ - | |/ ____|__ __| - | | (___ | | - _ | |\___ \ | | - | |__| |____) | | | - \____/|_____/ |*/ - private fun loginJst() { - - } - - private fun wrapCallback(callback: SyncCallback): SyncCallback { - return object : SyncCallback { - override fun onSuccess(activityContext: Context?, profileFull: ProfileFull?) { - callback.onSuccess(activityContext, profileFull) - } - - override fun onProgress(progressStep: Int) { - callback.onProgress(progressStep) - } - - override fun onActionStarted(stringResId: Int) { - callback.onActionStarted(stringResId) - } - - override fun onLoginFirst(profileList: MutableList?, loginStore: LoginStore?) { - callback.onLoginFirst(profileList, loginStore) - } - - override fun onError(activityContext: Context?, error: AppError) { - when (error.errorCode) { - in internalErrorList -> { - // finish immediately if the same error occurs twice during the same sync - callback.onError(activityContext, error) - } - /* CODE_INTERNAL_LIBRUS_ACCOUNT_410 -> { - internalErrorList.add(error.errorCode) - loginStore.removeLoginData("refreshToken") // force a clean login - //loginLibrus() - }*/ - else -> callback.onError(activityContext, error) - } - } - } - } - - fun login(callback: SyncCallback) { - this.internalErrorList.clear() - this.syncCallback = wrapCallback(callback) - when (loginStore.mode) { - LOGIN_MODE_LIBRUS_EMAIL -> { - //loginLibrus() - } - LOGIN_MODE_LIBRUS_SYNERGIA -> { - - } - LOGIN_MODE_LIBRUS_JST -> { - - } - } - } - - fun getData() { - - } - - override fun sync(activityContext: Context, callback: SyncCallback, profileId: Int, profile: Profile?, loginStore: LoginStore) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - - override fun syncMessages(activityContext: Context, errorCallback: SyncCallback, profile: ProfileFull) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - - override fun syncFeature(activityContext: Context, callback: SyncCallback, profile: ProfileFull, vararg featureList: Int) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - - override fun getMessage(activityContext: Context, errorCallback: SyncCallback, profile: ProfileFull, message: MessageFull, messageCallback: MessageGetCallback) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - - override fun getAttachment(activityContext: Context, errorCallback: SyncCallback, profile: ProfileFull, message: MessageFull, attachmentId: Long, attachmentCallback: AttachmentGetCallback) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - - override fun getRecipientList(activityContext: Context, errorCallback: SyncCallback, profile: ProfileFull, recipientListGetCallback: RecipientListGetCallback) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - - override fun getComposeInfo(profile: ProfileFull): MessagesComposeInfo { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - - override fun getConfigurableEndpoints(profile: Profile?): MutableMap { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - - override fun isEndpointEnabled(profile: Profile?, defaultActive: Boolean, name: String?): Boolean { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } -} \ No newline at end of file diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusTest.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusTest.kt index da637044..99647557 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusTest.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/LibrusTest.kt @@ -4,21 +4,14 @@ package pl.szczodrzynski.edziennik.api.v2.librus -import android.content.Context import android.content.Intent import com.google.gson.JsonObject import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.api.AppError -import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback -import pl.szczodrzynski.edziennik.api.v2.* -import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback -import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus -import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrus -import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusPortal -import pl.szczodrzynski.edziennik.api.v2.models.ApiError -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile -import pl.szczodrzynski.edziennik.utils.Utils.d +import pl.szczodrzynski.edziennik.api.v2.ApiService +import pl.szczodrzynski.edziennik.api.v2.LOGIN_MODE_LIBRUS_EMAIL +import pl.szczodrzynski.edziennik.api.v2.LOGIN_TYPE_LIBRUS +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile class LibrusTest(val app: App) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/DataLibrus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/DataLibrus.kt index 8604077f..a798457f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/DataLibrus.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/DataLibrus.kt @@ -13,8 +13,8 @@ import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_LIBRUS_PORTAL import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_LIBRUS_SYNERGIA import pl.szczodrzynski.edziennik.api.v2.models.Data import pl.szczodrzynski.edziennik.currentTimeUnix -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile import pl.szczodrzynski.edziennik.isNotNullNorEmpty class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApi.kt index 46e172ab..b79136ae 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApi.kt @@ -4,22 +4,13 @@ package pl.szczodrzynski.edziennik.api.v2.librus.data -import com.google.gson.JsonNull import com.google.gson.JsonObject import im.wangchao.mhttp.Request import im.wangchao.mhttp.Response import im.wangchao.mhttp.callback.JsonCallbackHandler -import io.fabric.sdk.android.services.network.HttpRequest.post -import pl.szczodrzynski.edziennik.api.AppError -import pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE -import pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER import pl.szczodrzynski.edziennik.api.v2.* -import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusSynergia import pl.szczodrzynski.edziennik.api.v2.models.ApiError import pl.szczodrzynski.edziennik.getString -import pl.szczodrzynski.edziennik.utils.Utils.d -import java.lang.Exception -import java.net.HttpURLConnection import java.net.HttpURLConnection.* open class LibrusApi(open val data: DataLibrus) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApiGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApiGrades.kt index b60fefef..946f01b3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApiGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApiGrades.kt @@ -1,10 +1,11 @@ package pl.szczodrzynski.edziennik.api.v2.librus.data import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback import pl.szczodrzynski.edziennik.api.v2.models.Data -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile +import pl.szczodrzynski.edziennik.data.api.interfaces.ProgressCallback +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile + class LibrusApiGrades(val app: App, val profile: Profile, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApiMe.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApiMe.kt index 43a60413..cbde7141 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApiMe.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusApiMe.kt @@ -5,10 +5,6 @@ package pl.szczodrzynski.edziennik.api.v2.librus.data import pl.szczodrzynski.edziennik.* -import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback -import pl.szczodrzynski.edziennik.api.v2.models.Data -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile class LibrusApiMe(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusApi(data) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusSynergiaGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusSynergiaGrades.kt index 693715a2..a0d0853e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusSynergiaGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/data/LibrusSynergiaGrades.kt @@ -1,10 +1,10 @@ package pl.szczodrzynski.edziennik.api.v2.librus.data import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback import pl.szczodrzynski.edziennik.api.v2.models.Data -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile +import pl.szczodrzynski.edziennik.data.api.interfaces.ProgressCallback +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile class LibrusSynergiaGrades(val app: App, val profile: Profile, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/firstlogin/FirstLoginLibrus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/firstlogin/FirstLoginLibrus.kt deleted file mode 100644 index e8255006..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/firstlogin/FirstLoginLibrus.kt +++ /dev/null @@ -1,12 +0,0 @@ -package pl.szczodrzynski.edziennik.api.v2.librus.firstlogin - -import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile - -class FirstLoginLibrus(val app: App, val loginStore: LoginStore, val progressCallback: ProgressCallback, val onSuccess: (profileList: List) -> Unit) { - init { - - } -} \ No newline at end of file diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/firstlogin/FirstLoginSynergia.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/firstlogin/FirstLoginSynergia.kt deleted file mode 100644 index 376a86ac..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/firstlogin/FirstLoginSynergia.kt +++ /dev/null @@ -1,12 +0,0 @@ -package pl.szczodrzynski.edziennik.api.v2.librus.firstlogin - -import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile - -class FirstLoginSynergia(val app: App, val loginStore: LoginStore, val progressCallback: ProgressCallback, val onSuccess: (profileList: List) -> Unit) { - init { - - } -} \ No newline at end of file diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/LoginLibrusPortal.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/LoginLibrusPortal.kt index 7a96ea5d..d1524740 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/LoginLibrusPortal.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/LoginLibrusPortal.kt @@ -8,12 +8,9 @@ import im.wangchao.mhttp.body.MediaTypeUtils import im.wangchao.mhttp.callback.JsonCallbackHandler import im.wangchao.mhttp.callback.TextCallbackHandler import pl.szczodrzynski.edziennik.* -import pl.szczodrzynski.edziennik.api.AppError -import pl.szczodrzynski.edziennik.api.AppError.* import pl.szczodrzynski.edziennik.api.v2.* import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus import pl.szczodrzynski.edziennik.api.v2.models.ApiError -import pl.szczodrzynski.edziennik.utils.Utils.c import java.net.HttpURLConnection.HTTP_UNAUTHORIZED import java.util.ArrayList import java.util.regex.Pattern diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/LoginLibrusSynergia.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/LoginLibrusSynergia.kt index 5c59e431..aadb1ae7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/LoginLibrusSynergia.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/LoginLibrusSynergia.kt @@ -10,15 +10,11 @@ import im.wangchao.mhttp.Response import im.wangchao.mhttp.callback.JsonCallbackHandler import im.wangchao.mhttp.callback.TextCallbackHandler import okhttp3.Cookie -import okhttp3.HttpUrl import pl.szczodrzynski.edziennik.api.v2.* import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus import pl.szczodrzynski.edziennik.api.v2.models.ApiError -import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.getString import pl.szczodrzynski.edziennik.getUnixDate -import pl.szczodrzynski.edziennik.isNotNullNorEmpty -import java.lang.Exception import java.net.HttpURLConnection class LoginLibrusSynergia(val data: DataLibrus, val onSuccess: () -> Unit) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/SynergiaTokenExtractor.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/SynergiaTokenExtractor.kt index 8b6a4c3b..091ccbb2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/SynergiaTokenExtractor.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/librus/login/SynergiaTokenExtractor.kt @@ -6,8 +6,6 @@ import im.wangchao.mhttp.Request import im.wangchao.mhttp.Response import im.wangchao.mhttp.callback.JsonCallbackHandler import pl.szczodrzynski.edziennik.* -import pl.szczodrzynski.edziennik.api.AppError -import pl.szczodrzynski.edziennik.api.AppError.* import pl.szczodrzynski.edziennik.api.v2.* import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus import pl.szczodrzynski.edziennik.api.v2.models.ApiError diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/Data.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/Data.kt index cf0424e2..9669e31f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/Data.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/Data.kt @@ -6,12 +6,26 @@ import androidx.core.util.isNotEmpty import com.google.gson.JsonObject import im.wangchao.mhttp.Response import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.api.AppError -import pl.szczodrzynski.edziennik.api.AppError.* -import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback import pl.szczodrzynski.edziennik.api.v2.interfaces.EndpointCallback -import pl.szczodrzynski.edziennik.datamodels.* -import pl.szczodrzynski.edziennik.models.Date +import pl.szczodrzynski.edziennik.data.api.AppError.* +import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement +import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance +import pl.szczodrzynski.edziennik.data.db.modules.events.Event +import pl.szczodrzynski.edziennik.data.db.modules.events.EventType +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory +import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher +import pl.szczodrzynski.edziennik.data.db.modules.teams.Team +import pl.szczodrzynski.edziennik.utils.models.Date import java.io.InterruptedIOException import java.net.SocketTimeoutException import java.net.UnknownHostException diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/Endpoint.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/Endpoint.kt index b65e4f62..676d71ae 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/Endpoint.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/Endpoint.kt @@ -1,8 +1,5 @@ package pl.szczodrzynski.edziennik.api.v2.models -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile - /** * A Endpoint descriptor class. * diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/LoginMethod.kt b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/LoginMethod.kt index af14a6ee..e61d1142 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/LoginMethod.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/api/v2/models/LoginMethod.kt @@ -5,8 +5,8 @@ package pl.szczodrzynski.edziennik.api.v2.models import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_NOT_NEEDED -import pl.szczodrzynski.edziennik.datamodels.LoginStore -import pl.szczodrzynski.edziennik.datamodels.Profile +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile /** * A Login Method descriptor class. diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/AppError.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/AppError.java similarity index 99% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/AppError.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/AppError.java index 2234783f..440bc0bb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/AppError.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/AppError.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.api; +package pl.szczodrzynski.edziennik.data.api; import android.content.Context; import android.os.AsyncTask; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/Edziennik.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Edziennik.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/Edziennik.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/Edziennik.java index f5125615..99ab1a4b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/Edziennik.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Edziennik.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.api; +package pl.szczodrzynski.edziennik.data.api; import android.app.Activity; import android.appwidget.AppWidgetManager; @@ -43,27 +43,27 @@ import pl.szczodrzynski.edziennik.BuildConfig; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; import pl.szczodrzynski.edziennik.WidgetTimetable; -import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; -import pl.szczodrzynski.edziennik.datamodels.AnnouncementFull; -import pl.szczodrzynski.edziennik.datamodels.Attendance; -import pl.szczodrzynski.edziennik.datamodels.AttendanceFull; -import pl.szczodrzynski.edziennik.datamodels.Event; -import pl.szczodrzynski.edziennik.datamodels.EventFull; -import pl.szczodrzynski.edziennik.datamodels.EventType; -import pl.szczodrzynski.edziennik.datamodels.GradeFull; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Message; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; -import pl.szczodrzynski.edziennik.datamodels.Metadata; -import pl.szczodrzynski.edziennik.datamodels.Notice; -import pl.szczodrzynski.edziennik.datamodels.NoticeFull; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.datamodels.Team; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Notification; +import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.db.modules.announcements.AnnouncementFull; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.AttendanceFull; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventType; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeFull; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice; +import pl.szczodrzynski.edziennik.data.db.modules.notices.NoticeFull; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.teams.Team; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Notification; import pl.szczodrzynski.edziennik.network.ServerRequest; import pl.szczodrzynski.edziennik.sync.SyncJob; import pl.szczodrzynski.edziennik.utils.Themes; @@ -75,34 +75,34 @@ import static com.mikepenz.iconics.utils.IconicsConvertersKt.colorInt; import static com.mikepenz.iconics.utils.IconicsConvertersKt.sizeDp; import static pl.szczodrzynski.edziennik.App.APP_URL; import static pl.szczodrzynski.edziennik.MainActivity.DRAWER_ITEM_HOME; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_OK; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_PROFILE_ARCHIVED; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_PROFILE_NOT_FOUND; -import static pl.szczodrzynski.edziennik.api.AppError.stringErrorCode; -import static pl.szczodrzynski.edziennik.api.AppError.stringErrorType; -import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_AGENDA; -import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_ALL; -import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_ANNOUNCEMENTS; -import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_ATTENDANCES; -import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_GRADES; -import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_HOMEWORKS; -import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_MESSAGES_INBOX; -import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_MESSAGES_OUTBOX; -import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_NOTICES; -import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_TIMETABLE; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_IUCZNIOWIE; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_LIBRUS; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_VULCAN; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OK; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_PROFILE_ARCHIVED; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_PROFILE_NOT_FOUND; +import static pl.szczodrzynski.edziennik.data.api.AppError.stringErrorCode; +import static pl.szczodrzynski.edziennik.data.api.AppError.stringErrorType; +import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_AGENDA; +import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_ALL; +import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_ANNOUNCEMENTS; +import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_ATTENDANCE; +import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_GRADES; +import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_MESSAGES_INBOX; +import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_MESSAGES_OUTBOX; +import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_NOTICES; +import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_TIMETABLE; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_IUCZNIOWIE; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_LIBRUS; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_VULCAN; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED; import static pl.szczodrzynski.edziennik.sync.SyncService.PROFILE_MAX_PROGRESS; import static pl.szczodrzynski.edziennik.utils.Utils.d; import static pl.szczodrzynski.edziennik.utils.Utils.ns; @@ -115,7 +115,7 @@ public class Edziennik { private static boolean registerEmpty; public static int oldLuckyNumber; - public static OldEdziennikInterface getApi(App app, int loginType) { + public static EdziennikInterface getApi(App app, int loginType) { switch (loginType) { default: case LOGIN_TYPE_MOBIDZIENNIK: @@ -306,7 +306,7 @@ public class Edziennik { app.notifier.add(new Notification(app.getContext(), text) .withProfileData(profile.getId(), profile.getName()) .withType(event.type == TYPE_HOMEWORK ? Notification.TYPE_NEW_HOMEWORK : Notification.TYPE_NEW_EVENT) - .withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORKS : MainActivity.DRAWER_ITEM_AGENDA) + .withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORK : MainActivity.DRAWER_ITEM_AGENDA) .withLongExtra("eventId", event.id) .withLongExtra("eventDate", event.eventDate.getValue()) .withAddedDate(event.addedDate) @@ -354,7 +354,7 @@ public class Edziennik { app.notifier.add(new Notification(app.getContext(), text) .withProfileData(profile.getId(), profile.getName()) .withType(Notification.TYPE_NEW_NOTICE) - .withFragmentRedirect(MainActivity.DRAWER_ITEM_NOTICES) + .withFragmentRedirect(MainActivity.DRAWER_ITEM_BEHAVIOUR) .withLongExtra("noticeId", notice.id) .withAddedDate(notice.addedDate) ); @@ -382,7 +382,7 @@ public class Edziennik { app.notifier.add(new Notification(app.getContext(), text) .withProfileData(profile.getId(), profile.getName()) .withType(Notification.TYPE_NEW_ATTENDANCE) - .withFragmentRedirect(MainActivity.DRAWER_ITEM_ATTENDANCES) + .withFragmentRedirect(MainActivity.DRAWER_ITEM_ATTENDANCE) .withLongExtra("attendanceId", attendance.id) .withAddedDate(attendance.addedDate) ); @@ -521,7 +521,7 @@ public class Edziennik { app.notifier.add(new Notification(app.getContext(), app.getString(R.string.notification_shared_event_format, event.sharedByName, type != null ? type.name : "wydarzenie", event.eventDate == null ? "nieznana data" : event.eventDate.getFormattedString(), event.topic)) .withProfileData(profile.getId(), profile.getName()) .withType(event.type == TYPE_HOMEWORK ? Notification.TYPE_NEW_SHARED_HOMEWORK : Notification.TYPE_NEW_SHARED_EVENT) - .withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORKS : MainActivity.DRAWER_ITEM_AGENDA) + .withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORK : MainActivity.DRAWER_ITEM_AGENDA) .withLongExtra("eventDate", event.eventDate.getValue()) ); } @@ -625,7 +625,7 @@ public class Edziennik { * Used in services, login form and {@code guiSync} *

    * May be ran on worker thread. - * {@link OldEdziennikInterface}.sync is ran always on worker thread. + * {@link EdziennikInterface}.sync is ran always on worker thread. * Every callback is ran on the UI thread. * * @param app @@ -676,7 +676,7 @@ public class Edziennik { } }; AsyncTask.execute(() -> { - ProfileFull profile = app.db.profileDao().getFullByIdNow(profileId); + ProfileFull profile = app.db.profileDao().getByIdNow(profileId); if (profile != null) { if (profile.getArchived()) { @@ -849,7 +849,7 @@ public class Edziennik { app.getString(R.string.menu_grades), app.getString(R.string.menu_homework), app.getString(R.string.menu_notices), - app.getString(R.string.menu_attendances), + app.getString(R.string.menu_attendance), app.getString(R.string.title_messages_inbox_single), app.getString(R.string.title_messages_sent_single), app.getString(R.string.menu_announcements) @@ -858,9 +858,9 @@ public class Edziennik { FEATURE_TIMETABLE, FEATURE_AGENDA, FEATURE_GRADES, - FEATURE_HOMEWORKS, + FEATURE_HOMEWORK, FEATURE_NOTICES, - FEATURE_ATTENDANCES, + FEATURE_ATTENDANCE, FEATURE_MESSAGES_INBOX, FEATURE_MESSAGES_OUTBOX, FEATURE_ANNOUNCEMENTS @@ -1130,7 +1130,7 @@ public class Edziennik { .show(); } public void removeProfile(int profileId) { - Profile profileObject = app.db.profileDao().getFullByIdNow(profileId); + Profile profileObject = app.db.profileDao().getByIdNow(profileId); if (profileObject == null) return; app.db.announcementDao().clear(profileId); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/Iuczniowie.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Iuczniowie.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/Iuczniowie.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/Iuczniowie.java index 17b6cc9c..33c69671 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/Iuczniowie.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Iuczniowie.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.api; +package pl.szczodrzynski.edziennik.data.api; import android.content.Context; import android.graphics.Color; @@ -34,64 +34,64 @@ import okhttp3.HttpUrl; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.BuildConfig; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface; -import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback; -import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; -import pl.szczodrzynski.edziennik.datamodels.Announcement; -import pl.szczodrzynski.edziennik.datamodels.Attendance; -import pl.szczodrzynski.edziennik.datamodels.Event; -import pl.szczodrzynski.edziennik.datamodels.Grade; -import pl.szczodrzynski.edziennik.datamodels.Lesson; -import pl.szczodrzynski.edziennik.datamodels.LessonChange; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.LuckyNumber; -import pl.szczodrzynski.edziennik.datamodels.Message; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipient; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull; -import pl.szczodrzynski.edziennik.datamodels.Metadata; -import pl.szczodrzynski.edziennik.datamodels.Notice; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.datamodels.Subject; -import pl.szczodrzynski.edziennik.datamodels.Teacher; -import pl.szczodrzynski.edziennik.datamodels.Team; -import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Endpoint; -import pl.szczodrzynski.edziennik.models.Time; -import pl.szczodrzynski.edziennik.models.Week; +import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface; +import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber; +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; +import pl.szczodrzynski.edziennik.data.db.modules.teams.Team; +import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Endpoint; +import pl.szczodrzynski.edziennik.utils.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Week; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_SCHOOL_NAME; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_DELETED; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT; -import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEGATIVE; -import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEUTRAL; -import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_POSITIVE; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_SCHOOL_NAME; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_MAINTENANCE; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_DELETED; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT; +import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEGATIVE; +import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEUTRAL; +import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_POSITIVE; import static pl.szczodrzynski.edziennik.utils.Utils.crc16; import static pl.szczodrzynski.edziennik.utils.Utils.crc32; import static pl.szczodrzynski.edziennik.utils.Utils.d; import static pl.szczodrzynski.edziennik.utils.Utils.getWordGradeValue; -public class Iuczniowie implements OldEdziennikInterface { +public class Iuczniowie implements EdziennikInterface { public Iuczniowie(App app) { this.app = app; } @@ -200,7 +200,7 @@ public class Iuczniowie implements OldEdziennikInterface { targetEndpoints.add("Exams"); targetEndpoints.add("Notices"); targetEndpoints.add("Announcements"); - targetEndpoints.add("Attendances"); + targetEndpoints.add("Attendance"); targetEndpoints.add("MessagesInbox"); targetEndpoints.add("MessagesOutbox"); targetEndpoints.add("Finish"); @@ -235,14 +235,14 @@ public class Iuczniowie implements OldEdziennikInterface { targetEndpoints.add("Grades"); targetEndpoints.add("PropositionGrades"); break; - case FEATURE_HOMEWORKS: - targetEndpoints.add("Homeworks"); + case FEATURE_HOMEWORK: + targetEndpoints.add("Homework"); break; case FEATURE_NOTICES: targetEndpoints.add("Notices"); break; - case FEATURE_ATTENDANCES: - targetEndpoints.add("Attendances"); + case FEATURE_ATTENDANCE: + targetEndpoints.add("Attendance"); break; case FEATURE_MESSAGES_INBOX: targetEndpoints.add("MessagesInbox"); @@ -300,9 +300,9 @@ public class Iuczniowie implements OldEdziennikInterface { } } - this.attendancesMonth = today.month; - this.attendancesYear = today.year; - this.attendancesPrevMonthChecked = false; + this.attendanceMonth = today.month; + this.attendanceYear = today.year; + this.attendancePrevMonthChecked = false; this.examsMonth = today.month; this.examsYear = today.year; this.examsMonthsChecked = 0; @@ -352,8 +352,8 @@ public class Iuczniowie implements OldEdziennikInterface { case "Announcements": getAnnouncements(); break; - case "Attendances": - getAttendances(); + case "Attendance": + getAttendance(); break; case "MessagesInbox": getMessagesInbox(); @@ -880,11 +880,17 @@ public class Iuczniowie implements OldEdziennikInterface { boolean countToTheAverage = jGrade.get("DoSredniej").getAsBoolean(); float value = jGrade.get("WartoscDoSred").getAsFloat(); + String gradeColor = jGrade.get("Kolor").getAsString(); + int colorInt = 0xff2196f3; + if (!gradeColor.isEmpty()) { + colorInt = Color.parseColor("#"+gradeColor); + } + Grade gradeObject = new Grade( profileId, jGrade.get("idK").getAsLong(), jGrade.get("Kategoria").getAsString(), - Color.parseColor("#"+jGrade.get("Kolor").getAsString()), + colorInt, "", jGrade.get("Ocena").getAsString(), value, @@ -1190,17 +1196,17 @@ public class Iuczniowie implements OldEdziennikInterface { }); } - private int attendancesYear; - private int attendancesMonth; - private boolean attendancesPrevMonthChecked = false; - private void getAttendances() { - callback.onActionStarted(R.string.sync_action_syncing_attendances); + private int attendanceYear; + private int attendanceMonth; + private boolean attendancePrevMonthChecked = false; + private void getAttendance() { + callback.onActionStarted(R.string.sync_action_syncing_attendance); apiRequest(Request.builder() .url(IDZIENNIK_URL +"/mod_panelRodzica/obecnosci/WS_obecnosciUcznia.asmx/pobierzObecnosciUcznia") .userAgent(userAgent) .addParameter("idPozDziennika", loginRegisterId) - .addParameter("mc", attendancesMonth) - .addParameter("rok", attendancesYear) + .addParameter("mc", attendanceMonth) + .addParameter("rok", attendanceYear) .addParameter("dataTygodnia", "") .postJson(), (result, response) -> { JsonObject data = result.getAsJsonObject("d"); @@ -1275,25 +1281,25 @@ public class Iuczniowie implements OldEdziennikInterface { } } - int attendancesDateValue = attendancesYear*10000 + attendancesMonth*100; - if (profile.getEmpty() && attendancesDateValue > profile.getSemesterStart(1).getValue()) { - attendancesPrevMonthChecked = true; // do not need to check prev month later - attendancesMonth--; - if (attendancesMonth < 1) { - attendancesMonth = 12; - attendancesYear--; + int attendanceDateValue = attendanceYear *10000 + attendanceMonth *100; + if (profile.getEmpty() && attendanceDateValue > profile.getSemesterStart(1).getValue()) { + attendancePrevMonthChecked = true; // do not need to check prev month later + attendanceMonth--; + if (attendanceMonth < 1) { + attendanceMonth = 12; + attendanceYear--; } - r("get", "Attendances"); - } else if (!attendancesPrevMonthChecked /* get also the previous month */) { - attendancesMonth--; - if (attendancesMonth < 1) { - attendancesMonth = 12; - attendancesYear--; + r("get", "Attendance"); + } else if (!attendancePrevMonthChecked /* get also the previous month */) { + attendanceMonth--; + if (attendanceMonth < 1) { + attendanceMonth = 12; + attendanceYear--; } - attendancesPrevMonthChecked = true; - r("get", "Attendances"); + attendancePrevMonthChecked = true; + r("get", "Attendance"); } else { - r("finish", "Attendances"); + r("finish", "Attendance"); } }); } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/Librus.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Librus.java similarity index 91% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/Librus.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/Librus.java index 0199f8f0..ff04e59e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/Librus.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Librus.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.api; +package pl.szczodrzynski.edziennik.data.api; import android.content.Context; import android.graphics.Color; @@ -45,38 +45,40 @@ import im.wangchao.mhttp.callback.TextCallbackHandler; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.BuildConfig; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface; -import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback; -import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; -import pl.szczodrzynski.edziennik.datamodels.Announcement; -import pl.szczodrzynski.edziennik.datamodels.Attendance; -import pl.szczodrzynski.edziennik.datamodels.Event; -import pl.szczodrzynski.edziennik.datamodels.EventType; -import pl.szczodrzynski.edziennik.datamodels.Grade; -import pl.szczodrzynski.edziennik.datamodels.GradeCategory; -import pl.szczodrzynski.edziennik.datamodels.Lesson; -import pl.szczodrzynski.edziennik.datamodels.LessonChange; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.LuckyNumber; -import pl.szczodrzynski.edziennik.datamodels.Message; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipient; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull; -import pl.szczodrzynski.edziennik.datamodels.Metadata; -import pl.szczodrzynski.edziennik.datamodels.Notice; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.datamodels.Subject; -import pl.szczodrzynski.edziennik.datamodels.Teacher; -import pl.szczodrzynski.edziennik.datamodels.Team; -import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Endpoint; -import pl.szczodrzynski.edziennik.models.Time; -import pl.szczodrzynski.edziennik.models.Week; +import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface; +import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.api.v2.models.DataStore; +import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventType; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber; +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsence; +import pl.szczodrzynski.edziennik.data.db.modules.teams.Team; +import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Endpoint; +import pl.szczodrzynski.edziennik.utils.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Week; import pl.szczodrzynski.edziennik.utils.Utils; import static java.net.HttpURLConnection.HTTP_BAD_REQUEST; @@ -85,44 +87,44 @@ import static java.net.HttpURLConnection.HTTP_GONE; import static java.net.HttpURLConnection.HTTP_NOT_FOUND; import static java.net.HttpURLConnection.HTTP_OK; import static java.net.HttpURLConnection.HTTP_UNAUTHORIZED; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_LIBRUS_DISCONNECTED; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_LIBRUS_NOT_ACTIVATED; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_PROFILE_NOT_FOUND; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_SYNERGIA_NOT_ACTIVATED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_PT_MEETING; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_TEACHER_ABSENCE; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_NORMAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT; -import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEGATIVE; -import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEUTRAL; -import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_POSITIVE; -import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_EDUCATOR; -import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_LIBRARIAN; -import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_OTHER; -import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_PARENTS_COUNCIL; -import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_PEDAGOGUE; -import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SCHOOL_ADMIN; -import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SCHOOL_PARENTS_COUNCIL; -import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SECRETARIAT; -import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SUPER_ADMIN; -import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_TEACHER; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_LIBRUS_DISCONNECTED; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_LIBRUS_NOT_ACTIVATED; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_MAINTENANCE; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_PROFILE_NOT_FOUND; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_SYNERGIA_NOT_ACTIVATED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_PT_MEETING; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_TEACHER_ABSENCE; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_NORMAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT; +import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEGATIVE; +import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEUTRAL; +import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_POSITIVE; +import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_EDUCATOR; +import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_LIBRARIAN; +import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_OTHER; +import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_PARENTS_COUNCIL; +import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_PEDAGOGUE; +import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SCHOOL_ADMIN; +import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SCHOOL_PARENTS_COUNCIL; +import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SECRETARIAT; +import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SUPER_ADMIN; +import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_TEACHER; import static pl.szczodrzynski.edziennik.utils.Utils.bs; import static pl.szczodrzynski.edziennik.utils.Utils.c; import static pl.szczodrzynski.edziennik.utils.Utils.contains; @@ -131,7 +133,7 @@ import static pl.szczodrzynski.edziennik.utils.Utils.d; import static pl.szczodrzynski.edziennik.utils.Utils.getGradeValue; import static pl.szczodrzynski.edziennik.utils.Utils.strToInt; -public class Librus implements OldEdziennikInterface { +public class Librus implements EdziennikInterface { public Librus(App app) { this.app = app; } @@ -169,6 +171,7 @@ public class Librus implements OldEdziennikInterface { private List teamList; private List teacherList; + private List teacherAbsenceList; private List subjectList; private List lessonList; private List lessonChangeList; @@ -198,6 +201,7 @@ public class Librus implements OldEdziennikInterface { private boolean enableDescriptiveGrades = false; private boolean enableTextGrades = false; private boolean enableBehaviourGrades = true; + private long unitId = -1; private int startPointsSemester1 = 0; private int startPointsSemester2 = 0; @@ -212,6 +216,8 @@ public class Librus implements OldEdziennikInterface { this.fullSync = profile == null || profile.getEmpty() || profile.shouldFullSync(activityContext); this.today = Date.getToday(); + DataStore ds = new DataStore(app.db, profileId); + this.librusEmail = loginStore.getLoginData("email", ""); this.librusPassword = loginStore.getLoginData("password", ""); if (profile == null) { @@ -236,6 +242,7 @@ public class Librus implements OldEdziennikInterface { teamList = profileId == -1 ? new ArrayList<>() : app.db.teamDao().getAllNow(profileId); teacherList = profileId == -1 ? new ArrayList<>() : app.db.teacherDao().getAllNow(profileId); + teacherAbsenceList = new ArrayList<>(); subjectList = new ArrayList<>(); lessonList = new ArrayList<>(); lessonChangeList = new ArrayList<>(); @@ -285,15 +292,18 @@ public class Librus implements OldEdziennikInterface { targetEndpoints.add("Grades"); targetEndpoints.add("PointGrades"); targetEndpoints.add("DescriptiveGrades"); + targetEndpoints.add("TextGrades"); targetEndpoints.add("BehaviourGrades"); + targetEndpoints.add("GradesComments"); targetEndpoints.add("Events"); + targetEndpoints.add("TeacherFreeDays"); targetEndpoints.add("CustomTypes"); - targetEndpoints.add("Homeworks"); + targetEndpoints.add("Homework"); targetEndpoints.add("LuckyNumbers"); targetEndpoints.add("Notices"); - targetEndpoints.add("AttendancesTypes"); - targetEndpoints.add("Attendances"); + targetEndpoints.add("AttendanceTypes"); + targetEndpoints.add("Attendance"); targetEndpoints.add("Announcements"); targetEndpoints.add("PtMeetings"); @@ -343,6 +353,8 @@ public class Librus implements OldEdziennikInterface { targetEndpoints.add("Events"); targetEndpoints.add("CustomTypes"); targetEndpoints.add("PtMeetings"); + targetEndpoints.add("SchoolFreeDays"); + targetEndpoints.add("TeacherFreeDays"); break; case FEATURE_GRADES: targetEndpoints.add("SavedGradeCategories"); @@ -356,17 +368,20 @@ public class Librus implements OldEdziennikInterface { targetEndpoints.add("Grades"); targetEndpoints.add("PointGrades"); targetEndpoints.add("DescriptiveGrades"); + targetEndpoints.add("TextGrades"); targetEndpoints.add("BehaviourGrades"); + + targetEndpoints.add("GradesComments"); break; - case FEATURE_HOMEWORKS: - targetEndpoints.add("Homeworks"); + case FEATURE_HOMEWORK: + targetEndpoints.add("Homework"); break; case FEATURE_NOTICES: targetEndpoints.add("Notices"); break; - case FEATURE_ATTENDANCES: - targetEndpoints.add("AttendancesTypes"); - targetEndpoints.add("Attendances"); + case FEATURE_ATTENDANCE: + targetEndpoints.add("AttendanceTypes"); + targetEndpoints.add("Attendance"); break; case FEATURE_MESSAGES_INBOX: if (!hasMessagesLogin) { @@ -430,6 +445,10 @@ public class Librus implements OldEdziennikInterface { callback.onProgress(PROGRESS_STEP); index++; } + if (index > targetEndpoints.size()) { + finish(); + return; + } d(TAG, "Called r("+type+", "+endpoint+"). Getting "+targetEndpoints.get(index)); switch (targetEndpoints.get(index)) { case "Me": @@ -495,6 +514,12 @@ public class Librus implements OldEdziennikInterface { case "DescriptiveGrades": getDescriptiveGrades(); break; + case "TextGrades": + getTextGrades(); + break; + case "GradesComments": + getGradesComments(); + break; case "BehaviourGrades": getBehaviourGrades(); break; @@ -504,8 +529,8 @@ public class Librus implements OldEdziennikInterface { case "CustomTypes": getCustomTypes(); break; - case "Homeworks": - getHomeworks(); + case "Homework": + getHomework(); break; case "LuckyNumbers": getLuckyNumbers(); @@ -513,11 +538,11 @@ public class Librus implements OldEdziennikInterface { case "Notices": getNotices(); break; - case "AttendancesTypes": - getAttendancesTypes(); + case "AttendanceTypes": + getAttendanceTypes(); break; - case "Attendances": - getAttendances(); + case "Attendance": + getAttendance(); break; case "Announcements": getAnnouncements(); @@ -531,6 +556,9 @@ public class Librus implements OldEdziennikInterface { case "TeacherFreeDays": getTeacherFreeDays(); break; + case "SchoolFreeDays": + getSchoolFreeDays(); + break; case "MessagesLogin": getMessagesLogin(); break; @@ -572,6 +600,8 @@ public class Librus implements OldEdziennikInterface { } if (eventTypeList.size() > 0) app.db.eventTypeDao().addAll(eventTypeList); + if (teacherAbsenceList.size() > 0) + app.db.teacherAbsenceDao().addAll(teacherAbsenceList); if (noticeList.size() > 0) { app.db.noticeDao().clear(profileId); app.db.noticeDao().addAll(noticeList); @@ -641,7 +671,7 @@ public class Librus implements OldEdziennikInterface { }; librusLoginCallback = redirectUrl -> { - fakeAuthorize = "authorize2"; + fakeAuthorize = "authorize"; authorize(AUTHORIZE_URL, authorizeCallback); }; @@ -1400,7 +1430,8 @@ public class Librus implements OldEdziennikInterface { } JsonElement unit = myClass.get("Unit"); if (unit != null && !(unit instanceof JsonNull)) { - profile.putStudentData("unitId", unit.getAsJsonObject().get("Id").getAsLong()); + unitId = unit.getAsJsonObject().get("Id").getAsLong(); + profile.putStudentData("unitId", unitId); } r("finish", "Classes"); } @@ -1597,6 +1628,10 @@ public class Librus implements OldEdziennikInterface { r("finish", "Classrooms"); return; } + if (data.get("Classrooms") == null) { + r("finish", "Classrooms"); + return; + } JsonArray jClassrooms = data.get("Classrooms").getAsJsonArray(); //d("Got Classrooms: "+jClassrooms.toString()); classrooms.clear(); @@ -1655,11 +1690,32 @@ public class Librus implements OldEdziennikInterface { continue; } + Time startTime = null; + Time endTime = null; + try { + startTime = Time.fromH_m(lesson.get(substitution && !cancelled ? "OrgHourFrom" : "HourFrom").getAsString()); + endTime = Time.fromH_m(lesson.get(substitution && !cancelled ? "OrgHourTo" : "HourTo").getAsString()); + } + catch (Exception ignore) { + try { + JsonElement lessonNo; + if (!((lessonNo = lesson.get("LessonNo")) instanceof JsonNull)) { + Pair timePair = lessonRanges.get(strToInt(lessonNo.getAsString())); + if (timePair != null) { + startTime = timePair.first; + endTime = timePair.second; + } + } + } + catch (Exception ignore2) { } + } + + Lesson lessonObject = new Lesson( profileId, lesson.get("DayNo").getAsInt() - 1, - Time.fromH_m(lesson.get(substitution && !cancelled ? "OrgHourFrom" : "HourFrom").getAsString()), - Time.fromH_m(lesson.get(substitution && !cancelled ? "OrgHourTo" : "HourTo").getAsString()) + startTime, + endTime ); JsonElement subject; @@ -1704,7 +1760,7 @@ public class Librus implements OldEdziennikInterface { r("finish", "Substitutions"); return; } - + JsonArray substitutions = data.get("Substitutions").getAsJsonArray(); try { List ignoreList = new ArrayList<>(); @@ -1873,7 +1929,7 @@ public class Librus implements OldEdziennikInterface { } private void getGradesCategories() { - if (!fullSync) { + if (!fullSync && false) { // cancel every not-full sync; no need to download categories again // every full sync it'll be enabled to make sure there are no grades - by getUnits r("finish", "GradesCategories"); @@ -1927,6 +1983,32 @@ public class Librus implements OldEdziennikInterface { }); } + private void getGradesComments() { + callback.onActionStarted(R.string.sync_action_syncing_grade_comments); + apiRequest("Grades/Comments", data -> { + if (data == null) { + r("finish", "GradesComments"); + return; + } + + JsonArray comments = data.get("Comments").getAsJsonArray(); + for (JsonElement commentEl : comments) { + JsonObject comment = commentEl.getAsJsonObject(); + long gradeId = comment.get("Grade").getAsJsonObject().get("Id").getAsLong(); + String text = comment.get("Text").getAsString(); + + for (Grade grade : gradeList) { + if (grade.id == gradeId) { + grade.description = text; + break; + } + } + } + + r("finish", "GradesComments"); + }); + } + private void getPointGradesCategories() { if (!fullSync || !enablePointGrades) { // cancel every not-full sync; no need to download categories again @@ -2382,6 +2464,70 @@ public class Librus implements OldEdziennikInterface { }); } + private void getTextGrades() { + callback.onActionStarted(R.string.sync_action_syncing_descriptive_grades); + apiRequest("DescriptiveGrades", data -> { + if (data == null) { + r("finish", "TextGrades"); + return; + } + JsonArray grades = data.get("Grades").getAsJsonArray(); + //d("Got Grades: "+grades.toString()); + for (JsonElement gradeEl : grades) { + JsonObject grade = gradeEl.getAsJsonObject(); + long id = grade.get("Id").getAsLong(); + long teacherId = grade.get("AddedBy").getAsJsonObject().get("Id").getAsLong(); + int semester = grade.get("Semester").getAsInt(); + long subjectId = grade.get("Subject").getAsJsonObject().get("Id").getAsLong(); + JsonElement map = grade.get("Map"); + JsonElement realGrade = grade.get("RealGradeValue"); + String description = ""; + if (map != null) { + description = map.getAsString(); + } + else if (realGrade != null) { + description = realGrade.getAsString(); + } + + long categoryId = -1; + JsonElement skillEl = grade.get("Skill"); + if (skillEl != null) { + categoryId = skillEl.getAsJsonObject().get("Id").getAsLong(); + } + + String str_date = grade.get("AddDate").getAsString(); + long addedDate = Date.fromIso(str_date); + + String category = ""; + int color = -1; + GradeCategory gradeCategory = GradeCategory.search(gradeCategoryList, categoryId); + if (gradeCategory != null) { + category = gradeCategory.text; + color = gradeCategory.color; + } + + Grade gradeObject = new Grade( + profileId, + id, + category, + color, + "", + description, + 0.0f, + 0, + semester, + teacherId, + subjectId + ); + gradeObject.type = Grade.TYPE_DESCRIPTIVE; + + gradeList.add(gradeObject); + metadataList.add(new Metadata(profileId, Metadata.TYPE_GRADE, gradeObject.id, profile.getEmpty(), profile.getEmpty(), addedDate)); + } + r("finish", "TextGrades"); + }); + } + private void getBehaviourGrades() { d(TAG, "Grades settings: "+enableStandardGrades+", "+enablePointGrades+", "+enableDescriptiveGrades); if (!enableBehaviourGrades) { @@ -2537,7 +2683,7 @@ public class Librus implements OldEdziennikInterface { && (el = obj.get("Id")) != null) { type = el.getAsInt(); } - /*EventType typeObject = app.db.eventTypeDao().getFullByIdNow(profileId, type); + /*EventType typeObject = app.db.eventTypeDao().getByIdNow(profileId, type); if (typeObject == null) { getCustomTypes = true; }*/ @@ -2615,21 +2761,21 @@ public class Librus implements OldEdziennikInterface { }); } - private void getHomeworks() { + private void getHomework() { if (!premium) { - r("finish", "Homeworks"); + r("finish", "Homework"); return; } callback.onActionStarted(R.string.sync_action_syncing_homework); apiRequest("HomeWorkAssignments", data -> { if (data == null) { - r("finish", "Homeworks"); + r("finish", "Homework"); return; } - JsonArray homeworks = data.get("HomeWorkAssignments").getAsJsonArray(); + JsonArray homeworkList = data.get("HomeWorkAssignments").getAsJsonArray(); //d("Got Grades: "+events.toString()); try { - for (JsonElement homeworkEl : homeworks) { + for (JsonElement homeworkEl : homeworkList) { JsonObject homework = homeworkEl.getAsJsonObject(); JsonElement el; @@ -2680,7 +2826,7 @@ public class Librus implements OldEdziennikInterface { eventList.add(eventObject); metadataList.add(new Metadata(profileId, Metadata.TYPE_EVENT, eventObject.id, profile.getEmpty(), profile.getEmpty(), addedDate.getInMillis())); } - r("finish", "Homeworks"); + r("finish", "Homework"); } catch (Exception e) { finishWithError(new AppError(TAG, 2648, CODE_OTHER, e, data)); @@ -2781,11 +2927,11 @@ public class Librus implements OldEdziennikInterface { } private SparseArray> attendanceTypes = new SparseArray<>(); - private void getAttendancesTypes() { + private void getAttendanceTypes() { callback.onActionStarted(R.string.sync_action_syncing_attendance_types); apiRequest("Attendances/Types", data -> { if (data == null) { - r("finish", "AttendancesTypes"); + r("finish", "AttendanceTypes"); return; } try { @@ -2800,7 +2946,7 @@ public class Librus implements OldEdziennikInterface { ) ); } - r("finish", "AttendancesTypes"); + r("finish", "AttendanceTypes"); } catch (Exception e) { finishWithError(new AppError(TAG, 2782, CODE_OTHER, e, data)); @@ -2808,18 +2954,18 @@ public class Librus implements OldEdziennikInterface { }); } - private void getAttendances() { - callback.onActionStarted(R.string.sync_action_syncing_attendances); + private void getAttendance() { + callback.onActionStarted(R.string.sync_action_syncing_attendance); apiRequest("Attendances"+(fullSync ? "" : "?dateFrom="+ Date.getToday().stepForward(0, -1, 0).getStringY_m_d()), data -> { if (data == null) { - r("finish", "Attendances"); + r("finish", "Attendance"); return; } try { - JsonArray jAttendances = data.get("Attendances").getAsJsonArray(); + JsonArray jAttendance = data.get("Attendances").getAsJsonArray(); - for (JsonElement attendanceEl : jAttendances) { + for (JsonElement attendanceEl : jAttendance) { JsonObject attendance = attendanceEl.getAsJsonObject(); int type = attendance.getAsJsonObject("Type").get("Id").getAsInt(); @@ -2885,7 +3031,7 @@ public class Librus implements OldEdziennikInterface { metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty(), profile.getEmpty(), addedDate)); } } - r("finish", "Attendances"); + r("finish", "Attendance"); } catch (Exception e) { finishWithError(new AppError(TAG, 2872, CODE_OTHER, e, data)); @@ -3000,6 +3146,10 @@ public class Librus implements OldEdziennikInterface { private SparseArray teacherFreeDaysTypes = new SparseArray<>(); private void getTeacherFreeDaysTypes() { + if (!fullSync) { + r("finish", "TeacherFreeDaysTypes"); + return; + } callback.onActionStarted(R.string.sync_action_syncing_teacher_free_days_types); apiRequest("TeacherFreeDays/Types", data -> { if (data == null) { @@ -3034,27 +3184,45 @@ public class Librus implements OldEdziennikInterface { JsonObject freeDay = freeDayEl.getAsJsonObject(); long id = freeDay.get("Id").getAsLong(); + long teacherId = freeDay.getAsJsonObject("Teacher").get("Id").getAsLong(); Date dateFrom = Date.fromY_m_d(freeDay.get("DateFrom").getAsString()); Date dateTo = Date.fromY_m_d(freeDay.get("DateTo").getAsString()); - int type = freeDay.getAsJsonObject("Type").get("Id").getAsInt(); - String topic = teacherFreeDaysTypes.get(type)+"\n"+(dateFrom.getValue() != dateTo.getValue() ? dateFrom.getFormattedString()+" - "+dateTo.getFormattedString() : ""); - Event eventObject = new Event( + Time timeFrom = null; + Time timeTo = null; + + if (freeDay.get("TimeFrom") != null && freeDay.get("TimeTo") != null) { + timeFrom = Time.fromH_m_s(freeDay.get("TimeFrom").getAsString()); + timeTo = Time.fromH_m_s(freeDay.get("TimeTo").getAsString()); + } + + long type = freeDay.getAsJsonObject("Type").get("Id").getAsLong(); + + //String topic = teacherFreeDaysTypes.get(type)+"\n"+(dateFrom.getValue() != dateTo.getValue() ? dateFrom.getFormattedString()+" - "+dateTo.getFormattedString() : ""); + + TeacherAbsence teacherAbsence = new TeacherAbsence( profileId, id, + teacherId, + type, dateFrom, - null, - topic, - -1, - TYPE_TEACHER_ABSENCE, - false, - freeDay.getAsJsonObject("Teacher").get("Id").getAsLong(), - -1, - -1 + dateTo, + timeFrom, + timeTo ); - eventList.add(eventObject); - metadataList.add(new Metadata(profileId, Metadata.TYPE_EVENT, eventObject.id, profile.getEmpty(), profile.getEmpty(), System.currentTimeMillis())); + + teacherAbsenceList.add(teacherAbsence); + metadataList.add( + new Metadata( + profileId, + Metadata.TYPE_TEACHER_ABSENCE, + teacherAbsence.getId(), + true, + true, + System.currentTimeMillis()) + ); + } r("finish", "TeacherFreeDays"); } @@ -3064,6 +3232,26 @@ public class Librus implements OldEdziennikInterface { }); } + private void getSchoolFreeDays() { + callback.onActionStarted(R.string.sync_action_syncing_school_free_days); + apiRequest("SchoolFreeDays" + (unitId != -1 ? "?unit=" + unitId : ""), data -> { + if (data == null) { + r("finish", "SchoolFreeDays"); + return; + } + try { + JsonArray jFreeDays = data.get("SchoolFreeDays").getAsJsonArray(); + + for (JsonElement freeDayEl: jFreeDays) { + continue; + } + r("finish", "SchoolFreeDays"); + } catch (Exception e) { + finishWithError(new AppError(TAG, 3069, CODE_OTHER, e, data)); + } + }); + } + private void getMessagesLogin() { if (synergiaPassword == null) { // skip messages @@ -3250,10 +3438,10 @@ public class Librus implements OldEdziennikInterface { configurableEndpoints.put("Grades", new Endpoint("Grades",true, false, profile.getChangedEndpoints())); configurableEndpoints.put("PointGrades", new Endpoint("PointGrades",true, false, profile.getChangedEndpoints())); configurableEndpoints.put("Events", new Endpoint("Events",true, false, profile.getChangedEndpoints())); - configurableEndpoints.put("Homeworks", new Endpoint("Homeworks",true, false, profile.getChangedEndpoints())); + configurableEndpoints.put("Homework", new Endpoint("Homework",true, false, profile.getChangedEndpoints())); configurableEndpoints.put("LuckyNumbers", new Endpoint("LuckyNumbers",true, false, profile.getChangedEndpoints())); configurableEndpoints.put("Notices", new Endpoint("Notices",true, false, profile.getChangedEndpoints())); - configurableEndpoints.put("Attendances", new Endpoint("Attendances",true, false, profile.getChangedEndpoints())); + configurableEndpoints.put("Attendance", new Endpoint("Attendance",true, false, profile.getChangedEndpoints())); configurableEndpoints.put("Announcements", new Endpoint("Announcements",true, true, profile.getChangedEndpoints())); configurableEndpoints.put("PtMeetings", new Endpoint("PtMeetings",true, true, profile.getChangedEndpoints())); configurableEndpoints.put("TeacherFreeDays", new Endpoint("TeacherFreeDays",false, false, profile.getChangedEndpoints())); @@ -3661,4 +3849,4 @@ public class Librus implements OldEdziennikInterface { public MessagesComposeInfo getComposeInfo(@NonNull ProfileFull profile) { return new MessagesComposeInfo(0, 0, 150, 20000); } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/Mobidziennik.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Mobidziennik.java similarity index 94% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/Mobidziennik.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/Mobidziennik.java index b931ea22..4a3d191f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/Mobidziennik.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Mobidziennik.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.api; +package pl.szczodrzynski.edziennik.data.api; import android.content.Context; import android.graphics.Color; @@ -40,66 +40,66 @@ import im.wangchao.mhttp.callback.TextCallbackHandler; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.BuildConfig; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface; -import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback; -import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; -import pl.szczodrzynski.edziennik.datamodels.Attendance; -import pl.szczodrzynski.edziennik.datamodels.Event; -import pl.szczodrzynski.edziennik.datamodels.Grade; -import pl.szczodrzynski.edziennik.datamodels.GradeCategory; -import pl.szczodrzynski.edziennik.datamodels.Lesson; -import pl.szczodrzynski.edziennik.datamodels.LessonChange; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.LuckyNumber; -import pl.szczodrzynski.edziennik.datamodels.Message; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipient; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull; -import pl.szczodrzynski.edziennik.datamodels.Metadata; -import pl.szczodrzynski.edziennik.datamodels.Notice; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.datamodels.Subject; -import pl.szczodrzynski.edziennik.datamodels.Teacher; -import pl.szczodrzynski.edziennik.datamodels.Team; -import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Endpoint; -import pl.szczodrzynski.edziennik.models.Time; -import pl.szczodrzynski.edziennik.models.Week; +import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface; +import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber; +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; +import pl.szczodrzynski.edziennik.data.db.modules.teams.Team; +import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Endpoint; +import pl.szczodrzynski.edziennik.utils.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Week; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_CUSTOM; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_DEFAULT; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_EXAM; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_SHORT_QUIZ; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_DELETED; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_MAINTENANCE; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_CUSTOM; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_DEFAULT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_EXAM; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_SHORT_QUIZ; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_DELETED; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT; import static pl.szczodrzynski.edziennik.utils.Utils.bs; import static pl.szczodrzynski.edziennik.utils.Utils.crc16; import static pl.szczodrzynski.edziennik.utils.Utils.d; import static pl.szczodrzynski.edziennik.utils.Utils.monthFromName; import static pl.szczodrzynski.edziennik.utils.Utils.strToInt; -public class Mobidziennik implements OldEdziennikInterface { +public class Mobidziennik implements EdziennikInterface { public Mobidziennik(App app) { this.app = app; } @@ -150,7 +150,7 @@ public class Mobidziennik implements OldEdziennikInterface { private String loginPassword = null; private int studentId = -1; - private long attendancesLastSync = 0; + private long attendanceLastSync = 0; private boolean prepare(@NonNull Context activityContext, @NonNull SyncCallback callback, int profileId, @Nullable Profile profile, @NonNull LoginStore loginStore) { this.activityContext = activityContext; @@ -171,7 +171,7 @@ public class Mobidziennik implements OldEdziennikInterface { return false; } this.studentId = profile == null ? -1 : profile.getStudentData("studentId", -1); - this.attendancesLastSync = profile == null ? 0 : profile.getStudentData("attendancesLastSync", (long)0); + this.attendanceLastSync = profile == null ? 0 : profile.getStudentData("attendanceLastSync", (long)0); fakeLogin = BuildConfig.DEBUG && loginUsername.toLowerCase().startsWith("fake"); teamList = profileId == -1 ? new ArrayList<>() : app.db.teamDao().getAllNow(profileId); @@ -204,7 +204,7 @@ public class Mobidziennik implements OldEdziennikInterface { targetEndpoints = new ArrayList<>(); targetEndpoints.add("GetData"); targetEndpoints.add("ProcessData"); - targetEndpoints.add("Attendances"); + targetEndpoints.add("Attendance"); targetEndpoints.add("ClassCalendar"); targetEndpoints.add("GradeDetails"); targetEndpoints.add("NoticeDetails"); @@ -256,8 +256,8 @@ public class Mobidziennik implements OldEdziennikInterface { case FEATURE_NOTICES: targetEndpoints.add("NoticeDetails"); break; - case FEATURE_ATTENDANCES: - targetEndpoints.add("Attendances"); + case FEATURE_ATTENDANCE: + targetEndpoints.add("Attendance"); break; case FEATURE_MESSAGES_INBOX: targetEndpoints.add("MessagesInbox"); @@ -314,8 +314,8 @@ public class Mobidziennik implements OldEdziennikInterface { case "NoticeDetails": getNoticeDetails(); break; - case "Attendances": - getAttendances(); + case "Attendance": + getAttendance(); break; case "Messages": getAllMessages(); @@ -597,7 +597,7 @@ public class Mobidziennik implements OldEdziennikInterface { processLessons(table); } if (i == 16) { - processAttendances(table); + processAttendance(table); } if (i == 17) { processNotices(table); @@ -609,7 +609,7 @@ public class Mobidziennik implements OldEdziennikInterface { processEvents(table); } if (i == 23) { - processHomeworks(table); + processHomework(table); } if (i == 24) { processTimetable(table); @@ -794,7 +794,7 @@ public class Mobidziennik implements OldEdziennikInterface { switch (e.tagName()) { case "div": { //d(TAG, "Outer HTML "+e.outerHtml()); - Matcher matcher = Pattern.compile("\\n*\\s*(.+?)\\n*(?:<.*?)??", Pattern.DOTALL).matcher(e.outerHtml()); + Matcher matcher = Pattern.compile("\\n*\\s*(.+?)\\s*\\n*(?:<.*?)??", Pattern.DOTALL).matcher(e.outerHtml()); if (matcher.find()) { subjectName = matcher.group(1); } @@ -1051,20 +1051,20 @@ public class Mobidziennik implements OldEdziennikInterface { this.lessonId = lessonId; } } - private Date attendancesCheckDate = Week.getWeekStart(); - private void getAttendances() { - r("finish", "Attendances"); - // TODO: 2019-09-10 please download attendances from /dziennik/frekwencja. /mobile does not work above v13.0 + private Date attendanceCheckDate = Week.getWeekStart(); + private void getAttendance() { + r("finish", "Attendance"); + // TODO: 2019-09-10 please download attendance from /dziennik/frekwencja. /mobile does not work above v13.0 if (true) { return; } - callback.onActionStarted(R.string.sync_action_syncing_attendances); - d(TAG, "Get attendances for week "+attendancesCheckDate.getStringY_m_d()); + callback.onActionStarted(R.string.sync_action_syncing_attendance); + d(TAG, "Get attendance for week "+ attendanceCheckDate.getStringY_m_d()); Request.builder() .url(fakeLogin ? "https://szkolny.eu/mobimobi/mobi_mod_frekwencja.php" : "https://" + loginServerName + ".mobidziennik.pl/mobile/frekwencja") .userAgent(System.getProperty("http.agent")) .addParameter("uczen", studentId) - .addParameter("data_poniedzialek", attendancesCheckDate.getStringY_m_d()) + .addParameter("data_poniedzialek", attendanceCheckDate.getStringY_m_d()) .post() .callback(new TextCallbackHandler() { @Override @@ -1076,11 +1076,11 @@ public class Mobidziennik implements OldEdziennikInterface { public void onSuccess(String data, Response response) { // just skip any failures here if (data == null || data.equals("")) { - r("finish", "Attendances"); + r("finish", "Attendance"); return; } if (data.contains("nie-pamietam-hasla")) { - r("finish", "Attendances"); + r("finish", "Attendance"); return; } @@ -1135,7 +1135,7 @@ public class Mobidziennik implements OldEdziennikInterface { continue; AttendanceLessonRange range = ranges.get(currentIndex); - Date date = attendancesCheckDate.clone().stepForward(0, 0, range.weekDay); + Date date = attendanceCheckDate.clone().stepForward(0, 0, range.weekDay); long addedDate = date.combineWith(range.startTime); int markerIndex = 0; @@ -1201,7 +1201,7 @@ public class Mobidziennik implements OldEdziennikInterface { markerIndex++; attendanceList.add(attendanceObject); if (attendanceObject.type != TYPE_PRESENT) { - boolean markAsRead = onlyFeature == FEATURE_ATTENDANCES && attendancesLastSync == 0; + boolean markAsRead = onlyFeature == FEATURE_ATTENDANCE && attendanceLastSync == 0; metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty() || markAsRead, profile.getEmpty() || markAsRead, addedDate)); } } @@ -1209,40 +1209,40 @@ public class Mobidziennik implements OldEdziennikInterface { } catch (Exception e) { Crashlytics.logException(e); e.printStackTrace(); - if (onlyFeature == FEATURE_ATTENDANCES) + if (onlyFeature == FEATURE_ATTENDANCE) finishWithError(new AppError(TAG, 955, CODE_OTHER, response, e, data)); else - r("finish", "Attendances"); + r("finish", "Attendance"); return; } - if (onlyFeature == FEATURE_ATTENDANCES) { - // syncing attendances exclusively - if (attendancesLastSync == 0) { - // first sync - get attendances until it's start of the school year - attendancesLastSync = profile.getSemesterStart(1).getInMillis(); + if (onlyFeature == FEATURE_ATTENDANCE) { + // syncing attendance exclusively + if (attendanceLastSync == 0) { + // first sync - get attendance until it's start of the school year + attendanceLastSync = profile.getSemesterStart(1).getInMillis(); } - Date lastSyncDate = Date.fromMillis(attendancesLastSync); + Date lastSyncDate = Date.fromMillis(attendanceLastSync); lastSyncDate.stepForward(0, 0, -7); - if (lastSyncDate.getValue() < attendancesCheckDate.getValue()) { - attendancesCheckDate.stepForward(0, 0, -7); - r("get", "Attendances"); + if (lastSyncDate.getValue() < attendanceCheckDate.getValue()) { + attendanceCheckDate.stepForward(0, 0, -7); + r("get", "Attendance"); } else { - profile.putStudentData("attendancesLastSync", System.currentTimeMillis()); - r("finish", "Attendances"); + profile.putStudentData("attendanceLastSync", System.currentTimeMillis()); + r("finish", "Attendance"); } } else { - if (attendancesLastSync != 0) { + if (attendanceLastSync != 0) { // not a first sync - Date lastSyncDate = Date.fromMillis(attendancesLastSync); + Date lastSyncDate = Date.fromMillis(attendanceLastSync); lastSyncDate.stepForward(0, 0, 2); - if (lastSyncDate.getValue() >= attendancesCheckDate.getValue()) { - profile.putStudentData("attendancesLastSync", System.currentTimeMillis()); + if (lastSyncDate.getValue() >= attendanceCheckDate.getValue()) { + profile.putStudentData("attendanceLastSync", System.currentTimeMillis()); } } - r("finish", "Attendances"); + r("finish", "Attendance"); } } }) @@ -1456,8 +1456,8 @@ public class Mobidziennik implements OldEdziennikInterface { } String[] user = userStr.split("\\|", Integer.MAX_VALUE); - teachersMap.put(strToInt(user[0]), user[5]+" "+user[4]); - teacherList.add(new Teacher(profileId, strToInt(user[0]), user[4], user[5])); + teachersMap.put(strToInt(user[0]), user[5].trim()+" "+user[4].trim()); + teacherList.add(new Teacher(profileId, strToInt(user[0]), user[4].trim(), user[5].trim())); } } @@ -1675,12 +1675,12 @@ public class Mobidziennik implements OldEdziennikInterface { } } - private void processAttendances(String table) + private void processAttendance(String table) { if (true) return; - String[] attendances = table.split("\n"); - for (String attendanceStr: attendances) + String[] attendanceList = table.split("\n"); + for (String attendanceStr: attendanceList) { if (attendanceStr.isEmpty()) { continue; @@ -1718,7 +1718,7 @@ public class Mobidziennik implements OldEdziennikInterface { mobiLesson.date, mobiLesson.startTime, type); - attendanceList.add(attendanceObject); + this.attendanceList.add(attendanceObject); metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty(), profile.getEmpty(), System.currentTimeMillis())); } } @@ -1891,11 +1891,11 @@ public class Mobidziennik implements OldEdziennikInterface { } } - private void processHomeworks(String table) + private void processHomework(String table) { - String[] homeworks = table.split("\n"); + String[] homeworkList = table.split("\n"); Date today = Date.getToday(); - for (String homeworkStr: homeworks) + for (String homeworkStr: homeworkList) { if (homeworkStr.isEmpty()) { continue; @@ -1958,7 +1958,7 @@ public class Mobidziennik implements OldEdziennikInterface { for(int i = 0; i < teachersMap.size(); i++) { int key = teachersMap.keyAt(i); String str = teachersMap.valueAt(i); - if ((lesson[7] + " " + lesson[6]).equalsIgnoreCase(str)) { + if ((lesson[7].trim() + " " + lesson[6].trim()).equalsIgnoreCase(str)) { lessonObject.teacherId = key; } } @@ -2001,7 +2001,7 @@ public class Mobidziennik implements OldEdziennikInterface { for(int i = 0; i < teachersMap.size(); i++) { int key = teachersMap.keyAt(i); String str = teachersMap.valueAt(i); - if ((lesson[7] + " " + lesson[6]).equalsIgnoreCase(str)) { + if ((lesson[7].trim() + " " + lesson[6].trim()).equalsIgnoreCase(str)) { lessonChange.teacherId = key; } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/Vulcan.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Vulcan.java similarity index 91% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/Vulcan.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/Vulcan.java index a4838253..090c9393 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/Vulcan.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Vulcan.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.api; +package pl.szczodrzynski.edziennik.data.api; import android.content.Context; import android.os.Build; @@ -35,57 +35,57 @@ import okhttp3.OkHttpClient; import okio.Buffer; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface; -import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback; -import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; -import pl.szczodrzynski.edziennik.datamodels.Attendance; -import pl.szczodrzynski.edziennik.datamodels.Event; -import pl.szczodrzynski.edziennik.datamodels.Grade; -import pl.szczodrzynski.edziennik.datamodels.GradeCategory; -import pl.szczodrzynski.edziennik.datamodels.Lesson; -import pl.szczodrzynski.edziennik.datamodels.LessonChange; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Message; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipient; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull; -import pl.szczodrzynski.edziennik.datamodels.Metadata; -import pl.szczodrzynski.edziennik.datamodels.Notice; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.datamodels.Subject; -import pl.szczodrzynski.edziennik.datamodels.Teacher; -import pl.szczodrzynski.edziennik.datamodels.Team; -import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Endpoint; -import pl.szczodrzynski.edziennik.models.Time; -import pl.szczodrzynski.edziennik.models.Week; +import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface; +import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; +import pl.szczodrzynski.edziennik.data.db.modules.teams.Team; +import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Endpoint; +import pl.szczodrzynski.edziennik.utils.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Week; import pl.szczodrzynski.edziennik.utils.Utils; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED_EXCUSED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_EXAM; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_SHORT_QUIZ; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_VULCAN; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_MESSAGE; -import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEUTRAL; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED_EXCUSED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_EXAM; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_SHORT_QUIZ; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_VULCAN; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_MESSAGE; +import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEUTRAL; import static pl.szczodrzynski.edziennik.utils.Utils.c; import static pl.szczodrzynski.edziennik.utils.Utils.crc16; import static pl.szczodrzynski.edziennik.utils.Utils.d; @@ -93,7 +93,7 @@ import static pl.szczodrzynski.edziennik.utils.Utils.getGradeValue; import static pl.szczodrzynski.edziennik.utils.Utils.getVulcanGradeColor; import static pl.szczodrzynski.edziennik.utils.Utils.intToStr; -public class Vulcan implements OldEdziennikInterface { +public class Vulcan implements EdziennikInterface { public Vulcan(App app) { this.app = app; } @@ -108,11 +108,12 @@ public class Vulcan implements OldEdziennikInterface { private static final String ENDPOINT_GRADES = "mobile-api/Uczen.v3.Uczen/Oceny"; private static final String ENDPOINT_GRADES_PROPOSITIONS = "mobile-api/Uczen.v3.Uczen/OcenyPodsumowanie"; private static final String ENDPOINT_EVENTS = "mobile-api/Uczen.v3.Uczen/Sprawdziany"; - private static final String ENDPOINT_HOMEWORKS = "mobile-api/Uczen.v3.Uczen/ZadaniaDomowe"; + private static final String ENDPOINT_HOMEWORK = "mobile-api/Uczen.v3.Uczen/ZadaniaDomowe"; private static final String ENDPOINT_NOTICES = "mobile-api/Uczen.v3.Uczen/UwagiUcznia"; - private static final String ENDPOINT_ATTENDANCES = "mobile-api/Uczen.v3.Uczen/Frekwencje"; + private static final String ENDPOINT_ATTENDANCE = "mobile-api/Uczen.v3.Uczen/Frekwencje"; private static final String ENDPOINT_MESSAGES_RECEIVED = "mobile-api/Uczen.v3.Uczen/WiadomosciOdebrane"; private static final String ENDPOINT_MESSAGES_SENT = "mobile-api/Uczen.v3.Uczen/WiadomosciWyslane"; + private static final String ENDPOINT_MESSAGES_CHANGE_STATUS = "mobile-api/Uczen.v3.Uczen/ZmienStatusWiadomosci"; private static final String ENDPOINT_PUSH = "mobile-api/Uczen.v3.Uczen/UstawPushToken"; private static final String userAgent = "MobileUserAgent"; @@ -258,9 +259,9 @@ public class Vulcan implements OldEdziennikInterface { targetEndpoints.add("Grades"); targetEndpoints.add("ProposedGrades"); targetEndpoints.add("Events"); - targetEndpoints.add("Homeworks"); + targetEndpoints.add("Homework"); targetEndpoints.add("Notices"); - targetEndpoints.add("Attendances"); + targetEndpoints.add("Attendance"); targetEndpoints.add("MessagesInbox"); targetEndpoints.add("MessagesOutbox"); targetEndpoints.add("Finish"); @@ -296,14 +297,14 @@ public class Vulcan implements OldEdziennikInterface { targetEndpoints.add("Grades"); targetEndpoints.add("ProposedGrades"); break; - case FEATURE_HOMEWORKS: - targetEndpoints.add("Homeworks"); + case FEATURE_HOMEWORK: + targetEndpoints.add("Homework"); break; case FEATURE_NOTICES: targetEndpoints.add("Notices"); break; - case FEATURE_ATTENDANCES: - targetEndpoints.add("Attendances"); + case FEATURE_ATTENDANCE: + targetEndpoints.add("Attendance"); break; case FEATURE_MESSAGES_INBOX: targetEndpoints.add("MessagesInbox"); @@ -379,14 +380,14 @@ public class Vulcan implements OldEdziennikInterface { case "Events": getEvents(); break; - case "Homeworks": - getHomeworks(); + case "Homework": + getHomework(); break; case "Notices": getNotices(); break; - case "Attendances": - getAttendances(); + case "Attendance": + getAttendance(); break; case "MessagesInbox": getMessagesInbox(); @@ -427,8 +428,10 @@ public class Vulcan implements OldEdziennikInterface { app.db.noticeDao().clearForSemester(profileId, studentSemesterNumber); app.db.noticeDao().addAll(noticeList); } - if (attendanceList.size() > 0) + if (attendanceList.size() > 0) { + app.db.attendanceDao().clearAfterDate(profileId, getCurrentSemesterStartDate()); app.db.attendanceDao().addAll(attendanceList); + } if (messageList.size() > 0) app.db.messageDao().addAllIgnore(messageList); if (messageRecipientList.size() > 0) @@ -742,7 +745,7 @@ public class Vulcan implements OldEdziennikInterface { studentLoginId = account.get("UzytkownikLoginId").getAsInt(); studentClassId = account.get("IdOddzial").getAsInt(); studentSemesterId = account.get("IdOkresKlasyfikacyjny").getAsInt(); - String studentClassName = account.get("OddzialKod").getAsString(); + String studentClassName = account.get("OkresPoziom").getAsInt()+account.get("OddzialSymbol").getAsString(); targetProfile.putStudentData("userName", account.get("UzytkownikNazwa").getAsString()); targetProfile.putStudentData("schoolName", schoolName); targetProfile.putStudentData("schoolSymbol", schoolSymbol); @@ -1149,7 +1152,7 @@ public class Vulcan implements OldEdziennikInterface { int subjectId = grade.get("IdPrzedmiot").getAsInt(); int teacherId = grade.get("IdPracownikD").getAsInt(); int categoryId = grade.get("IdKategoria").getAsInt(); - long addedDate = Date.fromY_m_d(grade.get("DataModyfikacjiTekst").getAsString()).getInMillis(); + long addedDate = grade.get("DataModyfikacji").getAsLong() * 1000; float finalValue = 0.0f; String finalName; @@ -1240,9 +1243,9 @@ public class Vulcan implements OldEdziennikInterface { Grade gradeObject = new Grade( profileId, id, - finalDescription, - color, category, + color, + finalDescription, finalName, finalValue, weight, @@ -1371,7 +1374,7 @@ public class Vulcan implements OldEdziennikInterface { }); } - private void getHomeworks() { + private void getHomework() { callback.onActionStarted(R.string.sync_action_syncing_homework); JsonObject json = new JsonObject(); json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getStringY_m_d() : oneMonthBack.getStringY_m_d()); @@ -1379,10 +1382,10 @@ public class Vulcan implements OldEdziennikInterface { json.addProperty("IdOddzial", studentClassId); json.addProperty("IdUczen", studentId); json.addProperty("IdOkresKlasyfikacyjny", studentSemesterId); - apiRequest(schoolSymbol+"/"+ENDPOINT_HOMEWORKS, json, result -> { - JsonArray homeworks = result.getAsJsonArray("Data"); + apiRequest(schoolSymbol+"/"+ ENDPOINT_HOMEWORK, json, result -> { + JsonArray homeworkList = result.getAsJsonArray("Data"); - for (JsonElement homeworkEl: homeworks) { + for (JsonElement homeworkEl: homeworkList) { JsonObject homework = homeworkEl.getAsJsonObject(); int id = homework.get("Id").getAsInt(); @@ -1416,7 +1419,7 @@ public class Vulcan implements OldEdziennikInterface { eventList.add(eventObject); metadataList.add(new Metadata(profileId, Metadata.TYPE_HOMEWORK, eventObject.id, profile.getEmpty(), profile.getEmpty(), System.currentTimeMillis())); } - r("finish", "Homeworks"); + r("finish", "Homework"); }); } @@ -1456,18 +1459,18 @@ public class Vulcan implements OldEdziennikInterface { }); } - private void getAttendances() { - callback.onActionStarted(R.string.sync_action_syncing_attendances); + private void getAttendance() { + callback.onActionStarted(R.string.sync_action_syncing_attendance); JsonObject json = new JsonObject(); - json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getStringY_m_d() : oneMonthBack.getStringY_m_d()); + json.addProperty("DataPoczatkowa", true ? getCurrentSemesterStartDate().getStringY_m_d() : oneMonthBack.getStringY_m_d()); json.addProperty("DataKoncowa", getCurrentSemesterEndDate().getStringY_m_d()); json.addProperty("IdOddzial", studentClassId); json.addProperty("IdUczen", studentId); json.addProperty("IdOkresKlasyfikacyjny", studentSemesterId); - apiRequest(schoolSymbol+"/"+ENDPOINT_ATTENDANCES, json, result -> { - JsonArray attendances = result.getAsJsonObject("Data").getAsJsonArray("Frekwencje"); + apiRequest(schoolSymbol+"/"+ ENDPOINT_ATTENDANCE, json, result -> { + JsonArray attendanceList = result.getAsJsonObject("Data").getAsJsonArray("Frekwencje"); - for (JsonElement attendanceEl: attendances) { + for (JsonElement attendanceEl: attendanceList) { JsonObject attendance = attendanceEl.getAsJsonObject(); Pair attendanceCategory = attendanceCategories.get(attendance.get("IdKategoria").getAsInt()); @@ -1494,20 +1497,20 @@ public class Vulcan implements OldEdziennikInterface { lessonRanges.get(attendance.get("IdPoraLekcji").getAsInt()).first, type); - attendanceList.add(attendanceObject); + this.attendanceList.add(attendanceObject); if (attendanceObject.type != TYPE_PRESENT) { metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty(), profile.getEmpty(), attendanceObject.lessonDate.combineWith(attendanceObject.startTime))); } } - r("finish", "Attendances"); + r("finish", "Attendance"); }); } private void getMessagesInbox() { callback.onActionStarted(R.string.sync_action_syncing_messages_inbox); JsonObject json = new JsonObject(); - json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix()); - json.addProperty("DataKoncowa", Date.getToday().getInUnix()); + json.addProperty("DataPoczatkowa", true ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix()); + json.addProperty("DataKoncowa", getCurrentSemesterEndDate().getInUnix()); json.addProperty("LoginId", studentLoginId); json.addProperty("IdUczen", studentId); apiRequest(schoolSymbol+"/"+ENDPOINT_MESSAGES_RECEIVED, json, result -> { @@ -1557,8 +1560,8 @@ public class Vulcan implements OldEdziennikInterface { } callback.onActionStarted(R.string.sync_action_syncing_messages_outbox); JsonObject json = new JsonObject(); - json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix()); - json.addProperty("DataKoncowa", Date.getToday().getInUnix()); + json.addProperty("DataPoczatkowa", true ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix()); + json.addProperty("DataKoncowa", getCurrentSemesterEndDate().getInUnix()); json.addProperty("LoginId", studentLoginId); json.addProperty("IdUczen", studentId); apiRequest(schoolSymbol+"/"+ENDPOINT_MESSAGES_SENT, json, result -> { @@ -1632,6 +1635,15 @@ public class Vulcan implements OldEdziennikInterface { recipient.fullName = profile.getStudentNameLong(); } if (!message.seen) { + studentId = profile.getStudentData("studentId", -1); + studentLoginId = profile.getStudentData("studentLoginId", -1); + JsonObject json = new JsonObject(); + json.addProperty("WiadomoscId", message.id); + json.addProperty("FolderWiadomosci", "Odebrane"); + json.addProperty("Status", "Widoczna"); + json.addProperty("LoginId", studentLoginId); + json.addProperty("IdUczen", studentId); + apiRequest(schoolSymbol+"/"+ENDPOINT_MESSAGES_CHANGE_STATUS, json, result -> { }); app.db.metadataDao().setSeen(profile.getId(), message, true); if (message.type != TYPE_SENT) { app.db.messageRecipientDao().add(new MessageRecipient(profile.getId(), -1, -1, System.currentTimeMillis(), message.id)); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/AttachmentGetCallback.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/AttachmentGetCallback.java similarity index 85% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/AttachmentGetCallback.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/AttachmentGetCallback.java index 1a24ee68..0bd76455 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/AttachmentGetCallback.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/AttachmentGetCallback.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.api.interfaces; +package pl.szczodrzynski.edziennik.data.api.interfaces; import im.wangchao.mhttp.Request; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/OldEdziennikInterface.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/EdziennikInterface.java similarity index 83% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/OldEdziennikInterface.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/EdziennikInterface.java index 47014ad1..962b1bef 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/OldEdziennikInterface.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/EdziennikInterface.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.api.interfaces; +package pl.szczodrzynski.edziennik.data.api.interfaces; import android.content.Context; import androidx.annotation.NonNull; @@ -6,15 +6,15 @@ import androidx.annotation.Nullable; import java.util.Map; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Message; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo; -import pl.szczodrzynski.edziennik.models.Endpoint; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; +import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo; +import pl.szczodrzynski.edziennik.utils.models.Endpoint; -public interface OldEdziennikInterface { +public interface EdziennikInterface { /** * Sync all Edziennik data. @@ -34,9 +34,9 @@ public interface OldEdziennikInterface { int FEATURE_TIMETABLE = 1; int FEATURE_AGENDA = 2; int FEATURE_GRADES = 3; - int FEATURE_HOMEWORKS = 4; + int FEATURE_HOMEWORK = 4; int FEATURE_NOTICES = 5; - int FEATURE_ATTENDANCES = 6; + int FEATURE_ATTENDANCE = 6; int FEATURE_MESSAGES_INBOX = 7; int FEATURE_MESSAGES_OUTBOX = 8; int FEATURE_ANNOUNCEMENTS = 9; @@ -60,7 +60,7 @@ public interface OldEdziennikInterface { * * Updates a database-saved {@code teacherList} with {@code loginId}s. * - * A {@link pl.szczodrzynski.edziennik.datamodels.Teacher} is considered as a recipient when its {@code loginId} is not null. + * A {@link Teacher} is considered as a recipient when its {@code loginId} is not null. * * May be executed on any thread. * diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/ErrorCallback.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/ErrorCallback.java similarity index 61% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/ErrorCallback.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/ErrorCallback.java index 4f84f640..cc8f2375 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/ErrorCallback.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/ErrorCallback.java @@ -1,10 +1,10 @@ -package pl.szczodrzynski.edziennik.api.interfaces; +package pl.szczodrzynski.edziennik.data.api.interfaces; import android.content.Context; import androidx.annotation.NonNull; -import pl.szczodrzynski.edziennik.api.AppError; +import pl.szczodrzynski.edziennik.data.api.AppError; public interface ErrorCallback { void onError(Context activityContext, @NonNull AppError error); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/LoginCallback.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/LoginCallback.java similarity index 50% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/LoginCallback.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/LoginCallback.java index 4720eee4..cae0c65e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/LoginCallback.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/LoginCallback.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.api.interfaces; +package pl.szczodrzynski.edziennik.data.api.interfaces; public interface LoginCallback { void onSuccess(); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/MessageGetCallback.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/MessageGetCallback.java similarity index 60% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/MessageGetCallback.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/MessageGetCallback.java index 2fca992c..7fd973c8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/MessageGetCallback.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/MessageGetCallback.java @@ -1,7 +1,6 @@ -package pl.szczodrzynski.edziennik.api.interfaces; +package pl.szczodrzynski.edziennik.data.api.interfaces; -import pl.szczodrzynski.edziennik.datamodels.Message; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; /** * Callback containing a {@link MessageFull} which already has its {@code body} and {@code recipients}. diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/MessageListCallback.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/MessageListCallback.java new file mode 100644 index 00000000..71561ffd --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/MessageListCallback.java @@ -0,0 +1,9 @@ +package pl.szczodrzynski.edziennik.data.api.interfaces; + +import java.util.List; + +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; + +public interface MessageListCallback { + void onSuccess(List messageList); +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/ProgressCallback.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/ProgressCallback.java similarity index 77% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/ProgressCallback.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/ProgressCallback.java index 07a88987..32948eb9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/ProgressCallback.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/ProgressCallback.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.api.interfaces; +package pl.szczodrzynski.edziennik.data.api.interfaces; import androidx.annotation.StringRes; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/RecipientListGetCallback.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/RecipientListGetCallback.java new file mode 100644 index 00000000..fc249432 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/RecipientListGetCallback.java @@ -0,0 +1,9 @@ +package pl.szczodrzynski.edziennik.data.api.interfaces; + +import java.util.List; + +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; + +public interface RecipientListGetCallback { + void onSuccess(List teacherList); +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/SyncCallback.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/SyncCallback.java similarity index 55% rename from app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/SyncCallback.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/SyncCallback.java index 54329973..dfaf243b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/api/interfaces/SyncCallback.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/interfaces/SyncCallback.java @@ -1,15 +1,12 @@ -package pl.szczodrzynski.edziennik.api.interfaces; +package pl.szczodrzynski.edziennik.data.api.interfaces; import android.content.Context; import java.util.List; -import androidx.annotation.StringRes; - -import pl.szczodrzynski.edziennik.api.AppError; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; /** * A callback used for error reporting, progress information. diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/ApiLoginResult.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/ApiLoginResult.kt new file mode 100644 index 00000000..8dc3ac89 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/ApiLoginResult.kt @@ -0,0 +1,6 @@ +package pl.szczodrzynski.edziennik.data.api.v2 + +import pl.szczodrzynski.edziennik.data.api.AppError +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore + +data class ApiLoginResult(val loginStore: LoginStore, val error: AppError?) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/FirstLoginResult.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/FirstLoginResult.kt new file mode 100644 index 00000000..099c2771 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/FirstLoginResult.kt @@ -0,0 +1,6 @@ +package pl.szczodrzynski.edziennik.data.api.v2 + +import pl.szczodrzynski.edziennik.data.api.AppError +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile + +data class FirstLoginResult(val profileList: ArrayList, val error: AppError?) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/librus/firstlogin/FirstLoginLibrus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/librus/firstlogin/FirstLoginLibrus.kt new file mode 100644 index 00000000..0e8e02b6 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/librus/firstlogin/FirstLoginLibrus.kt @@ -0,0 +1,12 @@ +package pl.szczodrzynski.edziennik.data.api.v2.librus.firstlogin + +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.data.api.interfaces.ProgressCallback +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile + +class FirstLoginLibrus(val app: App, val loginStore: LoginStore, val progressCallback: ProgressCallback, val onSuccess: (profileList: List) -> Unit) { + init { + + } +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/librus/firstlogin/FirstLoginSynergia.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/librus/firstlogin/FirstLoginSynergia.kt new file mode 100644 index 00000000..79587cd8 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/v2/librus/firstlogin/FirstLoginSynergia.kt @@ -0,0 +1,12 @@ +package pl.szczodrzynski.edziennik.data.api.v2.librus.firstlogin + +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.data.api.interfaces.ProgressCallback +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile + +class FirstLoginSynergia(val app: App, val loginStore: LoginStore, val progressCallback: ProgressCallback, val onSuccess: (profileList: List) -> Unit) { + init { + + } +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AppDb.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/AppDb.java similarity index 84% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AppDb.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/AppDb.java index fba95f57..05ac2fb1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AppDb.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/AppDb.java @@ -1,12 +1,61 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db; +import androidx.annotation.NonNull; import androidx.sqlite.db.SupportSQLiteDatabase; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; import androidx.room.TypeConverters; import androidx.room.migration.Migration; -import pl.szczodrzynski.edziennik.models.Date; + +import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement; +import pl.szczodrzynski.edziennik.data.db.modules.announcements.AnnouncementDao; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.AttendanceDao; +import pl.szczodrzynski.edziennik.data.db.converters.ConverterDate; +import pl.szczodrzynski.edziennik.data.db.converters.ConverterJsonObject; +import pl.szczodrzynski.edziennik.data.db.converters.ConverterListLong; +import pl.szczodrzynski.edziennik.data.db.converters.ConverterListString; +import pl.szczodrzynski.edziennik.data.db.converters.ConverterTime; +import pl.szczodrzynski.edziennik.data.db.modules.debuglog.DebugLog; +import pl.szczodrzynski.edziennik.data.db.modules.debuglog.DebugLogDao; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventDao; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventType; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventTypeDao; +import pl.szczodrzynski.edziennik.data.db.modules.feedback.FeedbackMessage; +import pl.szczodrzynski.edziennik.data.db.modules.feedback.FeedbackMessageDao; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategoryDao; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeDao; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChangeDao; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonDao; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStoreDao; +import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber; +import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumberDao; +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageDao; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientDao; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.MetadataDao; +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice; +import pl.szczodrzynski.edziennik.data.db.modules.notices.NoticeDao; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileDao; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.SubjectDao; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsence; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsenceDao; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherDao; +import pl.szczodrzynski.edziennik.data.db.modules.teams.Team; +import pl.szczodrzynski.edziennik.data.db.modules.teams.TeamDao; +import pl.szczodrzynski.edziennik.utils.models.Date; import android.content.Context; @@ -14,6 +63,7 @@ import android.content.Context; Grade.class, //GradeCategory.class, Teacher.class, + TeacherAbsence.class, Subject.class, Notice.class, Lesson.class, @@ -31,7 +81,7 @@ import android.content.Context; Message.class, MessageRecipient.class, DebugLog.class, - Metadata.class}, version = 52) + Metadata.class}, version = 54) @TypeConverters({ ConverterTime.class, ConverterDate.class, @@ -43,6 +93,7 @@ public abstract class AppDb extends RoomDatabase { public abstract GradeDao gradeDao(); //public abstract GradeCategoryDao gradeCategoryDao(); public abstract TeacherDao teacherDao(); + public abstract TeacherAbsenceDao teacherAbsenceDao(); public abstract SubjectDao subjectDao(); public abstract NoticeDao noticeDao(); public abstract LessonDao lessonDao(); @@ -486,6 +537,27 @@ public abstract class AppDb extends RoomDatabase { database.execSQL("ALTER TABLE teachers ADD teacherTypeDescription TEXT DEFAULT NULL"); } }; + private static final Migration MIGRATION_52_53 = new Migration(52, 53) { + @Override + public void migrate(@NonNull SupportSQLiteDatabase database) { + database.execSQL("CREATE TABLE IF NOT EXISTS teacherAbsence (" + + "profileId INTEGER NOT NULL," + + "teacherAbsenceId INTEGER NOT NULL," + + "teacherId INTEGER NOT NULL," + + "teacherAbsenceType INTEGER NOT NULL," + + "teacherAbsenceDateFrom TEXT NOT NULL," + + "teacherAbsenceDateTo TEXT NOT NULL," + + "PRIMARY KEY(profileId, teacherAbsenceId)" + + ")"); + } + }; + private static final Migration MIGRATION_53_54 = new Migration(53, 54) { + @Override + public void migrate(@NonNull SupportSQLiteDatabase database) { + database.execSQL("ALTER TABLE teacherAbsence ADD teacherAbsenceTimeFrom TEXT DEFAULT NULL"); + database.execSQL("ALTER TABLE teacherAbsence ADD teacherAbsenceTimeTo TEXT DEFAULT NULL"); + } + }; public static AppDb getDatabase(final Context context) { @@ -535,7 +607,10 @@ public abstract class AppDb extends RoomDatabase { MIGRATION_48_49, MIGRATION_49_50, MIGRATION_50_51, - MIGRATION_51_52) + MIGRATION_51_52, + MIGRATION_52_53, + MIGRATION_53_54 + ) .allowMainThreadQueries() //.fallbackToDestructiveMigration() .build(); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterDate.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterDate.java similarity index 75% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterDate.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterDate.java index fa23123b..a130362b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterDate.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterDate.java @@ -1,8 +1,8 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.converters; import androidx.room.TypeConverter; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Date; public class ConverterDate { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterJsonObject.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterJsonObject.java similarity index 89% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterJsonObject.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterJsonObject.java index e0b864f1..47d9b4d4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterJsonObject.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterJsonObject.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.converters; import androidx.room.TypeConverter; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterListLong.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterListLong.java similarity index 90% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterListLong.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterListLong.java index 583c2605..b5c2ceb1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterListLong.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterListLong.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.converters; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterListString.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterListString.java similarity index 90% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterListString.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterListString.java index 86abae6b..6f579104 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterListString.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterListString.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.converters; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterTime.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterTime.java similarity index 77% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterTime.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterTime.java index 6ac9a8c6..63573772 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ConverterTime.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/converters/ConverterTime.java @@ -1,8 +1,8 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.converters; import androidx.room.TypeConverter; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Time; public class ConverterTime { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Announcement.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/announcements/Announcement.java similarity index 90% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Announcement.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/announcements/Announcement.java index cfde4da3..49ba227c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Announcement.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/announcements/Announcement.java @@ -1,11 +1,11 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.announcements; import androidx.annotation.Nullable; import androidx.room.ColumnInfo; import androidx.room.Entity; import androidx.room.Ignore; import androidx.room.Index; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Date; @Entity(tableName = "announcements", primaryKeys = {"profileId", "announcementId"}, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AnnouncementDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/announcements/AnnouncementDao.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AnnouncementDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/announcements/AnnouncementDao.java index 165ca00b..852e16f4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AnnouncementDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/announcements/AnnouncementDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.announcements; import java.util.List; @@ -11,7 +11,9 @@ import androidx.room.RawQuery; import androidx.sqlite.db.SimpleSQLiteQuery; import androidx.sqlite.db.SupportSQLiteQuery; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_ANNOUNCEMENT; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; + +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_ANNOUNCEMENT; @Dao public abstract class AnnouncementDao { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AnnouncementFull.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/announcements/AnnouncementFull.java similarity index 74% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AnnouncementFull.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/announcements/AnnouncementFull.java index d7c5fd74..29d4e814 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AnnouncementFull.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/announcements/AnnouncementFull.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.announcements; public class AnnouncementFull extends Announcement { public String teacherFullName = ""; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Attendance.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/attendance/Attendance.java similarity index 91% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Attendance.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/attendance/Attendance.java index 50fec470..b7ae5ca4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Attendance.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/attendance/Attendance.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.attendance; import androidx.annotation.NonNull; import androidx.room.ColumnInfo; @@ -6,8 +6,8 @@ import androidx.room.Entity; import androidx.room.Ignore; import androidx.room.Index; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; @Entity(tableName = "attendances", primaryKeys = {"profileId", "attendanceId", "attendanceLessonDate", "attendanceStartTime"}, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AttendanceDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/attendance/AttendanceDao.java similarity index 94% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AttendanceDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/attendance/AttendanceDao.java index d6367227..05c44822 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AttendanceDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/attendance/AttendanceDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.attendance; import androidx.lifecycle.LiveData; import androidx.sqlite.db.SimpleSQLiteQuery; @@ -8,12 +8,11 @@ import androidx.room.Insert; import androidx.room.OnConflictStrategy; import androidx.room.Query; import androidx.room.RawQuery; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Date; import java.util.List; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_ATTENDANCE; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_ATTENDANCE; @Dao public abstract class AttendanceDao { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AttendanceFull.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/attendance/AttendanceFull.java similarity index 81% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AttendanceFull.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/attendance/AttendanceFull.java index 8f6d4a7b..8f9f3751 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/AttendanceFull.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/attendance/AttendanceFull.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.attendance; public class AttendanceFull extends Attendance { public String teacherFullName = ""; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/DebugLog.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/debuglog/DebugLog.java similarity index 82% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/DebugLog.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/debuglog/DebugLog.java index 7d22db18..866a3882 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/DebugLog.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/debuglog/DebugLog.java @@ -1,7 +1,6 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.debuglog; import androidx.room.Entity; -import androidx.room.Index; import androidx.room.PrimaryKey; import static pl.szczodrzynski.edziennik.utils.Utils.d; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/DebugLogDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/debuglog/DebugLogDao.java similarity index 69% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/DebugLogDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/debuglog/DebugLogDao.java index b1a0a5e6..14dd6a88 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/DebugLogDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/debuglog/DebugLogDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.debuglog; import androidx.room.Dao; import androidx.room.Insert; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Event.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/Event.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Event.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/Event.java index c6e1244a..e55e2a47 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Event.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/Event.java @@ -1,11 +1,11 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.events; import androidx.room.ColumnInfo; import androidx.room.Entity; import androidx.room.Ignore; import androidx.room.Index; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; @Entity(tableName = "events", primaryKeys = {"profileId", "eventId"}, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventDao.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventDao.java index 3ae3affb..2d1e7d37 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.events; import androidx.lifecycle.LiveData; import androidx.sqlite.db.SimpleSQLiteQuery; @@ -14,12 +14,12 @@ import android.util.Log; import java.util.List; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_EVENT; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_HOMEWORK; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_LESSON_CHANGE; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_EVENT; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_LESSON_CHANGE; @Dao public abstract class EventDao { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventFull.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventFull.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventFull.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventFull.java index 98887679..08b6966b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventFull.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventFull.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.events; public class EventFull extends Event { public String typeName = ""; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventType.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventType.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventType.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventType.java index 10848dc6..e06f7656 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventType.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventType.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.events; import android.graphics.Color; @@ -28,4 +28,4 @@ public class EventType { public EventType(int profileId, int id, String name, String color) { this(profileId, id, name, Color.parseColor(color)); } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventTypeDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventTypeDao.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventTypeDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventTypeDao.java index 0b0b0dd6..7baf8189 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/EventTypeDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/events/EventTypeDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.events; import java.util.List; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/FeedbackMessage.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/feedback/FeedbackMessage.java similarity index 91% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/FeedbackMessage.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/feedback/FeedbackMessage.java index 9e8328ba..14cd5823 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/FeedbackMessage.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/feedback/FeedbackMessage.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.feedback; import androidx.room.Entity; import androidx.room.Ignore; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/FeedbackMessageDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/feedback/FeedbackMessageDao.java similarity index 94% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/FeedbackMessageDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/feedback/FeedbackMessageDao.java index f35f6743..24a45376 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/FeedbackMessageDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/feedback/FeedbackMessageDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.feedback; import java.util.List; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/FeedbackMessageWithCount.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/feedback/FeedbackMessageWithCount.java similarity index 62% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/FeedbackMessageWithCount.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/feedback/FeedbackMessageWithCount.java index bbea7461..17320fee 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/FeedbackMessageWithCount.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/feedback/FeedbackMessageWithCount.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.feedback; public class FeedbackMessageWithCount extends FeedbackMessage { public int messageCount = 0; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Grade.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/Grade.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Grade.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/Grade.java index 0ac89fd3..e6883003 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Grade.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/Grade.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.grades; import androidx.room.ColumnInfo; import androidx.room.Entity; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeCategory.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeCategory.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeCategory.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeCategory.java index 4ebd05c3..dfe76dfd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeCategory.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeCategory.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.grades; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeCategoryDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeCategoryDao.java similarity index 94% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeCategoryDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeCategoryDao.java index 3cfd8cf6..6cdf6bbe 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeCategoryDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeCategoryDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.grades; import java.util.List; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeDao.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeDao.java index b986e471..4487317b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.grades; import androidx.lifecycle.LiveData; import androidx.sqlite.db.SimpleSQLiteQuery; @@ -14,7 +14,7 @@ import android.util.SparseIntArray; import java.util.List; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_GRADE; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_GRADE; @Dao public abstract class GradeDao { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeFull.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeFull.java similarity index 84% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeFull.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeFull.java index ac1259bb..44c62b0a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/GradeFull.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/grades/GradeFull.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.grades; public class GradeFull extends Grade { //public String category = ""; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Lesson.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/Lesson.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Lesson.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/Lesson.java index 69fe76c9..95402750 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Lesson.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/Lesson.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.lessons; import java.util.List; @@ -8,8 +8,8 @@ import androidx.room.Ignore; import androidx.room.Index; import androidx.annotation.NonNull; -import pl.szczodrzynski.edziennik.models.Time; -import pl.szczodrzynski.edziennik.models.Week; +import pl.szczodrzynski.edziennik.utils.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Week; @Entity(tableName = "lessons", primaryKeys = {"profileId", "lessonWeekDay", "lessonStartTime", "lessonEndTime"}, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonChange.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonChange.java similarity index 94% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonChange.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonChange.java index 41cfcbc6..e651494e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonChange.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonChange.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.lessons; import androidx.room.ColumnInfo; import androidx.room.Entity; @@ -7,8 +7,8 @@ import androidx.annotation.NonNull; import java.util.List; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; @Entity(tableName = "lessonChanges", primaryKeys = {"profileId", "lessonChangeDate", "lessonChangeStartTime", "lessonChangeEndTime"}, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonChangeDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonChangeDao.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonChangeDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonChangeDao.java index a8238b4e..c854ce99 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonChangeDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonChangeDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.lessons; import androidx.lifecycle.LiveData; import androidx.sqlite.db.SimpleSQLiteQuery; @@ -11,10 +11,10 @@ import androidx.room.RawQuery; import java.util.List; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.db.LessonChangeCounter; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.ui.modules.agenda.lessonchange.LessonChangeCounter; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_LESSON_CHANGE; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_LESSON_CHANGE; import static pl.szczodrzynski.edziennik.utils.Utils.d; @Dao diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonChangeFull.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonChangeFull.java similarity index 84% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonChangeFull.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonChangeFull.java index e44f9242..87cb2b95 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonChangeFull.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonChangeFull.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.lessons; public class LessonChangeFull extends LessonChange { /*public String changeTeacherFullName = ""; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonDao.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonDao.java index a464b886..220977ab 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.lessons; import androidx.lifecycle.LiveData; import androidx.sqlite.db.SimpleSQLiteQuery; @@ -9,12 +9,11 @@ import androidx.room.OnConflictStrategy; import androidx.room.Query; import androidx.room.RawQuery; import androidx.annotation.NonNull; -import android.util.Log; import java.util.List; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; @Dao public abstract class LessonDao { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonFull.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonFull.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonFull.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonFull.java index 2486b491..fc607833 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LessonFull.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/lessons/LessonFull.java @@ -1,15 +1,15 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.lessons; import androidx.room.ColumnInfo; import android.content.Context; import androidx.annotation.Nullable; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Date; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_ADDED; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_ADDED; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE; import static pl.szczodrzynski.edziennik.utils.Utils.bs; public class LessonFull extends Lesson { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LoginStore.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/login/LoginStore.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LoginStore.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/login/LoginStore.java index ec13779c..5545c5f5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LoginStore.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/login/LoginStore.java @@ -1,16 +1,17 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.login; import android.os.Bundle; import androidx.annotation.Nullable; import androidx.room.ColumnInfo; import androidx.room.Entity; -import androidx.annotation.NonNull; import androidx.room.Ignore; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; + @Entity(tableName = "loginStores", primaryKeys = {"loginStoreId"}) public class LoginStore { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LoginStoreDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/login/LoginStoreDao.java similarity index 90% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LoginStoreDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/login/LoginStoreDao.java index eee57539..49fc3eea 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LoginStoreDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/login/LoginStoreDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.login; import androidx.lifecycle.LiveData; import androidx.room.Dao; @@ -8,6 +8,8 @@ import androidx.room.Query; import java.util.List; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; + @Dao public abstract class LoginStoreDao { @Insert(onConflict = OnConflictStrategy.REPLACE) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LuckyNumber.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/luckynumber/LuckyNumber.java similarity index 82% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LuckyNumber.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/luckynumber/LuckyNumber.java index 0ddc8032..c2ccd4bb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LuckyNumber.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/luckynumber/LuckyNumber.java @@ -1,10 +1,10 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.luckynumber; import androidx.room.ColumnInfo; import androidx.room.Entity; import androidx.annotation.NonNull; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Date; @Entity(tableName = "luckyNumbers", primaryKeys = {"profileId", "luckyNumberDate"}) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LuckyNumberDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/luckynumber/LuckyNumberDao.java similarity index 89% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LuckyNumberDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/luckynumber/LuckyNumberDao.java index 308b3045..a775bedf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/LuckyNumberDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/luckynumber/LuckyNumberDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.luckynumber; import androidx.lifecycle.LiveData; import androidx.room.Dao; @@ -8,7 +8,7 @@ import androidx.room.Query; import java.util.List; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Date; @Dao public interface LuckyNumberDao { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Message.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/Message.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Message.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/Message.java index 6fbca751..02fdaa24 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Message.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/Message.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.messages; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageDao.java similarity index 89% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageDao.java index 7decdfb5..8f5048b4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.messages; import java.util.List; @@ -11,10 +11,12 @@ import androidx.room.RawQuery; import androidx.sqlite.db.SimpleSQLiteQuery; import androidx.sqlite.db.SupportSQLiteQuery; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_DELETED; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_MESSAGE; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; + +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_DELETED; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_MESSAGE; @Dao public abstract class MessageDao { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageFull.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageFull.java similarity index 89% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageFull.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageFull.java index b6b5547b..30df0a81 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageFull.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageFull.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.messages; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageRecipient.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageRecipient.java similarity index 94% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageRecipient.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageRecipient.java index 973cc3eb..29635e5a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageRecipient.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageRecipient.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.messages; import androidx.room.ColumnInfo; import androidx.room.Entity; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageRecipientDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageRecipientDao.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageRecipientDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageRecipientDao.java index 72058604..4bd876e3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageRecipientDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageRecipientDao.java @@ -1,8 +1,7 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.messages; import java.util.List; -import androidx.lifecycle.LiveData; import androidx.room.Dao; import androidx.room.Insert; import androidx.room.OnConflictStrategy; @@ -11,8 +10,6 @@ import androidx.room.RawQuery; import androidx.sqlite.db.SimpleSQLiteQuery; import androidx.sqlite.db.SupportSQLiteQuery; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_MESSAGE; - @Dao public abstract class MessageRecipientDao { @Query("DELETE FROM messageRecipients WHERE profileId = :profileId") diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageRecipientFull.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageRecipientFull.java similarity index 88% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageRecipientFull.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageRecipientFull.java index d3aed76b..69dbd54c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MessageRecipientFull.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/messages/MessageRecipientFull.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.messages; public class MessageRecipientFull extends MessageRecipient { public String fullName = null; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Metadata.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/metadata/Metadata.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Metadata.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/metadata/Metadata.java index 2ac2a6e0..a621fe26 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Metadata.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/metadata/Metadata.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.metadata; import androidx.room.ColumnInfo; import androidx.room.Entity; @@ -18,6 +18,7 @@ public class Metadata { public static final int TYPE_LESSON_CHANGE = 6; public static final int TYPE_ANNOUNCEMENT = 7; public static final int TYPE_MESSAGE = 8; + public static final int TYPE_TEACHER_ABSENCE = 9; public int profileId; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MetadataDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/metadata/MetadataDao.java similarity index 86% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MetadataDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/metadata/MetadataDao.java index fdc61ecb..d86b9f16 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/MetadataDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/metadata/MetadataDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.metadata; import androidx.lifecycle.LiveData; import androidx.room.Dao; @@ -9,16 +9,24 @@ import androidx.room.Transaction; import java.util.List; -import pl.szczodrzynski.edziennik.models.db.UnreadCounter; +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice; +import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message; +import pl.szczodrzynski.edziennik.utils.models.UnreadCounter; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_ANNOUNCEMENT; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_ATTENDANCE; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_EVENT; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_GRADE; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_HOMEWORK; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_LESSON_CHANGE; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_MESSAGE; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_NOTICE; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_ANNOUNCEMENT; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_ATTENDANCE; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_EVENT; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_GRADE; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_LESSON_CHANGE; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_MESSAGE; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_NOTICE; @Dao public abstract class MetadataDao { @@ -196,13 +204,13 @@ public abstract class MetadataDao { public abstract void deleteUnusedNotices(int profileId); @Query("DELETE FROM metadata WHERE profileId = :profileId AND thingType = "+TYPE_ATTENDANCE+" AND thingId NOT IN (SELECT attendanceId FROM attendances WHERE profileId = :profileId);") - public abstract void deleteUnusedAttendances(int profileId); + public abstract void deleteUnusedAttendance(int profileId); @Query("DELETE FROM metadata WHERE profileId = :profileId AND thingType = "+TYPE_EVENT+" AND thingId NOT IN (SELECT eventId FROM events WHERE profileId = :profileId AND eventType != -1);") public abstract void deleteUnusedEvents(int profileId); @Query("DELETE FROM metadata WHERE profileId = :profileId AND thingType = "+TYPE_HOMEWORK+" AND thingId NOT IN (SELECT eventId FROM events WHERE profileId = :profileId AND eventType = -1);") - public abstract void deleteUnusedHomeworks(int profileId); + public abstract void deleteUnusedHomework(int profileId); @Query("DELETE FROM metadata WHERE profileId = :profileId AND thingType = "+TYPE_LESSON_CHANGE+" AND thingId NOT IN (SELECT lessonChangeId FROM lessonChanges WHERE profileId = :profileId);") public abstract void deleteUnusedLessonChanges(int profileId); @@ -217,11 +225,11 @@ public abstract class MetadataDao { public void deleteUnused(int profileId) { deleteUnusedGrades(profileId); deleteUnusedNotices(profileId); - deleteUnusedAttendances(profileId); + deleteUnusedAttendance(profileId); deleteUnusedEvents(profileId); - deleteUnusedHomeworks(profileId); + deleteUnusedHomework(profileId); deleteUnusedLessonChanges(profileId); deleteUnusedAnnouncements(profileId); deleteUnusedMessages(profileId); } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Notice.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/notices/Notice.java similarity index 94% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Notice.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/notices/Notice.java index 230dd596..f80ac904 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Notice.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/notices/Notice.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.notices; import androidx.room.ColumnInfo; import androidx.room.Entity; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/NoticeDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/notices/NoticeDao.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/NoticeDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/notices/NoticeDao.java index 3fcda14b..0d6a28ec 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/NoticeDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/notices/NoticeDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.notices; import androidx.lifecycle.LiveData; import androidx.sqlite.db.SimpleSQLiteQuery; @@ -11,7 +11,9 @@ import androidx.room.RawQuery; import java.util.List; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_NOTICE; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; + +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_NOTICE; @Dao public abstract class NoticeDao { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/NoticeFull.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/notices/NoticeFull.java similarity index 75% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/NoticeFull.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/notices/NoticeFull.java index 5746118b..4fbf3119 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/NoticeFull.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/notices/NoticeFull.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.notices; public class NoticeFull extends Notice { public String teacherFullName = ""; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Profile.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/profiles/Profile.kt similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Profile.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/profiles/Profile.kt index 8fa92771..0c737b43 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Profile.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/profiles/Profile.kt @@ -1,27 +1,22 @@ -package pl.szczodrzynski.edziennik.datamodels +package pl.szczodrzynski.edziennik.data.db.modules.profiles import androidx.room.ColumnInfo import androidx.room.Entity import android.content.Context -import android.graphics.BitmapFactory import android.graphics.PorterDuff import android.graphics.PorterDuffColorFilter import android.graphics.drawable.Drawable -import android.media.ThumbnailUtils import android.net.ConnectivityManager -import android.net.NetworkInfo import android.widget.ImageView -import androidx.core.graphics.drawable.RoundedBitmapDrawable import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory -import com.google.gson.JsonElement import com.google.gson.JsonObject import androidx.room.Ignore import pl.droidsonroids.gif.GifDrawable import pl.szczodrzynski.edziennik.colorFromName -import pl.szczodrzynski.edziennik.models.Date +import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.navlib.ImageHolder import pl.szczodrzynski.navlib.R import pl.szczodrzynski.navlib.drawer.IDrawerProfile diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ProfileDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/profiles/ProfileDao.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ProfileDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/profiles/ProfileDao.java index 4257a4db..c2d2b840 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ProfileDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/profiles/ProfileDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.profiles; import androidx.lifecycle.LiveData; import androidx.room.Dao; @@ -8,7 +8,7 @@ import androidx.room.Query; import java.util.List; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED; @Dao public interface ProfileDao { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ProfileFull.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/profiles/ProfileFull.kt similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ProfileFull.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/profiles/ProfileFull.kt index a221849a..ae41a733 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/ProfileFull.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/profiles/ProfileFull.kt @@ -1,17 +1,18 @@ -package pl.szczodrzynski.edziennik.datamodels +package pl.szczodrzynski.edziennik.data.db.modules.profiles import android.content.Context import androidx.room.ColumnInfo import com.google.gson.JsonObject import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_AGENDA import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ANNOUNCEMENTS -import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ATTENDANCES +import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ATTENDANCE import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_GRADES -import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORKS +import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORK import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_MESSAGES -import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_NOTICES +import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_BEHAVIOUR import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_TIMETABLE -import pl.szczodrzynski.edziennik.datamodels.LoginStore.* +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.* import java.util.* class ProfileFull : Profile { @@ -50,9 +51,9 @@ class ProfileFull : Profile { fragmentIds.add(DRAWER_ITEM_AGENDA) fragmentIds.add(DRAWER_ITEM_GRADES) fragmentIds.add(DRAWER_ITEM_MESSAGES) - fragmentIds.add(DRAWER_ITEM_HOMEWORKS) - fragmentIds.add(DRAWER_ITEM_NOTICES) - fragmentIds.add(DRAWER_ITEM_ATTENDANCES) + fragmentIds.add(DRAWER_ITEM_HOMEWORK) + fragmentIds.add(DRAWER_ITEM_BEHAVIOUR) + fragmentIds.add(DRAWER_ITEM_ATTENDANCE) return fragmentIds } LOGIN_TYPE_LIBRUS -> { @@ -61,9 +62,9 @@ class ProfileFull : Profile { fragmentIds.add(DRAWER_ITEM_AGENDA) fragmentIds.add(DRAWER_ITEM_GRADES) fragmentIds.add(DRAWER_ITEM_MESSAGES) - fragmentIds.add(DRAWER_ITEM_HOMEWORKS) - fragmentIds.add(DRAWER_ITEM_NOTICES) - fragmentIds.add(DRAWER_ITEM_ATTENDANCES) + fragmentIds.add(DRAWER_ITEM_HOMEWORK) + fragmentIds.add(DRAWER_ITEM_BEHAVIOUR) + fragmentIds.add(DRAWER_ITEM_ATTENDANCE) fragmentIds.add(DRAWER_ITEM_ANNOUNCEMENTS) return fragmentIds } @@ -73,8 +74,8 @@ class ProfileFull : Profile { fragmentIds.add(DRAWER_ITEM_AGENDA) fragmentIds.add(DRAWER_ITEM_GRADES) fragmentIds.add(DRAWER_ITEM_MESSAGES) - fragmentIds.add(DRAWER_ITEM_NOTICES) - fragmentIds.add(DRAWER_ITEM_ATTENDANCES) + fragmentIds.add(DRAWER_ITEM_BEHAVIOUR) + fragmentIds.add(DRAWER_ITEM_ATTENDANCE) fragmentIds.add(DRAWER_ITEM_ANNOUNCEMENTS) return fragmentIds } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Subject.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/subjects/Subject.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Subject.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/subjects/Subject.java index e927ae15..f5192f20 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Subject.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/subjects/Subject.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.subjects; import java.util.List; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/SubjectDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/subjects/SubjectDao.java similarity index 94% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/SubjectDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/subjects/SubjectDao.java index a1f63e1f..1698efce 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/SubjectDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/subjects/SubjectDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.subjects; import androidx.lifecycle.LiveData; import androidx.room.Dao; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Teacher.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/Teacher.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Teacher.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/Teacher.java index 2679b5a5..ba7e84c6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Teacher.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/Teacher.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.teachers; import android.content.Context; import android.graphics.Bitmap; @@ -6,7 +6,6 @@ import android.graphics.Bitmap; import java.util.List; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.room.ColumnInfo; import androidx.room.Entity; import androidx.room.Ignore; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherAbsence.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherAbsence.kt new file mode 100644 index 00000000..76ed7450 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherAbsence.kt @@ -0,0 +1,34 @@ +package pl.szczodrzynski.edziennik.data.db.modules.teachers + +import androidx.room.ColumnInfo +import androidx.room.Entity +import pl.szczodrzynski.edziennik.utils.models.Date +import pl.szczodrzynski.edziennik.utils.models.Time + +@Entity(tableName = "teacherAbsence", + primaryKeys = ["profileId", "teacherAbsenceId"]) +open class TeacherAbsence ( + + val profileId: Int, + + @ColumnInfo(name = "teacherAbsenceId") + val id: Long, + + val teacherId: Long, + + @ColumnInfo(name = "teacherAbsenceType") + val type: Long, + + @ColumnInfo(name = "teacherAbsenceDateFrom") + val dateFrom: Date, + + @ColumnInfo(name = "teacherAbsenceDateTo") + val dateTo: Date, + + @ColumnInfo(name = "teacherAbsenceTimeFrom") + val timeFrom: Time?, + + @ColumnInfo(name = "teacherAbsenceTimeTo") + val timeTo: Time? + +) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherAbsenceDao.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherAbsenceDao.kt new file mode 100644 index 00000000..543d8fab --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherAbsenceDao.kt @@ -0,0 +1,37 @@ +package pl.szczodrzynski.edziennik.data.db.modules.teachers + +import androidx.lifecycle.LiveData +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata +import pl.szczodrzynski.edziennik.utils.models.Date + +@Dao +interface TeacherAbsenceDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun add(teacherAbsence: TeacherAbsence) + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun addAll(teacherAbsenceList: List) + + @Query("SELECT * FROM teacherAbsence WHERE profileId = :profileId") + fun getAll(profileId: Int): List + + @Query("SELECT *, teachers.teacherName || ' ' || teachers.teacherSurname as teacherFullName, " + + "metadata.seen, metadata.notified, metadata.addedDate FROM teacherAbsence " + + "LEFT JOIN teachers USING (profileId, teacherId) " + + "LEFT JOIN metadata ON teacherAbsenceId = thingId AND metadata.thingType = " + Metadata.TYPE_TEACHER_ABSENCE + + " AND metadata.profileId = :profileId WHERE teachers.profileId = :profileId") + fun getAllFull(profileId: Int): List + + @Query("SELECT *, teachers.teacherName || ' ' || teachers.teacherSurname as teacherFullName, " + + "metadata.seen, metadata.notified, metadata.addedDate FROM teacherAbsence " + + "LEFT JOIN teachers USING (profileId, teacherId) " + + "LEFT JOIN metadata ON teacherAbsenceId = thingId AND metadata.thingType = " + Metadata.TYPE_TEACHER_ABSENCE + + " AND metadata.profileId = :profileId WHERE teachers.profileId = :profileId " + + "AND :date BETWEEN teacherAbsenceDateFrom AND teacherAbsenceDateTo") + fun getAllByDateFull(profileId: Int, date: Date): LiveData> +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherAbsenceFull.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherAbsenceFull.kt new file mode 100644 index 00000000..1c36c19c --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherAbsenceFull.kt @@ -0,0 +1,16 @@ +package pl.szczodrzynski.edziennik.data.db.modules.teachers + +import pl.szczodrzynski.edziennik.utils.models.Date +import pl.szczodrzynski.edziennik.utils.models.Time + +class TeacherAbsenceFull(profileId: Int, id: Long, teacherId: Long, type: Long, + dateFrom: Date, dateTo: Date, timeFrom: Time?, timeTo: Time?) + : TeacherAbsence(profileId, id, teacherId, type, dateFrom, dateTo, timeFrom, timeTo) { + + var teacherFullName = "" + + // metadata + var seen: Boolean = false + var notified: Boolean = false + var addedDate: Long = 0 +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/TeacherDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherDao.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/TeacherDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherDao.java index 649fea8f..cde76ccd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/TeacherDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teachers/TeacherDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.teachers; import androidx.lifecycle.LiveData; import androidx.room.Dao; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Team.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teams/Team.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Team.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teams/Team.java index 51073444..eb5b4af7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/Team.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teams/Team.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.teams; import androidx.room.ColumnInfo; import androidx.room.Entity; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/TeamDao.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teams/TeamDao.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/datamodels/TeamDao.java rename to app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teams/TeamDao.java index 409b4b51..2abb9af5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/datamodels/TeamDao.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/modules/teams/TeamDao.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.datamodels; +package pl.szczodrzynski.edziennik.data.db.modules.teams; import androidx.lifecycle.LiveData; import androidx.room.Dao; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterAgendaCalendarFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterAgendaCalendarFragment.java deleted file mode 100644 index bad747f9..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterAgendaCalendarFragment.java +++ /dev/null @@ -1,138 +0,0 @@ -package pl.szczodrzynski.edziennik.fragments; - -import android.app.Activity; -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.os.AsyncTask; -import android.os.Bundle; -import android.os.Handler; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.applandeo.materialcalendarview.CalendarView; -import com.applandeo.materialcalendarview.EventDay; -import com.mikepenz.iconics.IconicsColor; -import com.mikepenz.iconics.IconicsDrawable; -import com.mikepenz.iconics.IconicsSize; -import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.List; - -import pl.szczodrzynski.edziennik.App; -import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.databinding.FragmentRegisterAgendaCalendarBinding; -import pl.szczodrzynski.edziennik.datamodels.EventFull; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.dialogs.EventListDialog; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.utils.Themes; - -import static pl.szczodrzynski.edziennik.utils.Utils.intToStr; - -public class RegisterAgendaCalendarFragment extends Fragment { - - private App app = null; - private Activity activity = null; - private FragmentRegisterAgendaCalendarBinding b = null; - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - activity = getActivity(); - if (getActivity() == null || getContext() == null) - return null; - app = (App) activity.getApplication(); - getContext().getTheme().applyStyle(Themes.INSTANCE.getAppTheme(), true); - if (app.profile == null) - return inflater.inflate(R.layout.fragment_loading, container, false); - // activity, context and profile is valid - b = DataBindingUtil.inflate(inflater, R.layout.fragment_register_agenda_calendar, container, false); - return b.getRoot(); - } - - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - if (app == null || app.profile == null || activity == null || b == null || !isAdded()) - return; - - List unreadEventDates = new ArrayList<>(); - - final Handler handler = new Handler(); - handler.postDelayed(() -> AsyncTask.execute(() -> { - Context c = getContext(); - Activity a = getActivity(); - assert c != null; - assert a != null; - if (!isAdded()) { - return; - } - - List eventList = new ArrayList<>(); - - List events = app.db.eventDao().getAllNow(App.profileId); - for (EventFull event : events) { - if (event.eventDate == null) - continue; - Calendar startTime = Calendar.getInstance(); - startTime.set( - event.eventDate.year, - event.eventDate.month - 1, - event.eventDate.day, - event.startTime == null ? 0 : event.startTime.hour, - event.startTime == null ? 0 : event.startTime.minute, - event.startTime == null ? 0 : event.startTime.second - ); - Drawable eventIcon = new IconicsDrawable(activity).icon(CommunityMaterial.Icon.cmd_checkbox_blank_circle).size(IconicsSize.dp(10)).color(IconicsColor.colorInt(event.getColor())); - eventList.add(new EventDay(startTime, eventIcon)); - if (!event.seen) { - unreadEventDates.add(event.eventDate.getValue()); - } - } - - List lessonChanges = app.db.lessonChangeDao().getAllChangesWithLessonsNow(App.profileId); - - for (LessonFull lesson: lessonChanges) { - Calendar startTime = Calendar.getInstance(); - if (lesson.lessonDate == null) { - continue; - } - startTime.set( - lesson.lessonDate.year, - lesson.lessonDate.month - 1, - lesson.lessonDate.day, - lesson.startTime.hour, - lesson.startTime.minute, - lesson.startTime.second); - Drawable eventIcon = new IconicsDrawable(activity).icon(CommunityMaterial.Icon.cmd_checkbox_blank_circle).size(IconicsSize.dp(10)).color(IconicsColor.colorInt(0xff78909c)); - eventList.add(new EventDay(startTime, eventIcon)); - } - - getActivity().runOnUiThread(() -> { - //List eventList = new ArrayList<>(); - - //Collections.sort(eventList, new EventListComparator()); - - CalendarView calendarView = b.agendaCalendarView; - calendarView.setEvents(eventList); - calendarView.setOnDayClickListener(eventDay -> { - Date dayDate = Date.fromCalendar(eventDay.getCalendar()); - int scrolledDate = dayDate.getValue(); - if (unreadEventDates.contains(scrolledDate)) { - AsyncTask.execute(() -> app.db.eventDao().setSeenByDate(App.profileId, Date.fromYmd(intToStr(scrolledDate)), true)); - unreadEventDates.remove(unreadEventDates.indexOf(scrolledDate)); - } - - new EventListDialog(getContext()).show(app, dayDate); - }); - b.progressBar.setVisibility(View.GONE); - }); - }), 300); - } - -} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterAgendaDefaultFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterAgendaDefaultFragment.java deleted file mode 100644 index b7d12bae..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterAgendaDefaultFragment.java +++ /dev/null @@ -1,367 +0,0 @@ -package pl.szczodrzynski.edziennik.fragments; - -import android.app.Activity; -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.os.AsyncTask; -import android.os.Bundle; -import android.os.Handler; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Toast; - -import com.afollestad.materialdialogs.MaterialDialog; -import com.applandeo.materialcalendarview.CalendarView; -import com.applandeo.materialcalendarview.EventDay; -import com.github.tibolte.agendacalendarview.AgendaCalendarView; -import com.github.tibolte.agendacalendarview.CalendarPickerController; -import com.github.tibolte.agendacalendarview.models.BaseCalendarEvent; -import com.github.tibolte.agendacalendarview.models.CalendarEvent; -import com.github.tibolte.agendacalendarview.models.IDayItem; -import com.mikepenz.iconics.IconicsColor; -import com.mikepenz.iconics.IconicsDrawable; -import com.mikepenz.iconics.IconicsSize; -import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.List; -import java.util.Locale; - -import pl.szczodrzynski.edziennik.App; -import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.databinding.FragmentRegisterAgendaCalendarBinding; -import pl.szczodrzynski.edziennik.databinding.FragmentRegisterAgendaDefaultBinding; -import pl.szczodrzynski.edziennik.datamodels.EventFull; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.dialogs.EventListDialog; -import pl.szczodrzynski.edziennik.dialogs.EventManualDialog; -import pl.szczodrzynski.edziennik.dialogs.LessonChangeDialog; -import pl.szczodrzynski.edziennik.fragments.agenda.LessonChangeEvent; -import pl.szczodrzynski.edziennik.fragments.agenda.LessonChangeEventRenderer; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; -import pl.szczodrzynski.edziennik.models.db.LessonChangeCounter; -import pl.szczodrzynski.edziennik.utils.Colors; -import pl.szczodrzynski.edziennik.utils.Themes; -import pl.szczodrzynski.edziennik.utils.Utils; -import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem; -import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetSeparatorItem; - -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_EVENT; -import static pl.szczodrzynski.edziennik.datamodels.Profile.AGENDA_CALENDAR; -import static pl.szczodrzynski.edziennik.datamodels.Profile.AGENDA_DEFAULT; -import static pl.szczodrzynski.edziennik.utils.Utils.bs; -import static pl.szczodrzynski.edziennik.utils.Utils.intToStr; - -public class RegisterAgendaDefaultFragment extends Fragment { - - private App app = null; - private MainActivity activity = null; - private FragmentRegisterAgendaDefaultBinding b_default = null; - private FragmentRegisterAgendaCalendarBinding b_calendar = null; - private int viewType = AGENDA_DEFAULT; - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - activity = (MainActivity) getActivity(); - if (getActivity() == null || getContext() == null) - return null; - app = (App) activity.getApplication(); - getContext().getTheme().applyStyle(Themes.INSTANCE.getAppTheme(), true); - if (app.profile == null) - return inflater.inflate(R.layout.fragment_loading, container, false); - // activity, context and profile is valid - viewType = app.profile.getAgendaViewType(); - if (viewType == AGENDA_DEFAULT) { - b_default = DataBindingUtil.inflate(inflater, R.layout.fragment_register_agenda_default, container, false); - return b_default.getRoot(); - } - else { - b_calendar = DataBindingUtil.inflate(inflater, R.layout.fragment_register_agenda_calendar, container, false); - return b_calendar.getRoot(); - } - } - - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - if (app == null || app.profile == null || activity == null || (b_default == null && b_calendar == null) || !isAdded()) - return; - - activity.getBottomSheet().prependItems( - new BottomSheetPrimaryItem(true) - .withTitle(R.string.menu_add_event) - .withDescription(R.string.menu_add_event_desc) - .withIcon(CommunityMaterial.Icon.cmd_calendar_plus) - .withOnClickListener(v3 -> { - activity.getBottomSheet().close(); - new MaterialDialog.Builder(activity) - .title(R.string.main_menu_add) - .items(R.array.main_menu_add_options) - .itemsCallback((dialog, itemView, position, text) -> { - switch (position) { - case 0: - new EventManualDialog(activity).show(app, null, null, null, EventManualDialog.DIALOG_EVENT); - break; - case 1: - new EventManualDialog(activity).show(app, null, null, null, EventManualDialog.DIALOG_HOMEWORK); - break; - } - }) - .show(); - }), - new BottomSheetPrimaryItem(true) - .withTitle(R.string.menu_agenda_change_view) - .withIcon(viewType == AGENDA_DEFAULT ? CommunityMaterial.Icon.cmd_calendar : CommunityMaterial.Icon2.cmd_view_list) - .withOnClickListener(v3 -> { - activity.getBottomSheet().close(); - viewType = viewType == AGENDA_DEFAULT ? AGENDA_CALENDAR : AGENDA_DEFAULT; - app.profile.setAgendaViewType(viewType); - app.profileSaveAsync(); - activity.reloadTarget(); - }), - new BottomSheetSeparatorItem(true), - new BottomSheetPrimaryItem(true) - .withTitle(R.string.menu_mark_as_read) - .withIcon(CommunityMaterial.Icon.cmd_eye_check) - .withOnClickListener(v3 -> { - activity.getBottomSheet().close(); - AsyncTask.execute(() -> app.db.metadataDao().setAllSeen(App.profileId, TYPE_EVENT, true)); - Toast.makeText(activity, R.string.main_menu_mark_as_read_success, Toast.LENGTH_SHORT).show(); - }) - ); - activity.gainAttention(); - - if (viewType == AGENDA_DEFAULT) { - List unreadEventDates = new ArrayList<>(); - - final Handler handler = new Handler(); - handler.postDelayed(() -> AsyncTask.execute(() -> { - if (app == null || app.profile == null || activity == null || b_default == null || !isAdded()) - return; - - List eventList = new ArrayList<>(); - - List lessonChangeCounters = app.db.lessonChangeDao().getLessonChangeCountersNow(App.profileId); - for (LessonChangeCounter counter : lessonChangeCounters) { - Calendar startTime = Calendar.getInstance(); - Calendar endTime = Calendar.getInstance(); - if (counter.lessonChangeDate == null) { - continue; - } - startTime.set(counter.lessonChangeDate.year, counter.lessonChangeDate.month - 1, counter.lessonChangeDate.day, 10, 0, 0); - endTime.setTimeInMillis(startTime.getTimeInMillis() + (1000 * 60 * 45)); - eventList.add(new LessonChangeEvent( - counter.lessonChangeDate.getInMillis(), - 0xff78909c, - Colors.legibleTextColor(0xff78909c), - startTime, - endTime, - counter.profileId, - counter.lessonChangeDate, - counter.lessonChangeCount - )); - } - - - List events = app.db.eventDao().getAllNow(App.profileId); - for (EventFull event : events) { - Calendar startTime = Calendar.getInstance(); - Calendar endTime = Calendar.getInstance(); - if (event.eventDate == null) - continue; - startTime.set( - event.eventDate.year, - event.eventDate.month - 1, - event.eventDate.day, - event.startTime == null ? 0 : event.startTime.hour, - event.startTime == null ? 0 : event.startTime.minute, - event.startTime == null ? 0 : event.startTime.second - ); - endTime.setTimeInMillis(startTime.getTimeInMillis() + (1000 * 60 * 45)); - eventList.add(new BaseCalendarEvent(event.typeName + " - " + event.topic, - "", - (event.startTime == null ? getString(R.string.agenda_event_all_day) : event.startTime.getStringHM()) + - Utils.bs(", ", event.subjectLongName) + - Utils.bs(", ", event.teacherFullName) + - Utils.bs(", ", event.teamName), - event.getColor(), - Colors.legibleTextColor(event.getColor()), - startTime, - endTime, - event.startTime == null, - event.id, !event.seen)); - if (!event.seen) { - unreadEventDates.add(event.eventDate.getValue()); - } - } - - /*List lessonChanges = app.db.lessonChangeDao().getAllChangesWithLessonsNow(App.profileId); - for (LessonFull lesson: lessonChanges) { - Calendar startTime = Calendar.getInstance(); - Calendar endTime = Calendar.getInstance(); - if (lesson.lessonDate == null) { - continue; - } - startTime.set(lesson.lessonDate.year, lesson.lessonDate.month - 1, lesson.lessonDate.day, lesson.startTime.hour, lesson.startTime.minute, lesson.startTime.second); - endTime.setTimeInMillis(startTime.getTimeInMillis() + (1000 * 60 * 45)); - String description = lesson.changeTypeStr(activity); - if (lesson.changeType != TYPE_CANCELLED) { - if (lesson.subjectId != lesson.changeSubjectId && lesson.teacherId != lesson.changeTeacherId) { - description += " -> " + bs(null, lesson.changeSubjectLongName, ", ") + bs(lesson.changeTeacherFullName); - } else if (lesson.subjectId != lesson.changeSubjectId) { - description += " -> " + bs(lesson.changeSubjectLongName); - } else if (lesson.teacherId != lesson.changeTeacherId) { - description += " -> " + bs(lesson.changeTeacherFullName); - } - } - eventList.add(new BaseCalendarEvent(description, - "", - (lesson.startTime.getStringHM()) + - Utils.bs(", ", lesson.subjectLongName) + - Utils.bs(", ", lesson.teacherFullName) + - Utils.bs(", ", lesson.teamName), - 0xff78909c, - Colors.legibleTextColor(0xff78909c), - startTime, - endTime, - false, - (int)lesson.changeId, false)); - }*/ - - activity.runOnUiThread(() -> { - AgendaCalendarView mAgendaCalendarView = b_default.agendaDefaultView; - // minimum and maximum date of our calendar - // 2 month behind, one year ahead, example: March 2015 <-> May 2015 <-> May 2016 - Calendar minDate = Calendar.getInstance(); - Calendar maxDate = Calendar.getInstance(); - - minDate.add(Calendar.MONTH, -2); - minDate.set(Calendar.DAY_OF_MONTH, 1); - maxDate.add(Calendar.MONTH, 2); - - - mAgendaCalendarView.init(eventList, minDate, maxDate, Locale.getDefault(), new CalendarPickerController() { - @Override - public void onDaySelected(IDayItem dayItem) { - } - - @Override - public void onScrollToDate(Calendar calendar) { - int scrolledDate = Date.fromCalendar(calendar).getValue(); - if (unreadEventDates.contains(scrolledDate)) { - AsyncTask.execute(() -> app.db.eventDao().setSeenByDate(App.profileId, Date.fromYmd(intToStr(scrolledDate)), true)); - unreadEventDates.remove(unreadEventDates.indexOf(scrolledDate)); - } - } - - @Override - public void onEventSelected(CalendarEvent calendarEvent) { - if (calendarEvent instanceof BaseCalendarEvent) { - if (!calendarEvent.isPlaceholder() && !calendarEvent.isAllDay()) { - new EventListDialog(activity).show(app, Date.fromCalendar(calendarEvent.getInstanceDay()), Time.fromMillis(calendarEvent.getStartTime().getTimeInMillis()), true); - } else { - new EventListDialog(activity).show(app, Date.fromCalendar(calendarEvent.getInstanceDay())); - } - } else if (calendarEvent instanceof LessonChangeEvent) { - new LessonChangeDialog(activity).show(app, Date.fromCalendar(calendarEvent.getInstanceDay())); - //Toast.makeText(app, "Clicked "+((LessonChangeEvent) calendarEvent).getLessonChangeDate().getFormattedString(), Toast.LENGTH_SHORT).show(); - } - } - }, new LessonChangeEventRenderer()); - b_default.progressBar.setVisibility(View.GONE); - }); - }), 500); - } - else { - List unreadEventDates = new ArrayList<>(); - - final Handler handler = new Handler(); - handler.postDelayed(() -> AsyncTask.execute(() -> { - if (app == null || app.profile == null || activity == null || b_calendar == null || !isAdded()) - return; - Context c = getContext(); - Activity a = getActivity(); - assert c != null; - assert a != null; - if (!isAdded()) { - return; - } - - List eventList = new ArrayList<>(); - - List events = app.db.eventDao().getAllNow(App.profileId); - for (EventFull event : events) { - if (event.eventDate == null) - continue; - Calendar startTime = Calendar.getInstance(); - startTime.set( - event.eventDate.year, - event.eventDate.month - 1, - event.eventDate.day, - event.startTime == null ? 0 : event.startTime.hour, - event.startTime == null ? 0 : event.startTime.minute, - event.startTime == null ? 0 : event.startTime.second - ); - Drawable eventIcon = new IconicsDrawable(activity).icon(CommunityMaterial.Icon.cmd_checkbox_blank_circle).size(IconicsSize.dp(10)).color(IconicsColor.colorInt(event.getColor())); - eventList.add(new EventDay(startTime, eventIcon)); - if (!event.seen) { - unreadEventDates.add(event.eventDate.getValue()); - } - } - - List lessonChanges = app.db.lessonChangeDao().getAllChangesWithLessonsNow(App.profileId); - - for (LessonFull lesson: lessonChanges) { - Calendar startTime = Calendar.getInstance(); - if (lesson.lessonDate == null) { - continue; - } - startTime.set( - lesson.lessonDate.year, - lesson.lessonDate.month - 1, - lesson.lessonDate.day, - lesson.startTime.hour, - lesson.startTime.minute, - lesson.startTime.second); - Drawable eventIcon = new IconicsDrawable(activity).icon(CommunityMaterial.Icon.cmd_checkbox_blank_circle).size(IconicsSize.dp(10)).color(IconicsColor.colorInt(0xff78909c)); - eventList.add(new EventDay(startTime, eventIcon)); - } - - getActivity().runOnUiThread(() -> { - //List eventList = new ArrayList<>(); - - //Collections.sort(eventList, new EventListComparator()); - - CalendarView calendarView = b_calendar.agendaCalendarView; - calendarView.setEvents(eventList); - calendarView.setOnDayClickListener(eventDay -> { - Date dayDate = Date.fromCalendar(eventDay.getCalendar()); - int scrolledDate = dayDate.getValue(); - if (unreadEventDates.contains(scrolledDate)) { - AsyncTask.execute(() -> app.db.eventDao().setSeenByDate(App.profileId, Date.fromYmd(intToStr(scrolledDate)), true)); - unreadEventDates.remove(unreadEventDates.indexOf(scrolledDate)); - } - - new EventListDialog(getContext()).show(app, dayDate); - }); - b_calendar.progressBar.setVisibility(View.GONE); - }); - }), 300); - } - } - - public static class EventListComparator implements java.util.Comparator { - @Override - public int compare(CalendarEvent o1, CalendarEvent o2) { - return Long.compare(o1.getStartTime().getTimeInMillis(), o2.getStartTime().getTimeInMillis()); - //return (int)(o1.getStartTime().getTimeInMillis() - o2.getStartTime().getTimeInMillis()); - } - } -} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterHomeworksFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterHomeworksFragment.java deleted file mode 100644 index cb49eabb..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterHomeworksFragment.java +++ /dev/null @@ -1,127 +0,0 @@ -package pl.szczodrzynski.edziennik.fragments; - -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.LinearLayoutManager; - -import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial; - -import pl.szczodrzynski.edziennik.App; -import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.adapters.HomeworksAdapter; -import pl.szczodrzynski.edziennik.databinding.FragmentRegisterHomeworksBinding; -import pl.szczodrzynski.edziennik.datamodels.Metadata; -import pl.szczodrzynski.edziennik.dialogs.EventManualDialog; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.utils.Themes; -import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem; -import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetSeparatorItem; - -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK; - -public class RegisterHomeworksFragment extends Fragment { - - private App app = null; - private MainActivity activity = null; - private FragmentRegisterHomeworksBinding b = null; - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - activity = (MainActivity) getActivity(); - if (getActivity() == null || getContext() == null) - return null; - app = (App) activity.getApplication(); - getContext().getTheme().applyStyle(Themes.INSTANCE.getAppTheme(), true); - if (app.profile == null) - return inflater.inflate(R.layout.fragment_loading, container, false); - // activity, context and profile is valid - b = DataBindingUtil.inflate(inflater, R.layout.fragment_register_homeworks, container, false); - b.refreshLayout.setParent(activity.getSwipeRefreshLayout()); - return b.getRoot(); - } - - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - if (app == null || app.profile == null || activity == null || b == null || !isAdded()) - return; - - activity.getBottomSheet().prependItems( - new BottomSheetPrimaryItem(true) - .withTitle(R.string.menu_add_event) - .withDescription(R.string.menu_add_event_desc) - .withIcon(CommunityMaterial.Icon.cmd_calendar_plus) - .withOnClickListener(v3 -> { - activity.getBottomSheet().close(); - new EventManualDialog(activity).show(app, null, null, null, EventManualDialog.DIALOG_HOMEWORK); - }), - new BottomSheetSeparatorItem(true), - new BottomSheetPrimaryItem(true) - .withTitle(R.string.menu_mark_as_read) - .withIcon(CommunityMaterial.Icon.cmd_eye_check) - .withOnClickListener(v3 -> { - activity.getBottomSheet().close(); - AsyncTask.execute(() -> app.db.metadataDao().setAllSeen(App.profileId, Metadata.TYPE_HOMEWORK, true)); - Toast.makeText(activity, R.string.main_menu_mark_as_read_success, Toast.LENGTH_SHORT).show(); - }) - ); - activity.gainAttention(); - - /*b.refreshLayout.setOnRefreshListener(() -> { - activity.syncCurrentFeature(MainActivity.DRAWER_ITEM_HOMEWORKS, b.refreshLayout); - });*/ - - LinearLayoutManager linearLayoutCurrentManager = new LinearLayoutManager(getContext()); - linearLayoutCurrentManager.setReverseLayout(false); - linearLayoutCurrentManager.setStackFromEnd(false); - LinearLayoutManager linearLayoutPastManager = new LinearLayoutManager(getContext()); - linearLayoutPastManager.setReverseLayout(true); - linearLayoutPastManager.setStackFromEnd(true); - - b.homeworksCurrentView.setHasFixedSize(true); - b.homeworksCurrentView.setLayoutManager(linearLayoutCurrentManager); - b.homeworksPastView.setHasFixedSize(true); - b.homeworksPastView.setLayoutManager(linearLayoutPastManager); - - app.db.eventDao().getAllByType(App.profileId, TYPE_HOMEWORK, "eventDate >= '"+Date.getToday().getStringY_m_d()+"'").observe(this, currentList -> { - if (app == null || app.profile == null || activity == null || b == null || !isAdded()) - return; - - if (currentList != null && currentList.size() > 0) { - HomeworksAdapter adapter = new HomeworksAdapter(getContext(), currentList); - b.homeworksCurrentView.setAdapter(adapter); - b.homeworksCurrentView.setVisibility(View.VISIBLE); - b.homeworksCurrentNoData.setVisibility(View.GONE); - } - else { - b.homeworksCurrentView.setVisibility(View.GONE); - b.homeworksCurrentNoData.setVisibility(View.VISIBLE); - } - }); - - app.db.eventDao().getAllByType(App.profileId, TYPE_HOMEWORK, "eventDate < '"+Date.getToday().getStringY_m_d()+"'").observe(this, pastList -> { - if (app == null || app.profile == null || activity == null || b == null || !isAdded()) - return; - - if (pastList != null && pastList.size() > 0) { - HomeworksAdapter adapter = new HomeworksAdapter(getContext(), pastList); - b.homeworksPastView.setAdapter(adapter); - b.homeworksPastView.setVisibility(View.VISIBLE); - b.homeworksPastNoData.setVisibility(View.GONE); - } - else { - b.homeworksPastView.setVisibility(View.GONE); - b.homeworksPastNoData.setVisibility(View.VISIBLE); - } - }); - } -} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/network/IonCookieManager.java_ b/app/src/main/java/pl/szczodrzynski/edziennik/network/IonCookieManager.java_ deleted file mode 100644 index 47a0dacf..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/network/IonCookieManager.java_ +++ /dev/null @@ -1,47 +0,0 @@ -package pl.szczodrzynski.edziennik.network; - -import android.content.Context; -import android.util.Log; - -import com.koushikdutta.async.http.Headers; -import com.koushikdutta.ion.Ion; - -import java.io.IOException; -import java.net.CookieManager; -import java.net.URI; -import java.net.URLConnection; -import java.util.ArrayList; -import java.util.List; - -public class IonCookieManager { - private static final String TAG = "IonCookieManager"; - private CookieManager manager; - - public IonCookieManager(Context context) { - Ion ion = Ion.getDefault(context); - manager = ion.getCookieMiddleware().getCookieManager(); - } - - public void storeCookies(URLConnection conn) throws IOException { - List cookies = conn.getHeaderFields().get("Set-Cookie"); - URI uri = URI.create(conn.getURL().toString()); - if(cookies != null) { - storeCookies(uri, cookies); - } - } - - public void storeCookies(URI uri, List cookies) throws IOException { - Headers headers = new Headers(); - headers.addAll("Set-Cookie", cookies); - Log.d(TAG, "storeAllCookies: "+cookies.toString()); - manager.put(uri, headers.getMultiMap()); - } - - public void storeCookie(URI uri, String cookieName, String cookieValue) throws IOException { - List cookie = new ArrayList(); - cookie.add(String.format("%s=%s", cookieName, cookieValue)); - Log.d(TAG, "storeCookie: "+String.format("%s=%s", cookieName, cookieValue)); - storeCookies(uri, cookie); - } - -} \ No newline at end of file diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/network/ServerRequest.java b/app/src/main/java/pl/szczodrzynski/edziennik/network/ServerRequest.java index 373fa30b..4d8f9a80 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/network/ServerRequest.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/network/ServerRequest.java @@ -16,10 +16,10 @@ import im.wangchao.mhttp.ThreadMode; import im.wangchao.mhttp.callback.JsonCallbackHandler; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.BuildConfig; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; import pl.szczodrzynski.edziennik.utils.Utils; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED; public class ServerRequest { private App app; @@ -67,7 +67,7 @@ public class ServerRequest { } private String sign(String signature, long timestamp) { - String password = "bmllX21hX3Rha19sYXR3bw=="+ BuildConfig.VERSION_CODE + timestamp; + String password = "Y3plZ29fdHVfc3p1a2Fzeg=="+ BuildConfig.VERSION_CODE + timestamp; return Utils.HmacMD5(password, signature); } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/sync/MyFirebaseMessagingService.java b/app/src/main/java/pl/szczodrzynski/edziennik/sync/MyFirebaseMessagingService.java index 7c55629e..d8841ebf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/sync/MyFirebaseMessagingService.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/sync/MyFirebaseMessagingService.java @@ -17,19 +17,19 @@ import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.BuildConfig; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.datamodels.Event; -import pl.szczodrzynski.edziennik.datamodels.EventFull; -import pl.szczodrzynski.edziennik.datamodels.EventType; -import pl.szczodrzynski.edziennik.datamodels.FeedbackMessage; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.datamodels.Team; -import pl.szczodrzynski.edziennik.fragments.DebugFragment; -import pl.szczodrzynski.edziennik.models.Notification; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventType; +import pl.szczodrzynski.edziennik.data.db.modules.feedback.FeedbackMessage; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.teams.Team; +import pl.szczodrzynski.edziennik.ui.modules.base.DebugFragment; +import pl.szczodrzynski.edziennik.utils.models.Notification; import pl.szczodrzynski.edziennik.network.ServerRequest; import static pl.szczodrzynski.edziennik.App.APP_URL; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; import static pl.szczodrzynski.edziennik.utils.Utils.d; import static pl.szczodrzynski.edziennik.utils.Utils.strToInt; @@ -195,7 +195,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService { app.checkDevModePassword(); feedbackMessage.text = "devmode "+(App.devMode ? "allowed" : "disallowed"); } - Intent intent = new Intent("pl.szczodrzynski.edziennik.activities.FeedbackActivity"); + Intent intent = new Intent("pl.szczodrzynski.edziennik.ui.modules.base.FeedbackActivity"); intent.putExtra("type", "user_chat"); intent.putExtra("message", app.gson.toJson(feedbackMessage)); app.sendBroadcast(intent); @@ -217,7 +217,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService { feedbackMessage.fromUser = remoteMessage.getData().get("from_user"); feedbackMessage.fromUserName = remoteMessage.getData().get("from_user_name"); feedbackMessage.sentTime = Long.parseLong(remoteMessage.getData().get("sent_time")); - Intent intent = new Intent("pl.szczodrzynski.edziennik.activities.FeedbackActivity"); + Intent intent = new Intent("pl.szczodrzynski.edziennik.ui.modules.base.FeedbackActivity"); intent.putExtra("type", "user_chat"); intent.putExtra("message", app.gson.toJson(feedbackMessage)); app.sendBroadcast(intent); @@ -280,7 +280,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService { app.notifier.add(new Notification(app.getContext(), app.getString((oldEvent == null ? R.string.notification_shared_event_format : R.string.notification_shared_event_modified_format), event.sharedByName, eventType == null ? "wydarzenie" : eventType.name, event.eventDate.getFormattedString(), event.topic)) .withProfileData(profile.getId(), profile.getName()) .withType(event.type == TYPE_HOMEWORK ? Notification.TYPE_NEW_SHARED_HOMEWORK : Notification.TYPE_NEW_SHARED_EVENT) - .withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORKS : MainActivity.DRAWER_ITEM_AGENDA) + .withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORK : MainActivity.DRAWER_ITEM_AGENDA) .withLongExtra("eventDate", event.eventDate.getValue()) ); d(TAG, "Finishing adding event " + event); @@ -299,7 +299,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService { app.notifier.add(new Notification(app.getContext(), app.getString(R.string.notification_shared_event_removed_format, oldEvent.sharedByName, oldEvent.typeName, oldEvent.eventDate.getFormattedString(), oldEvent.topic)) .withProfileData(profile.getId(), profile.getName()) .withType(oldEvent.type == TYPE_HOMEWORK ? Notification.TYPE_NEW_SHARED_HOMEWORK : Notification.TYPE_NEW_SHARED_EVENT) - .withFragmentRedirect(oldEvent.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORKS : MainActivity.DRAWER_ITEM_AGENDA) + .withFragmentRedirect(oldEvent.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORK : MainActivity.DRAWER_ITEM_AGENDA) .withLongExtra("eventDate", oldEvent.eventDate.getValue()) ); app.db.eventDao().remove(oldEvent); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/sync/SyncService.java b/app/src/main/java/pl/szczodrzynski/edziennik/sync/SyncService.java index 5f4263ad..e3eddf3d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/sync/SyncService.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/sync/SyncService.java @@ -14,11 +14,11 @@ import java.util.Collection; import java.util.List; import pl.szczodrzynski.edziennik.App; -import pl.szczodrzynski.edziennik.api.AppError; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; +import pl.szczodrzynski.edziennik.data.api.AppError; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; import static pl.szczodrzynski.edziennik.Notifier.ID_GET_DATA; import static pl.szczodrzynski.edziennik.Notifier.ID_GET_DATA_ERROR; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/GenericDialog.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/GenericDialog.java similarity index 87% rename from app/src/main/java/pl/szczodrzynski/edziennik/dialogs/GenericDialog.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/GenericDialog.java index 2b5b23ef..df691a58 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/GenericDialog.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/GenericDialog.java @@ -1,15 +1,11 @@ -package pl.szczodrzynski.edziennik.dialogs; +package pl.szczodrzynski.edziennik.ui.dialogs; import android.content.Context; -import android.content.res.Resources; -import androidx.annotation.ColorInt; -import android.util.TypedValue; import android.view.View; import com.afollestad.materialdialogs.MaterialDialog; import pl.szczodrzynski.edziennik.App; -import pl.szczodrzynski.edziennik.R; public class GenericDialog { private App app; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/ChangelogDialog.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/changelog/ChangelogDialog.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/dialogs/ChangelogDialog.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/changelog/ChangelogDialog.java index d27b7726..dfae3081 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/ChangelogDialog.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/changelog/ChangelogDialog.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.dialogs; +package pl.szczodrzynski.edziennik.ui.dialogs.changelog; import android.app.Dialog; import android.os.Bundle; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/EventListAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListAdapter.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/adapters/EventListAdapter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListAdapter.java index b22b2308..ccf28951 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/EventListAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListAdapter.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.adapters; +package pl.szczodrzynski.edziennik.ui.dialogs.event; import android.content.Context; import android.graphics.PorterDuff; @@ -18,14 +18,12 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.datamodels.Event; -import pl.szczodrzynski.edziennik.datamodels.EventFull; -import pl.szczodrzynski.edziennik.dialogs.EventListDialog; -import pl.szczodrzynski.edziennik.dialogs.EventManualDialog; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull; +import pl.szczodrzynski.edziennik.utils.models.Date; import pl.szczodrzynski.edziennik.utils.Utils; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK; import static pl.szczodrzynski.edziennik.utils.Utils.bs; import static pl.szczodrzynski.edziennik.utils.Utils.d; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/EventListDialog.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListDialog.java similarity index 80% rename from app/src/main/java/pl/szczodrzynski/edziennik/dialogs/EventListDialog.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListDialog.java index dd974450..065eedda 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/EventListDialog.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListDialog.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.dialogs; +package pl.szczodrzynski.edziennik.ui.dialogs.event; import android.content.Context; import android.content.DialogInterface; @@ -16,20 +16,15 @@ import androidx.lifecycle.LifecycleOwner; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import java.util.Calendar; -import java.util.List; -import java.util.Locale; - import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.adapters.EventListAdapter; -import pl.szczodrzynski.edziennik.datamodels.LessonChange; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.fragments.agenda.LessonChangeEvent; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; -import pl.szczodrzynski.edziennik.models.db.LessonChangeCounter; -import pl.szczodrzynski.edziennik.utils.Colors; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsenceFull; +import pl.szczodrzynski.edziennik.ui.dialogs.lessonchange.LessonChangeDialog; +import pl.szczodrzynski.edziennik.ui.dialogs.teacherabsence.TeacherAbsenceDialog; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; public class EventListDialog { private App app; @@ -91,7 +86,7 @@ public class EventListDialog { private void actualShow(Date date, Time time, boolean noDefaultTimeWhenAdding) { dialog = new MaterialDialog.Builder(context) .title((time == null ? date.getFormattedString() : (lesson != null ? lesson.getSubjectLongName() : date.getFormattedString())+", "+time.getStringHM())) - .customView(R.layout.dialog_event_list, true) + .customView(R.layout.dialog_event_list, false) .neutralText(R.string.add) .positiveText(R.string.close) .autoDismiss(false) @@ -175,10 +170,11 @@ public class EventListDialog { examsView = dialogView.findViewById(R.id.eventListView); examsView.setHasFixedSize(false); - examsView.setNestedScrollingEnabled(false); + examsView.setNestedScrollingEnabled(true); examsView.setLayoutManager(new LinearLayoutManager(context)); - CardView lessonChangeContainer = dialogView.findViewById(R.id.lesson_change_container); + CardView lessonChangeContainer = dialogView.findViewById(R.id.lessonChangeContainer); + CardView teacherAbsenceContainer = dialogView.findViewById(R.id.teacherAbsenceContainer); //lessonChangeContainer.setVisibility(View.GONE); if (time == null) { app.db.lessonChangeDao().getLessonChangeCounterByDate(App.profileId, date).observe((LifecycleOwner) context, counter -> { @@ -186,14 +182,38 @@ public class EventListDialog { return; if (counter.lessonChangeCount > 0) { lessonChangeContainer.setVisibility(View.VISIBLE); - TextView lessonChangeCount = dialogView.findViewById(R.id.lesson_change_count); - lessonChangeCount.setText(Integer.toString(counter.lessonChangeCount)); + TextView lessonChangeCount = dialogView.findViewById(R.id.lessonChangeCount); + lessonChangeCount.setText(String.valueOf(counter.lessonChangeCount)); lessonChangeContainer.setCardBackgroundColor(0xff78909c); lessonChangeContainer.setOnClickListener((v -> { new LessonChangeDialog(context).show(app, date); })); } }); + + app.db.teacherAbsenceDao().getAllByDateFull(App.profileId, date).observe((LifecycleOwner) context, teacherAbsenceList -> { + if (teacherAbsenceList == null) + return; + if (teacherAbsenceList.size() > 0) { + int count = 0; + for (TeacherAbsenceFull teacherAbsence : teacherAbsenceList) { + Date dateFrom = teacherAbsence.getDateFrom(); + Date dateTo = teacherAbsence.getDateTo(); + + if (date.compareTo(dateFrom) >= 0 && date.compareTo(dateTo) <= 0) { + count++; + } + } + + teacherAbsenceContainer.setVisibility(View.VISIBLE); + TextView teacherAbsenceCount = dialogView.findViewById(R.id.teacherAbsenceCount); + teacherAbsenceCount.setText(String.valueOf(count)); + teacherAbsenceContainer.setCardBackgroundColor(0xffff1744); + teacherAbsenceContainer.setOnClickListener(( v -> { + new TeacherAbsenceDialog(context).show(app, date); + })); + } + }); } app.db.eventDao().getAllByDateTime(profileId, date, time).observe((LifecycleOwner) context, events -> { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/EventManualDialog.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventManualDialog.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/dialogs/EventManualDialog.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventManualDialog.java index 6654fa62..af333143 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/EventManualDialog.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventManualDialog.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.dialogs; +package pl.szczodrzynski.edziennik.ui.dialogs.event; import android.app.Activity; @@ -36,29 +36,29 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.api.AppError; -import pl.szczodrzynski.edziennik.datamodels.Event; -import pl.szczodrzynski.edziennik.datamodels.EventFull; -import pl.szczodrzynski.edziennik.datamodels.EventType; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.datamodels.Metadata; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.datamodels.Subject; -import pl.szczodrzynski.edziennik.datamodels.Teacher; -import pl.szczodrzynski.edziennik.datamodels.Team; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; -import pl.szczodrzynski.edziennik.models.Week; +import pl.szczodrzynski.edziennik.data.api.AppError; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventType; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; +import pl.szczodrzynski.edziennik.data.db.modules.teams.Team; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Week; import pl.szczodrzynski.edziennik.network.ServerRequest; import pl.szczodrzynski.edziennik.utils.TextInputDropDown; import pl.szczodrzynski.edziennik.utils.Themes; import static pl.szczodrzynski.edziennik.App.APP_URL; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_DEFAULT; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_UNDEFINED; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_DEFAULT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_UNDEFINED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED; import static pl.szczodrzynski.edziennik.utils.Utils.bs; import static pl.szczodrzynski.edziennik.utils.Utils.ns; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/GradeDetailsDialog.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/grade/GradeDetailsDialog.java similarity index 83% rename from app/src/main/java/pl/szczodrzynski/edziennik/dialogs/GradeDetailsDialog.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/grade/GradeDetailsDialog.java index 4082cf5d..cabc3e63 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/GradeDetailsDialog.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/grade/GradeDetailsDialog.java @@ -1,41 +1,29 @@ -package pl.szczodrzynski.edziennik.dialogs; +package pl.szczodrzynski.edziennik.ui.dialogs.grade; import android.content.Context; import android.content.DialogInterface; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; -import android.graphics.Typeface; import android.os.AsyncTask; import android.view.View; -import android.widget.LinearLayout; -import android.widget.TextView; -import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.ColorUtils; -import androidx.lifecycle.LifecycleOwner; import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import com.afollestad.materialdialogs.MaterialDialog; import java.text.DecimalFormat; -import java.util.ArrayList; import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.adapters.EventListAdapter; -import pl.szczodrzynski.edziennik.adapters.GradesListAdapter; +import pl.szczodrzynski.edziennik.ui.modules.grades.GradesListAdapter; import pl.szczodrzynski.edziennik.databinding.DialogGradeDetailsBinding; -import pl.szczodrzynski.edziennik.datamodels.Grade; -import pl.szczodrzynski.edziennik.datamodels.GradeFull; -import pl.szczodrzynski.edziennik.datamodels.LessonChange; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeFull; import pl.szczodrzynski.edziennik.utils.Colors; -import static pl.szczodrzynski.edziennik.datamodels.Profile.COLOR_MODE_DEFAULT; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.COLOR_MODE_DEFAULT; public class GradeDetailsDialog { private App app; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/LessonChangeDialog.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/lessonchange/LessonChangeDialog.java similarity index 80% rename from app/src/main/java/pl/szczodrzynski/edziennik/dialogs/LessonChangeDialog.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/lessonchange/LessonChangeDialog.java index ed03ca71..4a298324 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/dialogs/LessonChangeDialog.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/lessonchange/LessonChangeDialog.java @@ -1,11 +1,8 @@ -package pl.szczodrzynski.edziennik.dialogs; +package pl.szczodrzynski.edziennik.ui.dialogs.lessonchange; import android.content.Context; -import android.content.res.Resources; -import android.util.TypedValue; import android.view.View; -import androidx.annotation.ColorInt; import androidx.databinding.DataBindingUtil; import androidx.lifecycle.LifecycleOwner; import androidx.recyclerview.widget.LinearLayoutManager; @@ -17,13 +14,11 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.adapters.TimetableAdapter; +import pl.szczodrzynski.edziennik.ui.modules.timetable.TimetableAdapter; import pl.szczodrzynski.edziennik.databinding.DialogLessonChangeListBinding; -import pl.szczodrzynski.edziennik.datamodels.Lesson; -import pl.szczodrzynski.edziennik.datamodels.LessonChange; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; public class LessonChangeDialog { private App app; @@ -47,7 +42,7 @@ public class LessonChangeDialog { this.app = _app; dialog = new MaterialDialog.Builder(context) .title(date.getFormattedString()) - .customView(R.layout.dialog_lesson_change_list, true) + .customView(R.layout.dialog_lesson_change_list, false) .positiveText(R.string.close) .autoDismiss(false) .onPositive((dialog, which) -> dialog.dismiss()) @@ -58,8 +53,7 @@ public class LessonChangeDialog { if (b == null) return; - b.lessonChangeView.setHasFixedSize(false); - b.lessonChangeView.setNestedScrollingEnabled(false); + b.lessonChangeView.setHasFixedSize(true); b.lessonChangeView.setLayoutManager(new LinearLayoutManager(context)); app.db.lessonDao().getAllByDate(profileId, date, Time.getNow()).observe((LifecycleOwner) context, lessons -> { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/teacherabsence/TeacherAbsenceAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/teacherabsence/TeacherAbsenceAdapter.kt new file mode 100644 index 00000000..2d8eb2c6 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/teacherabsence/TeacherAbsenceAdapter.kt @@ -0,0 +1,56 @@ +package pl.szczodrzynski.edziennik.ui.dialogs.teacherabsence + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsenceFull +import pl.szczodrzynski.edziennik.utils.models.Date + +class TeacherAbsenceAdapter( + private val context: Context, + private val date: Date, + private val teacherAbsenceList: List +) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val inflater: LayoutInflater = LayoutInflater.from(context) + val view: View = inflater.inflate(R.layout.row_dialog_teacher_absence_item, parent, false) + return ViewHolder(view) + } + + override fun getItemCount(): Int { + return teacherAbsenceList.size + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val teacherAbsence: TeacherAbsenceFull = teacherAbsenceList[position] + + holder.teacherAbsenceTeacher.text = teacherAbsence.teacherFullName + + val time = when (teacherAbsence.timeFrom != null && teacherAbsence.timeTo != null) { + true -> when (teacherAbsence.dateFrom.compareTo(teacherAbsence.dateTo)) { + 0 -> teacherAbsence.dateFrom.formattedStringShort + " " + + teacherAbsence.timeFrom.stringHM + " - " + teacherAbsence.timeTo.stringHM + + else -> teacherAbsence.dateFrom.formattedStringShort + " " + teacherAbsence.timeTo.stringHM + + " - " + teacherAbsence.dateTo.formattedStringShort + " " + teacherAbsence.timeTo.stringHM + } + + false -> when (teacherAbsence.dateFrom.compareTo(teacherAbsence.dateTo)) { + 0 -> teacherAbsence.dateFrom.formattedStringShort + else -> teacherAbsence.dateFrom.formattedStringShort + " - " + teacherAbsence.dateTo.formattedStringShort + } + } + + holder.teacherAbsenceTime.text = time + } + + class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + var teacherAbsenceTeacher: TextView = itemView.findViewById(R.id.teacherAbsenceTeacher) + var teacherAbsenceTime: TextView = itemView.findViewById(R.id.teacherAbsenceTime) + } +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/teacherabsence/TeacherAbsenceDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/teacherabsence/TeacherAbsenceDialog.kt new file mode 100644 index 00000000..55bf8ae0 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/teacherabsence/TeacherAbsenceDialog.kt @@ -0,0 +1,42 @@ +package pl.szczodrzynski.edziennik.ui.dialogs.teacherabsence + +import android.content.Context +import android.view.View +import androidx.databinding.DataBindingUtil +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.Observer +import androidx.recyclerview.widget.LinearLayoutManager +import com.afollestad.materialdialogs.MaterialDialog +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.databinding.DialogTeacherAbsenceListBinding +import pl.szczodrzynski.edziennik.utils.models.Date + +class TeacherAbsenceDialog(val context: Context) { + + val profileId: Int = App.profileId + private lateinit var b: DialogTeacherAbsenceListBinding + + fun show(app: App, date: Date) { + val dialog = MaterialDialog.Builder(context) + .title(date.formattedString) + .customView(R.layout.dialog_teacher_absence_list, false) + .positiveText(R.string.close) + .autoDismiss(false) + .onPositive { dialog, _ -> dialog.dismiss()} + .show() + + val customView: View = dialog.customView ?: return + b = DataBindingUtil.bind(customView) ?: return + + b.teacherAbsenceView.setHasFixedSize(true) + b.teacherAbsenceView.layoutManager = LinearLayoutManager(context) + + app.db.teacherAbsenceDao().getAllByDateFull(profileId, date).observe(context as LifecycleOwner, Observer { absenceList -> + val adapter = TeacherAbsenceAdapter(context, date, absenceList) + b.teacherAbsenceView.adapter = adapter + b.teacherAbsenceView.visibility = View.VISIBLE + }) + } + +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/AgendaFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/AgendaFragment.java new file mode 100644 index 00000000..37db5001 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/AgendaFragment.java @@ -0,0 +1,421 @@ +package pl.szczodrzynski.edziennik.ui.modules.agenda; + +import android.app.Activity; +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.os.AsyncTask; +import android.os.Bundle; +import android.os.Handler; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; +import androidx.fragment.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.applandeo.materialcalendarview.CalendarView; +import com.applandeo.materialcalendarview.EventDay; +import com.github.tibolte.agendacalendarview.AgendaCalendarView; +import com.github.tibolte.agendacalendarview.CalendarPickerController; +import com.github.tibolte.agendacalendarview.models.BaseCalendarEvent; +import com.github.tibolte.agendacalendarview.models.CalendarEvent; +import com.github.tibolte.agendacalendarview.models.IDayItem; +import com.mikepenz.iconics.IconicsColor; +import com.mikepenz.iconics.IconicsDrawable; +import com.mikepenz.iconics.IconicsSize; +import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; +import java.util.Locale; + +import pl.szczodrzynski.edziennik.App; +import pl.szczodrzynski.edziennik.R; +import pl.szczodrzynski.edziennik.MainActivity; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsenceFull; +import pl.szczodrzynski.edziennik.databinding.FragmentAgendaCalendarBinding; +import pl.szczodrzynski.edziennik.databinding.FragmentAgendaDefaultBinding; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.ui.dialogs.event.EventListDialog; +import pl.szczodrzynski.edziennik.ui.dialogs.event.EventManualDialog; +import pl.szczodrzynski.edziennik.ui.dialogs.lessonchange.LessonChangeDialog; +import pl.szczodrzynski.edziennik.ui.dialogs.teacherabsence.TeacherAbsenceDialog; +import pl.szczodrzynski.edziennik.ui.modules.agenda.lessonchange.LessonChangeCounter; +import pl.szczodrzynski.edziennik.ui.modules.agenda.lessonchange.LessonChangeEvent; +import pl.szczodrzynski.edziennik.ui.modules.agenda.lessonchange.LessonChangeEventRenderer; +import pl.szczodrzynski.edziennik.ui.modules.agenda.teacherabsence.TeacherAbsenceCounter; +import pl.szczodrzynski.edziennik.ui.modules.agenda.teacherabsence.TeacherAbsenceEvent; +import pl.szczodrzynski.edziennik.ui.modules.agenda.teacherabsence.TeacherAbsenceEventRenderer; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; +import pl.szczodrzynski.edziennik.utils.Colors; +import pl.szczodrzynski.edziennik.utils.Themes; +import pl.szczodrzynski.edziennik.utils.Utils; +import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem; +import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetSeparatorItem; + +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_EVENT; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.AGENDA_CALENDAR; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.AGENDA_DEFAULT; +import static pl.szczodrzynski.edziennik.utils.Utils.intToStr; + +public class AgendaFragment extends Fragment { + + private App app = null; + private MainActivity activity = null; + private FragmentAgendaDefaultBinding b_default = null; + private FragmentAgendaCalendarBinding b_calendar = null; + private int viewType = AGENDA_DEFAULT; + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + if (getActivity() == null || getContext() == null) + return null; + app = (App) activity.getApplication(); + getContext().getTheme().applyStyle(Themes.INSTANCE.getAppTheme(), true); + if (app.profile == null) + return inflater.inflate(R.layout.fragment_loading, container, false); + // activity, context and profile is valid + viewType = app.profile.getAgendaViewType(); + if (viewType == AGENDA_DEFAULT) { + b_default = DataBindingUtil.inflate(inflater, R.layout.fragment_agenda_default, container, false); + return b_default.getRoot(); + } + else { + b_calendar = DataBindingUtil.inflate(inflater, R.layout.fragment_agenda_calendar, container, false); + return b_calendar.getRoot(); + } + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + if (app == null || app.profile == null || activity == null || (b_default == null && b_calendar == null) || !isAdded()) + return; + + activity.getBottomSheet().prependItems( + new BottomSheetPrimaryItem(true) + .withTitle(R.string.menu_add_event) + .withDescription(R.string.menu_add_event_desc) + .withIcon(CommunityMaterial.Icon.cmd_calendar_plus) + .withOnClickListener(v3 -> { + activity.getBottomSheet().close(); + new MaterialDialog.Builder(activity) + .title(R.string.main_menu_add) + .items(R.array.main_menu_add_options) + .itemsCallback((dialog, itemView, position, text) -> { + switch (position) { + case 0: + new EventManualDialog(activity).show(app, null, null, null, EventManualDialog.DIALOG_EVENT); + break; + case 1: + new EventManualDialog(activity).show(app, null, null, null, EventManualDialog.DIALOG_HOMEWORK); + break; + } + }) + .show(); + }), + new BottomSheetPrimaryItem(true) + .withTitle(R.string.menu_agenda_change_view) + .withIcon(viewType == AGENDA_DEFAULT ? CommunityMaterial.Icon.cmd_calendar : CommunityMaterial.Icon2.cmd_view_list) + .withOnClickListener(v3 -> { + activity.getBottomSheet().close(); + viewType = viewType == AGENDA_DEFAULT ? AGENDA_CALENDAR : AGENDA_DEFAULT; + app.profile.setAgendaViewType(viewType); + app.profileSaveAsync(); + activity.reloadTarget(); + }), + new BottomSheetSeparatorItem(true), + new BottomSheetPrimaryItem(true) + .withTitle(R.string.menu_mark_as_read) + .withIcon(CommunityMaterial.Icon.cmd_eye_check) + .withOnClickListener(v3 -> { + activity.getBottomSheet().close(); + AsyncTask.execute(() -> app.db.metadataDao().setAllSeen(App.profileId, TYPE_EVENT, true)); + Toast.makeText(activity, R.string.main_menu_mark_as_read_success, Toast.LENGTH_SHORT).show(); + }) + ); + activity.gainAttention(); + + if (viewType == AGENDA_DEFAULT) { + createDefaultAgendaView(); + } + else { + createCalendarAgendaView(); + } + } + + private void createDefaultAgendaView() { + List unreadEventDates = new ArrayList<>(); + + final Handler handler = new Handler(); + handler.postDelayed(() -> AsyncTask.execute(() -> { + if (app == null || app.profile == null || activity == null || b_default == null || !isAdded()) + return; + + List eventList = new ArrayList<>(); + + List lessonChangeCounters = app.db.lessonChangeDao().getLessonChangeCountersNow(App.profileId); + for (LessonChangeCounter counter : lessonChangeCounters) { + Calendar startTime = Calendar.getInstance(); + Calendar endTime = Calendar.getInstance(); + if (counter.lessonChangeDate == null) { + continue; + } + startTime.set(counter.lessonChangeDate.year, counter.lessonChangeDate.month - 1, counter.lessonChangeDate.day, 10, 0, 0); + endTime.setTimeInMillis(startTime.getTimeInMillis() + (1000 * 60 * 45)); + eventList.add(new LessonChangeEvent( + counter.lessonChangeDate.getInMillis(), + 0xff78909c, + Colors.legibleTextColor(0xff78909c), + startTime, + endTime, + counter.profileId, + counter.lessonChangeDate, + counter.lessonChangeCount + )); + } + + if (app.profile.getStudentData("showTeacherAbsences", true)) { + List teacherAbsenceList = app.db.teacherAbsenceDao().getAllFull(App.profileId); + List teacherAbsenceCounters = new ArrayList<>(); + + for (TeacherAbsenceFull absence : teacherAbsenceList) { + for (Date date = absence.getDateFrom().clone(); date.compareTo(absence.getDateTo()) < 1; date.stepForward(0, 0, 1)) { + boolean counterFound = false; + for (TeacherAbsenceCounter counter : teacherAbsenceCounters) { + if (counter.getTeacherAbsenceDate().compareTo(date) == 0) { + counter.setTeacherAbsenceCount(counter.getTeacherAbsenceCount() + 1); + counterFound = true; + break; + } + } + + if (!counterFound) { + teacherAbsenceCounters.add(new TeacherAbsenceCounter(date.clone(), 1)); + } + } + } + + for (TeacherAbsenceCounter counter : teacherAbsenceCounters) { + Calendar startTime = Calendar.getInstance(); + Calendar endTime = Calendar.getInstance(); + Date date = counter.getTeacherAbsenceDate(); + startTime.set(date.year, date.month - 1, date.day, 10, 0, 0); + endTime.setTimeInMillis(startTime.getTimeInMillis() + (1000 * 60 * 45)); + eventList.add(new TeacherAbsenceEvent( + date.getInMillis(), + 0xffff1744, + Colors.legibleTextColor(0xffff1744), + startTime, + endTime, + App.profileId, + date, + counter.getTeacherAbsenceCount() + )); + } + } + + + List events = app.db.eventDao().getAllNow(App.profileId); + for (EventFull event : events) { + Calendar startTime = Calendar.getInstance(); + Calendar endTime = Calendar.getInstance(); + if (event.eventDate == null) + continue; + startTime.set( + event.eventDate.year, + event.eventDate.month - 1, + event.eventDate.day, + event.startTime == null ? 0 : event.startTime.hour, + event.startTime == null ? 0 : event.startTime.minute, + event.startTime == null ? 0 : event.startTime.second + ); + endTime.setTimeInMillis(startTime.getTimeInMillis() + (1000 * 60 * 45)); + eventList.add(new BaseCalendarEvent(event.typeName + " - " + event.topic, + "", + (event.startTime == null ? getString(R.string.agenda_event_all_day) : event.startTime.getStringHM()) + + Utils.bs(", ", event.subjectLongName) + + Utils.bs(", ", event.teacherFullName) + + Utils.bs(", ", event.teamName), + event.getColor(), + Colors.legibleTextColor(event.getColor()), + startTime, + endTime, + event.startTime == null, + event.id, !event.seen)); + if (!event.seen) { + unreadEventDates.add(event.eventDate.getValue()); + } + } + + /*List lessonChanges = app.db.lessonChangeDao().getAllChangesWithLessonsNow(App.profileId); + for (LessonFull lesson: lessonChanges) { + Calendar startTime = Calendar.getInstance(); + Calendar endTime = Calendar.getInstance(); + if (lesson.lessonDate == null) { + continue; + } + startTime.set(lesson.lessonDate.year, lesson.lessonDate.month - 1, lesson.lessonDate.day, lesson.startTime.hour, lesson.startTime.minute, lesson.startTime.second); + endTime.setTimeInMillis(startTime.getTimeInMillis() + (1000 * 60 * 45)); + String description = lesson.changeTypeStr(activity); + if (lesson.changeType != TYPE_CANCELLED) { + if (lesson.subjectId != lesson.changeSubjectId && lesson.teacherId != lesson.changeTeacherId) { + description += " -> " + bs(null, lesson.changeSubjectLongName, ", ") + bs(lesson.changeTeacherFullName); + } else if (lesson.subjectId != lesson.changeSubjectId) { + description += " -> " + bs(lesson.changeSubjectLongName); + } else if (lesson.teacherId != lesson.changeTeacherId) { + description += " -> " + bs(lesson.changeTeacherFullName); + } + } + eventList.add(new BaseCalendarEvent(description, + "", + (lesson.startTime.getStringHM()) + + Utils.bs(", ", lesson.subjectLongName) + + Utils.bs(", ", lesson.teacherFullName) + + Utils.bs(", ", lesson.teamName), + 0xff78909c, + Colors.legibleTextColor(0xff78909c), + startTime, + endTime, + false, + (int)lesson.changeId, false)); + }*/ + + activity.runOnUiThread(() -> { + AgendaCalendarView mAgendaCalendarView = b_default.agendaDefaultView; + // minimum and maximum date of our calendar + // 2 month behind, one year ahead, example: March 2015 <-> May 2015 <-> May 2016 + Calendar minDate = Calendar.getInstance(); + Calendar maxDate = Calendar.getInstance(); + + minDate.add(Calendar.MONTH, -2); + minDate.set(Calendar.DAY_OF_MONTH, 1); + maxDate.add(Calendar.MONTH, 2); + + + mAgendaCalendarView.init(eventList, minDate, maxDate, Locale.getDefault(), new CalendarPickerController() { + @Override + public void onDaySelected(IDayItem dayItem) { + } + + @Override + public void onScrollToDate(Calendar calendar) { + int scrolledDate = Date.fromCalendar(calendar).getValue(); + if (unreadEventDates.contains(scrolledDate)) { + AsyncTask.execute(() -> app.db.eventDao().setSeenByDate(App.profileId, Date.fromYmd(intToStr(scrolledDate)), true)); + unreadEventDates.remove(unreadEventDates.indexOf(scrolledDate)); + } + } + + @Override + public void onEventSelected(CalendarEvent calendarEvent) { + if (calendarEvent instanceof BaseCalendarEvent) { + if (!calendarEvent.isPlaceholder() && !calendarEvent.isAllDay()) { + new EventListDialog(activity).show(app, Date.fromCalendar(calendarEvent.getInstanceDay()), Time.fromMillis(calendarEvent.getStartTime().getTimeInMillis()), true); + } else { + new EventListDialog(activity).show(app, Date.fromCalendar(calendarEvent.getInstanceDay())); + } + } else if (calendarEvent instanceof LessonChangeEvent) { + new LessonChangeDialog(activity).show(app, Date.fromCalendar(calendarEvent.getInstanceDay())); + //Toast.makeText(app, "Clicked "+((LessonChangeEvent) calendarEvent).getLessonChangeDate().getFormattedString(), Toast.LENGTH_SHORT).show(); + } else if (calendarEvent instanceof TeacherAbsenceEvent) { + new TeacherAbsenceDialog(activity).show(app, Date.fromCalendar(calendarEvent.getInstanceDay())); + } + } + }, new LessonChangeEventRenderer(), new TeacherAbsenceEventRenderer()); + b_default.progressBar.setVisibility(View.GONE); + }); + }), 500); + } + + private void createCalendarAgendaView() { + List unreadEventDates = new ArrayList<>(); + + final Handler handler = new Handler(); + handler.postDelayed(() -> AsyncTask.execute(() -> { + if (app == null || app.profile == null || activity == null || b_calendar == null || !isAdded()) + return; + Context c = getContext(); + Activity a = getActivity(); + assert c != null; + assert a != null; + if (!isAdded()) { + return; + } + + List eventList = new ArrayList<>(); + + List events = app.db.eventDao().getAllNow(App.profileId); + for (EventFull event : events) { + if (event.eventDate == null) + continue; + Calendar startTime = Calendar.getInstance(); + startTime.set( + event.eventDate.year, + event.eventDate.month - 1, + event.eventDate.day, + event.startTime == null ? 0 : event.startTime.hour, + event.startTime == null ? 0 : event.startTime.minute, + event.startTime == null ? 0 : event.startTime.second + ); + Drawable eventIcon = new IconicsDrawable(activity).icon(CommunityMaterial.Icon.cmd_checkbox_blank_circle).size(IconicsSize.dp(10)).color(IconicsColor.colorInt(event.getColor())); + eventList.add(new EventDay(startTime, eventIcon)); + if (!event.seen) { + unreadEventDates.add(event.eventDate.getValue()); + } + } + + List lessonChanges = app.db.lessonChangeDao().getAllChangesWithLessonsNow(App.profileId); + + for (LessonFull lesson: lessonChanges) { + Calendar startTime = Calendar.getInstance(); + if (lesson.lessonDate == null) { + continue; + } + startTime.set( + lesson.lessonDate.year, + lesson.lessonDate.month - 1, + lesson.lessonDate.day, + lesson.startTime.hour, + lesson.startTime.minute, + lesson.startTime.second); + Drawable eventIcon = new IconicsDrawable(activity).icon(CommunityMaterial.Icon.cmd_checkbox_blank_circle).size(IconicsSize.dp(10)).color(IconicsColor.colorInt(0xff78909c)); + eventList.add(new EventDay(startTime, eventIcon)); + } + + getActivity().runOnUiThread(() -> { + //List eventList = new ArrayList<>(); + + //Collections.sort(eventList, new EventListComparator()); + + CalendarView calendarView = b_calendar.agendaCalendarView; + calendarView.setEvents(eventList); + calendarView.setOnDayClickListener(eventDay -> { + Date dayDate = Date.fromCalendar(eventDay.getCalendar()); + int scrolledDate = dayDate.getValue(); + if (unreadEventDates.contains(scrolledDate)) { + AsyncTask.execute(() -> app.db.eventDao().setSeenByDate(App.profileId, Date.fromYmd(intToStr(scrolledDate)), true)); + unreadEventDates.remove(unreadEventDates.indexOf(scrolledDate)); + } + + new EventListDialog(getContext()).show(app, dayDate); + }); + b_calendar.progressBar.setVisibility(View.GONE); + }); + }), 300); + } + + public static class EventListComparator implements java.util.Comparator { + @Override + public int compare(CalendarEvent o1, CalendarEvent o2) { + return Long.compare(o1.getStartTime().getTimeInMillis(), o2.getStartTime().getTimeInMillis()); + //return (int)(o1.getStartTime().getTimeInMillis() - o2.getStartTime().getTimeInMillis()); + } + } +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/db/LessonChangeCounter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/lessonchange/LessonChangeCounter.java similarity index 52% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/db/LessonChangeCounter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/lessonchange/LessonChangeCounter.java index b98869c3..6c2cfaf2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/db/LessonChangeCounter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/lessonchange/LessonChangeCounter.java @@ -1,6 +1,6 @@ -package pl.szczodrzynski.edziennik.models.db; +package pl.szczodrzynski.edziennik.ui.modules.agenda.lessonchange; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Date; public class LessonChangeCounter { public int profileId; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/agenda/LessonChangeEvent.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/lessonchange/LessonChangeEvent.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/agenda/LessonChangeEvent.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/lessonchange/LessonChangeEvent.java index 0d92e6cd..077c2206 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/agenda/LessonChangeEvent.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/lessonchange/LessonChangeEvent.java @@ -1,13 +1,12 @@ -package pl.szczodrzynski.edziennik.fragments.agenda; +package pl.szczodrzynski.edziennik.ui.modules.agenda.lessonchange; -import com.github.tibolte.agendacalendarview.models.BaseCalendarEvent; import com.github.tibolte.agendacalendarview.models.CalendarEvent; import com.github.tibolte.agendacalendarview.models.IDayItem; import com.github.tibolte.agendacalendarview.models.IWeekItem; import java.util.Calendar; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Date; public class LessonChangeEvent implements CalendarEvent { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/agenda/LessonChangeEventRenderer.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/lessonchange/LessonChangeEventRenderer.java similarity index 77% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/agenda/LessonChangeEventRenderer.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/lessonchange/LessonChangeEventRenderer.java index 5a821614..2490e1bf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/agenda/LessonChangeEventRenderer.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/lessonchange/LessonChangeEventRenderer.java @@ -1,8 +1,6 @@ -package pl.szczodrzynski.edziennik.fragments.agenda; +package pl.szczodrzynski.edziennik.ui.modules.agenda.lessonchange; -import android.graphics.Color; import android.view.View; -import android.widget.LinearLayout; import android.widget.TextView; import androidx.cardview.widget.CardView; @@ -10,14 +8,13 @@ import androidx.cardview.widget.CardView; import com.github.tibolte.agendacalendarview.render.EventRenderer; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.datamodels.Lesson; public class LessonChangeEventRenderer extends EventRenderer { @Override public void render(View view, LessonChangeEvent event) { CardView card = view.findViewById(R.id.lesson_change_card); TextView changeText = view.findViewById(R.id.lesson_change_text); - TextView changeCount = view.findViewById(R.id.lesson_change_count); + TextView changeCount = view.findViewById(R.id.lessonChangeCount); card.setCardBackgroundColor(event.getColor()); changeText.setTextColor(event.getTextColor()); changeCount.setTextColor(event.getTextColor()); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/teacherabsence/TeacherAbsenceCounter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/teacherabsence/TeacherAbsenceCounter.kt new file mode 100644 index 00000000..6017be16 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/teacherabsence/TeacherAbsenceCounter.kt @@ -0,0 +1,10 @@ +package pl.szczodrzynski.edziennik.ui.modules.agenda.teacherabsence + +import pl.szczodrzynski.edziennik.utils.models.Date + +class TeacherAbsenceCounter ( + val teacherAbsenceDate: Date, + var teacherAbsenceCount: Int = 0 +) + + diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/teacherabsence/TeacherAbsenceEvent.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/teacherabsence/TeacherAbsenceEvent.kt new file mode 100644 index 00000000..fc1c28db --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/teacherabsence/TeacherAbsenceEvent.kt @@ -0,0 +1,188 @@ +package pl.szczodrzynski.edziennik.ui.modules.agenda.teacherabsence + +import com.github.tibolte.agendacalendarview.models.CalendarEvent +import com.github.tibolte.agendacalendarview.models.IDayItem +import com.github.tibolte.agendacalendarview.models.IWeekItem +import pl.szczodrzynski.edziennik.utils.models.Date +import java.util.* + +class TeacherAbsenceEvent : CalendarEvent { + /** + * Id of the event. + */ + private var mId: Long = 0 + /** + * Color to be displayed in the agenda view. + */ + private var mColor: Int = 0 + /** + * Text color displayed on the background color + */ + private var mTextColor: Int = 0 + /** + * Calendar instance helping sorting the events per section in the agenda view. + */ + private var mInstanceDay: Calendar? = null + /** + * Start time of the event. + */ + private var mStartTime: Calendar? = null + /** + * End time of the event. + */ + private var mEndTime: Calendar? = null + /** + * References to a DayItem instance for that event, used to link interaction between the + * calendar view and the agenda view. + */ + private var mDayReference: IDayItem? = null + /** + * References to a WeekItem instance for that event, used to link interaction between the + * calendar view and the agenda view. + */ + private var mWeekReference: IWeekItem? = null + + + private var profileId: Int = 0 + var teacherAbsenceDate: Date? = null + var teacherAbsenceCount: Int = 0 + + constructor(calendarEvent: TeacherAbsenceEvent) { + this.mId = calendarEvent.id + this.mColor = calendarEvent.color + this.mTextColor = calendarEvent.textColor + this.mStartTime = calendarEvent.startTime + this.mEndTime = calendarEvent.endTime + this.profileId = calendarEvent.profileId + this.teacherAbsenceDate = calendarEvent.teacherAbsenceDate + this.teacherAbsenceCount = calendarEvent.teacherAbsenceCount + } + + constructor(mId: Long, mColor: Int, mTextColor: Int, mStartTime: Calendar, mEndTime: Calendar, profileId: Int, teacherAbsenceDate: Date, teacherAbsenceCount: Int) { + this.mId = mId + this.mColor = mColor + this.mTextColor = mTextColor + this.mStartTime = mStartTime + this.mEndTime = mEndTime + this.profileId = profileId + this.teacherAbsenceDate = teacherAbsenceDate + this.teacherAbsenceCount = teacherAbsenceCount + } + + override fun setPlaceholder(placeholder: Boolean) { + + } + + override fun isPlaceholder(): Boolean { + return false + } + + override fun getLocation(): String? { + return null + } + + override fun setLocation(mLocation: String) { + + } + + override fun getId(): Long { + return mId + } + + override fun setId(mId: Long) { + this.mId = mId + } + + override fun getShowBadge(): Boolean { + return false + } + + override fun setShowBadge(mShowBadge: Boolean) { + + } + + override fun getTextColor(): Int { + return mTextColor + } + + override fun setTextColor(mTextColor: Int) { + this.mTextColor = mTextColor + } + + override fun getDescription(): String? { + return null + } + + override fun setDescription(mDescription: String) { + + } + + override fun isAllDay(): Boolean { + return false + } + + override fun setAllDay(allDay: Boolean) { + + } + + override fun getStartTime(): Calendar? { + return mStartTime + } + + override fun setStartTime(mStartTime: Calendar) { + this.mStartTime = mStartTime + } + + override fun getEndTime(): Calendar? { + return mEndTime + } + + override fun setEndTime(mEndTime: Calendar) { + this.mEndTime = mEndTime + } + + override fun getTitle(): String? { + return null + } + + override fun setTitle(mTitle: String) { + + } + + override fun getInstanceDay(): Calendar? { + return mInstanceDay + } + + override fun setInstanceDay(mInstanceDay: Calendar) { + this.mInstanceDay = mInstanceDay + this.mInstanceDay!!.set(Calendar.HOUR, 0) + this.mInstanceDay!!.set(Calendar.MINUTE, 0) + this.mInstanceDay!!.set(Calendar.SECOND, 0) + this.mInstanceDay!!.set(Calendar.MILLISECOND, 0) + this.mInstanceDay!!.set(Calendar.AM_PM, 0) + } + + override fun getDayReference(): IDayItem? { + return mDayReference + } + + override fun setDayReference(mDayReference: IDayItem) { + this.mDayReference = mDayReference + } + + override fun getWeekReference(): IWeekItem? { + return mWeekReference + } + + override fun setWeekReference(mWeekReference: IWeekItem) { + this.mWeekReference = mWeekReference + } + + override fun copy(): CalendarEvent { + return TeacherAbsenceEvent(this) + } + + override fun getColor(): Int { + return mColor + } +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/teacherabsence/TeacherAbsenceEventRenderer.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/teacherabsence/TeacherAbsenceEventRenderer.kt new file mode 100644 index 00000000..3789beb8 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/agenda/teacherabsence/TeacherAbsenceEventRenderer.kt @@ -0,0 +1,21 @@ +package pl.szczodrzynski.edziennik.ui.modules.agenda.teacherabsence + +import android.view.View +import android.widget.TextView +import androidx.cardview.widget.CardView +import com.github.tibolte.agendacalendarview.render.EventRenderer +import pl.szczodrzynski.edziennik.R + +class TeacherAbsenceEventRenderer : EventRenderer() { + override fun render(view: View?, event: TeacherAbsenceEvent) { + val card = view?.findViewById(R.id.teacherAbsenceCard) + val changeText = view?.findViewById(R.id.teacherAbsenceText) + val changeCount = view?.findViewById(R.id.teacherAbsenceCount) + card?.setCardBackgroundColor(event.color) + changeText?.setTextColor(event.textColor) + changeCount?.setTextColor(event.textColor) + changeCount?.text = event.teacherAbsenceCount.toString() + } + + override fun getEventLayout(): Int { return R.layout.agenda_event_teacher_absence } +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/AnnouncementsAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/announcements/AnnouncementsAdapter.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/adapters/AnnouncementsAdapter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/announcements/AnnouncementsAdapter.java index 26df42c9..1b0d4fda 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/AnnouncementsAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/announcements/AnnouncementsAdapter.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.adapters; +package pl.szczodrzynski.edziennik.ui.modules.announcements; import android.content.Context; import android.graphics.PorterDuff; @@ -15,7 +15,7 @@ import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.RecyclerView; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.databinding.RowAnnouncementsItemBinding; -import pl.szczodrzynski.edziennik.datamodels.AnnouncementFull; +import pl.szczodrzynski.edziennik.data.db.modules.announcements.AnnouncementFull; public class AnnouncementsAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterAnnouncementsFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/announcements/AnnouncementsFragment.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterAnnouncementsFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/announcements/AnnouncementsFragment.java index e6f955db..c539486a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterAnnouncementsFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/announcements/AnnouncementsFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments; +package pl.szczodrzynski.edziennik.ui.modules.announcements; import android.os.AsyncTask; import android.os.Bundle; @@ -7,31 +7,31 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Toast; -import com.afollestad.materialdialogs.MaterialDialog; -import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial; + import pl.szczodrzynski.edziennik.App; -import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.adapters.AnnouncementsAdapter; +import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.databinding.DialogAnnouncementBinding; -import pl.szczodrzynski.edziennik.databinding.FragmentRegisterSchoolNoticesBinding; +import pl.szczodrzynski.edziennik.databinding.FragmentAnnouncementsBinding; import pl.szczodrzynski.edziennik.utils.Themes; import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_ANNOUNCEMENT; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_ANNOUNCEMENT; -public class RegisterAnnouncementsFragment extends Fragment { +public class AnnouncementsFragment extends Fragment { private App app = null; private MainActivity activity = null; - private FragmentRegisterSchoolNoticesBinding b = null; + private FragmentAnnouncementsBinding b = null; @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -43,7 +43,7 @@ public class RegisterAnnouncementsFragment extends Fragment { if (app.profile == null) return inflater.inflate(R.layout.fragment_loading, container, false); // activity, context and profile is valid - b = DataBindingUtil.inflate(inflater, R.layout.fragment_register_school_notices, container, false); + b = DataBindingUtil.inflate(inflater, R.layout.fragment_announcements, container, false); b.refreshLayout.setParent(activity.getSwipeRefreshLayout()); return b.getRoot(); } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/AttendancesAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/attendance/AttendanceAdapter.java similarity index 85% rename from app/src/main/java/pl/szczodrzynski/edziennik/adapters/AttendancesAdapter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/attendance/AttendanceAdapter.java index 79793f93..e1e53f5a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/AttendancesAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/attendance/AttendanceAdapter.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.adapters; +package pl.szczodrzynski.edziennik.ui.modules.attendance; import android.content.Context; import android.graphics.PorterDuff; @@ -15,21 +15,21 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.datamodels.AttendanceFull; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.AttendanceFull; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED_EXCUSED; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT; -import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED_EXCUSED; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT; +import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED; -public class AttendancesAdapter extends RecyclerView.Adapter { +public class AttendanceAdapter extends RecyclerView.Adapter { private Context context; public List attendanceList; //getting the context and product list with constructor - public AttendancesAdapter(Context mCtx, List noticeList) { + public AttendanceAdapter(Context mCtx, List noticeList) { this.context = mCtx; this.attendanceList = noticeList; } @@ -125,4 +125,4 @@ public class AttendancesAdapter extends RecyclerView.Adapter { - activity.syncCurrentFeature(MainActivity.DRAWER_ITEM_ATTENDANCES, b.refreshLayout); + activity.syncCurrentFeature(MainActivity.DRAWER_ITEM_ATTENDANCE, b.refreshLayout); });*/ b.attendancePercentage.setProgressTextAdapter(PERCENTAGE_ADAPTER); b.attendancePercentage.setMaxProgress(100.0f); - b.attendancesSummaryTitle.setOnClickListener((v -> { - PopupMenu popupMenu = new PopupMenu(activity, b.attendancesSummaryTitle, Gravity.END); + b.attendanceSummaryTitle.setOnClickListener((v -> { + PopupMenu popupMenu = new PopupMenu(activity, b.attendanceSummaryTitle, Gravity.END); popupMenu.getMenu().add(0, 0, 0, R.string.summary_mode_year); popupMenu.getMenu().add(0, 1, 1, R.string.summary_mode_semester_1); popupMenu.getMenu().add(0, 2, 2, R.string.summary_mode_semester_2); @@ -127,11 +124,11 @@ public class RegisterAttendancesFragment extends Fragment { })); if (app.profile.getLoginStoreType() == LOGIN_TYPE_MOBIDZIENNIK) { - long attendancesLastSync = app.profile.getStudentData("attendancesLastSync", (long)0); - if (attendancesLastSync == 0) { - attendancesLastSync = app.profile.getSemesterStart(1).getInMillis(); + long attendanceLastSync = app.profile.getStudentData("attendanceLastSync", (long)0); + if (attendanceLastSync == 0) { + attendanceLastSync = app.profile.getSemesterStart(1).getInMillis(); } - Date lastSyncDate = Date.fromMillis(attendancesLastSync); + Date lastSyncDate = Date.fromMillis(attendanceLastSync); if (lastSyncDate.getValue() < Week.getWeekStart().getValue()) { CafeBar.builder(activity) .to(activity.getNavView().getCoordinator()) @@ -159,13 +156,13 @@ public class RegisterAttendancesFragment extends Fragment { } if (app.profile.getLoginStoreType() == LOGIN_TYPE_MOBIDZIENNIK && false) { - b.attendancesSummarySubject.setVisibility(View.GONE); + b.attendanceSummarySubject.setVisibility(View.GONE); } else { - b.attendancesSummarySubject.setOnClickListener((v -> { + b.attendanceSummarySubject.setOnClickListener((v -> { AsyncTask.execute(() -> { List subjectList = app.db.subjectDao().getAllNow(App.profileId); - PopupMenu popupMenu = new PopupMenu(activity, b.attendancesSummarySubject, Gravity.END); + PopupMenu popupMenu = new PopupMenu(activity, b.attendanceSummarySubject, Gravity.END); popupMenu.getMenu().add(0, -1, 0, R.string.subject_filter_disabled); int index = 0; DecimalFormat format = new DecimalFormat("0.00"); @@ -181,7 +178,7 @@ public class RegisterAttendancesFragment extends Fragment { } popupMenu.setOnMenuItemClickListener((item -> { subjectIdFilter = item.getItemId(); - b.attendancesSummarySubject.setText(item.getTitle().toString().replaceAll("\\s-\\s[0-9]{1,2}\\.[0-9]{1,2}%", "")); + b.attendanceSummarySubject.setText(item.getTitle().toString().replaceAll("\\s-\\s[0-9]{1,2}\\.[0-9]{1,2}%", "")); updateList(); return true; })); @@ -193,20 +190,20 @@ public class RegisterAttendancesFragment extends Fragment { LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); - b.attendancesView.setHasFixedSize(true); - b.attendancesView.setLayoutManager(linearLayoutManager); + b.attendanceView.setHasFixedSize(true); + b.attendanceView.setLayoutManager(linearLayoutManager); - app.db.attendanceDao().getAll(App.profileId).observe(this, attendances -> { + app.db.attendanceDao().getAll(App.profileId).observe(this, attendance -> { if (app == null || app.profile == null || activity == null || b == null || !isAdded()) return; - if (attendances == null) { - b.attendancesView.setVisibility(View.GONE); - b.attendancesNoData.setVisibility(View.VISIBLE); + if (attendance == null) { + b.attendanceView.setVisibility(View.GONE); + b.attendanceNoData.setVisibility(View.VISIBLE); return; } - attendanceList = attendances; + attendanceList = attendance; countSubjectStats(); @@ -275,29 +272,29 @@ public class RegisterAttendancesFragment extends Fragment { } } if (filteredList.size() > 0) { - AttendancesAdapter adapter; - b.attendancesView.setVisibility(View.VISIBLE); - b.attendancesNoData.setVisibility(View.GONE); - if ((adapter = (AttendancesAdapter) b.attendancesView.getAdapter()) != null) { + AttendanceAdapter adapter; + b.attendanceView.setVisibility(View.VISIBLE); + b.attendanceNoData.setVisibility(View.GONE); + if ((adapter = (AttendanceAdapter) b.attendanceView.getAdapter()) != null) { adapter.attendanceList = filteredList; adapter.notifyDataSetChanged(); } else { - adapter = new AttendancesAdapter(getContext(), filteredList); - b.attendancesView.setAdapter(adapter); + adapter = new AttendanceAdapter(getContext(), filteredList); + b.attendanceView.setAdapter(adapter); } } else { - b.attendancesView.setVisibility(View.GONE); - b.attendancesNoData.setVisibility(View.VISIBLE); + b.attendanceView.setVisibility(View.GONE); + b.attendanceNoData.setVisibility(View.VISIBLE); } // SUMMARY if (displayMode == MODE_YEAR) { - b.attendancesSummaryTitle.setText(getString(R.string.attendances_summary_title_year)); + b.attendanceSummaryTitle.setText(getString(R.string.attendance_summary_title_year)); } else { - b.attendancesSummaryTitle.setText(getString(R.string.attendances_summary_title_semester_format, displayMode)); + b.attendanceSummaryTitle.setText(getString(R.string.attendance_summary_title_semester_format, displayMode)); } b.presentCountContainer.setVisibility(presentCount == 0 ? View.GONE : View.VISIBLE); b.presentCount.setText(String.format(Locale.getDefault(), "%d", presentCount)); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/activities/CrashActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/CrashActivity.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/activities/CrashActivity.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/CrashActivity.java index de8ed06c..f159282a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/activities/CrashActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/CrashActivity.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.activities; +package pl.szczodrzynski.edziennik.ui.modules.base; /* * Copyright 2014-2017 Eduard Ereza Martínez @@ -41,7 +41,7 @@ import pl.szczodrzynski.edziennik.network.ServerRequest; import pl.szczodrzynski.edziennik.utils.Themes; import static pl.szczodrzynski.edziennik.App.APP_URL; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED; public final class CrashActivity extends AppCompatActivity { @@ -177,4 +177,4 @@ public final class CrashActivity extends AppCompatActivity { Toast.makeText(CrashActivity.this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show(); } } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/activities/CrashGtfoActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/CrashGtfoActivity.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/activities/CrashGtfoActivity.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/CrashGtfoActivity.java index b954a9a4..c5b54d03 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/activities/CrashGtfoActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/CrashGtfoActivity.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.activities; +package pl.szczodrzynski.edziennik.ui.modules.base; import android.content.Context; import android.os.Bundle; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/DebugFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/DebugFragment.java similarity index 99% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/DebugFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/DebugFragment.java index 35faaca3..0e606126 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/DebugFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/DebugFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments; +package pl.szczodrzynski.edziennik.ui.modules.base; import android.os.Bundle; import androidx.annotation.NonNull; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/LoadingFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/LoadingFragment.kt similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/LoadingFragment.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/LoadingFragment.kt index 4573f4fd..b5626fa4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/LoadingFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/LoadingFragment.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments +package pl.szczodrzynski.edziennik.ui.modules.base import android.os.Bundle import android.view.LayoutInflater @@ -20,4 +20,4 @@ class LoadingFragment : Fragment() { b = FragmentLoadingBinding.inflate(inflater) return b.root } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/TemplateFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/TemplateFragment.kt similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/TemplateFragment.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/TemplateFragment.kt index a7c8d526..6b055750 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/TemplateFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/base/TemplateFragment.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments +package pl.szczodrzynski.edziennik.ui.modules.base import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterNoticesFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/behaviour/BehaviourFragment.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterNoticesFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/behaviour/BehaviourFragment.java index fc495bbd..29f46afe 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterNoticesFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/behaviour/BehaviourFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments; +package pl.szczodrzynski.edziennik.ui.modules.behaviour; import android.graphics.Color; import android.os.AsyncTask; @@ -9,10 +9,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Toast; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.PopupMenu; @@ -22,23 +18,26 @@ import androidx.recyclerview.widget.LinearLayoutManager; import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + import pl.szczodrzynski.edziennik.App; -import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.adapters.NoticesAdapter; -import pl.szczodrzynski.edziennik.databinding.FragmentRegisterNoticesBinding; -import pl.szczodrzynski.edziennik.datamodels.Notice; -import pl.szczodrzynski.edziennik.datamodels.NoticeFull; +import pl.szczodrzynski.edziennik.R; +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice; +import pl.szczodrzynski.edziennik.data.db.modules.notices.NoticeFull; +import pl.szczodrzynski.edziennik.databinding.FragmentBehaviourBinding; import pl.szczodrzynski.edziennik.utils.Themes; import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_NOTICE; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_NOTICE; -public class RegisterNoticesFragment extends Fragment { +public class BehaviourFragment extends Fragment { private App app = null; private MainActivity activity = null; - private FragmentRegisterNoticesBinding b = null; + private FragmentBehaviourBinding b = null; private int displayMode = MODE_YEAR; private static final int MODE_YEAR = 0; @@ -57,7 +56,7 @@ public class RegisterNoticesFragment extends Fragment { if (app.profile == null) return inflater.inflate(R.layout.fragment_loading, container, false); // activity, context and profile is valid - b = DataBindingUtil.inflate(inflater, R.layout.fragment_register_notices, container, false); + b = DataBindingUtil.inflate(inflater, R.layout.fragment_behaviour, container, false); b.refreshLayout.setParent(activity.getSwipeRefreshLayout()); return b.getRoot(); } @@ -79,7 +78,7 @@ public class RegisterNoticesFragment extends Fragment { ); /*b.refreshLayout.setOnRefreshListener(() -> { - activity.syncCurrentFeature(MainActivity.DRAWER_ITEM_NOTICES, b.refreshLayout); + activity.syncCurrentFeature(MainActivity.DRAWER_ITEM_BEHAVIOUR, b.refreshLayout); });*/ b.noticesSummaryTitle.setOnClickListener((v -> { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/NoticesAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/behaviour/NoticesAdapter.kt similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/adapters/NoticesAdapter.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/behaviour/NoticesAdapter.kt index ef8f1328..c9693842 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/NoticesAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/behaviour/NoticesAdapter.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.adapters +package pl.szczodrzynski.edziennik.ui.modules.behaviour import android.content.Context import android.graphics.PorterDuff @@ -18,11 +18,11 @@ import com.mikepenz.iconics.utils.colorRes import com.mikepenz.iconics.utils.sizeDp import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.datamodels.Notice -import pl.szczodrzynski.edziennik.datamodels.NoticeFull -import pl.szczodrzynski.edziennik.models.Date +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice +import pl.szczodrzynski.edziennik.data.db.modules.notices.NoticeFull +import pl.szczodrzynski.edziennik.utils.models.Date -import pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK import pl.szczodrzynski.edziennik.utils.Utils.bs class NoticesAdapter//getting the context and product list with constructor @@ -88,4 +88,4 @@ class NoticesAdapter//getting the context and product list with constructor var noticesItemTeacherName: TextView = itemView.findViewById(R.id.noticesItemTeacherName) var noticesItemAddedDate: TextView = itemView.findViewById(R.id.noticesItemAddedDate) } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/activities/FeedbackActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/feedback/FeedbackActivity.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/activities/FeedbackActivity.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/feedback/FeedbackActivity.java index 97cdba68..bb62522e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/activities/FeedbackActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/feedback/FeedbackActivity.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.activities; +package pl.szczodrzynski.edziennik.ui.modules.feedback; import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; @@ -6,8 +6,8 @@ import androidx.databinding.DataBindingUtil; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.databinding.ActivityFeedbackBinding; -import pl.szczodrzynski.edziennik.datamodels.FeedbackMessage; -import pl.szczodrzynski.edziennik.datamodels.FeedbackMessageWithCount; +import pl.szczodrzynski.edziennik.data.db.modules.feedback.FeedbackMessage; +import pl.szczodrzynski.edziennik.data.db.modules.feedback.FeedbackMessageWithCount; import pl.szczodrzynski.edziennik.network.ServerRequest; import pl.szczodrzynski.edziennik.utils.Anim; import pl.szczodrzynski.edziennik.utils.Themes; @@ -352,7 +352,7 @@ public class FeedbackActivity extends AppCompatActivity { @Override protected void onResume() { super.onResume(); - registerReceiver(receiver, new IntentFilter("pl.szczodrzynski.edziennik.activities.FeedbackActivity")); + registerReceiver(receiver, new IntentFilter("pl.szczodrzynski.edziennik.ui.modules.base.FeedbackActivity")); } @Override diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/FeedbackFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/feedback/FeedbackFragment.kt similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/FeedbackFragment.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/feedback/FeedbackFragment.kt index a0b774fa..fd1d04bc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/FeedbackFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/feedback/FeedbackFragment.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments +package pl.szczodrzynski.edziennik.ui.modules.feedback import android.content.BroadcastReceiver import android.content.Context @@ -25,7 +25,7 @@ import pl.szczodrzynski.edziennik.App.APP_URL import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.databinding.FragmentFeedbackBinding -import pl.szczodrzynski.edziennik.datamodels.FeedbackMessage +import pl.szczodrzynski.edziennik.data.db.modules.feedback.FeedbackMessage import pl.szczodrzynski.edziennik.network.ServerRequest import pl.szczodrzynski.edziennik.utils.Anim import pl.szczodrzynski.edziennik.utils.Themes @@ -323,7 +323,7 @@ class FeedbackFragment : Fragment() { override fun onResume() { super.onResume() if (receiver != null) - activity.registerReceiver(receiver, IntentFilter("pl.szczodrzynski.edziennik.activities.FeedbackActivity")) + activity.registerReceiver(receiver, IntentFilter("pl.szczodrzynski.edziennik.ui.modules.base.FeedbackActivity")) } override fun onPause() { @@ -331,4 +331,4 @@ class FeedbackFragment : Fragment() { if (receiver != null) activity.unregisterReceiver(receiver) } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/HelpFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/feedback/HelpFragment.kt similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/HelpFragment.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/feedback/HelpFragment.kt index 4553a7b0..e7dfb5cc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/HelpFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/feedback/HelpFragment.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments +package pl.szczodrzynski.edziennik.ui.modules.feedback import android.os.Bundle import androidx.fragment.app.Fragment diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterGradesFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/GradesFragment.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterGradesFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/GradesFragment.java index 693675d4..1a6b99dc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterGradesFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/GradesFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments; +package pl.szczodrzynski.edziennik.ui.modules.grades; import android.os.AsyncTask; import android.os.Bundle; @@ -21,33 +21,32 @@ import java.util.ArrayList; import java.util.List; import pl.szczodrzynski.edziennik.App; -import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.adapters.GradesSubjectAdapter; -import pl.szczodrzynski.edziennik.databinding.FragmentRegisterGradesBinding; -import pl.szczodrzynski.edziennik.datamodels.Grade; -import pl.szczodrzynski.edziennik.datamodels.GradeFull; -import pl.szczodrzynski.edziennik.datamodels.Subject; -import pl.szczodrzynski.edziennik.models.ItemGradesSubjectModel; +import pl.szczodrzynski.edziennik.R; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeFull; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; +import pl.szczodrzynski.edziennik.databinding.FragmentGradesBinding; import pl.szczodrzynski.edziennik.utils.Themes; +import pl.szczodrzynski.edziennik.utils.models.ItemGradesSubjectModel; import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem; import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetSeparatorItem; -import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_GRADE; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_AVG_2_AVG; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_AVG_2_SEM; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_SEM_2_AVG; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_SEM_2_SEM; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_ALL_GRADES; -import static pl.szczodrzynski.edziennik.models.AppConfig.ORDER_BY_DATE_ASC; -import static pl.szczodrzynski.edziennik.models.AppConfig.ORDER_BY_DATE_DESC; -import static pl.szczodrzynski.edziennik.models.AppConfig.ORDER_BY_SUBJECT_ASC; +import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_GRADE; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_AVG_2_AVG; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_AVG_2_SEM; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_SEM_2_AVG; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_SEM_2_SEM; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_ALL_GRADES; +import static pl.szczodrzynski.edziennik.utils.models.AppConfig.ORDER_BY_DATE_ASC; +import static pl.szczodrzynski.edziennik.utils.models.AppConfig.ORDER_BY_DATE_DESC; +import static pl.szczodrzynski.edziennik.utils.models.AppConfig.ORDER_BY_SUBJECT_ASC; -public class RegisterGradesFragment extends Fragment { +public class GradesFragment extends Fragment { private App app = null; private MainActivity activity = null; - private FragmentRegisterGradesBinding b = null; + private FragmentGradesBinding b = null; @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -59,7 +58,7 @@ public class RegisterGradesFragment extends Fragment { if (app.profile == null) return inflater.inflate(R.layout.fragment_loading, container, false); // activity, context and profile is valid - b = DataBindingUtil.inflate(inflater, R.layout.fragment_register_grades, container, false); + b = DataBindingUtil.inflate(inflater, R.layout.fragment_grades, container, false); b.refreshLayout.setParent(activity.getSwipeRefreshLayout()); b.refreshLayout.setNestedScrollingEnabled(true); return b.getRoot(); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/GradesListAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/GradesListAdapter.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/adapters/GradesListAdapter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/GradesListAdapter.java index 722aa823..0c1c1326 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/GradesListAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/GradesListAdapter.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.adapters; +package pl.szczodrzynski.edziennik.ui.modules.grades; import android.content.Context; import android.graphics.PorterDuff; @@ -18,13 +18,13 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.datamodels.Grade; -import pl.szczodrzynski.edziennik.datamodels.GradeFull; -import pl.szczodrzynski.edziennik.dialogs.GradeDetailsDialog; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeFull; +import pl.szczodrzynski.edziennik.ui.dialogs.grade.GradeDetailsDialog; +import pl.szczodrzynski.edziennik.utils.models.Date; import pl.szczodrzynski.edziennik.utils.Colors; -import static pl.szczodrzynski.edziennik.datamodels.Profile.COLOR_MODE_DEFAULT; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.COLOR_MODE_DEFAULT; public class GradesListAdapter extends RecyclerView.Adapter { private Context mContext; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/GradesSubjectAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/GradesSubjectAdapter.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/adapters/GradesSubjectAdapter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/GradesSubjectAdapter.java index 0038612c..25705cb3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/GradesSubjectAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/GradesSubjectAdapter.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.adapters; +package pl.szczodrzynski.edziennik.ui.modules.grades; import android.content.Context; import android.graphics.PorterDuff; @@ -30,10 +30,10 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.datamodels.AppDb; -import pl.szczodrzynski.edziennik.datamodels.GradeFull; -import pl.szczodrzynski.edziennik.datamodels.Subject; -import pl.szczodrzynski.edziennik.models.ItemGradesSubjectModel; +import pl.szczodrzynski.edziennik.data.db.AppDb; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeFull; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; +import pl.szczodrzynski.edziennik.utils.models.ItemGradesSubjectModel; import pl.szczodrzynski.edziennik.utils.Anim; import pl.szczodrzynski.edziennik.utils.Colors; import pl.szczodrzynski.edziennik.utils.Utils; @@ -41,10 +41,10 @@ import pl.szczodrzynski.edziennik.utils.Utils; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static pl.szczodrzynski.edziennik.MainActivity.TARGET_GRADES_EDITOR; -import static pl.szczodrzynski.edziennik.datamodels.Profile.COLOR_MODE_DEFAULT; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_AVG_2_SEM; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_SEM_2_AVG; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_SEM_2_SEM; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.COLOR_MODE_DEFAULT; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_AVG_2_SEM; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_SEM_2_AVG; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_SEM_2_SEM; public class GradesSubjectAdapter extends ArrayAdapter implements View.OnClickListener { private static final String TAG = "GradesSubjectAdapter"; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/GradesEditorAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/editor/GradesEditorAdapter.kt similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/adapters/GradesEditorAdapter.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/editor/GradesEditorAdapter.kt index 62701eff..c7553bb7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/GradesEditorAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/editor/GradesEditorAdapter.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.adapters +package pl.szczodrzynski.edziennik.ui.modules.grades.editor import android.content.Context import android.graphics.PorterDuff @@ -15,8 +15,7 @@ import com.daimajia.swipe.SwipeLayout import com.mikepenz.iconics.view.IconicsImageView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.fragments.GradesEditorFragment -import pl.szczodrzynski.edziennik.fragments.GradesEditorFragment.Companion.modifyGradeChooser +import pl.szczodrzynski.edziennik.ui.modules.grades.editor.GradesEditorFragment.Companion.modifyGradeChooser import pl.szczodrzynski.edziennik.utils.Colors.gradeNameToColor import java.text.DecimalFormat diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/GradesEditorFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/editor/GradesEditorFragment.kt similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/GradesEditorFragment.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/editor/GradesEditorFragment.kt index 4d19f06c..7d8641ea 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/GradesEditorFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/grades/editor/GradesEditorFragment.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments +package pl.szczodrzynski.edziennik.ui.modules.grades.editor import android.graphics.PorterDuff import android.graphics.PorterDuffColorFilter @@ -13,13 +13,12 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.afollestad.materialdialogs.MaterialDialog import pl.szczodrzynski.edziennik.* -import pl.szczodrzynski.edziennik.adapters.GradesEditorAdapter import pl.szczodrzynski.edziennik.databinding.FragmentGradesEditorBinding -import pl.szczodrzynski.edziennik.datamodels.Grade -import pl.szczodrzynski.edziennik.datamodels.Profile.Companion.YEAR_1_AVG_2_AVG -import pl.szczodrzynski.edziennik.datamodels.Profile.Companion.YEAR_1_AVG_2_SEM -import pl.szczodrzynski.edziennik.datamodels.Profile.Companion.YEAR_1_SEM_2_AVG -import pl.szczodrzynski.edziennik.datamodels.Profile.Companion.YEAR_ALL_GRADES +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.Companion.YEAR_1_AVG_2_AVG +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.Companion.YEAR_1_AVG_2_SEM +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.Companion.YEAR_1_SEM_2_AVG +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.Companion.YEAR_ALL_GRADES import pl.szczodrzynski.edziennik.utils.Colors import pl.szczodrzynski.edziennik.utils.Themes import java.text.DecimalFormat diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/activities/CounterActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/CounterActivity.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/activities/CounterActivity.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/CounterActivity.java index 0e11eff0..14a6b71c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/activities/CounterActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/CounterActivity.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.activities; +package pl.szczodrzynski.edziennik.ui.modules.home; import androidx.databinding.DataBindingUtil; import android.os.AsyncTask; @@ -15,12 +15,11 @@ import java.util.TimerTask; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.databinding.ActivityCounterBinding; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.fragments.HomeFragment; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; -import static pl.szczodrzynski.edziennik.fragments.HomeFragment.updateInterval; +import static pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment.updateInterval; public class CounterActivity extends AppCompatActivity { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/HomeFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/HomeFragment.java similarity index 90% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/HomeFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/HomeFragment.java index c2f660f0..24df37d0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/HomeFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/HomeFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments; +package pl.szczodrzynski.edziennik.ui.modules.home; import android.app.Activity; import android.content.Context; @@ -29,14 +29,11 @@ import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; import com.afollestad.materialdialogs.MaterialDialog; -import com.google.gson.JsonObject; import com.mikepenz.iconics.IconicsColor; import com.mikepenz.iconics.IconicsDrawable; import com.mikepenz.iconics.IconicsSize; import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial; -import org.greenrobot.eventbus.EventBus; - import java.util.ArrayList; import java.util.List; @@ -44,25 +41,17 @@ import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.BuildConfig; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.api.AppError; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; -import pl.szczodrzynski.edziennik.api.v2.events.requests.SyncProfileRequest; -import pl.szczodrzynski.edziennik.api.v2.events.requests.SyncViewRequest; -import pl.szczodrzynski.edziennik.api.v2.librus.LibrusOld; -import pl.szczodrzynski.edziennik.api.v2.librus.LibrusTest; import pl.szczodrzynski.edziennik.databinding.CardLuckyNumberBinding; import pl.szczodrzynski.edziennik.databinding.CardUpdateBinding; import pl.szczodrzynski.edziennik.databinding.FragmentHomeBinding; -import pl.szczodrzynski.edziennik.datamodels.GradeFull; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.datamodels.Subject; -import pl.szczodrzynski.edziennik.messages.MessagesComposeActivity; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.ItemGradesSubjectModel; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeFull; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; +import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeActivity; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.ItemGradesSubjectModel; +import pl.szczodrzynski.edziennik.utils.models.Time; import pl.szczodrzynski.edziennik.receivers.BootReceiver; import pl.szczodrzynski.edziennik.utils.Colors; import pl.szczodrzynski.edziennik.utils.Themes; @@ -71,16 +60,13 @@ import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem; import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetSeparatorItem; import static pl.szczodrzynski.edziennik.App.UPDATES_ON_PLAY_STORE; -import static pl.szczodrzynski.edziennik.MainActivity.DRAWER_ITEM_GRADES; -import static pl.szczodrzynski.edziennik.api.v2.FeaturesKt.FEATURE_STUDENT_INFO; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL; -import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_LIBRUS; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL; +import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; public class HomeFragment extends Fragment { private static final String TAG = "HomeFragment"; @@ -127,30 +113,6 @@ public class HomeFragment extends Fragment { startActivity(new Intent(activity, MessagesComposeActivity.class)); })); - LibrusTest test = new LibrusTest(app); - - b.testButton.setVisibility(BuildConfig.DEBUG ? View.VISIBLE : View.GONE); - b.testButton.setOnClickListener((v -> { - test.go(); - })); - - b.test2.setVisibility(BuildConfig.DEBUG ? View.VISIBLE : View.GONE); - b.test2.setOnClickListener((v -> { - List list = new ArrayList<>(); - list.add(FEATURE_STUDENT_INFO); - EventBus.getDefault().post(new SyncProfileRequest(16, list)); - })); - - b.test3.setVisibility(BuildConfig.DEBUG ? View.VISIBLE : View.GONE); - b.test3.setOnClickListener((v -> { - EventBus.getDefault().post(new SyncProfileRequest(16, null)); - })); - - b.test4.setVisibility(BuildConfig.DEBUG ? View.VISIBLE : View.GONE); - b.test4.setOnClickListener((v -> { - EventBus.getDefault().post(new SyncViewRequest(16, DRAWER_ITEM_GRADES)); - })); - //((TextView)v.findViewById(R.id.nextSync)).setText(getString(R.string.next_sync_format,Time.fromMillis(app.appJobs.syncJobTime).getStringHMS())); @@ -582,7 +544,7 @@ public class HomeFragment extends Fragment { Button cardGradesButton = root.findViewById(R.id.cardGradesButton); buttonAddDrawable(c, cardGradesButton, CommunityMaterial.Icon.cmd_arrow_right); cardGradesButton.setOnClickListener((v1 -> new Handler().postDelayed(() -> a.runOnUiThread(() -> { - activity.loadTarget(DRAWER_ITEM_GRADES, null); + activity.loadTarget(MainActivity.DRAWER_ITEM_GRADES, null); }), 100))); //new Handler().postDelayed(() -> a.runOnUiThread(() -> updateCardGrades(c, a, root)), newRefreshInterval); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/HomeTimetableCard.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/HomeTimetableCard.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/HomeTimetableCard.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/HomeTimetableCard.java index 937d3fed..377efeb5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/HomeTimetableCard.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/HomeTimetableCard.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments; +package pl.szczodrzynski.edziennik.ui.modules.home; import android.content.Intent; import android.os.AsyncTask; @@ -23,17 +23,16 @@ import java.util.TimerTask; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.activities.CounterActivity; import pl.szczodrzynski.edziennik.databinding.CardTimetableBinding; -import pl.szczodrzynski.edziennik.datamodels.EventFull; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; -import pl.szczodrzynski.edziennik.models.Week; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Week; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED; -import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE; -import static pl.szczodrzynski.edziennik.fragments.HomeFragment.updateInterval; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED; +import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE; +import static pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment.updateInterval; import static pl.szczodrzynski.edziennik.utils.Utils.bs; public class HomeTimetableCard { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/HomeworksAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/homework/HomeworkAdapter.java similarity index 51% rename from app/src/main/java/pl/szczodrzynski/edziennik/adapters/HomeworksAdapter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/homework/HomeworkAdapter.java index c66baf98..38644e37 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/HomeworksAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/homework/HomeworkAdapter.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.adapters; +package pl.szczodrzynski.edziennik.ui.modules.homework; import android.content.Context; import android.graphics.PorterDuff; @@ -17,19 +17,19 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.datamodels.EventFull; -import pl.szczodrzynski.edziennik.dialogs.EventManualDialog; -import pl.szczodrzynski.edziennik.fragments.HomeFragment; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull; +import pl.szczodrzynski.edziennik.ui.dialogs.event.EventManualDialog; +import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment; +import pl.szczodrzynski.edziennik.utils.models.Date; import static pl.szczodrzynski.edziennik.utils.Utils.bs; -public class HomeworksAdapter extends RecyclerView.Adapter { +public class HomeworkAdapter extends RecyclerView.Adapter { private Context context; private List homeworkList; //getting the context and product list with constructor - public HomeworksAdapter(Context mCtx, List homeworkList) { + public HomeworkAdapter(Context mCtx, List homeworkList) { this.context = mCtx; this.homeworkList = homeworkList; } @@ -39,7 +39,7 @@ public class HomeworksAdapter extends RecyclerView.Adapter { app.db.metadataDao().setSeen(App.profileId, homework, true); }); } else { - holder.homeworksItemTopic.setBackground(null); + holder.homeworkItemTopic.setBackground(null); } - holder.homeworksItemEdit.setVisibility((homework.addedManually ? View.VISIBLE : View.GONE)); - holder.homeworksItemEdit.setOnClickListener(v -> { + holder.homeworkItemEdit.setVisibility((homework.addedManually ? View.VISIBLE : View.GONE)); + holder.homeworkItemEdit.setOnClickListener(v -> { new EventManualDialog(context).show(app, homework, null, null, EventManualDialog.DIALOG_HOMEWORK); }); if (homework.sharedBy == null) { - holder.homeworksItemSharedBy.setVisibility(View.GONE); + holder.homeworkItemSharedBy.setVisibility(View.GONE); } else if (homework.sharedByName != null) { - holder.homeworksItemSharedBy.setText(app.getString(R.string.event_shared_by_format, (homework.sharedBy.equals("self") ? app.getString(R.string.event_shared_by_self) : homework.sharedByName))); + holder.homeworkItemSharedBy.setText(app.getString(R.string.event_shared_by_format, (homework.sharedBy.equals("self") ? app.getString(R.string.event_shared_by_self) : homework.sharedByName))); } } @@ -110,23 +110,23 @@ public class HomeworksAdapter extends RecyclerView.Adapter + adapter.addFragment(HomeworkListFragment().also { fragment -> + fragment.arguments = Bundle().also { args -> + args.putInt("homeworkDate", HomeworkDate.CURRENT) + } + }, getString(R.string.homework_tab_current)) + + adapter.addFragment(HomeworkListFragment().also { fragment -> + fragment.arguments = Bundle().also { args -> + args.putInt("homeworkDate", HomeworkDate.PAST) + } + }, getString(R.string.homework_tab_past)) + } + + b.viewPager.currentItem = pageSelection + b.viewPager.clearOnPageChangeListeners() + b.viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrollStateChanged(state: Int) {} + override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {} + override fun onPageSelected(position: Int) { + pageSelection = position + } + }) + + b.tabLayout.setupWithViewPager(b.viewPager) + + activity.navView.bottomBar.fabEnable = true + activity.navView.bottomBar.fabExtendedText = getString(R.string.add) + activity.navView.bottomBar.fabIcon = CommunityMaterial.Icon2.cmd_plus + activity.navView.setFabOnClickListener(View.OnClickListener { + EventManualDialog(activity).show(app, null, null, null, EventManualDialog.DIALOG_HOMEWORK) + }) + + activity.gainAttention() + activity.gainAttentionFAB() + } +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/homework/HomeworkListFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/homework/HomeworkListFragment.kt new file mode 100644 index 00000000..e0f2daba --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/homework/HomeworkListFragment.kt @@ -0,0 +1,77 @@ +package pl.szczodrzynski.edziennik.ui.modules.homework + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.lifecycle.Observer +import androidx.recyclerview.widget.LinearLayoutManager +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.MainActivity +import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.databinding.HomeworkListBinding +import pl.szczodrzynski.edziennik.data.db.modules.events.Event +import pl.szczodrzynski.edziennik.getInt +import pl.szczodrzynski.edziennik.utils.models.Date +import pl.szczodrzynski.edziennik.utils.Themes + +class HomeworkListFragment : Fragment() { + + private lateinit var app: App + private lateinit var activity: MainActivity + private lateinit var b: HomeworkListBinding + + private var homeworkDate = HomeworkDate.CURRENT + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + activity = (getActivity() as MainActivity?) ?: return null + if (context == null) + return null + app = activity.application as App + context!!.theme.applyStyle(Themes.appTheme, true) + if (app.profile == null) + return inflater.inflate(R.layout.fragment_loading, container, false) + // activity, context and profile is valid + b = HomeworkListBinding.inflate(inflater) + return b.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + // TODO check if app, activity, b can be null + if (app.profile == null || !isAdded) + return + + if (arguments != null) { + homeworkDate = arguments.getInt("homeworkDate", HomeworkDate.CURRENT) + } + + val layoutManager = LinearLayoutManager(context) + layoutManager.reverseLayout = true + layoutManager.stackFromEnd = true + + b.homeworkView.setHasFixedSize(true) + b.homeworkView.layoutManager = layoutManager + + val filter = when(homeworkDate) { + HomeworkDate.CURRENT -> "eventDate > '" + Date.getToday().stringY_m_d + "'" + else -> "eventDate <= '" + Date.getToday().stringY_m_d + "'" + } + + app.db.eventDao() + .getAllByType(App.profileId, Event.TYPE_HOMEWORK, filter) + .observe(this, Observer { homeworkList -> + if (app.profile == null || !isAdded) return@Observer + + if (homeworkList != null && homeworkList.size > 0) { + val adapter = HomeworkAdapter(context, homeworkList) + b.homeworkView.adapter = adapter + b.homeworkView.visibility = View.VISIBLE + b.homeworkNoData.visibility = View.GONE + } else { + b.homeworkView.visibility = View.GONE + b.homeworkNoData.visibility = View.VISIBLE + } + }) + } +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/intro/ChangelogIntroActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/intro/ChangelogIntroActivity.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/intro/ChangelogIntroActivity.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/intro/ChangelogIntroActivity.java index d8d9441b..eac89b71 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/intro/ChangelogIntroActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/intro/ChangelogIntroActivity.java @@ -1,10 +1,9 @@ -package pl.szczodrzynski.edziennik.intro; +package pl.szczodrzynski.edziennik.ui.modules.intro; import android.os.Build; import android.os.Bundle; import com.heinrichreimersoftware.materialintro.app.IntroActivity; -import com.heinrichreimersoftware.materialintro.slide.SimpleSlide; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.BuildConfig; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/intro/FragmentSlideMod.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/intro/FragmentSlideMod.java similarity index 99% rename from app/src/main/java/pl/szczodrzynski/edziennik/intro/FragmentSlideMod.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/intro/FragmentSlideMod.java index e2a0c9ca..1d3cfb92 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/intro/FragmentSlideMod.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/intro/FragmentSlideMod.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package pl.szczodrzynski.edziennik.intro; +package pl.szczodrzynski.edziennik.ui.modules.intro; import android.content.Context; import android.os.Build; @@ -284,4 +284,4 @@ public class FragmentSlideMod implements Slide, RestorableSlide, ButtonCtaSlide return localInflater.inflate(getArguments().getInt(ARGUMENT_LAYOUT_RES), container, false); } } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginActivity.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginActivity.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginActivity.java index c6d49280..5d5b210d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginActivity.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import androidx.databinding.DataBindingUtil; import android.os.Bundle; @@ -14,7 +14,7 @@ import androidx.navigation.NavOptions; import androidx.navigation.Navigation; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.AppError; +import pl.szczodrzynski.edziennik.data.api.AppError; import pl.szczodrzynski.edziennik.databinding.ActivityLoginBinding; public class LoginActivity extends AppCompatActivity { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginChooserFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginChooserFragment.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginChooserFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginChooserFragment.java index 0e36f157..a2547b3a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginChooserFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginChooserFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import android.content.Intent; import android.os.Bundle; @@ -13,7 +13,7 @@ import androidx.fragment.app.Fragment; import androidx.navigation.NavController; import androidx.navigation.Navigation; import pl.szczodrzynski.edziennik.App; -import pl.szczodrzynski.edziennik.activities.FeedbackActivity; +import pl.szczodrzynski.edziennik.ui.modules.feedback.FeedbackActivity; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.databinding.FragmentLoginChooserBinding; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginFinishFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginFinishFragment.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginFinishFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginFinishFragment.java index 4adfd2b6..a5c9cd47 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginFinishFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginFinishFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import android.app.Activity; import android.content.Intent; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginIuczniowieFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginIuczniowieFragment.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginIuczniowieFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginIuczniowieFragment.java index feb1dc0a..e1eb8091 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginIuczniowieFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginIuczniowieFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import android.os.Bundle; @@ -18,12 +18,12 @@ import androidx.navigation.NavController; import androidx.navigation.Navigation; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.AppError; +import pl.szczodrzynski.edziennik.data.api.AppError; import pl.szczodrzynski.edziennik.databinding.FragmentLoginIuczniowieBinding; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_SCHOOL_NAME; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_IUCZNIOWIE; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_SCHOOL_NAME; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_IUCZNIOWIE; public class LoginIuczniowieFragment extends Fragment { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginIuczniowieHelpFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginIuczniowieHelpFragment.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginIuczniowieHelpFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginIuczniowieHelpFragment.java index 5de85bd2..7b5c9d96 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginIuczniowieHelpFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginIuczniowieHelpFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import androidx.databinding.DataBindingUtil; import android.os.Bundle; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginLibrusFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginLibrusFragment.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginLibrusFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginLibrusFragment.java index cde63c64..fb0612fd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginLibrusFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginLibrusFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import android.os.Bundle; @@ -18,12 +18,12 @@ import androidx.navigation.NavController; import androidx.navigation.Navigation; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.AppError; +import pl.szczodrzynski.edziennik.data.api.AppError; import pl.szczodrzynski.edziennik.databinding.FragmentLoginLibrusBinding; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_LIBRUS_NOT_ACTIVATED; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_LIBRUS; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_LIBRUS_NOT_ACTIVATED; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_LIBRUS; public class LoginLibrusFragment extends Fragment { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginLibrusHelpFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginLibrusHelpFragment.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginLibrusHelpFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginLibrusHelpFragment.java index 5dcca8ab..6984498a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginLibrusHelpFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginLibrusHelpFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import androidx.databinding.DataBindingUtil; import android.os.Bundle; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMigrationFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMigrationFragment.java similarity index 88% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMigrationFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMigrationFragment.java index 11000498..cd881665 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMigrationFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMigrationFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import android.app.Activity; import android.content.Context; @@ -18,22 +18,22 @@ import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.BuildConfig; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.databinding.FragmentLoginMigrationBinding; -import pl.szczodrzynski.edziennik.datamodels.Attendance; -import pl.szczodrzynski.edziennik.datamodels.Event; -import pl.szczodrzynski.edziennik.datamodels.EventType; -import pl.szczodrzynski.edziennik.datamodels.Grade; -import pl.szczodrzynski.edziennik.datamodels.Lesson; -import pl.szczodrzynski.edziennik.datamodels.LessonChange; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.LuckyNumber; -import pl.szczodrzynski.edziennik.datamodels.Metadata; -import pl.szczodrzynski.edziennik.datamodels.Notice; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.Subject; -import pl.szczodrzynski.edziennik.datamodels.Teacher; -import pl.szczodrzynski.edziennik.datamodels.Team; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventType; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber; +import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata; +import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; +import pl.szczodrzynski.edziennik.data.db.modules.teams.Team; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; import android.util.LongSparseArray; import android.view.LayoutInflater; @@ -52,36 +52,36 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_CLASS_EVENT; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_DEFAULT; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_ESSAY; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_EXAM; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_EXCURSION; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_HOMEWORK; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_INFORMATION; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_PROJECT; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_PT_MEETING; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_READING; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_SHORT_QUIZ; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_CLASS_EVENT; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_DEFAULT; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_ESSAY; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_EXAM; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_EXCURSION; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_INFORMATION; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_PROJECT; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_PT_MEETING; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_READING; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_SHORT_QUIZ; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_DEMO; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_IUCZNIOWIE; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_LIBRUS; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_VULCAN; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_DISABLED; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_UNSPECIFIED; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_CLASS_EVENT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_DEFAULT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_ESSAY; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_EXAM; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_EXCURSION; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_INFORMATION; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_PROJECT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_PT_MEETING; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_READING; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_SHORT_QUIZ; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_CLASS_EVENT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_DEFAULT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_ESSAY; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_EXAM; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_EXCURSION; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_INFORMATION; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_PROJECT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_PT_MEETING; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_READING; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_SHORT_QUIZ; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_DEMO; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_IUCZNIOWIE; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_LIBRUS; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_VULCAN; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_DISABLED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_UNSPECIFIED; public class LoginMigrationFragment extends Fragment { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMigrationSyncFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMigrationSyncFragment.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMigrationSyncFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMigrationSyncFragment.java index ebb8edad..8adeebf2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMigrationSyncFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMigrationSyncFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import android.app.Activity; import android.content.Context; @@ -20,12 +20,12 @@ import androidx.navigation.NavController; import androidx.navigation.Navigation; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.AppError; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.api.AppError; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; import pl.szczodrzynski.edziennik.databinding.FragmentLoginMigrationSyncBinding; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; import pl.szczodrzynski.edziennik.sync.SyncJob; import pl.szczodrzynski.edziennik.sync.SyncService; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMobidziennikFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMobidziennikFragment.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMobidziennikFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMobidziennikFragment.java index 549bad84..0c4c5f33 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMobidziennikFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMobidziennikFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import androidx.databinding.DataBindingUtil; import android.os.Bundle; @@ -16,14 +16,14 @@ import androidx.navigation.NavController; import androidx.navigation.Navigation; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.AppError; +import pl.szczodrzynski.edziennik.data.api.AppError; import pl.szczodrzynski.edziennik.databinding.FragmentLoginMobidziennikBinding; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_ARCHIVED; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_SERVER_ADDRESS; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_OLD_PASSWORD; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_ARCHIVED; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_SERVER_ADDRESS; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OLD_PASSWORD; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; public class LoginMobidziennikFragment extends Fragment { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMobidziennikHelpFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMobidziennikHelpFragment.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMobidziennikHelpFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMobidziennikHelpFragment.java index f6ba19ab..511f6682 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginMobidziennikHelpFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginMobidziennikHelpFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import androidx.databinding.DataBindingUtil; import android.os.Bundle; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginProfileObject.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginProfileObject.java similarity index 78% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginProfileObject.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginProfileObject.java index 8bed9821..9ee42950 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginProfileObject.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginProfileObject.java @@ -1,12 +1,12 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import java.util.ArrayList; import java.util.List; import androidx.annotation.NonNull; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; public class LoginProfileObject { LoginStore loginStore = null; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginProgressFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginProgressFragment.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginProgressFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginProgressFragment.java index 572cb78d..93f00fa3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginProgressFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginProgressFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import androidx.databinding.DataBindingUtil; @@ -20,15 +20,15 @@ import androidx.navigation.NavController; import androidx.navigation.Navigation; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.Edziennik; -import pl.szczodrzynski.edziennik.api.AppError; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.api.Edziennik; +import pl.szczodrzynski.edziennik.data.api.AppError; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; import pl.szczodrzynski.edziennik.databinding.FragmentLoginProgressBinding; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER; public class LoginProgressFragment extends Fragment { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginSummaryFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginSummaryFragment.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginSummaryFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginSummaryFragment.java index d2e48969..43efd3fe 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginSummaryFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginSummaryFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import androidx.databinding.DataBindingUtil; @@ -26,7 +26,7 @@ import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.databinding.FragmentLoginSummaryBinding; import pl.szczodrzynski.edziennik.databinding.RowLoginProfileListItemBinding; -import pl.szczodrzynski.edziennik.datamodels.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; public class LoginSummaryFragment extends Fragment { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginSyncErrorFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginSyncErrorFragment.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginSyncErrorFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginSyncErrorFragment.java index 3dc7d1cf..951c53e8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginSyncErrorFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginSyncErrorFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import android.os.Bundle; @@ -11,7 +11,6 @@ import androidx.navigation.Navigation; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.databinding.FragmentLoginSyncErrorBinding; -import pl.szczodrzynski.edziennik.login.LoginActivity; import android.view.LayoutInflater; import android.view.View; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginSyncFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginSyncFragment.java similarity index 76% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginSyncFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginSyncFragment.java index ba0d70d0..3b8c436e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginSyncFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginSyncFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import android.content.Context; @@ -22,40 +22,40 @@ import androidx.navigation.NavController; import androidx.navigation.Navigation; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.AppError; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.api.AppError; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; import pl.szczodrzynski.edziennik.databinding.FragmentLoginSyncBinding; -import pl.szczodrzynski.edziennik.datamodels.EventType; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventType; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; import pl.szczodrzynski.edziennik.sync.SyncJob; import pl.szczodrzynski.edziennik.sync.SyncService; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_CLASS_EVENT; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_DEFAULT; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_EXAM; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_EXCURSION; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_HOMEWORK; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_INFORMATION; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_PROJECT; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_PT_MEETING; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_READING; -import static pl.szczodrzynski.edziennik.datamodels.Event.COLOR_SHORT_QUIZ; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_CLASS_EVENT; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_DEFAULT; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_ESSAY; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_EXAM; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_EXCURSION; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_INFORMATION; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_PROJECT; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_PT_MEETING; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_READING; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_SHORT_QUIZ; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_DISABLED; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_UNSPECIFIED; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_CLASS_EVENT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_DEFAULT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_EXAM; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_EXCURSION; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_INFORMATION; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_PROJECT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_PT_MEETING; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_READING; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.COLOR_SHORT_QUIZ; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_CLASS_EVENT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_DEFAULT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_ESSAY; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_EXAM; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_EXCURSION; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_INFORMATION; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_PROJECT; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_PT_MEETING; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_READING; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_SHORT_QUIZ; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_DISABLED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_UNSPECIFIED; import static pl.szczodrzynski.edziennik.utils.Utils.d; public class LoginSyncFragment extends Fragment { @@ -224,4 +224,4 @@ public class LoginSyncFragment extends Fragment { begin(); } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginTemplateFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginTemplateFragment.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginTemplateFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginTemplateFragment.java index 8a2ed9df..41ff3beb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginTemplateFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginTemplateFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import androidx.databinding.DataBindingUtil; import android.os.Bundle; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginVulcanFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginVulcanFragment.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginVulcanFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginVulcanFragment.java index 297a0ca8..7b65eead 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginVulcanFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginVulcanFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import android.content.Intent; import android.graphics.Color; @@ -36,16 +36,16 @@ import javax.crypto.ShortBufferException; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.activities.QrScannerActivity; -import pl.szczodrzynski.edziennik.api.AppError; +import pl.szczodrzynski.edziennik.ui.modules.webpush.QrScannerActivity; +import pl.szczodrzynski.edziennik.data.api.AppError; import pl.szczodrzynski.edziennik.databinding.FragmentLoginVulcanBinding; import pl.szczodrzynski.edziennik.utils.Utils; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_EXPIRED_TOKEN; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_PIN; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_SYMBOL; -import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_TOKEN; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_VULCAN; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_EXPIRED_TOKEN; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_PIN; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_SYMBOL; +import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_TOKEN; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_VULCAN; public class LoginVulcanFragment extends Fragment { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginVulcanHelpFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginVulcanHelpFragment.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/login/LoginVulcanHelpFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginVulcanHelpFragment.java index 9a1875d0..0aa899ae 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/login/LoginVulcanHelpFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginVulcanHelpFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.login; +package pl.szczodrzynski.edziennik.ui.modules.login; import androidx.databinding.DataBindingUtil; import android.os.Bundle; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesAdapter.java similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesAdapter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesAdapter.java index 33d3e5b7..35b75308 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesAdapter.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.messages; +package pl.szczodrzynski.edziennik.ui.modules.messages; import android.graphics.Typeface; import android.text.Html; @@ -17,12 +17,11 @@ import androidx.recyclerview.widget.RecyclerView; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.databinding.MessagesItemBinding; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.utils.Utils; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; +import pl.szczodrzynski.edziennik.utils.models.Date; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_DRAFT; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_DRAFT; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT; public class MessagesAdapter extends RecyclerView.Adapter { private App app; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesComposeActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesComposeActivity.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesComposeActivity.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesComposeActivity.java index 767e73de..ff22e48e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesComposeActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesComposeActivity.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.messages; +package pl.szczodrzynski.edziennik.ui.modules.messages; import android.content.Context; import android.graphics.Color; @@ -35,14 +35,14 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.api.Edziennik; -import pl.szczodrzynski.edziennik.api.AppError; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; -import pl.szczodrzynski.edziennik.databinding.MessagesComposeActivityBinding; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.datamodels.Teacher; +import pl.szczodrzynski.edziennik.data.api.AppError; +import pl.szczodrzynski.edziennik.data.api.Edziennik; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; +import pl.szczodrzynski.edziennik.databinding.ActivityComposeMessageBinding; import pl.szczodrzynski.edziennik.utils.Colors; import pl.szczodrzynski.edziennik.utils.Themes; @@ -50,7 +50,7 @@ public class MessagesComposeActivity extends AppCompatActivity { private static final String TAG = "MessageCompose"; private App app; - private MessagesComposeActivityBinding b; + private ActivityComposeMessageBinding b; private List teachers = new ArrayList<>(); private ActionBar actionBar; private MessagesComposeInfo composeInfo; @@ -60,7 +60,7 @@ public class MessagesComposeActivity extends AppCompatActivity { super.onCreate(savedInstanceState); app = (App)getApplication(); setTheme(Themes.INSTANCE.getAppTheme()); - b = DataBindingUtil.inflate(getLayoutInflater(), R.layout.messages_compose_activity, null, false); + b = DataBindingUtil.inflate(getLayoutInflater(), R.layout.activity_compose_message, null, false); setContentView(b.getRoot()); composeInfo = Edziennik.getApi(app, app.profile.getLoginStoreType()).getComposeInfo(app.profile); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesComposeInfo.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesComposeInfo.java similarity index 93% rename from app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesComposeInfo.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesComposeInfo.java index ad472272..6812e00d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesComposeInfo.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesComposeInfo.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.messages; +package pl.szczodrzynski.edziennik.ui.modules.messages; public class MessagesComposeInfo { /** diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesComposeSuggestionAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesComposeSuggestionAdapter.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesComposeSuggestionAdapter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesComposeSuggestionAdapter.java index 441959fe..748e2c32 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesComposeSuggestionAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesComposeSuggestionAdapter.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.messages; +package pl.szczodrzynski.edziennik.ui.modules.messages; import android.content.Context; import android.text.Html; @@ -19,7 +19,7 @@ import java.util.Comparator; import java.util.List; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.datamodels.Teacher; +import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher; public class MessagesComposeSuggestionAdapter extends ArrayAdapter { @@ -188,4 +188,4 @@ public class MessagesComposeSuggestionAdapter extends ArrayAdapter { } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesDetailsFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesDetailsFragment.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesDetailsFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesDetailsFragment.java index 1174b654..645b66d3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesDetailsFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesDetailsFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.messages; +package pl.szczodrzynski.edziennik.ui.modules.messages; import android.content.Context; import android.content.Intent; @@ -51,17 +51,17 @@ import im.wangchao.mhttp.callback.FileCallbackHandler; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.api.Edziennik; -import pl.szczodrzynski.edziennik.api.AppError; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.api.Edziennik; +import pl.szczodrzynski.edziennik.data.api.AppError; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; import pl.szczodrzynski.edziennik.databinding.MessagesDetailsBinding; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; import pl.szczodrzynski.edziennik.utils.Anim; import pl.szczodrzynski.edziennik.utils.Themes; import pl.szczodrzynski.edziennik.utils.Utils; @@ -673,4 +673,4 @@ public class MessagesDetailsFragment extends Fragment { .show(); b.messageSender.setOnClickListener(onClickListener); b.messageProfileBackground.setOnClickListener(onClickListener); - }*/ \ No newline at end of file + }*/ diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesFragment.kt similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesFragment.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesFragment.kt index bee3ff13..db7fae3b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesFragment.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.messages +package pl.szczodrzynski.edziennik.ui.modules.messages import android.os.Bundle import android.view.LayoutInflater @@ -12,7 +12,7 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.databinding.FragmentMessagesBinding -import pl.szczodrzynski.edziennik.datamodels.Message +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message import pl.szczodrzynski.edziennik.utils.Themes import java.util.* @@ -103,4 +103,4 @@ class MessagesFragment : Fragment() { return mFragmentTitleList[position] } } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesListFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesListFragment.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesListFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesListFragment.java index 07a3a8a6..17e77c41 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesListFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesListFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.messages; +package pl.szczodrzynski.edziennik.ui.modules.messages; import android.content.Context; @@ -29,20 +29,20 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.api.AppError; -import pl.szczodrzynski.edziennik.api.Edziennik; -import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback; +import pl.szczodrzynski.edziennik.data.api.AppError; +import pl.szczodrzynski.edziennik.data.api.Edziennik; +import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback; import pl.szczodrzynski.edziennik.databinding.MessagesListBinding; -import pl.szczodrzynski.edziennik.datamodels.LoginStore; -import pl.szczodrzynski.edziennik.datamodels.Message; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.ProfileFull; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.data.db.modules.messages.Message; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull; import pl.szczodrzynski.edziennik.utils.Themes; import static androidx.recyclerview.widget.RecyclerView.NO_POSITION; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_LIBRUS; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_LIBRUS; import static pl.szczodrzynski.edziennik.utils.Utils.d; public class MessagesListFragment extends Fragment { @@ -76,7 +76,6 @@ public class MessagesListFragment extends Fragment { return inflater.inflate(R.layout.fragment_loading, container, false); // activity, context and profile is valid b = DataBindingUtil.inflate(inflater, R.layout.messages_list, container, false); - b.refreshLayout.setParent(activity.getSwipeRefreshLayout()); return b.getRoot(); } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesUtils.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesUtils.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesUtils.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesUtils.java index d7c97888..91ed9a56 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/messages/MessagesUtils.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesUtils.java @@ -1,24 +1,22 @@ -package pl.szczodrzynski.edziennik.messages; +package pl.szczodrzynski.edziennik.ui.modules.messages; -import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; -import android.graphics.drawable.Drawable; import androidx.core.graphics.ColorUtils; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.datamodels.MessageFull; -import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull; +import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull; import pl.szczodrzynski.edziennik.utils.Colors; import pl.szczodrzynski.edziennik.utils.Utils; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_DELETED; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_DRAFT; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED; -import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_DELETED; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_DRAFT; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED; +import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT; public class MessagesUtils { public static class MessageInfo { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterMessagesWebFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesWebFragment.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterMessagesWebFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesWebFragment.java index 9c168eaf..343f4076 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterMessagesWebFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessagesWebFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments; +package pl.szczodrzynski.edziennik.ui.modules.messages; import android.Manifest; import android.annotation.SuppressLint; @@ -17,12 +17,6 @@ import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.provider.MediaStore; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.app.ActivityCompat; -import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.Fragment; -import androidx.core.content.FileProvider; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -39,6 +33,13 @@ import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.app.ActivityCompat; +import androidx.core.content.FileProvider; +import androidx.databinding.DataBindingUtil; +import androidx.fragment.app.Fragment; + import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.StackingBehavior; @@ -51,7 +52,7 @@ import java.util.Date; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.databinding.FragmentRegisterMessagesWebBinding; +import pl.szczodrzynski.edziennik.databinding.FragmentMessagesWebBinding; import pl.szczodrzynski.edziennik.utils.Anim; import pl.szczodrzynski.edziennik.utils.Themes; @@ -59,12 +60,12 @@ import static android.app.Activity.RESULT_OK; import static android.content.Context.DOWNLOAD_SERVICE; import static pl.szczodrzynski.edziennik.utils.Utils.readableFileSize; -public class RegisterMessagesWebFragment extends Fragment { +public class MessagesWebFragment extends Fragment { private static final String TAG = "RegisterMessagesWeb"; private App app = null; private Activity activity = null; - private FragmentRegisterMessagesWebBinding b = null; + private FragmentMessagesWebBinding b = null; private WebView webView; private ProgressBar progressBar; @@ -80,7 +81,7 @@ public class RegisterMessagesWebFragment extends Fragment { if (app.profile == null) return inflater.inflate(R.layout.fragment_loading, container, false); // activity, context and profile is valid - b = DataBindingUtil.inflate(inflater, R.layout.fragment_register_messages_web, container, false); + b = DataBindingUtil.inflate(inflater, R.layout.fragment_messages_web, container, false); return b.getRoot(); } @@ -350,7 +351,7 @@ public class RegisterMessagesWebFragment extends Fragment { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); - RegisterMessagesWebFragment.this.error.setVisibility(View.GONE); + MessagesWebFragment.this.error.setVisibility(View.GONE); loadingFinished = false; //SHOW LOADING IF IT ISNT ALREADY VISIBLE if (progressBar.getVisibility() != View.VISIBLE) @@ -385,8 +386,8 @@ public class RegisterMessagesWebFragment extends Fragment { if (app == null || app.profile == null || activity == null || b == null || !isAdded()) return; - RegisterMessagesWebFragment.this.error.setVisibility(View.VISIBLE); - RegisterMessagesWebFragment.this.error.setText(getString(R.string.error_occured_format, error.toString())); + MessagesWebFragment.this.error.setVisibility(View.VISIBLE); + MessagesWebFragment.this.error.setText(getString(R.string.error_occured_format, error.toString())); super.onReceivedError(view, request, error); } }); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/messages/SlideExplode.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/SlideExplode.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/messages/SlideExplode.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/SlideExplode.java index bac1d687..6161b6dd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/messages/SlideExplode.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/SlideExplode.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.messages; +package pl.szczodrzynski.edziennik.ui.modules.messages; import android.animation.Animator; import android.animation.ObjectAnimator; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/messages/Transitions.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/Transitions.java similarity index 89% rename from app/src/main/java/pl/szczodrzynski/edziennik/messages/Transitions.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/Transitions.java index 67b3a5b3..4e6f38a2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/messages/Transitions.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/Transitions.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.messages; +package pl.szczodrzynski.edziennik.ui.modules.messages; import android.animation.TimeInterpolator; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/NotificationsAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/notifications/NotificationsAdapter.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/adapters/NotificationsAdapter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/notifications/NotificationsAdapter.java index 8ec253b0..f54810b9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/NotificationsAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/notifications/NotificationsAdapter.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.adapters; +package pl.szczodrzynski.edziennik.ui.modules.notifications; import android.app.Activity; import android.content.Context; @@ -19,8 +19,8 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Notification; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Notification; import static pl.szczodrzynski.edziennik.utils.Utils.d; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterNotificationsFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/notifications/NotificationsFragment.java similarity index 87% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterNotificationsFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/notifications/NotificationsFragment.java index 7b96196c..0ed54999 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/RegisterNotificationsFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/notifications/NotificationsFragment.java @@ -1,28 +1,28 @@ -package pl.szczodrzynski.edziennik.fragments; +package pl.szczodrzynski.edziennik.ui.modules.notifications; import android.app.Activity; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.adapters.NotificationsAdapter; -import pl.szczodrzynski.edziennik.databinding.FragmentRegisterNotificationsBinding; +import pl.szczodrzynski.edziennik.databinding.FragmentNotificationsBinding; import pl.szczodrzynski.edziennik.utils.Themes; -public class RegisterNotificationsFragment extends Fragment { +public class NotificationsFragment extends Fragment { private App app = null; private Activity activity = null; - private FragmentRegisterNotificationsBinding b = null; + private FragmentNotificationsBinding b = null; @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -34,7 +34,7 @@ public class RegisterNotificationsFragment extends Fragment { if (app.profile == null) return inflater.inflate(R.layout.fragment_loading, container, false); // activity, context and profile is valid - b = DataBindingUtil.inflate(inflater, R.layout.fragment_register_notifications, container, false); + b = DataBindingUtil.inflate(inflater, R.layout.fragment_notifications, container, false); return b.getRoot(); } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/ProfileManagerFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/ProfileManagerFragment.kt similarity index 96% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/ProfileManagerFragment.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/ProfileManagerFragment.kt index 43dc77a2..06952328 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/ProfileManagerFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/ProfileManagerFragment.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments +package pl.szczodrzynski.edziennik.ui.modules.settings import android.os.Bundle import androidx.fragment.app.Fragment diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/activities/SettingsLicenseActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/SettingsLicenseActivity.kt similarity index 99% rename from app/src/main/java/pl/szczodrzynski/edziennik/activities/SettingsLicenseActivity.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/SettingsLicenseActivity.kt index 32b40443..31933c4d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/activities/SettingsLicenseActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/SettingsLicenseActivity.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.activities +package pl.szczodrzynski.edziennik.ui.modules.settings import android.content.Context import android.net.Uri diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/SettingsNewFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/SettingsNewFragment.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/fragments/SettingsNewFragment.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/SettingsNewFragment.java index df163e34..932e89eb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/fragments/SettingsNewFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/SettingsNewFragment.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.fragments; +package pl.szczodrzynski.edziennik.ui.modules.settings; import android.app.Activity; import android.content.Context; @@ -45,27 +45,28 @@ import pl.szczodrzynski.edziennik.BuildConfig; import pl.szczodrzynski.edziennik.Notifier; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.activities.SettingsLicenseActivity; -import pl.szczodrzynski.edziennik.activities.WebPushConfigActivity; -import pl.szczodrzynski.edziennik.dialogs.ChangelogDialog; -import pl.szczodrzynski.edziennik.models.Endpoint; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore; +import pl.szczodrzynski.edziennik.ui.modules.webpush.WebPushConfigActivity; +import pl.szczodrzynski.edziennik.ui.dialogs.changelog.ChangelogDialog; +import pl.szczodrzynski.edziennik.utils.models.Endpoint; +import pl.szczodrzynski.edziennik.utils.models.Time; import pl.szczodrzynski.edziennik.network.NetworkUtils; import pl.szczodrzynski.edziennik.network.ServerRequest; import pl.szczodrzynski.edziennik.receivers.BootReceiver; import pl.szczodrzynski.edziennik.sync.SyncJob; +import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment; import pl.szczodrzynski.edziennik.utils.Themes; import pl.szczodrzynski.edziennik.utils.Utils; import static android.app.Activity.RESULT_OK; import static pl.szczodrzynski.edziennik.App.APP_URL; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_DISABLED; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_AVG_2_AVG; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_AVG_2_SEM; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_SEM_2_AVG; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_1_SEM_2_SEM; -import static pl.szczodrzynski.edziennik.datamodels.Profile.YEAR_ALL_GRADES; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_DISABLED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_AVG_2_AVG; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_AVG_2_SEM; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_SEM_2_AVG; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_SEM_2_SEM; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_ALL_GRADES; import static pl.szczodrzynski.edziennik.utils.Utils.d; import static pl.szczodrzynski.edziennik.utils.Utils.getRealPathFromURI; import static pl.szczodrzynski.edziennik.utils.Utils.getResizedBitmap; @@ -350,9 +351,9 @@ public class SettingsNewFragment extends MaterialAboutFragment { buttonIds.add(MainActivity.DRAWER_ITEM_AGENDA); buttonIds.add(MainActivity.DRAWER_ITEM_GRADES); buttonIds.add(MainActivity.DRAWER_ITEM_MESSAGES); - buttonIds.add(MainActivity.DRAWER_ITEM_HOMEWORKS); - buttonIds.add(MainActivity.DRAWER_ITEM_NOTICES); - buttonIds.add(MainActivity.DRAWER_ITEM_ATTENDANCES); + buttonIds.add(MainActivity.DRAWER_ITEM_HOMEWORK); + buttonIds.add(MainActivity.DRAWER_ITEM_BEHAVIOUR); + buttonIds.add(MainActivity.DRAWER_ITEM_ATTENDANCE); buttonIds.add(MainActivity.DRAWER_ITEM_ANNOUNCEMENTS); buttonIds.add(MainActivity.DRAWER_ITEM_NOTIFICATIONS); buttonIds.add(MainActivity.DRAWER_ITEM_SETTINGS); @@ -365,7 +366,7 @@ public class SettingsNewFragment extends MaterialAboutFragment { buttonCaptions.add(getString(R.string.menu_messages)); buttonCaptions.add(getString(R.string.menu_homework)); buttonCaptions.add(getString(R.string.menu_notices)); - buttonCaptions.add(getString(R.string.menu_attendances)); + buttonCaptions.add(getString(R.string.menu_attendance)); buttonCaptions.add(getString(R.string.menu_announcements)); buttonCaptions.add(getString(R.string.menu_notifications)); buttonCaptions.add(getString(R.string.menu_settings)); @@ -1057,6 +1058,25 @@ public class SettingsNewFragment extends MaterialAboutFragment { }) ); + if (app.profile.getLoginStoreType() == LoginStore.LOGIN_TYPE_LIBRUS) { + items.add( + new MaterialAboutSwitchItem( + getString(R.string.settings_register_show_teacher_absences_text), + null, + new IconicsDrawable(activity) + .icon(CommunityMaterial.Icon.cmd_account_arrow_right) + .size(IconicsSize.dp(iconSizeDp)) + .color(IconicsColor.colorInt(iconColor)) + ) + .setChecked(app.profile.getStudentData("showTeacherAbsences", true)) + .setOnChangeAction((isChecked, tag) -> { + app.profile.putStudentData("showTeacherAbsences", isChecked); + app.profileSaveAsync(); + return true; + }) + ); + } + } return items; } @@ -1091,8 +1111,8 @@ public class SettingsNewFragment extends MaterialAboutFragment { case "Events": stringRes = R.string.settings_sync_customize_endpoint_events; break; - case "Homeworks": - stringRes = R.string.settings_sync_customize_endpoint_homeworks; + case "Homework": + stringRes = R.string.settings_sync_customize_endpoint_homework; break; case "LuckyNumber": case "LuckyNumbers": @@ -1101,8 +1121,8 @@ public class SettingsNewFragment extends MaterialAboutFragment { case "Notices": stringRes = R.string.settings_sync_customize_endpoint_notices; break; - case "Attendances": - stringRes = R.string.settings_sync_customize_endpoint_attendances; + case "Attendance": + stringRes = R.string.settings_sync_customize_endpoint_attendance; break; case "Announcements": stringRes = R.string.settings_sync_customize_endpoint_announcements; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/TimetableAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/TimetableAdapter.java similarity index 95% rename from app/src/main/java/pl/szczodrzynski/edziennik/adapters/TimetableAdapter.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/TimetableAdapter.java index d056c26c..def0b58f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/adapters/TimetableAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/TimetableAdapter.java @@ -1,7 +1,6 @@ -package pl.szczodrzynski.edziennik.adapters; +package pl.szczodrzynski.edziennik.ui.modules.timetable; import android.content.Context; -import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Typeface; @@ -25,16 +24,16 @@ import java.util.List; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.datamodels.EventFull; -import pl.szczodrzynski.edziennik.datamodels.LessonChange; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; -import pl.szczodrzynski.edziennik.dialogs.EventListDialog; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; +import pl.szczodrzynski.edziennik.ui.dialogs.event.EventListDialog; +import pl.szczodrzynski.edziennik.utils.models.Date; import pl.szczodrzynski.edziennik.utils.SpannableHtmlTagHandler; import pl.szczodrzynski.edziennik.utils.Themes; import pl.szczodrzynski.edziennik.utils.Utils; -import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK; +import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK; public class TimetableAdapter extends RecyclerView.Adapter { private static final String TAG = "TimetableAdapter"; @@ -199,4 +198,4 @@ public class TimetableAdapter extends RecyclerView.Adapter weekEnd || i < weekBeginning) { pageTitle.append(", ").append(date.getStringDm()); } - adapter.addFragment(registerTimetableDayFragment, pageTitle.toString()); + adapter.addFragment(timetableDayFragment, pageTitle.toString()); date.stepForward(0, 0, 1); } viewPager.setAdapter(adapter); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/activities/QrScannerActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/webpush/QrScannerActivity.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/activities/QrScannerActivity.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/webpush/QrScannerActivity.java index bd91328c..b9028ac5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/activities/QrScannerActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/webpush/QrScannerActivity.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.activities; +package pl.szczodrzynski.edziennik.ui.modules.webpush; import android.Manifest; import android.content.pm.PackageManager; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/activities/WebPushConfigActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/webpush/WebPushConfigActivity.java similarity index 98% rename from app/src/main/java/pl/szczodrzynski/edziennik/activities/WebPushConfigActivity.java rename to app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/webpush/WebPushConfigActivity.java index 916416e0..dcb652dd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/activities/WebPushConfigActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/webpush/WebPushConfigActivity.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.activities; +package pl.szczodrzynski.edziennik.ui.modules.webpush; import android.Manifest; import android.content.pm.PackageManager; @@ -43,7 +43,7 @@ import pl.szczodrzynski.edziennik.utils.Themes; import pl.szczodrzynski.edziennik.utils.Utils; import static pl.szczodrzynski.edziennik.App.APP_URL; -import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED; +import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED; public class WebPushConfigActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler { private static final String TAG = "WebPushConfigActivity"; @@ -296,4 +296,4 @@ public class WebPushConfigActivity extends AppCompatActivity implements ZXingSca } super.onBackPressed(); } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/Colors.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/Colors.java index f01da724..ce9cdbcf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/Colors.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/Colors.java @@ -10,7 +10,7 @@ import android.graphics.drawable.StateListDrawable; import android.graphics.drawable.shapes.RoundRectShape; import android.os.Build; import androidx.core.graphics.ColorUtils; -import pl.szczodrzynski.edziennik.datamodels.Grade; +import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade; import java.security.MessageDigest; import java.util.Arrays; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/AppConfig.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/AppConfig.java similarity index 88% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/AppConfig.java rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/AppConfig.java index 05a6d362..2aefccf0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/AppConfig.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/AppConfig.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.models; +package pl.szczodrzynski.edziennik.utils.models; import android.util.Pair; @@ -12,10 +12,10 @@ import pl.szczodrzynski.edziennik.BuildConfig; import pl.szczodrzynski.edziennik.MainActivity; import pl.szczodrzynski.edziennik.widgets.WidgetConfig; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_IUCZNIOWIE; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_LIBRUS; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; -import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_VULCAN; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_IUCZNIOWIE; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_LIBRUS; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK; +import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_VULCAN; public class AppConfig { private static final String TAG = "AppConfig"; @@ -38,7 +38,7 @@ public class AppConfig { miniDrawerButtonIds.add(MainActivity.DRAWER_ITEM_AGENDA); miniDrawerButtonIds.add(MainActivity.DRAWER_ITEM_GRADES); miniDrawerButtonIds.add(MainActivity.DRAWER_ITEM_MESSAGES); - miniDrawerButtonIds.add(MainActivity.DRAWER_ITEM_HOMEWORKS); + miniDrawerButtonIds.add(MainActivity.DRAWER_ITEM_HOMEWORK); miniDrawerButtonIds.add(MainActivity.DRAWER_ITEM_SETTINGS); fcmToken = ""; fcmTokens = new TreeMap<>(); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/Date.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java similarity index 99% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/Date.java rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java index 1c609f2b..3b69cdc9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/Date.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.models; +package pl.szczodrzynski.edziennik.utils.models; import androidx.annotation.NonNull; @@ -222,4 +222,4 @@ public class Date implements Comparable { ", day=" + day + '}'; } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/Endpoint.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Endpoint.java similarity index 90% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/Endpoint.java rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Endpoint.java index 56b4f239..79bfaacf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/Endpoint.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Endpoint.java @@ -1,6 +1,4 @@ -package pl.szczodrzynski.edziennik.models; - -import androidx.annotation.StringRes; +package pl.szczodrzynski.edziennik.utils.models; import java.util.List; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/ItemGradesSubjectModel.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/ItemGradesSubjectModel.java similarity index 92% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/ItemGradesSubjectModel.java rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/ItemGradesSubjectModel.java index 48f04b27..2d2bc614 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/ItemGradesSubjectModel.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/ItemGradesSubjectModel.java @@ -1,10 +1,10 @@ -package pl.szczodrzynski.edziennik.models; +package pl.szczodrzynski.edziennik.utils.models; import java.util.List; -import pl.szczodrzynski.edziennik.datamodels.GradeFull; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.datamodels.Subject; +import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeFull; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject; public class ItemGradesSubjectModel { public Profile profile; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/ItemTimetableModel.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/ItemTimetableModel.java similarity index 65% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/ItemTimetableModel.java rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/ItemTimetableModel.java index 515f6dc0..e9527793 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/ItemTimetableModel.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/ItemTimetableModel.java @@ -1,9 +1,9 @@ -package pl.szczodrzynski.edziennik.models; +package pl.szczodrzynski.edziennik.utils.models; import java.util.List; -import pl.szczodrzynski.edziennik.datamodels.Event; -import pl.szczodrzynski.edziennik.datamodels.LessonFull; +import pl.szczodrzynski.edziennik.data.db.modules.events.Event; +import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull; public class ItemTimetableModel { public LessonFull lesson; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/ItemWidgetTimetableModel.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/ItemWidgetTimetableModel.java similarity index 94% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/ItemWidgetTimetableModel.java rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/ItemWidgetTimetableModel.java index 15f09f08..479845da 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/ItemWidgetTimetableModel.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/ItemWidgetTimetableModel.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.models; +package pl.szczodrzynski.edziennik.utils.models; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/NavTarget.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/NavTarget.kt similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/NavTarget.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/NavTarget.kt index 38389c83..5e707993 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/NavTarget.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/NavTarget.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.models +package pl.szczodrzynski.edziennik.utils.models import androidx.fragment.app.Fragment import com.mikepenz.iconics.typeface.IIcon @@ -88,4 +88,4 @@ data class NavTarget( this.subItems = items return this } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/Notification.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Notification.java similarity index 99% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/Notification.java rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Notification.java index 6d420358..047cd16f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/Notification.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Notification.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.models; +package pl.szczodrzynski.edziennik.utils.models; import android.content.Context; import android.content.Intent; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/Time.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Time.java similarity index 97% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/Time.java rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Time.java index f990df1a..07b1c422 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/Time.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Time.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.models; +package pl.szczodrzynski.edziennik.utils.models; import java.util.Calendar; @@ -56,6 +56,9 @@ public class Time { return this; } + /** + * HHMMSS + */ public static Time fromHms(String time) { try { @@ -67,6 +70,9 @@ public class Time { } } + /** + * HH:MM + */ public static Time fromH_m(String time) { try { @@ -78,6 +84,9 @@ public class Time { } } + /** + * HH:MM:SS + */ public static Time fromH_m_s(String time) { try { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/db/UnreadCounter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/UnreadCounter.kt similarity index 87% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/db/UnreadCounter.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/UnreadCounter.kt index 04530296..73fbb1a8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/db/UnreadCounter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/UnreadCounter.kt @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.models.db +package pl.szczodrzynski.edziennik.utils.models import pl.szczodrzynski.navlib.drawer.IUnreadCounter diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/models/Week.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Week.java similarity index 76% rename from app/src/main/java/pl/szczodrzynski/edziennik/models/Week.java rename to app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Week.java index 33a5866b..309466c8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/models/Week.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Week.java @@ -1,4 +1,4 @@ -package pl.szczodrzynski.edziennik.models; +package pl.szczodrzynski.edziennik.utils.models; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -15,7 +15,7 @@ public class Week { public static int SATURDAY = 5; public static int SUNDAY = 6; - public static pl.szczodrzynski.edziennik.models.Date getNearestWeekDayDate(int day) + public static pl.szczodrzynski.edziennik.utils.models.Date getNearestWeekDayDate(int day) { Calendar c = Calendar.getInstance(); int dayDiff = day - getTodayWeekDay(); @@ -23,21 +23,21 @@ public class Week { dayDiff = 7 + dayDiff; } c.setTimeInMillis(c.getTimeInMillis() + (dayDiff * 24 * 60 * 60 * 1000)); - return new pl.szczodrzynski.edziennik.models.Date(c.get(Calendar.YEAR), c.get(Calendar.MONTH)+1, c.get(Calendar.DAY_OF_MONTH)); + return new pl.szczodrzynski.edziennik.utils.models.Date(c.get(Calendar.YEAR), c.get(Calendar.MONTH)+1, c.get(Calendar.DAY_OF_MONTH)); } - public static pl.szczodrzynski.edziennik.models.Date getWeekStart() { - pl.szczodrzynski.edziennik.models.Date date = pl.szczodrzynski.edziennik.models.Date.getToday(); + public static pl.szczodrzynski.edziennik.utils.models.Date getWeekStart() { + pl.szczodrzynski.edziennik.utils.models.Date date = pl.szczodrzynski.edziennik.utils.models.Date.getToday(); date.stepForward(0, 0, -date.getWeekDay()); return date; } - public static pl.szczodrzynski.edziennik.models.Date getWeekEnd() { - pl.szczodrzynski.edziennik.models.Date date = pl.szczodrzynski.edziennik.models.Date.getToday(); + public static pl.szczodrzynski.edziennik.utils.models.Date getWeekEnd() { + pl.szczodrzynski.edziennik.utils.models.Date date = pl.szczodrzynski.edziennik.utils.models.Date.getToday(); date.stepForward(0, 0, 6-date.getWeekDay()); return date; } - public static int getWeekDayFromDate(pl.szczodrzynski.edziennik.models.Date date) + public static int getWeekDayFromDate(pl.szczodrzynski.edziennik.utils.models.Date date) { Calendar c = Calendar.getInstance(); c.set(date.year, date.month - 1, date.day); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/WidgetConfigActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/WidgetConfigActivity.java index 9649cc0b..4004109c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/WidgetConfigActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/WidgetConfigActivity.java @@ -3,22 +3,15 @@ package pl.szczodrzynski.edziennik.widgets; import android.app.Activity; import android.app.WallpaperManager; import android.appwidget.AppWidgetManager; -import android.content.ComponentName; import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.ColorDrawable; -import android.media.ThumbnailUtils; import android.os.AsyncTask; import android.os.Bundle; import android.widget.SeekBar; -import androidx.core.graphics.drawable.RoundedBitmapDrawable; -import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory; - import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.simplelist.MaterialSimpleListAdapter; import com.afollestad.materialdialogs.simplelist.MaterialSimpleListItem; @@ -29,12 +22,11 @@ import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.WidgetTimetable; import pl.szczodrzynski.edziennik.databinding.DialogWidgetConfigBinding; -import pl.szczodrzynski.edziennik.datamodels.Profile; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; import pl.szczodrzynski.edziennik.widgets.luckynumber.WidgetLuckyNumber; import pl.szczodrzynski.edziennik.widgets.notifications.WidgetNotifications; import static pl.szczodrzynski.edziennik.ExtensionsKt.filterOutArchived; -import static pl.szczodrzynski.edziennik.utils.Utils.d; public class WidgetConfigActivity extends Activity { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/luckynumber/WidgetLuckyNumber.java b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/luckynumber/WidgetLuckyNumber.java index df6bfefb..60f4dce1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/luckynumber/WidgetLuckyNumber.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/luckynumber/WidgetLuckyNumber.java @@ -24,8 +24,8 @@ import java.lang.reflect.Method; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; -import pl.szczodrzynski.edziennik.datamodels.Profile; -import pl.szczodrzynski.edziennik.models.Date; +import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile; +import pl.szczodrzynski.edziennik.utils.models.Date; import pl.szczodrzynski.edziennik.sync.SyncJob; import pl.szczodrzynski.edziennik.widgets.WidgetConfig; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/notifications/WidgetNotificationsListProvider.java b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/notifications/WidgetNotificationsListProvider.java index ff655dca..b3da2ee6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/notifications/WidgetNotificationsListProvider.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/notifications/WidgetNotificationsListProvider.java @@ -7,13 +7,10 @@ import android.util.Log; import android.widget.RemoteViews; import android.widget.RemoteViewsService; -import java.util.List; - import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.ItemWidgetTimetableModel; -import pl.szczodrzynski.edziennik.models.Notification; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Notification; public class WidgetNotificationsListProvider implements RemoteViewsService.RemoteViewsFactory { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/LessonDetailsActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/LessonDetailsActivity.java index 12f7c157..7be441e6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/LessonDetailsActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/LessonDetailsActivity.java @@ -14,9 +14,9 @@ import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.MainActivity; import pl.szczodrzynski.edziennik.WidgetTimetable; -import pl.szczodrzynski.edziennik.dialogs.EventListDialog; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.ui.dialogs.event.EventListDialog; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.Time; import pl.szczodrzynski.edziennik.utils.Themes; import static android.content.Intent.FLAG_ACTIVITY_REORDER_TO_FRONT; @@ -68,4 +68,4 @@ public class LessonDetailsActivity extends AppCompatActivity { Toast.makeText(app, R.string.error_reading_lesson_details, Toast.LENGTH_SHORT).show(); finish(); } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/WidgetTimetableListProvider.java b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/WidgetTimetableListProvider.java index 01e3475f..2872c15f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/WidgetTimetableListProvider.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/WidgetTimetableListProvider.java @@ -28,9 +28,9 @@ import java.util.List; import pl.szczodrzynski.edziennik.R; import pl.szczodrzynski.edziennik.WidgetTimetable; -import pl.szczodrzynski.edziennik.models.Date; -import pl.szczodrzynski.edziennik.models.ItemWidgetTimetableModel; -import pl.szczodrzynski.edziennik.models.Time; +import pl.szczodrzynski.edziennik.utils.models.Date; +import pl.szczodrzynski.edziennik.utils.models.ItemWidgetTimetableModel; +import pl.szczodrzynski.edziennik.utils.models.Time; public class WidgetTimetableListProvider implements RemoteViewsService.RemoteViewsFactory { @@ -308,4 +308,4 @@ public class WidgetTimetableListProvider implements RemoteViewsService.RemoteVie public boolean hasStableIds() { return true; } -} \ No newline at end of file +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/WidgetTimetableService.java b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/WidgetTimetableService.java index eedc3f5b..594fe591 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/WidgetTimetableService.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/widgets/timetable/WidgetTimetableService.java @@ -3,8 +3,6 @@ package pl.szczodrzynski.edziennik.widgets.timetable; import android.content.Intent; import android.widget.RemoteViewsService; -import pl.szczodrzynski.edziennik.widgets.timetable.WidgetTimetableListProvider; - public class WidgetTimetableService extends RemoteViewsService { /* * So pretty simple just defining the Adapter of the listview @@ -16,4 +14,4 @@ public class WidgetTimetableService extends RemoteViewsService { return (new WidgetTimetableListProvider(this.getApplicationContext(), intent)); } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/messages_compose_activity.xml b/app/src/main/res/layout/activity_compose_message.xml similarity index 97% rename from app/src/main/res/layout/messages_compose_activity.xml rename to app/src/main/res/layout/activity_compose_message.xml index d826b83b..ce5cb2e3 100644 --- a/app/src/main/res/layout/messages_compose_activity.xml +++ b/app/src/main/res/layout/activity_compose_message.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - tools:context=".messages.MessagesComposeActivity"> + tools:context=".ui.modules.messages.MessagesComposeActivity"> - \ No newline at end of file + diff --git a/app/src/main/res/layout/activity_feedback.xml b/app/src/main/res/layout/activity_feedback.xml index 59860d56..503b0e60 100644 --- a/app/src/main/res/layout/activity_feedback.xml +++ b/app/src/main/res/layout/activity_feedback.xml @@ -7,7 +7,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - tools:context=".activities.FeedbackActivity"> + tools:context=".ui.modules.feedback.FeedbackActivity"> - \ No newline at end of file + diff --git a/app/src/main/res/layout/activity_web_push_config.xml b/app/src/main/res/layout/activity_web_push_config.xml index eee650a6..17e62ec6 100644 --- a/app/src/main/res/layout/activity_web_push_config.xml +++ b/app/src/main/res/layout/activity_web_push_config.xml @@ -17,147 +17,154 @@ android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> - - - + android:layout_height="match_parent"> - - - - - - - + android:text="Przekazywanie powiadomień pozwala przesyłać wszystkie powiadomienia z tego urządzenia na wszystkie sparowane komputery, widoczne poniżej.\n\nPowiadomienia będą się wyświetlać w przeglądarce, w okienku pop-up, w prawym dolnym rogu ekranu.\n\nLista komputerów docelowych jest niezależna od wybranego profilu ucznia." /> - +