Skip to content

Commit

Permalink
Merge pull request #11 from LithiumSR/materialdrawer
Browse files Browse the repository at this point in the history
Add new material drawer and support for Android R8
  • Loading branch information
leosarra authored Jan 25, 2019
2 parents 4d9afc9 + 7a93450 commit 8088368
Show file tree
Hide file tree
Showing 26 changed files with 490 additions and 681 deletions.
9 changes: 5 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ android {
applicationId "com.lithium.leona.openstud"
minSdkVersion 23
targetSdkVersion 28
versionCode 74
versionName "1.12.0"
versionCode 75
versionName "1.13.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand Down Expand Up @@ -46,7 +46,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.cardview:cardview:1.0.0'
implementation group: 'androidx.core', name: 'core', version: '1.0.1'
implementation 'com.github.LithiumSR:openstud_driver:0.29.5'
implementation 'com.github.LithiumSR:openstud_driver:0.29.7'
implementation 'com.jakewharton:butterknife:10.0.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
Expand All @@ -63,14 +63,15 @@ dependencies {
implementation 'com.github.LithiumSR:MaterialSearchBar:0.9.2'
implementation 'com.github.LithiumSR:Horizontal-Calendar:1.3.6'
implementation 'com.squareup.picasso:picasso:2.71828'

implementation "com.mikepenz:materialdrawer:6.1.2"
// https://mvnrepository.com/artifact/org.threeten/threetenbp
implementation group: 'org.threeten', name: 'threetenbp', version: '1.3.8'
implementation 'com.github.LithiumSR:CompactCalendarView:3.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation "androidx.annotation:annotation:1.0.1"
}

apply plugin: 'com.google.gms.google-services'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import com.github.sundeepk.compactcalendarview.CompactCalendarView;
import com.github.sundeepk.compactcalendarview.domain.Event;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.navigation.NavigationView;
import com.google.android.material.snackbar.Snackbar;
import com.lithium.leona.openstud.R;
import com.lithium.leona.openstud.adapters.EventAdapter;
Expand All @@ -31,6 +30,7 @@
import com.lithium.leona.openstud.helpers.LayoutHelper;
import com.lithium.leona.openstud.helpers.ThemeEngine;
import com.lithium.leona.openstud.listeners.DelayedDrawerListener;
import com.mikepenz.materialdrawer.Drawer;

import org.apache.commons.lang3.tuple.Pair;
import org.threeten.bp.Duration;
Expand All @@ -47,14 +47,11 @@
import java.util.Locale;
import java.util.TimeZone;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.GravityCompat;
import androidx.core.view.ViewCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
Expand All @@ -74,14 +71,12 @@ public class CalendarActivity extends AppCompatActivity implements AppBarLayout.

private final SimpleDateFormat dateFormat = new SimpleDateFormat("d MMMM yyyy", Locale.getDefault());
public boolean refreshAfterDismiss = false;
@BindView(R.id.drawer_layout)
DrawerLayout mDrawerLayout;
@BindView(R.id.main_layout)
RelativeLayout mainLayout;
@BindView(R.id.app_bar_layout)
AppBarLayout appBarLayout;
@BindView(R.id.compactcalendar_view)
CompactCalendarView compactCalendarView;
@BindView(R.id.nav_view)
NavigationView navigationView;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.date_picker_arrow)
Expand All @@ -107,6 +102,7 @@ public class CalendarActivity extends AppCompatActivity implements AppBarLayout.
private CalendarEventHandler h = new CalendarEventHandler(this);
private Openstud os;
private Student student;
private Drawer drawer;
private EventAdapter adapter_lessons;
private EventAdapter adapter_exams;
private EventAdapter adapter_reservations;
Expand All @@ -132,8 +128,6 @@ protected void onCreate(Bundle savedInstanceState) {
ThemeEngine.applyCalendarTheme(this);
setContentView(R.layout.activity_calendar);
ButterKnife.bind(this);
LayoutHelper.setupToolbar(this, toolbar, R.drawable.ic_baseline_arrow_back);
toolbar.setNavigationOnClickListener(v -> onBackPressed());
setTitle(getResources().getString(R.string.calendar));
os = InfoManager.getOpenStud(getApplication());
student = InfoManager.getInfoStudentCached(this, os);
Expand All @@ -144,14 +138,12 @@ protected void onCreate(Bundle savedInstanceState) {
finish();
return;
}
LayoutHelper.setupToolbar(this, toolbar, R.drawable.ic_baseline_arrow_back);
drawer=LayoutHelper.applyDrawer(this,toolbar,student);
toolbar.setNavigationOnClickListener(v -> onBackPressed());
lessonOptionsEnabled = PreferenceManager.isLessonOptionEnabled(this);
lessonsEnabled = PreferenceManager.isLessonEnabled(this);
appBarLayout.addOnOffsetChangedListener(this);
View headerLayout = navigationView.getHeaderView(0);
TextView navTitle = headerLayout.findViewById(R.id.nav_title);
navTitle.setText(getString(R.string.fullname, student.getFirstName(), student.getLastName()));
TextView subTitle = headerLayout.findViewById(R.id.nav_subtitle);
subTitle.setText(student.getStudentID());
compactCalendarView.setLocale(TimeZone.getDefault(), Locale.getDefault());
compactCalendarView.setShouldDrawDaysHeader(true);
compactCalendarView.setListener(new CompactCalendarView.CompactCalendarViewListener() {
Expand Down Expand Up @@ -184,7 +176,6 @@ public void onMonthScroll(Date firstDayOfNewMonth) {
updateCalendar(events);
RelativeLayout datePickerButton = findViewById(R.id.date_picker_button);
datePickerButton.setOnClickListener(v -> animateExpansion());
setupDrawerListener();
emptyText.setText(getResources().getString(R.string.no_events));
swipeRefreshLayout.setColorSchemeResources(R.color.refresh1, R.color.refresh2, R.color.refresh3);
if (savedInstanceState == null) refreshEvents();
Expand Down Expand Up @@ -386,8 +377,8 @@ private void setSubtitle(String subtitle) {

@Override
public void onBackPressed() {
if (this.mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
this.mDrawerLayout.closeDrawer(GravityCompat.START);
if (drawer.isDrawerOpen()) {
drawer.closeDrawer();
} else {
super.onBackPressed();
}
Expand All @@ -403,24 +394,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}

private void setupDrawerListener() {
ddl = new DelayedDrawerListener() {
@Override
public void onDrawerClosed(@NonNull View drawerView) {
int item = getItemPressedAndReset();
if (item == -1) return;
ClientHelper.startDrawerActivity(item, CalendarActivity.this);
}

};
mDrawerLayout.addDrawerListener(ddl);
navigationView.setNavigationItemSelectedListener(
item -> {
mDrawerLayout.closeDrawers();
ddl.setItemPressed(item.getItemId());
return true;
});
}

void animateExpansion() {
float rotation = isExpanded ? 0 : 180;
Expand Down Expand Up @@ -555,7 +528,7 @@ private synchronized LocalDateTime getTimer() {

private void showCalendarNotification() {
if (com.lithium.leona.openstud.data.PreferenceManager.getCalendarNotificationEnabled(this)) {
LayoutHelper.createActionSnackBar(mDrawerLayout, R.string.lesson_notification, R.string.edit, 4000, v -> {
LayoutHelper.createActionSnackBar(mainLayout, R.string.lesson_notification, R.string.edit, 4000, v -> {
InfoManager.clearSharedPreferences(getApplication());
Intent i = new Intent(CalendarActivity.this, SettingsPrefActivity.class);
startActivity(i);
Expand Down Expand Up @@ -596,32 +569,32 @@ public void handleMessage(Message msg) {
if (activity != null) {
View.OnClickListener listener = v -> activity.refreshEvents();
if (msg.what == ClientHelper.Status.CONNECTION_ERROR.getValue()) {
LayoutHelper.createActionSnackBar(activity.mDrawerLayout, R.string.connection_error, R.string.retry, Snackbar.LENGTH_LONG, listener);
LayoutHelper.createActionSnackBar(activity.mainLayout, R.string.connection_error, R.string.retry, Snackbar.LENGTH_LONG, listener);
} else if (msg.what == ClientHelper.Status.INVALID_RESPONSE.getValue()) {
LayoutHelper.createActionSnackBar(activity.mDrawerLayout, R.string.invalid_response_error, R.string.retry, Snackbar.LENGTH_LONG, listener);
LayoutHelper.createActionSnackBar(activity.mainLayout, R.string.invalid_response_error, R.string.retry, Snackbar.LENGTH_LONG, listener);
} else if (msg.what == ClientHelper.Status.MAINTENANCE.getValue()) {
LayoutHelper.createActionSnackBar(activity.mDrawerLayout, R.string.infostud_maintenance, R.string.retry, Snackbar.LENGTH_LONG, listener);
LayoutHelper.createActionSnackBar(activity.mainLayout, R.string.infostud_maintenance, R.string.retry, Snackbar.LENGTH_LONG, listener);
} else if (msg.what == ClientHelper.Status.RATE_LIMIT.getValue()) {
LayoutHelper.createActionSnackBar(activity.mDrawerLayout, R.string.rate_limit, R.string.retry, Snackbar.LENGTH_LONG, listener);
LayoutHelper.createActionSnackBar(activity.mainLayout, R.string.rate_limit, R.string.retry, Snackbar.LENGTH_LONG, listener);
} else if (msg.what == ClientHelper.Status.INVALID_CREDENTIALS.getValue() || msg.what == ClientHelper.Status.EXPIRED_CREDENTIALS.getValue()) {
Intent i = new Intent(activity, LauncherActivity.class);
i.putExtra("error", msg.what);
activity.startActivity(i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP));
activity.finish();
} else if (msg.what == ClientHelper.Status.PLACE_RESERVATION_OK.getValue()) {
LayoutHelper.createTextSnackBar(activity.mDrawerLayout, R.string.reservation_ok, Snackbar.LENGTH_LONG);
LayoutHelper.createTextSnackBar(activity.mainLayout, R.string.reservation_ok, Snackbar.LENGTH_LONG);
} else if (msg.what == ClientHelper.Status.PLACE_RESERVATION_INVALID_RESPONSE.getValue() || msg.what == ClientHelper.Status.PLACE_RESERVATION_CONNECTION.getValue()) {
LayoutHelper.createTextSnackBar(activity.mDrawerLayout, R.string.reservation_error, Snackbar.LENGTH_LONG);
LayoutHelper.createTextSnackBar(activity.mainLayout, R.string.reservation_error, Snackbar.LENGTH_LONG);
} else if (msg.what == ClientHelper.Status.ALREADY_PLACED.getValue()) {
LayoutHelper.createTextSnackBar(activity.mDrawerLayout, R.string.already_placed_reservation, Snackbar.LENGTH_LONG);
LayoutHelper.createTextSnackBar(activity.mainLayout, R.string.already_placed_reservation, Snackbar.LENGTH_LONG);
} else if (msg.what == (ClientHelper.Status.FAILED_DELETE).getValue()) {
LayoutHelper.createTextSnackBar(activity.mDrawerLayout, R.string.failed_delete, Snackbar.LENGTH_LONG);
LayoutHelper.createTextSnackBar(activity.mainLayout, R.string.failed_delete, Snackbar.LENGTH_LONG);
} else if (msg.what == (ClientHelper.Status.OK_DELETE).getValue()) {
LayoutHelper.createTextSnackBar(activity.mDrawerLayout, R.string.ok_delete, Snackbar.LENGTH_LONG);
LayoutHelper.createTextSnackBar(activity.mainLayout, R.string.ok_delete, Snackbar.LENGTH_LONG);
} else if (msg.what == ClientHelper.Status.FAILED_GET.getValue()) {
LayoutHelper.createTextSnackBar(activity.mDrawerLayout, R.string.failed_get_network, Snackbar.LENGTH_LONG);
LayoutHelper.createTextSnackBar(activity.mainLayout, R.string.failed_get_network, Snackbar.LENGTH_LONG);
} else if (msg.what == ClientHelper.Status.CLOSED_RESERVATION.getValue()) {
LayoutHelper.createTextSnackBar(activity.mDrawerLayout, R.string.closed_reservation, Snackbar.LENGTH_LONG);
LayoutHelper.createTextSnackBar(activity.mainLayout, R.string.closed_reservation, Snackbar.LENGTH_LONG);
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationView;
import com.lithium.leona.openstud.R;
import com.lithium.leona.openstud.data.InfoManager;
import com.lithium.leona.openstud.fragments.ExamDoableFragment;
Expand All @@ -19,7 +17,7 @@
import com.lithium.leona.openstud.helpers.ClientHelper;
import com.lithium.leona.openstud.helpers.LayoutHelper;
import com.lithium.leona.openstud.helpers.ThemeEngine;
import com.lithium.leona.openstud.listeners.DelayedDrawerListener;
import com.mikepenz.materialdrawer.Drawer;

import java.util.Objects;

Expand All @@ -28,10 +26,9 @@
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ContextThemeWrapper;
import androidx.appcompat.widget.Toolbar;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import butterknife.BindView;
Expand All @@ -40,17 +37,15 @@
import lithium.openstud.driver.core.Student;

public class ExamsActivity extends AppCompatActivity {
@BindView(R.id.drawer_layout)
DrawerLayout mDrawerLayout;
@BindView(R.id.container)
ConstraintLayout mainLayout;
@BindView(R.id.toolbar)
Toolbar toolbar;
private NavigationView nv;
private DelayedDrawerListener ddl;
private Fragment active;
private ExamsDoneFragment fragDone;
private ExamDoableFragment fragDoable;
private ReservationsFragment fragRes;

private Drawer drawer;
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {

Expand Down Expand Up @@ -90,19 +85,11 @@ protected void onCreate(Bundle savedInstanceState) {
finish();
return;
}
nv = LayoutHelper.setupNavigationDrawer(this, mDrawerLayout);
LayoutHelper.setupToolbar(this, toolbar, R.drawable.ic_baseline_menu);
Objects.requireNonNull(getSupportActionBar()).setTitle(R.string.exams);
View headerLayout = nv.getHeaderView(0);

TextView navTitle = headerLayout.findViewById(R.id.nav_title);
navTitle.setText(getString(R.string.fullname, student.getFirstName(), student.getLastName()));
TextView subTitle = headerLayout.findViewById(R.id.nav_subtitle);
subTitle.setText(student.getStudentID());

drawer=LayoutHelper.applyDrawer(this,toolbar,student);
BottomNavigationView navigation = findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
setupDrawerListener();
FragmentManager fm = getSupportFragmentManager();

if (savedInstanceState != null) {
Expand Down Expand Up @@ -152,9 +139,6 @@ public boolean onPrepareOptionsMenu(Menu menu) {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
return true;
case R.id.sort:
showSortDialog();
return true;
Expand All @@ -164,11 +148,9 @@ public boolean onOptionsItemSelected(MenuItem item) {

@Override
public void onBackPressed() {
if (this.mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
this.mDrawerLayout.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
if (drawer.isDrawerOpen()) drawer.closeDrawer();
else super.onBackPressed();

}

private void showSortDialog() {
Expand All @@ -184,24 +166,6 @@ private void showSortDialog() {
builder.show();
}

private void setupDrawerListener() {
ddl = new DelayedDrawerListener() {
@Override
public void onDrawerClosed(@NonNull View drawerView) {
int item = getItemPressedAndReset();
if (item == -1) return;
ClientHelper.startDrawerActivity(item, ExamsActivity.this);
}

};
mDrawerLayout.addDrawerListener(ddl);
nv.setNavigationItemSelectedListener(
item -> {
mDrawerLayout.closeDrawers();
ddl.setItemPressed(item.getItemId());
return true;
});
}

private void switchToExamsCompletedFragment() {
FragmentManager manager = getSupportFragmentManager();
Expand Down Expand Up @@ -232,11 +196,11 @@ private void switchToExamsSearchFragment() {


public void createTextSnackBar(int string_id, int length) {
LayoutHelper.createTextSnackBar(mDrawerLayout, string_id, length);
LayoutHelper.createTextSnackBar(mainLayout, string_id, length);
}

public void createRetrySnackBar(final int string_id, int length, View.OnClickListener listener) {
LayoutHelper.createActionSnackBar(mDrawerLayout, string_id, R.string.retry, length, listener);
LayoutHelper.createActionSnackBar(mainLayout, string_id, R.string.retry, length, listener);
}

@Override
Expand Down
Loading

0 comments on commit 8088368

Please sign in to comment.