diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 30aa626..0000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/CardAdapter.java b/app/src/main/java/com/denizd/substitutionplan/CardAdapter.java index 765847a..75d782d 100644 --- a/app/src/main/java/com/denizd/substitutionplan/CardAdapter.java +++ b/app/src/main/java/com/denizd/substitutionplan/CardAdapter.java @@ -206,342 +206,6 @@ public class CardAdapter extends RecyclerView.Adapter 0) { cs--; } else { - Toast.makeText(getContext(), getString(R.string.donttell), Toast.LENGTH_LONG).show(); - cs = 7; - customTabsIntent.launchUrl(getContext(), Uri.parse("http://www.flussufer.de/gerd/person.htm")); + try { + cs = 7; + customTabsIntent.launchUrl(getContext(), Uri.parse("http://www.flussufer.de/gerd/person.htm")); + Toast.makeText(getContext(), getString(R.string.donttell), Toast.LENGTH_LONG).show(); + } catch (ActivityNotFoundException e) { + Toast.makeText(getContext(), getString(R.string.chromecompatible), Toast.LENGTH_LONG).show(); + } } } }); @@ -896,14 +734,16 @@ public class FragmentSettings extends Fragment implements View.OnClickListener { break; } case "2018-04-20": - Toast.makeText(getActivity(), getEmojiByUnicode(0x1F494), - Toast.LENGTH_LONG).show(); - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.youtube.com/watch?v=ynHYW1iTcq0")); // FTL - - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.setPackage("com.google.android.youtube"); - startActivity(intent); - + try { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.youtube.com/watch?v=u8tdT5pAE34")); // SOS + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setPackage("com.google.android.youtube"); + startActivity(intent); + Toast.makeText(getActivity(), getEmojiByUnicode(0x1F494), + Toast.LENGTH_LONG).show(); + } catch (ActivityNotFoundException e) { + Toast.makeText(getActivity(), R.string.noyoutube, Toast.LENGTH_LONG).show(); + } break; case "Q1 Matchmaker": { final Random gen = new Random(); diff --git a/app/src/main/java/com/denizd/substitutionplan/MainActivity.java b/app/src/main/java/com/denizd/substitutionplan/MainActivity.java index c134590..0994971 100644 --- a/app/src/main/java/com/denizd/substitutionplan/MainActivity.java +++ b/app/src/main/java/com/denizd/substitutionplan/MainActivity.java @@ -2,7 +2,6 @@ package com.denizd.substitutionplan; import android.app.ActivityManager; import android.app.AlertDialog; -import android.app.SearchManager; import android.app.job.JobInfo; import android.app.job.JobScheduler; import android.content.ComponentName; @@ -28,6 +27,7 @@ import com.jaredrummler.android.device.DeviceName; import androidx.annotation.NonNull; import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.core.widget.NestedScrollView; import androidx.fragment.app.Fragment; import androidx.core.content.ContextCompat; @@ -36,13 +36,13 @@ import android.view.View; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; +import androidx.recyclerview.widget.RecyclerView; import android.view.MenuItem; import android.view.Window; import android.view.WindowManager; import android.view.animation.Animation; import android.view.animation.AnimationUtils; -import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; @@ -82,6 +82,8 @@ public class MainActivity extends AppCompatActivity { finish(); } + final Context context = this; + edit.putInt("launchDev", prefs.getInt("launchDev", 0) + 1); edit.apply(); @@ -109,6 +111,10 @@ public class MainActivity extends AppCompatActivity { final BottomNavigationView bottomNav = findViewById(R.id.bottom_nav); final Chip chip = findViewById(R.id.chip); + if (!prefs.getBoolean("showinfotab", true)) { + bottomNav.getMenu().removeItem(R.id.openinfopanel); + } + final CoordinatorLayout fragmentContainer = findViewById(R.id.fragment_container); fragmentContainer.setOnClickListener(new View.OnClickListener() { @Override @@ -123,6 +129,7 @@ public class MainActivity extends AppCompatActivity { public void onStateChanged(@NonNull View bottomSheet, int newState) { if (bottomSheetBehaviour.getState() == BottomSheetBehavior.STATE_EXPANDED) { // 2 = expanded, 4 = collapsed bottomSheetCloser.setVisibility(View.VISIBLE); + } if (bottomSheetBehaviour.getState() == BottomSheetBehavior.STATE_COLLAPSED) { // 2 = expanded, 4 = collapsed bottomSheetCloser.setVisibility(View.GONE); @@ -153,8 +160,6 @@ public class MainActivity extends AppCompatActivity { } } - final Context context = this; - // TODO Huawei dialog if (prefs.getBoolean("huaweiDeviceDialog", true)) { @@ -268,7 +273,7 @@ public class MainActivity extends AppCompatActivity { final Animation animationOut = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.chip_slide_out); final Random generator = new Random(); Resources res = getResources(); - String greetings[] = res.getStringArray(R.array.greeting8_array); + String[] greetings = res.getStringArray(R.array.greeting8_array); Calendar rightNow = Calendar.getInstance(); int currentHour = rightNow.get(Calendar.HOUR_OF_DAY); @@ -397,24 +402,51 @@ public class MainActivity extends AppCompatActivity { @Override public boolean onNavigationItemSelected(MenuItem item) { Fragment fragment = null; + boolean switcher = false; switch (item.getItemId()) { case R.id.plan: - fragment = new FragmentPlan(); - toolbarTxt.setText(getString(R.string.app_name)); + if (getCurrentFragment().toString().contains("FragmentPlan")) { + final RecyclerView recyclerView = findViewById(R.id.linearRecycler); + recyclerView.post(new Runnable() { + @Override + public void run() { + recyclerView.smoothScrollToPosition(0); + appbarlayout.setExpanded(true); + bottomSheetBehaviour.setState(BottomSheetBehavior.STATE_COLLAPSED); + } + }); + } else { + fragment = new FragmentPlan(); + toolbarTxt.setText(getString(R.string.app_name)); + switcher = true; + } break; case R.id.personal: - fragment = new FragmentPersonal(); - if (!prefs.getString("username", "").isEmpty()) { - if (Character.toString(prefs.getString("username", "").charAt(prefs.getString("username", "").length() - 1)).toLowerCase().equals("s") - || Character.toString(prefs.getString("username", "").charAt(prefs.getString("username", "").length() - 1)).toLowerCase().equals("x") - || Character.toString(prefs.getString("username", "").charAt(prefs.getString("username", "").length() - 1)).toLowerCase().equals("z")) { - toolbarTxt.setText(prefs.getString("username", "") + getString(R.string.nosplan)); - } else { - toolbarTxt.setText(prefs.getString("username", "") + getString(R.string.splan)); - } + if (getCurrentFragment().toString().contains("FragmentPersonal")) { + final RecyclerView recyclerView = findViewById(R.id.linearRecycler); + recyclerView.post(new Runnable() { + @Override + public void run() { + recyclerView.smoothScrollToPosition(0); + appbarlayout.setExpanded(true); + bottomSheetBehaviour.setState(BottomSheetBehavior.STATE_COLLAPSED); + } + }); } else { - toolbarTxt.setText(getString(R.string.personalplan)); + fragment = new FragmentPersonal(); + if (!prefs.getString("username", "").isEmpty()) { + if (Character.toString(prefs.getString("username", "").charAt(prefs.getString("username", "").length() - 1)).toLowerCase().equals("s") + || Character.toString(prefs.getString("username", "").charAt(prefs.getString("username", "").length() - 1)).toLowerCase().equals("x") + || Character.toString(prefs.getString("username", "").charAt(prefs.getString("username", "").length() - 1)).toLowerCase().equals("z")) { + toolbarTxt.setText(prefs.getString("username", "") + getString(R.string.nosplan)); + } else { + toolbarTxt.setText(prefs.getString("username", "") + getString(R.string.splan)); + } + } else { + toolbarTxt.setText(getString(R.string.personalplan)); + } + switcher = true; } break; // case R.id.search: @@ -422,22 +454,65 @@ public class MainActivity extends AppCompatActivity { // toolbarTxt.setText(getString(R.string.search)); // break; case R.id.menu: - fragment = new FragmentFood(); - toolbarTxt.setText(getString(R.string.foodmenu)); + if (getCurrentFragment().toString().contains("FragmentFood")) { + final RecyclerView recyclerView = findViewById(R.id.linear_food); + recyclerView.post(new Runnable() { + @Override + public void run() { + recyclerView.smoothScrollToPosition(0); + appbarlayout.setExpanded(true); + bottomSheetBehaviour.setState(BottomSheetBehavior.STATE_COLLAPSED); + } + }); + } else { + fragment = new FragmentFood(); + toolbarTxt.setText(getString(R.string.foodmenu)); + switcher = true; + } break; case R.id.settings: - fragment = new FragmentSettings(); - toolbarTxt.setText(getString(R.string.settings)); + if (getCurrentFragment().toString().contains("FragmentSettings")) { + final NestedScrollView nsv = findViewById(R.id.nsvsettings); + nsv.post(new Runnable() { + @Override + public void run() { +// recyclerView.fling(0); + nsv.smoothScrollTo(0, 0); + appbarlayout.setExpanded(true); + bottomSheetBehaviour.setState(BottomSheetBehavior.STATE_COLLAPSED); + } + }); + } else { + fragment = new FragmentSettings(); + toolbarTxt.setText(getString(R.string.settings)); + switcher = true; + } break; + case R.id.openinfopanel: + if (bottomSheetBehaviour.getState() == BottomSheetBehavior.STATE_COLLAPSED) { + bottomSheetBehaviour.setState(BottomSheetBehavior.STATE_EXPANDED); + break; + } else if (bottomSheetBehaviour.getState() == BottomSheetBehavior.STATE_EXPANDED) { + bottomSheetBehaviour.setState(BottomSheetBehavior.STATE_COLLAPSED); + break; + } + } + if (switcher) { + appbarlayout.setExpanded(true); + bottomSheetBehaviour.setState(BottomSheetBehavior.STATE_COLLAPSED); + return loadFragment(fragment); + } else { + return false; } - appbarlayout.setExpanded(true); - bottomSheetBehaviour.setState(BottomSheetBehavior.STATE_COLLAPSED); - return loadFragment(fragment); } }); } + private Fragment getCurrentFragment() { + return getSupportFragmentManager().findFragmentById(R.id.fragment_container); + } + private boolean loadFragment(Fragment fragment) { if (fragment != null) { getSupportFragmentManager() diff --git a/app/src/main/res/drawable/ic_information.xml b/app/src/main/res/drawable/ic_information.xml new file mode 100644 index 0000000..1a1b4d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_information.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index 2bfa1cb..a2ec6aa 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -19,10 +19,10 @@ android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorBackground" - app:layout_scrollFlags="scroll|enterAlwaysCollapsed" app:popupTheme="@style/AppThemeLight.PopupOverlay" app:titleTextColor="?attr/colorAccent" - app:contentInsetStart="0dp"> + app:contentInsetStart="0dp" + app:layout_scrollFlags="scroll|enterAlwaysCollapsed"> + android:backgroundTint="@color/red" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/pink" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/purple" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/deeppurple" + app:cornerRadius="16dp"/> @@ -45,25 +49,29 @@ android:id="@+id/colourLavender" android:layout_margin="8dp" android:layout_weight="1" - android:backgroundTint="@color/lavender"/> + android:backgroundTint="@color/lavender" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/indigo" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/blue" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/lightblue" + app:cornerRadius="16dp"/> @@ -75,25 +83,29 @@ android:id="@+id/colourTeal" android:layout_margin="8dp" android:layout_weight="1" - android:backgroundTint="@color/teal"/> + android:backgroundTint="@color/teal" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/green" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/yellow" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/orange" + app:cornerRadius="16dp"/> @@ -112,25 +124,29 @@ android:id="@+id/colourNeonRed" android:layout_margin="8dp" android:layout_weight="1" - android:backgroundTint="@color/neonred"/> + android:backgroundTint="@color/neonred" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/neonpink" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/neonpurple" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/neondeeppurple" + app:cornerRadius="16dp"/> @@ -142,25 +158,29 @@ android:id="@+id/colourNeonBlue" android:layout_margin="8dp" android:layout_weight="1" - android:backgroundTint="@color/neonblue"/> + android:backgroundTint="@color/neonblue" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/neongreen" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/neonyellow" + app:cornerRadius="16dp"/> + android:backgroundTint="@color/neonorange" + app:cornerRadius="16dp"/> diff --git a/app/src/main/res/layout/content_settings.xml b/app/src/main/res/layout/content_settings.xml index 4d7e964..fb0272d 100644 --- a/app/src/main/res/layout/content_settings.xml +++ b/app/src/main/res/layout/content_settings.xml @@ -7,6 +7,7 @@ android:background="?attr/colorBackground"> @@ -129,6 +130,40 @@ app:layout_constraintStart_toStartOf="@+id/txtDark" app:layout_constraintTop_toTopOf="@+id/txtDark" /> + + + + + + + + + app:layout_constraintStart_toStartOf="@+id/txtHideInfo2" + app:layout_constraintTop_toBottomOf="@+id/txtHideInfo2" /> + app:layout_constraintTop_toBottomOf="@+id/txtHideInfo2" /> + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:layout_marginTop="3dp" + android:layout_marginBottom="3dp" + app:cardElevation="2dp"> diff --git a/app/src/main/res/layout/just_a_card.xml b/app/src/main/res/layout/just_a_card.xml index c51caff..3e545c3 100644 --- a/app/src/main/res/layout/just_a_card.xml +++ b/app/src/main/res/layout/just_a_card.xml @@ -6,11 +6,11 @@ app:cardCornerRadius="4dp" android:clickable="true" android:focusable="true" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" - android:layout_marginTop="1dp" - android:layout_marginBottom="1dp" - app:cardElevation="1dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:layout_marginTop="3dp" + android:layout_marginBottom="3dp" + app:cardElevation="2dp" xmlns:android="http://schemas.android.com/apk/res/android"> + - \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index a97f2c1..4444a18 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -124,4 +124,8 @@ Farben für alle Kurse wurden gelöscht Farbe löschen Fertigstellen + Kein Chrome-kompatibler Browser gefunden + YouTube-App nicht gefunden + Unabhängig von Wischgeste + Zeige Info-Tab in Navigationsleisete \ 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 82091bc..3cbf7ca 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -141,6 +141,12 @@ Colours for all courses have been cleared Finish + No Chrome-compatible browser found + YouTube app not found + + Show info tab in navigation bar + Independent of swipe gesture + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 299d00c..7b9dfc6 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -41,7 +41,7 @@ #1B1B1B #448aff #1B1B1B - #1B1B1B + #212121 #e0e0e0 #e0e0e0 #9e9e9e diff --git a/build.gradle b/build.gradle index f39a804..8a6bb68 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.3.2' + classpath 'com.android.tools.build:gradle:3.5.0-alpha13' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e9f6cd5..f8711fc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Mar 17 18:33:17 CET 2019 +#Mon May 06 17:16:56 CEST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-rc-1-all.zip