diff --git a/app/build.gradle b/app/build.gradle index 78048551..a1ebcdcc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 27 - buildToolsVersion "27.0.0" + buildToolsVersion "27.0.1" defaultConfig { applicationId "io.github.wulkanowy" testApplicationId "io.github.tests.wulkanowy" @@ -44,25 +44,23 @@ greendao { } dependencies { - compile 'com.android.support:appcompat-v7:27.0.0' + compile 'com.android.support:appcompat-v7:27.0.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' - compile 'com.android.support:design:27.0.0' - compile 'com.android.support:support-vector-drawable:27.0.0' - compile 'com.android.support:support-v4:27.0.0' - compile 'com.android.support:recyclerview-v7:27.0.0' - compile 'com.android.support:cardview-v7:27.0.0' + compile 'com.android.support:design:27.0.1' + compile 'com.android.support:support-vector-drawable:27.0.1' + compile 'com.android.support:support-v4:27.0.1' + compile 'com.android.support:recyclerview-v7:27.0.1' + compile 'com.android.support:cardview-v7:27.0.1' + compile 'com.android.support:customtabs:27.0.1' compile 'com.firebase:firebase-jobdispatcher:0.8.4' compile 'com.thoughtbot:expandablerecyclerview:1.3' compile 'org.apache.commons:commons-lang3:3.6' compile 'org.apache.commons:commons-collections4:4.1' compile 'org.jsoup:jsoup:1.10.3' compile 'org.greenrobot:greendao:3.2.2' - compile 'com.android.support:customtabs:27.0.0' debugCompile 'com.amitshekhar.android:debug-db:1.0.1' debugCompile 'net.zetetic:android-database-sqlcipher:3.5.7@aar' - - androidTestCompile 'org.mockito:mockito-android:2.11.0' testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:2.11.0' @@ -70,8 +68,9 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:3.0.1', { exclude group: 'com.android.support', module: 'support-annotations' }) - androidTestCompile 'com.android.support:support-annotations:27.0.0' + androidTestCompile 'com.android.support:support-annotations:27.0.1' androidTestCompile 'com.android.support.test:runner:1.0.1' androidTestCompile 'com.android.support.test:rules:1.0.1' androidTestCompile 'org.hamcrest:hamcrest-library:1.3' + androidTestCompile 'org.mockito:mockito-android:2.11.0' } diff --git a/app/src/androidTest/java/io/github/wulkanowy/dao/DatabaseAccessTest.java b/app/src/androidTest/java/io/github/wulkanowy/dao/DatabaseAccessTest.java index 570526ee..f5270d29 100644 --- a/app/src/androidTest/java/io/github/wulkanowy/dao/DatabaseAccessTest.java +++ b/app/src/androidTest/java/io/github/wulkanowy/dao/DatabaseAccessTest.java @@ -37,7 +37,7 @@ public class DatabaseAccessTest extends DatabaseAccess { daoSession.getGradeDao().insert(new Grade() .setIsNew(true)); - Assert.assertEquals(1, DatabaseAccess.getNewGrades(daoSession).size()); + Assert.assertEquals(1, new DatabaseAccess().getNewGrades(daoSession).size()); } @AfterClass diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png index 0ddcb7d1..7cad5c2f 100644 Binary files a/app/src/main/ic_launcher-web.png and b/app/src/main/ic_launcher-web.png differ diff --git a/app/src/main/java/io/github/wulkanowy/activity/dashboard/DashboardActivity.java b/app/src/main/java/io/github/wulkanowy/activity/dashboard/DashboardActivity.java index bdfd18d6..d1243e29 100644 --- a/app/src/main/java/io/github/wulkanowy/activity/dashboard/DashboardActivity.java +++ b/app/src/main/java/io/github/wulkanowy/activity/dashboard/DashboardActivity.java @@ -66,17 +66,23 @@ public class DashboardActivity extends AppCompatActivity { setContentView(R.layout.activity_dashboard); BottomNavigationView navigation = findViewById(R.id.navigation); - navigation.setSelectedItemId(R.id.navigation_dashboard); + navigation.setSelectedItemId(R.id.navigation_marks); navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); if (savedInstanceState != null) { currentFragment = getSupportFragmentManager().getFragment(savedInstanceState, "currentFragment"); setTitle(savedInstanceState.getString("activityTitle")); } else { - currentFragment = boardFragment; + currentFragment = gradesFragment; setTitle(R.string.dashboard_text); } + int cardID = getIntent().getIntExtra("cardID", 0); + + if (cardID == 1) { + currentFragment = gradesFragment; + } + getSupportFragmentManager().beginTransaction() .replace(R.id.fragment_container, currentFragment).commit(); } diff --git a/app/src/main/java/io/github/wulkanowy/activity/dashboard/grades/GradesAdapter.java b/app/src/main/java/io/github/wulkanowy/activity/dashboard/grades/GradesAdapter.java index 9b62c1e5..00586211 100644 --- a/app/src/main/java/io/github/wulkanowy/activity/dashboard/grades/GradesAdapter.java +++ b/app/src/main/java/io/github/wulkanowy/activity/dashboard/grades/GradesAdapter.java @@ -86,7 +86,7 @@ public class GradesAdapter extends ExpandableRecyclerViewAdapter 7; } + private void hideSoftKeyboard() { + InputMethodManager manager = (InputMethodManager) + getSystemService(Context.INPUT_METHOD_SERVICE); + if (manager != null) { + manager.hideSoftInputFromWindow(getWindow() + .getDecorView().getApplicationWindowToken(), 0); + } + } + @Override public boolean dispatchTouchEvent(MotionEvent ev) { @@ -192,15 +202,13 @@ public class LoginActivity extends Activity { || ev.getAction() == MotionEvent.ACTION_MOVE) && view instanceof EditText && !view.getClass().getName().startsWith("android.webkit.")) { - int scrcoords[] = new int[2]; - view.getLocationOnScreen(scrcoords); - float x = ev.getRawX() + view.getLeft() - scrcoords[0]; - float y = ev.getRawY() + view.getTop() - scrcoords[1]; + int coordinators[] = new int[2]; + view.getLocationOnScreen(coordinators); + float x = ev.getRawX() + view.getLeft() - coordinators[0]; + float y = ev.getRawY() + view.getTop() - coordinators[1]; if (x < view.getLeft() || x > view.getRight() || y < view.getTop() || y > view.getBottom()) { - ((InputMethodManager) getSystemService( - Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow( - (getWindow().getDecorView().getApplicationWindowToken()), 0); + hideSoftKeyboard(); } } } diff --git a/app/src/main/java/io/github/wulkanowy/activity/login/LoginTask.java b/app/src/main/java/io/github/wulkanowy/activity/login/LoginTask.java index d8b5cbb4..fd219e2c 100644 --- a/app/src/main/java/io/github/wulkanowy/activity/login/LoginTask.java +++ b/app/src/main/java/io/github/wulkanowy/activity/login/LoginTask.java @@ -3,11 +3,13 @@ package io.github.wulkanowy.activity.login; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.support.design.widget.Snackbar; import android.support.design.widget.TextInputLayout; import android.view.View; +import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.TextView; @@ -118,6 +120,7 @@ public class LoginTask extends AsyncTask { EditText passwordView = activity.get().findViewById(R.id.password); passwordView.setError(activity.get().getString(R.string.error_incorrect_password)); passwordView.requestFocus(); + showSoftKeyboard(passwordView); break; // if no permission @@ -129,6 +132,7 @@ public class LoginTask extends AsyncTask { EditText symbolView = activity.get().findViewById(R.id.symbol); symbolView.setError(activity.get().getString(R.string.error_bad_account_permission)); symbolView.requestFocus(); + showSoftKeyboard(symbolView); break; default: @@ -156,6 +160,15 @@ public class LoginTask extends AsyncTask { changeProgressVisibility(show, animTime); } + private void showSoftKeyboard(EditText editText) { + InputMethodManager manager = (InputMethodManager) + activity.get().getSystemService(Context.INPUT_METHOD_SERVICE); + if (manager != null) { + manager.showSoftInput(editText, + InputMethodManager.SHOW_IMPLICIT); + } + } + private void changeLoginFormVisibility(final boolean show, final int animTime) { loginFormView.get().setVisibility(show ? View.GONE : View.VISIBLE); loginFormView.get().animate().setDuration(animTime).alpha( diff --git a/app/src/main/java/io/github/wulkanowy/api/grades/SubjectsList.java b/app/src/main/java/io/github/wulkanowy/api/grades/SubjectsList.java index 349f4606..89132eda 100644 --- a/app/src/main/java/io/github/wulkanowy/api/grades/SubjectsList.java +++ b/app/src/main/java/io/github/wulkanowy/api/grades/SubjectsList.java @@ -9,7 +9,6 @@ import java.util.ArrayList; import java.util.List; import io.github.wulkanowy.api.StudentAndParent; -import io.github.wulkanowy.api.login.LoginErrorException; public class SubjectsList { diff --git a/app/src/main/java/io/github/wulkanowy/api/notes/AchievementsList.java b/app/src/main/java/io/github/wulkanowy/api/notes/AchievementsList.java index 52a4bbcd..7c67f25b 100644 --- a/app/src/main/java/io/github/wulkanowy/api/notes/AchievementsList.java +++ b/app/src/main/java/io/github/wulkanowy/api/notes/AchievementsList.java @@ -8,7 +8,6 @@ import java.util.ArrayList; import java.util.List; import io.github.wulkanowy.api.StudentAndParent; -import io.github.wulkanowy.api.login.LoginErrorException; public class AchievementsList { diff --git a/app/src/main/java/io/github/wulkanowy/api/notes/NotesList.java b/app/src/main/java/io/github/wulkanowy/api/notes/NotesList.java index 5d1e920d..df24ae90 100644 --- a/app/src/main/java/io/github/wulkanowy/api/notes/NotesList.java +++ b/app/src/main/java/io/github/wulkanowy/api/notes/NotesList.java @@ -8,7 +8,6 @@ import java.util.ArrayList; import java.util.List; import io.github.wulkanowy.api.StudentAndParent; -import io.github.wulkanowy.api.login.LoginErrorException; public class NotesList { diff --git a/app/src/main/java/io/github/wulkanowy/api/school/SchoolInfo.java b/app/src/main/java/io/github/wulkanowy/api/school/SchoolInfo.java index 459e232c..2013fa17 100644 --- a/app/src/main/java/io/github/wulkanowy/api/school/SchoolInfo.java +++ b/app/src/main/java/io/github/wulkanowy/api/school/SchoolInfo.java @@ -5,7 +5,6 @@ import org.jsoup.nodes.Element; import java.io.IOException; import io.github.wulkanowy.api.StudentAndParent; -import io.github.wulkanowy.api.login.LoginErrorException; public class SchoolInfo { diff --git a/app/src/main/java/io/github/wulkanowy/api/school/TeachersInfo.java b/app/src/main/java/io/github/wulkanowy/api/school/TeachersInfo.java index fd17d21d..b56aabc5 100644 --- a/app/src/main/java/io/github/wulkanowy/api/school/TeachersInfo.java +++ b/app/src/main/java/io/github/wulkanowy/api/school/TeachersInfo.java @@ -9,7 +9,6 @@ import java.util.ArrayList; import java.util.List; import io.github.wulkanowy.api.StudentAndParent; -import io.github.wulkanowy.api.login.LoginErrorException; public class TeachersInfo { diff --git a/app/src/main/java/io/github/wulkanowy/api/user/FamilyInformation.java b/app/src/main/java/io/github/wulkanowy/api/user/FamilyInformation.java index 5315a5c5..0bb8d3c4 100644 --- a/app/src/main/java/io/github/wulkanowy/api/user/FamilyInformation.java +++ b/app/src/main/java/io/github/wulkanowy/api/user/FamilyInformation.java @@ -8,7 +8,6 @@ import java.util.ArrayList; import java.util.List; import io.github.wulkanowy.api.StudentAndParent; -import io.github.wulkanowy.api.login.LoginErrorException; public class FamilyInformation { diff --git a/app/src/main/java/io/github/wulkanowy/dao/DatabaseAccess.java b/app/src/main/java/io/github/wulkanowy/dao/DatabaseAccess.java index 0a18bd81..34a965df 100644 --- a/app/src/main/java/io/github/wulkanowy/dao/DatabaseAccess.java +++ b/app/src/main/java/io/github/wulkanowy/dao/DatabaseAccess.java @@ -8,9 +8,9 @@ import io.github.wulkanowy.dao.entities.DaoSession; import io.github.wulkanowy.dao.entities.Grade; import io.github.wulkanowy.dao.entities.GradeDao; -public abstract class DatabaseAccess { +public class DatabaseAccess { - public static List getNewGrades(DaoSession daoSession) { + public List getNewGrades(DaoSession daoSession) { Query gradeQuery = daoSession.getGradeDao().queryBuilder() .where(GradeDao.Properties.IsNew.eq(1)) .build(); diff --git a/app/src/main/java/io/github/wulkanowy/services/jobs/GradeJob.java b/app/src/main/java/io/github/wulkanowy/services/jobs/GradeJob.java index ddb850cf..a813b2ec 100644 --- a/app/src/main/java/io/github/wulkanowy/services/jobs/GradeJob.java +++ b/app/src/main/java/io/github/wulkanowy/services/jobs/GradeJob.java @@ -1,5 +1,9 @@ package io.github.wulkanowy.services.jobs; +import android.app.PendingIntent; +import android.content.Intent; +import android.support.v4.app.NotificationCompat; + import com.firebase.jobdispatcher.Constraint; import com.firebase.jobdispatcher.FirebaseJobDispatcher; import com.firebase.jobdispatcher.Job; @@ -8,16 +12,23 @@ import com.firebase.jobdispatcher.RetryStrategy; import com.firebase.jobdispatcher.Trigger; import java.io.IOException; +import java.util.List; +import java.util.Random; +import io.github.wulkanowy.R; import io.github.wulkanowy.activity.WulkanowyApp; +import io.github.wulkanowy.activity.dashboard.DashboardActivity; import io.github.wulkanowy.api.Vulcan; import io.github.wulkanowy.api.login.AccountPermissionException; import io.github.wulkanowy.api.login.BadCredentialsException; import io.github.wulkanowy.api.login.NotLoggedInErrorException; +import io.github.wulkanowy.dao.DatabaseAccess; import io.github.wulkanowy.dao.entities.DaoSession; +import io.github.wulkanowy.dao.entities.Grade; import io.github.wulkanowy.security.CryptoException; import io.github.wulkanowy.services.LoginSession; import io.github.wulkanowy.services.VulcanSynchronization; +import io.github.wulkanowy.services.notifications.NotificationHelper; public class GradeJob extends VulcanJobHelper { @@ -52,6 +63,28 @@ public class GradeJob extends VulcanJobHelper { VulcanSynchronization vulcanSynchronization = new VulcanSynchronization(new LoginSession()); vulcanSynchronization.loginCurrentUser(getApplicationContext(), daoSession, new Vulcan()); vulcanSynchronization.syncGrades(); + + List newGradeList = new DatabaseAccess().getNewGrades(daoSession); + + if (newGradeList.size() == 1) { + buildNotify(getResources().getQuantityString(R.plurals.newGradePlurals, 1), + newGradeList.get(0).getSubject()); + } else if (newGradeList.size() > 1) { + buildNotify(getResources().getQuantityString(R.plurals.newGradePlurals, 2), + getResources().getQuantityString(R.plurals.receivedNewGradePlurals, newGradeList.size(), newGradeList.size())); + } + } + + private void buildNotify(String title, String bodyText) { + Intent intent = new Intent(getApplicationContext(), DashboardActivity.class); + intent.putExtra("cardID", 1); + PendingIntent pendingIntent = PendingIntent + .getActivity(getApplicationContext(), 0, intent, 0); + + NotificationHelper notificationHelper = new NotificationHelper(getApplicationContext()); + NotificationCompat.Builder builder = notificationHelper + .getNotifications(title, bodyText, pendingIntent); + notificationHelper.getManager().notify(new Random().nextInt(10000), builder.build()); } } } diff --git a/app/src/main/java/io/github/wulkanowy/services/notifications/NotificationHelper.java b/app/src/main/java/io/github/wulkanowy/services/notifications/NotificationHelper.java new file mode 100644 index 00000000..65eb470b --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/services/notifications/NotificationHelper.java @@ -0,0 +1,60 @@ +package io.github.wulkanowy.services.notifications; + + +import android.annotation.TargetApi; +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.ContextWrapper; +import android.os.Build; +import android.support.v4.app.NotificationCompat; + +import io.github.wulkanowy.R; + +public class NotificationHelper extends ContextWrapper { + + private NotificationManager manager; + + public static final String CHANNEL_ID = "Wulkanowy_New_Grade_Channel"; + + public static final String CHANNEL_NAME = "New Grade Channel"; + + public NotificationHelper(Context context) { + super(context); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + createChannel(); + } + } + + @TargetApi(26) + private void createChannel() { + NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, + NotificationManager.IMPORTANCE_HIGH); + notificationChannel.enableLights(true); + notificationChannel.enableVibration(true); + notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC); + getManager().createNotificationChannel(notificationChannel); + } + + public NotificationCompat.Builder getNotifications(String title, String bodyText, PendingIntent pendingIntent) { + return new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID) + .setContentTitle(title) + .setContentText(bodyText) + .setSmallIcon(R.drawable.ic_notification) + .setAutoCancel(true) + .setContentIntent(pendingIntent) + .setChannelId(CHANNEL_ID) + .setDefaults(NotificationCompat.DEFAULT_ALL) + .setPriority(NotificationCompat.PRIORITY_HIGH) + .setColor(getResources().getColor(R.color.colorPrimary)); + } + + public NotificationManager getManager() { + if (manager == null) { + manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + } + return manager; + } +} diff --git a/app/src/main/java/io/github/wulkanowy/services/synchronisation/GradesSynchronisation.java b/app/src/main/java/io/github/wulkanowy/services/synchronisation/GradesSynchronisation.java index 9dc39903..2c9d486c 100644 --- a/app/src/main/java/io/github/wulkanowy/services/synchronisation/GradesSynchronisation.java +++ b/app/src/main/java/io/github/wulkanowy/services/synchronisation/GradesSynchronisation.java @@ -35,6 +35,9 @@ public class GradesSynchronisation { Account account = accountDao.load(loginSession.getUserId()); + account.resetGradeList(); + account.resetSubjectList(); + List gradesFromDb = account.getGradeList(); List gradeEntitiesList = ConversionVulcanObject.gradesToGradeEntities(gradesList.getAll()); List updatedList = EntitiesCompare.compareGradeList(gradeEntitiesList, gradesFromDb); diff --git a/app/src/main/java/io/github/wulkanowy/services/synchronisation/SubjectsSynchronisation.java b/app/src/main/java/io/github/wulkanowy/services/synchronisation/SubjectsSynchronisation.java index cb2d3a9b..1a3cdf57 100644 --- a/app/src/main/java/io/github/wulkanowy/services/synchronisation/SubjectsSynchronisation.java +++ b/app/src/main/java/io/github/wulkanowy/services/synchronisation/SubjectsSynchronisation.java @@ -3,7 +3,6 @@ package io.github.wulkanowy.services.synchronisation; import android.util.Log; import java.io.IOException; -import java.text.ParseException; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/res/drawable-hdpi/ic_notification.png b/app/src/main/res/drawable-hdpi/ic_notification.png new file mode 100644 index 00000000..34544980 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_notification.png differ diff --git a/app/src/main/res/drawable-hdpi/logo_image.png b/app/src/main/res/drawable-hdpi/logo_image.png deleted file mode 100644 index 2c3fb00d..00000000 Binary files a/app/src/main/res/drawable-hdpi/logo_image.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_notification.png b/app/src/main/res/drawable-mdpi/ic_notification.png new file mode 100644 index 00000000..5564049a Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_notification.png differ diff --git a/app/src/main/res/drawable-mdpi/logo_image.png b/app/src/main/res/drawable-mdpi/logo_image.png deleted file mode 100644 index 0371e0c1..00000000 Binary files a/app/src/main/res/drawable-mdpi/logo_image.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_notification.png b/app/src/main/res/drawable-xhdpi/ic_notification.png new file mode 100644 index 00000000..fabb8760 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_notification.png differ diff --git a/app/src/main/res/drawable-xhdpi/logo_image.png b/app/src/main/res/drawable-xhdpi/logo_image.png deleted file mode 100644 index 379cfecf..00000000 Binary files a/app/src/main/res/drawable-xhdpi/logo_image.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_notification.png b/app/src/main/res/drawable-xxhdpi/ic_notification.png new file mode 100644 index 00000000..c1d78d46 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_notification.png differ diff --git a/app/src/main/res/drawable-xxhdpi/logo_image.png b/app/src/main/res/drawable-xxhdpi/logo_image.png deleted file mode 100644 index 5cdc5249..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/logo_image.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_notification.png b/app/src/main/res/drawable-xxxhdpi/ic_notification.png new file mode 100644 index 00000000..ee89e601 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_notification.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/logo_image.png b/app/src/main/res/drawable-xxxhdpi/logo_image.png deleted file mode 100644 index d13274b7..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/logo_image.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..024480e9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_logo_splash.png b/app/src/main/res/drawable/ic_logo_splash.png new file mode 100644 index 00000000..cb62c0e5 Binary files /dev/null and b/app/src/main/res/drawable/ic_logo_splash.png differ diff --git a/app/src/main/res/drawable/ic_wrench_construction.xml b/app/src/main/res/drawable/ic_wrench_construction.xml new file mode 100644 index 00000000..6b9f6efc --- /dev/null +++ b/app/src/main/res/drawable/ic_wrench_construction.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_grade_26dp.xml b/app/src/main/res/drawable/icon_grade_26dp.xml new file mode 100644 index 00000000..68964c33 --- /dev/null +++ b/app/src/main/res/drawable/icon_grade_26dp.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_marks_26dp.xml b/app/src/main/res/drawable/icon_marks_26dp.xml deleted file mode 100644 index 8049ad94..00000000 --- a/app/src/main/res/drawable/icon_marks_26dp.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index b619e038..ae8a3d61 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -15,10 +15,12 @@ android:id="@+id/login_progress" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:layout_alignParentTop="true" + android:layout_marginTop="178dp" android:gravity="center_horizontal" - android:layout_centerVertical="true" - android:visibility="gone" - > + android:visibility="gone"> + android:minHeight="30dp" + android:minWidth="220dp" /> + android:layout_marginBottom="42dp" /> - + android:gravity="center"> + + + + + diff --git a/app/src/main/res/layout/fragment_board.xml b/app/src/main/res/layout/fragment_board.xml index 007b8511..9fda7745 100644 --- a/app/src/main/res/layout/fragment_board.xml +++ b/app/src/main/res/layout/fragment_board.xml @@ -1,12 +1,35 @@ - + android:gravity="center"> + + + + + diff --git a/app/src/main/res/layout/fragment_grades.xml b/app/src/main/res/layout/fragment_grades.xml index 00c867bf..74e089fd 100644 --- a/app/src/main/res/layout/fragment_grades.xml +++ b/app/src/main/res/layout/fragment_grades.xml @@ -1,10 +1,39 @@ + + + + + + + - + android:gravity="center"> + + + + + diff --git a/app/src/main/res/layout/grade_item.xml b/app/src/main/res/layout/grade_item.xml index 2156ebcc..bdaae6c3 100644 --- a/app/src/main/res/layout/grade_item.xml +++ b/app/src/main/res/layout/grade_item.xml @@ -4,11 +4,11 @@ android:id="@+id/grade_cardview" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginBottom="5dp" android:layout_marginEnd="5dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginStart="5dp" - android:layout_marginBottom="10dp" android:foreground="?attr/selectableItemBackgroundBorderless" card_view:cardElevation="0dp"> @@ -19,7 +19,8 @@ android:layout_marginEnd="7dp" android:layout_marginLeft="7dp" android:layout_marginRight="7dp" - android:layout_marginStart="7dp"> + android:layout_marginStart="7dp" + android:layout_marginTop="7dp"> + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..ac94b34f --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index d61fbbaf..600f814b 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png index 5994c19a..dac1139d 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index 3373f133..6f631488 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png index 0130695c..c5d2f4d6 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 16270d39..c2444dea 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png index a8280fc0..04871691 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5675d53..18e9a438 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png index ef918407..c8b61617 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index f9d05bcb..a18fa479 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png index 4b604bee..cf644e1b 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 80df853a..2df6b575 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -23,38 +23,59 @@ Nie masz jeszcze konta? Załóż je Zapomniałeś hasła? + Czarny + Czerwony + Niebieski + Zielony + Brak koloru + Aktywność dashboard Dashboard Oceny Frekwencja Plan lekcji Ustawienia + Ta część aplikacji jest w budowie + Brak ocen + Brak połączenia z internetem To urządzenie posiada posiada podwyższone uprawnienia (root). Automatyczne logowanie zosatło wyłączone. Szyfrowanie nie powiodło się. Automatyczne logowanie zostało wyłączone Wersja %1$s + "Podczas odświeżania zawartości wystąpił błąd. " + Opis Waga Brak opisu Nauczyciel Data Kolor - Czarny - Czerwony - Niebieski - Zielony - Brak koloru Zamknij - "Podczas odświeżania zawartości wystąpił błąd. " + Brak nowych ocen Ilość nowych ocen: %1$d - + Średnia: %1$.2f + Brak średniej + + %d ocena %d oceny %d ocen %d ocen - Średnia: %1$.2f - Brak średniej + + + Nowa ocena + Nowe oceny + Nowych ocen + Nowych ocen + + + + Dostałeś %1$d ocenę + "Dostałeś %1$d oceny + Dostałeś %1$d ocen + Dostałeś %1$d ocen + diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 00000000..c5d5899f --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 172bf83f..3bf0dd98 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,6 +35,8 @@ Attendance Lesson Plan Settings + This section of app is under construction. + No grades No internet connection This device is rooted. Automatic login has been disabled @@ -53,10 +55,21 @@ No new grades Number of new grades: %1$d - + Average: %1$.2f + No average + + %d grade %d grades - Average: %1$.2f - No average + + + New grade + New grades + + + + You received %1$d grade + You received %1$d grades +