) -> 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." />
-
+
-
+ -->
-
+
-
+
-
+
-
+
-
+ android:layout_marginStart="8dp"
+ android:layout_marginLeft="8dp"
+ android:layout_marginTop="@dimen/section_margin_top"
+ android:layout_marginEnd="8dp"
+ android:layout_marginRight="8dp"
+ android:orientation="vertical">
-
+
+
+
+
+
-
-
-
-
-
-
-
-
+ android:layout_margin="8dp"
+ android:orientation="vertical">
-
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/agenda_event_lesson_change.xml b/app/src/main/res/layout/agenda_event_lesson_change.xml
index 36a9a36d..c51f9b35 100644
--- a/app/src/main/res/layout/agenda_event_lesson_change.xml
+++ b/app/src/main/res/layout/agenda_event_lesson_change.xml
@@ -9,8 +9,8 @@
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/agenda_event_teacher_absence.xml b/app/src/main/res/layout/agenda_event_teacher_absence.xml
new file mode 100644
index 00000000..785256d0
--- /dev/null
+++ b/app/src/main/res/layout/agenda_event_teacher_absence.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/dialog_event_list.xml b/app/src/main/res/layout/dialog_event_list.xml
index d1ff5684..f71208a8 100644
--- a/app/src/main/res/layout/dialog_event_list.xml
+++ b/app/src/main/res/layout/dialog_event_list.xml
@@ -1,25 +1,38 @@
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+
@@ -27,6 +40,8 @@
android:id="@+id/eventListLessonDetails"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginLeft="24dp"
+ android:layout_marginRight="24dp"
android:orientation="vertical">
+
+
+
+
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_grade_details.xml b/app/src/main/res/layout/dialog_grade_details.xml
index d875abd5..52d8a8d2 100644
--- a/app/src/main/res/layout/dialog_grade_details.xml
+++ b/app/src/main/res/layout/dialog_grade_details.xml
@@ -5,11 +5,11 @@
-
-
+
+
+ type="pl.szczodrzynski.edziennik.data.db.modules.grades.GradeFull" />
diff --git a/app/src/main/res/layout/dialog_lesson_change_list.xml b/app/src/main/res/layout/dialog_lesson_change_list.xml
index c43f50df..bc99ba3a 100644
--- a/app/src/main/res/layout/dialog_lesson_change_list.xml
+++ b/app/src/main/res/layout/dialog_lesson_change_list.xml
@@ -1,14 +1,15 @@
-
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_teacher_absence_list.xml b/app/src/main/res/layout/dialog_teacher_absence_list.xml
new file mode 100644
index 00000000..e29a6a4b
--- /dev/null
+++ b/app/src/main/res/layout/dialog_teacher_absence_list.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_register_agenda_calendar.xml b/app/src/main/res/layout/fragment_agenda_calendar.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_register_agenda_calendar.xml
rename to app/src/main/res/layout/fragment_agenda_calendar.xml
diff --git a/app/src/main/res/layout/fragment_register_agenda_default.xml b/app/src/main/res/layout/fragment_agenda_default.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_register_agenda_default.xml
rename to app/src/main/res/layout/fragment_agenda_default.xml
diff --git a/app/src/main/res/layout/fragment_register_school_notices.xml b/app/src/main/res/layout/fragment_announcements.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_register_school_notices.xml
rename to app/src/main/res/layout/fragment_announcements.xml
diff --git a/app/src/main/res/layout/fragment_register_attendances.xml b/app/src/main/res/layout/fragment_attendance.xml
similarity index 97%
rename from app/src/main/res/layout/fragment_register_attendances.xml
rename to app/src/main/res/layout/fragment_attendance.xml
index c8992f78..c0ddb3d4 100644
--- a/app/src/main/res/layout/fragment_register_attendances.xml
+++ b/app/src/main/res/layout/fragment_attendance.xml
@@ -27,7 +27,7 @@
android:orientation="vertical">
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/fragment_register_notices.xml b/app/src/main/res/layout/fragment_behaviour.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_register_notices.xml
rename to app/src/main/res/layout/fragment_behaviour.xml
diff --git a/app/src/main/res/layout/fragment_debug.xml b/app/src/main/res/layout/fragment_debug.xml
index 2608ac75..6dd2413c 100644
--- a/app/src/main/res/layout/fragment_debug.xml
+++ b/app/src/main/res/layout/fragment_debug.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".fragments.DebugFragment">
+ tools:context=".ui.modules.base.DebugFragment">
+ tools:context=".ui.modules.home.HomeFragment">
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/fragment_homework.xml b/app/src/main/res/layout/fragment_homework.xml
new file mode 100644
index 00000000..91d904be
--- /dev/null
+++ b/app/src/main/res/layout/fragment_homework.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_register_messages_web.xml b/app/src/main/res/layout/fragment_messages_web.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_register_messages_web.xml
rename to app/src/main/res/layout/fragment_messages_web.xml
diff --git a/app/src/main/res/layout/fragment_register_notifications.xml b/app/src/main/res/layout/fragment_notifications.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_register_notifications.xml
rename to app/src/main/res/layout/fragment_notifications.xml
diff --git a/app/src/main/res/layout/fragment_register_homeworks.xml b/app/src/main/res/layout/fragment_register_homeworks.xml
deleted file mode 100644
index 1bca5365..00000000
--- a/app/src/main/res/layout/fragment_register_homeworks.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_register_timetable.xml b/app/src/main/res/layout/fragment_timetable.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_register_timetable.xml
rename to app/src/main/res/layout/fragment_timetable.xml
diff --git a/app/src/main/res/layout/fragment_register_timetable_day.xml b/app/src/main/res/layout/fragment_timetable_day.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_register_timetable_day.xml
rename to app/src/main/res/layout/fragment_timetable_day.xml
diff --git a/app/src/main/res/layout/homework_list.xml b/app/src/main/res/layout/homework_list.xml
new file mode 100644
index 00000000..bfcc4960
--- /dev/null
+++ b/app/src/main/res/layout/homework_list.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/messages_list.xml b/app/src/main/res/layout/messages_list.xml
index 2021cf68..e3eca8fe 100644
--- a/app/src/main/res/layout/messages_list.xml
+++ b/app/src/main/res/layout/messages_list.xml
@@ -5,20 +5,14 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
-
-
+ android:layout_height="match_parent"
+ android:clipChildren="false"
+ android:transitionGroup="false"
+ tools:listitem="@layout/messages_item"
+ tools:targetApi="lollipop" />
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/row_dialog_teacher_absence_item.xml b/app/src/main/res/layout/row_dialog_teacher_absence_item.xml
new file mode 100644
index 00000000..6aacce23
--- /dev/null
+++ b/app/src/main/res/layout/row_dialog_teacher_absence_item.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/row_homeworks_item.xml b/app/src/main/res/layout/row_homework_item.xml
similarity index 91%
rename from app/src/main/res/layout/row_homeworks_item.xml
rename to app/src/main/res/layout/row_homework_item.xml
index a7067e77..629bac4a 100644
--- a/app/src/main/res/layout/row_homeworks_item.xml
+++ b/app/src/main/res/layout/row_homework_item.xml
@@ -7,7 +7,7 @@
android:orientation="vertical">
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/row_dialog_lesson_change_item.xml b/app/src/main/res/layout/row_lesson_change_item.xml
similarity index 89%
rename from app/src/main/res/layout/row_dialog_lesson_change_item.xml
rename to app/src/main/res/layout/row_lesson_change_item.xml
index dad07f00..2ba7ea25 100644
--- a/app/src/main/res/layout/row_dialog_lesson_change_item.xml
+++ b/app/src/main/res/layout/row_lesson_change_item.xml
@@ -1,7 +1,7 @@
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/row_teacher_absence_item.xml b/app/src/main/res/layout/row_teacher_absence_item.xml
new file mode 100644
index 00000000..4f40e05a
--- /dev/null
+++ b/app/src/main/res/layout/row_teacher_absence_item.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/navigation/nav_login.xml b/app/src/main/res/navigation/nav_login.xml
index 9c2b1bba..825b646f 100644
--- a/app/src/main/res/navigation/nav_login.xml
+++ b/app/src/main/res/navigation/nav_login.xml
@@ -6,7 +6,7 @@
-
\ No newline at end of file
+
diff --git a/app/src/main/res/navigation/nav_main.xml b/app/src/main/res/navigation/nav_main.xml
deleted file mode 100644
index b161f2f4..00000000
--- a/app/src/main/res/navigation/nav_main.xml
+++ /dev/null
@@ -1,148 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index c005d191..82f32af5 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -69,8 +69,8 @@
Releases:
All subjects
Summary - loading…
- Summary - semester %d
- Summary - all year
+ Summary - semester %d
+ Summary - all year
Back
Adjust the bell sync time. Format: ±H:MM:SS
Incorrect format
@@ -287,11 +287,7 @@
Help
Notification forwarding allows you to pair a PC web browser to receive notifications on your desktop. This includes new grades, events, homework etc.\n\nClick \"Notification forwarding\" to begin.
Registraton will run automatically on the first login.\n\nThere will be some data sent to the app server:\n- your school and class ID\n- your e-register username\n- your first and last name\n\nThe only data visible to others is your name (when sharing events). Any private data (like password, grades etc.) won\'t be sent anywhere. Learn more in the Privacy policy.
- There is no current homework.
- Current homework
Edit
- No previous homework.
- Past homework
I agree
I disagree
Incorrect format
@@ -405,7 +401,7 @@
Add a new student
Agenda
Notice board
- Attendance
+ Attendance
Grades
Grade editing simulator
Help
@@ -548,7 +544,7 @@
Open-source licenses
Privacy policy
E-register
- © Kuba Szczodrzyński September 2019
+ © Kuba Szczodrzyński September 2018 - October 2019
Click to check for updates
Update
Version
@@ -602,12 +598,12 @@
Share exams in your class
Enable Event sharing
Notice board
- Attendances
+ Attendances
Class free days
Classrooms
Events/agenda
Grades
- Homework
+ Homework
Lucky number
Messages - received
Messages - sent
@@ -684,7 +680,7 @@
Getting account info
Getting notice board
Getting attendance types
- Getting attendance
+ Getting attendance
Getting behaviour grades categories
Getting behaviour grades
Getting agenda
@@ -751,9 +747,9 @@
Syncing agenda…
All
Syncing announcements…
- Syncing attendances…
+ Syncing attendance…
Syncing grades…
- Syncing homeworks…
+ Syncing homework…
Syncing received messages…
Syncing sent messages…
Syncing notices…
@@ -827,4 +823,36 @@
yesterday
You\'re offline. Try enabling Wi-Fi or mobile data.
Internet connection
-
\ No newline at end of file
+ Current
+ Past
+ There is no homework.
+ By date
+ By subject
+ LIBRUS account has lost connection with the Synergia account. Login on portal.librus.pl or in the Librus mobile app and follow the instructions to fix the problem.
+ Compose
+ Add a new profile
+ Add or remove students\' profiles
+ Wrong module given: %d Report it to the application developer
+ Add event
+ Save own event or homework in the agenda
+ Change Agenda view
+ Debugging
+ Help and FAQ
+ Save the timetable as an image
+ Generates timetable for the whole week
+ End-of-year average calculation method
+ Grade averages
+ Show semester and end-of-year averages
+ Grades color
+ Sort grades
+ Message
+ Set your register number
+ Add an attachment
+ Abort message
+ Save draft
+ Send
+ Absent teachers
+ Getting grade comments
+ Getting school free days
+ Show teacher absences in Agenda
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f8cf2a36..2cae0111 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -76,8 +76,8 @@
Zwolnienia:
Wszystkie przedmioty
Podsumowanie - ładowanie…
- Podsumowanie - semestr %d
- Podsumowanie - cały rok
+ Podsumowanie - semestr %d
+ Podsumowanie - cały rok
Wróć
Dostosuj wartość przesunięcia dzwonka. Format: ±H:MM:SS
Nieprawidłowy format
@@ -308,13 +308,9 @@
Pomoc
Przekazywanie powiadomień umożliwia sparowanie z przeglądarką internetową w celu wysyłania wszystkich powiadomień z aplikacji na komputer. Można do nich zaliczyć np. nowe oceny, wydarzenia, zadania domowe itp.\n\nKliknij \"Przekazywanie powiadomień\", aby rozpocząć.
Rejestracja odbędzie się automatycznie przy pierwszym logowaniu do e-dziennika.\n\nDo poprawnego działania funkcji zostaną przesłane:\n- Twój identyfikator szkoły i klasy\n- Twoja nazwa użytkownika do e-dziennika\n- Twoje imię i nazwisko\n\nJedyne dane widoczne dla innych osób z twojej klasy to Imię i Nazwisko podczas udostępniania wydarzeń. Nie zostaną wysłane żadne prywatne dane, takie jak hasła, oceny itp. Dowiedz się więcej w Polityce Prywatności.
- Brak aktualnych zadań domowych.
- Aktualne zadania
Edytuj
- Brak poprzednich zadań domowych.
- Poprzednie zadania
- %s, %s
- %s %s
+ %s, %s
+ %s %s
Zgadzam się
Nie zgadzam się
Nieprawidłowy format
@@ -429,7 +425,7 @@
Dodaj nowego ucznia
Terminarz
Tablica ogłoszeń
- Frekwencja
+ Frekwencja
Zapisz plan lekcji jako obraz
Generuje plan lekcji na cały tydzień
Oceny
@@ -593,7 +589,7 @@
Licencje open-source
Polityka prywatności
E-dziennik
- © Kuba Szczodrzyński wrzesień 2019
+ © Kuba Szczodrzyński wrzesień 2018 - październik 2019
Kliknij, aby sprawdzić aktualizacje
Aktualizacja
Wersja
@@ -647,12 +643,12 @@
Udostępniaj sprawdziany w swojej klasie
Włącz Udostępnianie wydarzeń
Tablica ogłoszeń
- Obecności/nieobecności
+ Obecności/nieobecności
Dni wolne klasy
Sale lekcyjne
Wydarzenia/terminarz
Oceny
- Zadania domowe
+ Zadania domowe
Szczęśliwy numerek
Wiadomości odebrane
Wiadomości wysłane
@@ -730,7 +726,7 @@
Pobieranie informacji o koncie
Pobieranie ogłoszeń szkolnych
Pobieranie kategorii obecności
- Pobieranie obecności
+ Pobieranie obecności
Pobieranie kategorii ocen z zachowania
Pobieranie ocen z zachowania
Pobieranie kalendarza
@@ -798,9 +794,9 @@
Pobieram terminarz…
Wszystkie
Pobieram tablicę ogłoszeń…
- Pobieram obecności…
+ Pobieram obecności…
Pobieram oceny…
- Pobieram zadania domowe…
+ Pobieram zadania domowe…
Pobieram wiadomości odebrane…
Pobieram wiadomości wysłane…
Pobieram uwagi…
@@ -921,4 +917,11 @@
Zgłaszanie błędów...
Zgłaszanie błędów
Pobieram informacje o uczniu...
+ Pobieranie dni wolnych szkoły
+ Aktualne
+ Minione
+ Brak zadań domowych.
+ Nieobecni nauczyciele
+ Pobieranie komentarzy ocen
+ Pokazuj nieobecności nauczycieli w Terminarzu
diff --git a/app/src/main/res/xml/widget_lucky_number_info.xml b/app/src/main/res/xml/widget_lucky_number_info.xml
index e768ceaa..18721b35 100644
--- a/app/src/main/res/xml/widget_lucky_number_info.xml
+++ b/app/src/main/res/xml/widget_lucky_number_info.xml
@@ -12,4 +12,4 @@
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen"
android:configure="pl.szczodrzynski.edziennik.widgets.WidgetConfigActivity"
- tools:ignore="UnusedAttribute" />
\ No newline at end of file
+ tools:ignore="UnusedAttribute" />
diff --git a/app/src/main/res/xml/widget_notifications_info.xml b/app/src/main/res/xml/widget_notifications_info.xml
index b4931451..e15ea4b9 100644
--- a/app/src/main/res/xml/widget_notifications_info.xml
+++ b/app/src/main/res/xml/widget_notifications_info.xml
@@ -12,4 +12,4 @@
android:updatePeriodMillis="5400000"
android:widgetCategory="home_screen"
android:configure="pl.szczodrzynski.edziennik.widgets.WidgetConfigActivity"
- tools:ignore="UnusedAttribute" />
\ No newline at end of file
+ tools:ignore="UnusedAttribute" />
diff --git a/app/src/main/res/xml/widget_timetable_info.xml b/app/src/main/res/xml/widget_timetable_info.xml
index e8b8dadb..a549737f 100644
--- a/app/src/main/res/xml/widget_timetable_info.xml
+++ b/app/src/main/res/xml/widget_timetable_info.xml
@@ -12,4 +12,4 @@
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen"
android:configure="pl.szczodrzynski.edziennik.widgets.WidgetConfigActivity"
- tools:ignore="UnusedAttribute" />
\ No newline at end of file
+ tools:ignore="UnusedAttribute" />
diff --git a/build.gradle b/build.gradle
index 3fb254a7..ca180a12 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,8 +5,8 @@ buildscript {
kotlin_version = '1.3.50'
release = [
- versionName: "3.0",
- versionCode: 3000099
+ versionName: "3.1",
+ versionCode: 3010099
]
setup = [
@@ -44,7 +44,7 @@ buildscript {
iconics : "4.0.1-b02",
font_cmd : "3.5.95.1-kotlin",
- navlib : "84d6447887",
+ navlib : "e4ad01dc87",
gifdrawable : "1.2.15"
]