From 46851a4627f90dfc1973afb57a8c720d1bbd70fa Mon Sep 17 00:00:00 2001 From: Sebastian Seedorf Date: Fri, 18 Oct 2019 17:44:01 +0200 Subject: [PATCH] Changed Minimum Android API Level to 21 (Android 5) and Code clean up --- app/app.iml | 2 +- app/build.gradle | 9 ++-- app/src/main/AndroidManifest.xml | 4 +- .../java/de/sebse/fuplanner/MainActivity.java | 10 +---- .../fuplanner/fragments/CanteensAdapter.java | 18 +------- .../fuplanner/fragments/CanteensFragment.java | 4 +- .../fuplanner/fragments/ModulesFragment.java | 2 +- .../fuplanner/fragments/NewsFragment.java | 2 +- .../fuplanner/fragments/ScheduleFragment.java | 2 +- .../fragments/canteen/DaySwitcherAdapter.java | 4 +- .../canteen/DaySwitcherFragment.java | 2 +- .../fragments/canteen/MealFragment.java | 2 +- .../moddetails/ModDetailAdapter.java | 5 ++- .../moddetails/ModDetailAnnounceAdapter.java | 5 +-- .../moddetails/ModDetailAnnounceFragment.java | 2 +- .../ModDetailAssignmentAdapter.java | 5 +-- .../ModDetailAssignmentFragment.java | 2 +- .../moddetails/ModDetailEventFragment.java | 2 +- .../moddetails/ModDetailFragment.java | 2 +- .../ModDetailGradebookFragment.java | 2 +- .../moddetails/ModDetailOverviewFragment.java | 2 +- .../moddetails/ModDetailResourceFragment.java | 2 +- .../services/canteen/CanteenBrowser.java | 21 +-------- .../services/fulogin/FUAuthenticator.java | 4 +- .../services/fulogin/UserLoginTask.java | 7 ++- .../sebse/fuplanner/services/kvv/Login.java | 1 - .../fuplanner/services/kvv/ModulesEvents.java | 6 --- .../services/kvv/ModulesEventsNumber.java | 12 +---- .../fuplanner/services/kvv/ModulesList.java | 12 ++--- .../services/kvv/ModulesListLecturer.java | 4 +- .../services/kvv/ModulesResources.java | 5 +-- .../services/kvv/sync/KVVSyncAdapter.java | 5 +-- .../services/kvv/types/CacheKVVCourse.java | 1 - .../fuplanner/services/kvv/types/Event.java | 6 +-- .../fuplanner/services/kvv/types/Modules.java | 5 ++- .../fuplanner/services/kvv/ui/Download.java | 12 +---- .../fuplanner/services/news/NewsManager.java | 3 +- .../fuplanner/tools/CustomAccountManager.java | 18 ++------ .../fuplanner/tools/MainActivityListener.java | 2 - .../sebse/fuplanner/tools/NewAsyncQueue.java | 1 - .../de/sebse/fuplanner/tools/UtilsDate.java | 6 +-- .../fuplanner/tools/network/HTTPNetwork.java | 7 +-- .../fuplanner/tools/network/NetworkError.java | 2 +- .../fuplanner/tools/network/NukeSSLCerts.java | 45 ------------------- .../de/sebse/fuplanner/tools/types/News.java | 3 ++ .../tools/ui/CanteensViewHolder.java | 3 -- .../tools/ui/cardview/ExpandableCardView.java | 8 ++-- .../fuplanner/tools/ui/treeview/TreeNode.java | 3 +- .../fuplanner/tools/ui/weekview/WeekView.java | 2 +- app/src/main/res/layout/item_dir.xml | 1 - app/src/main/res/layout/item_file.xml | 4 +- app/src/main/res/layout/list_all_items.xml | 2 - app/src/main/res/layout/list_all_mails.xml | 2 - app/src/main/res/layout/list_canteen_body.xml | 1 - .../main/res/layout/list_canteen_legend.xml | 4 -- .../main/res/layout/list_canteens_items.xml | 4 +- .../layout/list_moddetails_description.xml | 3 +- .../res/layout/list_moddetails_gradebook.xml | 5 --- app/src/main/res/layout/list_news_item.xml | 1 - app/src/main/res/values-de/strings.xml | 5 +-- app/src/main/res/values-v21/styles.xml | 20 --------- app/src/main/res/values/strings.xml | 5 +-- app/src/main/res/values/styles.xml | 7 +-- 63 files changed, 76 insertions(+), 282 deletions(-) delete mode 100644 app/src/main/java/de/sebse/fuplanner/tools/network/NukeSSLCerts.java delete mode 100644 app/src/main/res/values-v21/styles.xml diff --git a/app/app.iml b/app/app.iml index d098939..8ac3f6e 100644 --- a/app/app.iml +++ b/app/app.iml @@ -87,7 +87,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 87b24b8..1f1edf6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,19 +1,20 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 28 + compileSdkVersion 29 buildToolsVersion '28.0.3' defaultConfig { applicationId "de.sebse.fuplanner" - minSdkVersion 15 - targetSdkVersion 28 + minSdkVersion 21 + targetSdkVersion 29 versionCode 39 versionName "1.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { - minifyEnabled false + minifyEnabled true + shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7e2ef90..04fe56a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,7 +62,9 @@ - + diff --git a/app/src/main/java/de/sebse/fuplanner/MainActivity.java b/app/src/main/java/de/sebse/fuplanner/MainActivity.java index 64b1e54..6f6f55a 100644 --- a/app/src/main/java/de/sebse/fuplanner/MainActivity.java +++ b/app/src/main/java/de/sebse/fuplanner/MainActivity.java @@ -9,7 +9,6 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.text.TextUtils; @@ -69,7 +68,6 @@ import de.sebse.fuplanner.tools.Preferences; import de.sebse.fuplanner.tools.Regex; import de.sebse.fuplanner.tools.RequestPermissionsResultListener; import de.sebse.fuplanner.tools.logging.Logger; -import de.sebse.fuplanner.tools.network.NukeSSLCerts; import de.sebse.fuplanner.tools.types.News; public class MainActivity extends AppCompatActivity @@ -404,10 +402,7 @@ public class MainActivity extends AppCompatActivity case R.id.nav_rate: Uri uri = Uri.parse("market://details?id=" + getApplicationContext().getPackageName()); Intent viewIntent = new Intent(Intent.ACTION_VIEW, uri); - if (Build.VERSION.SDK_INT <= 21) - viewIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); - else - viewIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); + viewIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); try { startActivity(viewIntent); } catch (ActivityNotFoundException e) { @@ -439,7 +434,7 @@ public class MainActivity extends AppCompatActivity } @Override - protected void onSaveInstanceState(Bundle savedInstanceState) { + protected void onSaveInstanceState(@NonNull Bundle savedInstanceState) { if (mFragmentPage != FRAGMENT_STARTUP && mFragmentPage != FRAGMENT_NONE) { Fragment fragment = mFragmentManager.findFragmentByTag(String.valueOf(mFragmentPage)); savedInstanceState.putInt(ARG_FRAGMENT_PAGE, mFragmentPage); @@ -627,7 +622,6 @@ public class MainActivity extends AppCompatActivity int size = mNavigationView.getMenu().size(); try { Canteen canteen = success.getCanteen(Integer.parseInt(mFragmentData)); - //noinspection ConstantConditions String title = canteen == null ? null : canteen.getName(); for (int k = 0; k < size; k++) { MenuItem menuItem = mNavigationView.getMenu().getItem(k); diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/CanteensAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/CanteensAdapter.java index 51aa807..b284aee 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/CanteensAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/CanteensAdapter.java @@ -1,6 +1,5 @@ package de.sebse.fuplanner.fragments; -import android.os.Build; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -24,7 +23,6 @@ import de.sebse.fuplanner.tools.ui.StringViewHolder; */ class CanteensAdapter extends RecyclerView.Adapter { - private static final int TYPE_NO_LIST_AVAILABLE = 0; private static final int TYPE_DELETE_BUTTON = 1; private static final int TYPE_ENTRY = 2; private Canteens mValues; @@ -46,11 +44,7 @@ class CanteensAdapter extends RecyclerView.Adapter { @NonNull @Override public CustomViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - if (viewType == TYPE_NO_LIST_AVAILABLE) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.list_all_no_items, parent, false); - return new StringViewHolder(view); - } else if (viewType == TYPE_DELETE_BUTTON) { + if (viewType == TYPE_DELETE_BUTTON) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_canteens_btn_delete, parent, false); return new StringViewHolder(view); @@ -63,9 +57,7 @@ class CanteensAdapter extends RecyclerView.Adapter { @Override public void onBindViewHolder(@NonNull CustomViewHolder holder, int position) { int viewType = getItemViewType(position); - if (viewType == TYPE_NO_LIST_AVAILABLE) { - ((StringViewHolder) holder).mString.setText(R.string.canteen_not_available); - } else if (viewType == TYPE_DELETE_BUTTON) { + if (viewType == TYPE_DELETE_BUTTON) { ((StringViewHolder) holder).mString.setOnClickListener(v -> endDeletion()); } else { if (mIsShowDeletion) { @@ -108,9 +100,6 @@ class CanteensAdapter extends RecyclerView.Adapter { @Override public int getItemCount() { - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { - return 1; - } if (mValues != null) { return mIsShowDeletion ? mValues.size() + 1 : mValues.size(); } @@ -119,9 +108,6 @@ class CanteensAdapter extends RecyclerView.Adapter { @Override public int getItemViewType(int position) { - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { - return TYPE_NO_LIST_AVAILABLE; - } return mIsShowDeletion && position == 0 ? TYPE_DELETE_BUTTON : TYPE_ENTRY; } diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/CanteensFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/CanteensFragment.java index 6d18a52..9a93d51 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/CanteensFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/CanteensFragment.java @@ -13,8 +13,6 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; import de.sebse.fuplanner.MainActivity; import de.sebse.fuplanner.R; @@ -88,7 +86,7 @@ public class CanteensFragment extends Fragment { @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof OnCanteensFragmentInteractionListener) { mListener = (OnCanteensFragmentInteractionListener) context; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/ModulesFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/ModulesFragment.java index 0d2ebeb..739cc9d 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/ModulesFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/ModulesFragment.java @@ -82,7 +82,7 @@ public class ModulesFragment extends Fragment { @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof OnModulesFragmentInteractionListener) { mListener = (OnModulesFragmentInteractionListener) context; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/NewsFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/NewsFragment.java index b497406..d6aecc1 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/NewsFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/NewsFragment.java @@ -53,7 +53,7 @@ public class NewsFragment extends Fragment { } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof MainActivityListener) { mListener = (MainActivityListener) context; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java index 83666c0..08b2bbd 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java @@ -103,7 +103,7 @@ public class ScheduleFragment extends Fragment implements @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof MainActivityListener) { mListener = (MainActivityListener) context; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherAdapter.java index b47436c..0f816f1 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherAdapter.java @@ -1,5 +1,6 @@ package de.sebse.fuplanner.fragments.canteen; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; @@ -11,7 +12,7 @@ class DaySwitcherAdapter extends FragmentStatePagerAdapter { private Canteen mCanteen = null; DaySwitcherAdapter(FragmentManager fm) { - super(fm); + super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); } public void setModule(Canteen canteen) { @@ -31,6 +32,7 @@ class DaySwitcherAdapter extends FragmentStatePagerAdapter { } // Returns the fragment to display for that page + @NonNull @Override public Fragment getItem(int position) { return MealFragment.newInstance(mCanteen.getId(), position); diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherFragment.java index 5fe8bf8..feac72f 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/DaySwitcherFragment.java @@ -101,7 +101,7 @@ public class DaySwitcherFragment extends Fragment implements DaySwitcherListener } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof MainActivityListener) { mListener = (MainActivityListener) context; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealFragment.java index d65d647..8962ff4 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealFragment.java @@ -85,7 +85,7 @@ public class MealFragment extends Fragment { } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); Fragment parentFragment = getParentFragment(); if (parentFragment != null) { diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAdapter.java index cba575b..814cff4 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAdapter.java @@ -1,6 +1,8 @@ package de.sebse.fuplanner.fragments.moddetails; import android.content.Context; + +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; @@ -12,7 +14,7 @@ class ModDetailAdapter extends FragmentStatePagerAdapter { private final Context mContext; ModDetailAdapter(FragmentManager fm, String itemPosition, Context context) { - super(fm); + super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); this.mContext = context; this.mItemPos = itemPosition; } @@ -25,6 +27,7 @@ class ModDetailAdapter extends FragmentStatePagerAdapter { } // Returns the fragment to display for that page + @NonNull @Override public Fragment getItem(int position) { switch (ModulePart.getPartByPage(position)) { diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceAdapter.java index c5efa3b..7c06647 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceAdapter.java @@ -93,10 +93,7 @@ class ModDetailAnnounceAdapter extends RecyclerView.Adapter { try { return URLDecoder.decode(Regex.regex("/([^/]*)$", url), "UTF-8"); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - return res.getString(R.string.attachment_nr, index); - } catch (UnsupportedEncodingException e) { + } catch (NoSuchFieldException | UnsupportedEncodingException e) { e.printStackTrace(); return res.getString(R.string.attachment_nr, index); } diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceFragment.java index b88cb60..ce9d727 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceFragment.java @@ -110,7 +110,7 @@ public class ModDetailAnnounceFragment extends Fragment implements Download.OnDo } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof MainActivityListener) { this.mListener = ((MainActivityListener) context); diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentAdapter.java index 730ad00..27111d1 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentAdapter.java @@ -93,10 +93,7 @@ class ModDetailAssignmentAdapter extends RecyclerView.Adapter try { return URLDecoder.decode(Regex.regex("/([^/]*)$", url), "UTF-8"); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - return res.getString(R.string.attachment_nr, index); - } catch (UnsupportedEncodingException e) { + } catch (NoSuchFieldException | UnsupportedEncodingException e) { e.printStackTrace(); return res.getString(R.string.attachment_nr, index); } diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentFragment.java index d4ebfb4..c4a8dcc 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentFragment.java @@ -110,7 +110,7 @@ public class ModDetailAssignmentFragment extends Fragment implements Download.On } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof MainActivityListener) { this.mListener = ((MainActivityListener) context); diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailEventFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailEventFragment.java index f2abeb3..1e54a81 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailEventFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailEventFragment.java @@ -96,7 +96,7 @@ public class ModDetailEventFragment extends Fragment { } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof MainActivityListener) { this.mListener = ((MainActivityListener) context); diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java index 2344df7..bf9e397 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java @@ -97,7 +97,7 @@ public class ModDetailFragment extends Fragment implements ModDetailListener { } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof MainActivityListener) { mListener = (MainActivityListener) context; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailGradebookFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailGradebookFragment.java index 4cf0830..72dcaa7 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailGradebookFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailGradebookFragment.java @@ -96,7 +96,7 @@ public class ModDetailGradebookFragment extends Fragment { } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof MainActivityListener) { this.mListener = ((MainActivityListener) context); diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewFragment.java index 23ab709..474976c 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewFragment.java @@ -100,7 +100,7 @@ public class ModDetailOverviewFragment extends Fragment { } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof MainActivityListener) { this.mListener = ((MainActivityListener) context); diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceFragment.java index c85d993..c70a02b 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceFragment.java @@ -135,7 +135,7 @@ public class ModDetailResourceFragment extends Fragment implements Download.OnDo } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof MainActivityListener) { this.mListener = ((MainActivityListener) context); diff --git a/app/src/main/java/de/sebse/fuplanner/services/canteen/CanteenBrowser.java b/app/src/main/java/de/sebse/fuplanner/services/canteen/CanteenBrowser.java index 8d4a00b..54abecc 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/canteen/CanteenBrowser.java +++ b/app/src/main/java/de/sebse/fuplanner/services/canteen/CanteenBrowser.java @@ -1,14 +1,12 @@ package de.sebse.fuplanner.services.canteen; import android.content.Context; -import android.os.Build; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; -import java.util.HashSet; import de.sebse.fuplanner.R; import de.sebse.fuplanner.services.canteen.types.Canteen; @@ -37,9 +35,7 @@ public class CanteenBrowser extends HTTPService { throw new RuntimeException(context.toString() + " must implement CanteenListener"); try { this.canteens = Canteens.load(context); - } catch (IOException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { + } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } @@ -68,11 +64,6 @@ public class CanteenBrowser extends HTTPService { } private void upgradeCanteens(final NetworkCallback callback, final NetworkErrorCallback errorCallback) { - // TSL 1.2 not supported (https://github.com/google/volley/issues/77) - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { - callback.onResponse(new Canteens()); - return; - } int[] visibleCanteens = Preferences.getArrayInt(context, R.string.pref_canteen_selection); if (visibleCanteens == null) { Preferences.setArrayInt(context, R.string.pref_canteen_selection, Canteens.availableCanteens); @@ -144,11 +135,6 @@ public class CanteenBrowser extends HTTPService { } private void upgradeCanteen(Canteen canteen, final NetworkCallback callback, final NetworkErrorCallback errorCallback) { - // TSL 1.2 not supported (https://github.com/google/volley/issues/77) - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { - callback.onResponse(canteen); - return; - } get(String.format("https://openmensa.org/api/v2/canteens/%s/days", canteen.getId()), null, response -> { String body = response.getParsed(); if (body == null) { @@ -196,11 +182,6 @@ public class CanteenBrowser extends HTTPService { } private void upgradeDay(Day day, final NetworkCallback callback, final NetworkErrorCallback errorCallback) { - // TSL 1.2 not supported (https://github.com/google/volley/issues/77) - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { - callback.onResponse(day); - return; - } get(String.format("https://openmensa.org/api/v2/canteens/%s/days/%s/meals/", day.getCanteenId(), Canteen.calendarToKey(day.getCalendar())), null, response -> { String body = response.getParsed(); if (body == null) { diff --git a/app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticator.java b/app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticator.java index 0a6bdcf..e33032c 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticator.java +++ b/app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticator.java @@ -73,9 +73,7 @@ public class FUAuthenticator extends AbstractAccountAuthenticator { throw new NetworkErrorException(authToken); else authToken = null; } - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (ExecutionException e) { + } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java b/app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java index 8f779c5..669f01b 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java +++ b/app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java @@ -5,7 +5,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; -import android.os.Build; import org.jetbrains.annotations.NotNull; @@ -67,7 +66,7 @@ public class UserLoginTask extends AsyncTask { AtomicReference login = new AtomicReference<>(); NetworkErrorCallback errorFunc = error -> { log.e(error); - login.set("Error: "+String.valueOf(error.getCode())); + login.set("Error: "+ error.getCode()); latch.countDown(); }; switch (mTokenType) { @@ -123,7 +122,7 @@ public class UserLoginTask extends AsyncTask { protected void onPostExecute(final String success) { if (mActivity == null || mActivity.isFinishing()) return; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && mActivity.isDestroyed()) + if (mActivity.isDestroyed()) return; mActivity.mAuthTask = null; mActivity.showProgress(false); @@ -149,7 +148,7 @@ public class UserLoginTask extends AsyncTask { protected void onCancelled() { if (mActivity == null || mActivity.isFinishing()) return; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && mActivity.isDestroyed()) + if (mActivity.isDestroyed()) return; mActivity.mAuthTask = null; mActivity.showProgress(false); diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/Login.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/Login.java index 3e1efb1..8711582 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/Login.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/Login.java @@ -16,7 +16,6 @@ import de.sebse.fuplanner.services.kvv.types.LoginTokenKVV; import de.sebse.fuplanner.tools.CustomAccountManager; import de.sebse.fuplanner.tools.NetworkCallbackCollector; import de.sebse.fuplanner.tools.Preferences; -import de.sebse.fuplanner.tools.logging.Logger; import de.sebse.fuplanner.tools.network.HTTPService; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkError; diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEvents.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEvents.java index 6702517..132aa6d 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEvents.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEvents.java @@ -1,7 +1,6 @@ package de.sebse.fuplanner.services.kvv; import android.content.Context; -import android.os.Build; import android.text.TextUtils; import org.json.JSONArray; @@ -89,11 +88,6 @@ public class ModulesEvents extends PartModules { @Override protected void upgradeBB(String ID, NetworkCallback callback, NetworkErrorCallback errorCallback) { - // TSL 1.2 not supported (https://github.com/google/volley/issues/77) - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { - callback.onResponse(new EventList()); - return; - } if (!mLogin.isInOnlineMode() || mLogin.getLoginTokenBB() == null || !mLogin.getLoginTokenBB().isAvailable()) { errorCallback.onError(new NetworkError(101414, 500, "Currently running in offline mode!")); return; diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEventsNumber.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEventsNumber.java index 5815101..3f7de08 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEventsNumber.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEventsNumber.java @@ -2,17 +2,9 @@ package de.sebse.fuplanner.services.kvv; import android.content.Context; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - import java.io.IOException; -import java.util.ArrayList; -import java.util.LinkedHashSet; import de.sebse.fuplanner.services.kvv.types.CacheBBEventNumber; -import de.sebse.fuplanner.services.kvv.types.CacheLecturer; -import de.sebse.fuplanner.services.kvv.types.Lecturer; import de.sebse.fuplanner.tools.Regex; import de.sebse.fuplanner.tools.network.HTTPService; import de.sebse.fuplanner.tools.network.NetworkCallback; @@ -27,9 +19,7 @@ class ModulesEventsNumber extends HTTPService { CacheBBEventNumber storage = null; try { storage = CacheBBEventNumber.load(context); - } catch (IOException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { + } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } if (storage == null) { diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java index 3c0241c..7a6b267 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java @@ -102,9 +102,7 @@ public class ModulesList extends HTTPService { try { this.mModules = Modules.load(getContext()); } catch (FileNotFoundException ignored) { - } catch (IOException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { + } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } if (this.mModules == null) { @@ -429,9 +427,7 @@ public class ModulesList extends HTTPService { if (mBBCache == null) { try { mBBCache = CacheBBCourse.load(getContext()); - } catch (IOException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { + } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } @@ -444,9 +440,7 @@ public class ModulesList extends HTTPService { if (mKVVCache == null) { try { mKVVCache = CacheKVVCourse.load(getContext()); - } catch (IOException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { + } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesListLecturer.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesListLecturer.java index 8ca32b0..20de45b 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesListLecturer.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesListLecturer.java @@ -27,9 +27,7 @@ class ModulesListLecturer extends HTTPService { CacheLecturer storage = null; try { storage = CacheLecturer.load(context); - } catch (IOException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { + } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } if (storage == null) { diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java index 7f8abf1..63451f4 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java @@ -1,7 +1,6 @@ package de.sebse.fuplanner.services.kvv; import android.content.Context; -import android.os.Build; import android.os.Environment; import org.json.JSONArray; @@ -101,9 +100,7 @@ public class ModulesResources extends PartModules> { for (Resource res2: resources) { try { String utf8Name; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) - utf8Name = StandardCharsets.UTF_8.name(); - else utf8Name = "UTF-8"; + utf8Name = StandardCharsets.UTF_8.name(); if (URLDecoder.decode(res2.getUrl(), utf8Name).endsWith(res.getContainer()) && res2 instanceof Resource.Folder) { // Append File/Folder to list ((Resource.Folder) res2).add(res); diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVSyncAdapter.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVSyncAdapter.java index 8b8d047..b9727c1 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVSyncAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVSyncAdapter.java @@ -1,7 +1,6 @@ package de.sebse.fuplanner.services.kvv.sync; import android.accounts.Account; -import android.accounts.AccountManager; import android.content.AbstractThreadedSyncAdapter; import android.content.ComponentName; import android.content.ContentProviderClient; @@ -19,7 +18,6 @@ import androidx.annotation.StringRes; import de.sebse.fuplanner.R; import de.sebse.fuplanner.fragments.moddetails.ModulePart; import de.sebse.fuplanner.services.kvv.KVV; -import de.sebse.fuplanner.services.kvv.KVVListener; import de.sebse.fuplanner.services.kvv.types.Announcement; import de.sebse.fuplanner.services.kvv.types.Assignment; import de.sebse.fuplanner.services.kvv.types.AssignmentList; @@ -27,7 +25,6 @@ import de.sebse.fuplanner.services.kvv.types.EventList; import de.sebse.fuplanner.services.kvv.types.Grade; import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.services.kvv.types.Resource; -import de.sebse.fuplanner.tools.CustomAccountManager; import de.sebse.fuplanner.tools.CustomNotificationManager; import de.sebse.fuplanner.tools.NewAsyncQueue; import de.sebse.fuplanner.tools.UtilsDate; @@ -139,7 +136,7 @@ public class KVVSyncAdapter extends AbstractThreadedSyncAdapter { sendNotifications(assignments, module.assignments, module.title, Assignment::getTitle, Assignment::getId, module.getID(), ModulePart.ASSIGNMENT, R.string.assignment_updated, R.string.assignment_added, R.string.assignment_removed); - sendNotifications(events, module.events, module.title, evt -> evt.getTitle()+" - "+UtilsDate.getModifiedDate(evt.getStartDate()), event -> String.valueOf(event.getStartDate())+event.getType()+event.getTitle(), + sendNotifications(events, module.events, module.title, evt -> evt.getTitle()+" - "+UtilsDate.getModifiedDate(evt.getStartDate()), event -> event.getStartDate() +event.getType()+event.getTitle(), module.getID(), ModulePart.EVENT, R.string.event_updated, R.string.event_added, R.string.event_removed); sendNotifications(gradebook, module.gradebook, module.title, Grade::getItemName, Grade::getItemName, diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/types/CacheKVVCourse.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/CacheKVVCourse.java index 10dd993..c8b029d 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/types/CacheKVVCourse.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/CacheKVVCourse.java @@ -9,7 +9,6 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.HashMap; -import java.util.HashSet; public class CacheKVVCourse implements Serializable { private transient static final long RESAVE_TIMER = 1000L * 60 * 60 * 24 * 30; diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Event.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Event.java index c94c975..6dee558 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Event.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Event.java @@ -69,11 +69,7 @@ public class Event implements Serializable { return null; } byte[] encodedHash; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { - encodedHash = digest.digest(siteId.getBytes(StandardCharsets.UTF_8)); - } else { - encodedHash = digest.digest(siteId.getBytes()); - } + encodedHash = digest.digest(siteId.getBytes(StandardCharsets.UTF_8)); int h = (0xff & encodedHash[0]) + (0xff & encodedHash[1]) * 255; h = h * 360 / 0xffff; //int s = 0xff & encodedHash[2]; diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Modules.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Modules.java index 146f9fa..90ff6a6 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Modules.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Modules.java @@ -174,7 +174,7 @@ public class Modules implements Iterable, Serializable { @Nullable public final String type; @Nullable public final String description; @NotNull private final String ID; - @NotNull private final int moduleType; + private final int moduleType; @Nullable public ArrayList announcements; @Nullable public AssignmentList assignments; @Nullable public EventList events; @@ -195,7 +195,7 @@ public class Modules implements Iterable, Serializable { return userPoint/maxPoint; } - private Module(@Nullable Semester semester, @NotNull HashSet lvNumber, @NotNull String title, @NotNull LinkedHashSet lecturer, @Nullable String type, @Nullable String description, @NotNull String ID, @NotNull int moduleType) { + private Module(@Nullable Semester semester, @NotNull HashSet lvNumber, @NotNull String title, @NotNull LinkedHashSet lecturer, @Nullable String type, @Nullable String description, @NotNull String ID, int moduleType) { title = title.replaceAll("(.*?) (S[0-9]{2}|W[0-9/]{5})", "$1"); @@ -238,6 +238,7 @@ public class Modules implements Iterable, Serializable { return moduleType; } + @NonNull public Module clone() { return new Module(semester, lvNumber, title, new LinkedHashSet<>(lecturer), type, description, ID, moduleType); } diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ui/Download.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ui/Download.java index 27a86ca..8f39440 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ui/Download.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ui/Download.java @@ -10,7 +10,6 @@ import android.net.Uri; import android.os.Environment; import java.io.File; -import java.util.ArrayList; import java.util.Arrays; import androidx.annotation.Nullable; @@ -148,11 +147,6 @@ public class Download { showDownloadError(); return; } - ArrayList intList = new ArrayList<>(); - for (int i : grantResults) - { - intList.add(i); - } int pos = Arrays.asList(permissions).indexOf("android.permission.WRITE_EXTERNAL_STORAGE"); if (pos != -1) { if (grantResults[pos] != -1) { @@ -194,11 +188,7 @@ public class Download { Uri uri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".my.provider", url); Intent intent; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { - intent = new Intent(Intent.ACTION_VIEW); - } else { - intent = new Intent(); - } + intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); // Check what kind of file you are trying to open, by comparing the url with extensions. diff --git a/app/src/main/java/de/sebse/fuplanner/services/news/NewsManager.java b/app/src/main/java/de/sebse/fuplanner/services/news/NewsManager.java index 1ffd446..b1c0f19 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/news/NewsManager.java +++ b/app/src/main/java/de/sebse/fuplanner/services/news/NewsManager.java @@ -8,6 +8,7 @@ import org.json.JSONObject; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.Locale; import de.sebse.fuplanner.R; @@ -82,7 +83,7 @@ public class NewsManager { byte[] buffer = new byte[size]; is.read(buffer); is.close(); - return new String(buffer, "UTF-8"); + return new String(buffer, StandardCharsets.UTF_8); } catch (IOException ex) { ex.printStackTrace(); return null; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/CustomAccountManager.java b/app/src/main/java/de/sebse/fuplanner/tools/CustomAccountManager.java index 05ed592..d9f0ad2 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/CustomAccountManager.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/CustomAccountManager.java @@ -34,11 +34,7 @@ public class CustomAccountManager { try { String token = mAccountManager.blockingGetAuthToken(account, authTokenType, true); mAccountManager.invalidateAuthToken(accountType, token); - } catch (AuthenticatorException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (OperationCanceledException e) { + } catch (AuthenticatorException | OperationCanceledException | IOException e) { e.printStackTrace(); } } @@ -53,11 +49,7 @@ public class CustomAccountManager { if (callback != null) callback.run(true); return; - } catch (AuthenticatorException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (OperationCanceledException e) { + } catch (AuthenticatorException | OperationCanceledException | IOException e) { e.printStackTrace(); } if (callback != null) @@ -102,11 +94,7 @@ public class CustomAccountManager { Account account = mAccountManager.getAccountsByType(accountType)[0]; try { return mAccountManager.blockingGetAuthToken(account, authTokenType, true); - } catch (AuthenticatorException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (OperationCanceledException e) { + } catch (AuthenticatorException | OperationCanceledException | IOException e) { e.printStackTrace(); } return null; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java b/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java index f26c797..8585f51 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java @@ -4,8 +4,6 @@ import androidx.annotation.StringRes; import de.sebse.fuplanner.MainActivity; import de.sebse.fuplanner.services.canteen.CanteenBrowser; -import de.sebse.fuplanner.services.kvv.KVV; -import de.sebse.fuplanner.services.kvv.KVVListener; import de.sebse.fuplanner.services.news.NewsManager; public interface MainActivityListener { diff --git a/app/src/main/java/de/sebse/fuplanner/tools/NewAsyncQueue.java b/app/src/main/java/de/sebse/fuplanner/tools/NewAsyncQueue.java index 1bce40c..e7da1b1 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/NewAsyncQueue.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/NewAsyncQueue.java @@ -2,7 +2,6 @@ package de.sebse.fuplanner.tools; import java.util.LinkedList; -import de.sebse.fuplanner.tools.logging.Logger; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/UtilsDate.java b/app/src/main/java/de/sebse/fuplanner/tools/UtilsDate.java index 26e3a35..70d513b 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/UtilsDate.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/UtilsDate.java @@ -49,11 +49,7 @@ public class UtilsDate { skeleton = skeleton.replaceAll("h", "H"); if (context != null && !DateFormat.is24HourFormat(context)) skeleton = skeleton.replaceAll("H", "h"); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { - dateFormat = new SimpleDateFormat(getDateFormat(locale, skeleton)); - } else { - dateFormat = new SimpleDateFormat(skeleton, locale); - } + dateFormat = new SimpleDateFormat(getDateFormat(locale, skeleton)); return dateFormat.format(new Date(modified)); } diff --git a/app/src/main/java/de/sebse/fuplanner/tools/network/HTTPNetwork.java b/app/src/main/java/de/sebse/fuplanner/tools/network/HTTPNetwork.java index bcdf58a..b9a55b0 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/network/HTTPNetwork.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/network/HTTPNetwork.java @@ -16,6 +16,7 @@ import com.android.volley.toolbox.Volley; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @@ -144,11 +145,7 @@ public class HTTPNetwork extends Service { } } String requestBody = sb.toString(); - try { - return requestBody.getBytes("utf-8"); - } catch (UnsupportedEncodingException e) { - return null; - } + return requestBody.getBytes(StandardCharsets.UTF_8); } @Override diff --git a/app/src/main/java/de/sebse/fuplanner/tools/network/NetworkError.java b/app/src/main/java/de/sebse/fuplanner/tools/network/NetworkError.java index 972e618..6561ca6 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/network/NetworkError.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/network/NetworkError.java @@ -31,6 +31,6 @@ public class NetworkError { @NonNull public String toString() { - return String.valueOf(getCode()) + " - " + getHttpStatus() + " - " + getMessage(); + return getCode() + " - " + getHttpStatus() + " - " + getMessage(); } } diff --git a/app/src/main/java/de/sebse/fuplanner/tools/network/NukeSSLCerts.java b/app/src/main/java/de/sebse/fuplanner/tools/network/NukeSSLCerts.java deleted file mode 100644 index a5f9aaf..0000000 --- a/app/src/main/java/de/sebse/fuplanner/tools/network/NukeSSLCerts.java +++ /dev/null @@ -1,45 +0,0 @@ -package de.sebse.fuplanner.tools.network; - -import java.security.SecureRandom; -import java.security.cert.X509Certificate; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - -public class NukeSSLCerts { - protected static final String TAG = "NukeSSLCerts"; - - public static void nuke() { - try { - TrustManager[] trustAllCerts = new TrustManager[] { - new X509TrustManager() { - public X509Certificate[] getAcceptedIssuers() { - X509Certificate[] myTrustedAnchors = new X509Certificate[0]; - return myTrustedAnchors; - } - - @Override - public void checkClientTrusted(X509Certificate[] certs, String authType) {} - - @Override - public void checkServerTrusted(X509Certificate[] certs, String authType) {} - } - }; - - SSLContext sc = SSLContext.getInstance("SSL"); - sc.init(null, trustAllCerts, new SecureRandom()); - HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); - HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { - @Override - public boolean verify(String arg0, SSLSession arg1) { - return true; - } - }); - } catch (Exception e) { - } - } -} \ No newline at end of file diff --git a/app/src/main/java/de/sebse/fuplanner/tools/types/News.java b/app/src/main/java/de/sebse/fuplanner/tools/types/News.java index 11a59e7..d8b64e3 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/types/News.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/types/News.java @@ -1,5 +1,7 @@ package de.sebse.fuplanner.tools.types; +import androidx.annotation.NonNull; + public class News { public static final int CATEGORY_TRICKS = 0; public static final int CATEGORY_UPDATE = 1; @@ -32,6 +34,7 @@ public class News { return text; } + @NonNull @Override public String toString() { return "News{" + diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/CanteensViewHolder.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/CanteensViewHolder.java index 102ed2f..44086fd 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/CanteensViewHolder.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/CanteensViewHolder.java @@ -2,9 +2,6 @@ package de.sebse.fuplanner.tools.ui; import android.view.View; import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; import de.sebse.fuplanner.R; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/cardview/ExpandableCardView.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/cardview/ExpandableCardView.java index 37ffa08..503ea07 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/cardview/ExpandableCardView.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/cardview/ExpandableCardView.java @@ -103,11 +103,9 @@ public class ExpandableCardView extends CardView { (int) UtilsUi.convertDpToPixels(getContext(), 10), (int) UtilsUi.convertDpToPixels(getContext(), 10) ); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - TypedValue outValue = new TypedValue(); - context.getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true); - imageButton.setBackgroundResource(outValue.resourceId); - } + TypedValue outValue = new TypedValue(); + context.getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true); + imageButton.setBackgroundResource(outValue.resourceId); isExpanded = startExpanded; } diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeNode.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeNode.java index b6e8c61..f2e9375 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeNode.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeNode.java @@ -140,7 +140,8 @@ public class TreeNode implements Cloneable { } - @SuppressWarnings({"CloneDoesntDeclareCloneNotSupportedException", "MethodDoesntCallSuperMethod"}) + @NonNull + @SuppressWarnings({"CloneDoesntDeclareCloneNotSupportedException"}) @Override protected TreeNode clone() { TreeNode clone = new TreeNode<>(this.content); diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java index 368435e..9b1b734 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java @@ -309,7 +309,7 @@ public class WeekView extends View { mDoubleTapListener.onDoubleTapListener((Calendar) selectedTime.clone()); } if (mDoubleTapLeftRightListener != null) - mDoubleTapLeftRightListener.onDoubleTapLeftRightListener(getWidth()/2 < e.getX()); + mDoubleTapLeftRightListener.onDoubleTapLeftRightListener(getWidth() / 2.0 < e.getX()); return super.onDoubleTap(e); } diff --git a/app/src/main/res/layout/item_dir.xml b/app/src/main/res/layout/item_dir.xml index 3c51c10..d9e0e7a 100644 --- a/app/src/main/res/layout/item_dir.xml +++ b/app/src/main/res/layout/item_dir.xml @@ -18,7 +18,6 @@ android:id="@+id/tv_name" android:layout_width="match_parent" android:layout_height="wrap_content" - android:drawableLeft="@drawable/ic_folder" android:drawablePadding="10sp" android:gravity="center_vertical" tools:text="@string/app_name" diff --git a/app/src/main/res/layout/item_file.xml b/app/src/main/res/layout/item_file.xml index 42494fe..d9387b9 100644 --- a/app/src/main/res/layout/item_file.xml +++ b/app/src/main/res/layout/item_file.xml @@ -6,7 +6,6 @@ xmlns:tools="http://schemas.android.com/tools"> + android:layout_marginStart="18dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/list_all_items.xml b/app/src/main/res/layout/list_all_items.xml index 143b08c..dc5ea08 100644 --- a/app/src/main/res/layout/list_all_items.xml +++ b/app/src/main/res/layout/list_all_items.xml @@ -39,7 +39,6 @@ android:textColor="#343434" android:textSize="12sp" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" tools:text="20.03.18 18:42 Uhr" /> diff --git a/app/src/main/res/layout/list_all_mails.xml b/app/src/main/res/layout/list_all_mails.xml index 75ed1fd..c781e5b 100644 --- a/app/src/main/res/layout/list_all_mails.xml +++ b/app/src/main/res/layout/list_all_mails.xml @@ -35,8 +35,6 @@ android:layout_alignTop="@id/title" android:layout_alignBottom="@id/sub_left" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" - android:layout_marginRight="10dp" android:contentDescription="@string/mail_icon" android:scaleType="fitCenter" android:src="@drawable/ic_mail" diff --git a/app/src/main/res/layout/list_canteen_body.xml b/app/src/main/res/layout/list_canteen_body.xml index 605898f..151612b 100644 --- a/app/src/main/res/layout/list_canteen_body.xml +++ b/app/src/main/res/layout/list_canteen_body.xml @@ -11,7 +11,6 @@ @@ -20,7 +19,6 @@ android:layout_height="wrap_content" android:text="@string/vegan" android:drawableStart="@mipmap/ic_vegan" - android:drawableLeft="@mipmap/ic_vegan" android:gravity="center_vertical" app:compoundDrawableHeight="16dp" app:compoundDrawableWidth="16dp" /> @@ -30,7 +28,6 @@ android:layout_height="wrap_content" android:text="@string/msc" android:drawableStart="@mipmap/ic_msc" - android:drawableLeft="@mipmap/ic_msc" android:gravity="center_vertical" app:compoundDrawableHeight="16dp" app:compoundDrawableWidth="16dp" /> @@ -40,7 +37,6 @@ android:layout_height="wrap_content" android:text="@string/bio" android:drawableStart="@mipmap/ic_organic" - android:drawableLeft="@mipmap/ic_organic" android:gravity="center_vertical" app:compoundDrawableHeight="16dp" app:compoundDrawableWidth="16dp" /> diff --git a/app/src/main/res/layout/list_canteens_items.xml b/app/src/main/res/layout/list_canteens_items.xml index 5b7887f..3026259 100644 --- a/app/src/main/res/layout/list_canteens_items.xml +++ b/app/src/main/res/layout/list_canteens_items.xml @@ -10,7 +10,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_remove_circle_outline" - android:contentDescription="TODO" + android:contentDescription="@string/remove_entry" android:layout_gravity="center" android:padding="8dp"/> diff --git a/app/src/main/res/layout/list_moddetails_description.xml b/app/src/main/res/layout/list_moddetails_description.xml index 0173b71..7991eaa 100644 --- a/app/src/main/res/layout/list_moddetails_description.xml +++ b/app/src/main/res/layout/list_moddetails_description.xml @@ -1,13 +1,12 @@ @@ -27,7 +25,6 @@ android:textColor="#343434" android:textSize="12sp" tools:text="8" - android:layout_toLeftOf="@id/slash" android:layout_toStartOf="@id/slash" android:layout_alignTop="@id/title" /> @@ -39,7 +36,6 @@ android:textColor="#343434" android:textSize="30sp" android:text="@string/grade_separator" - android:layout_toLeftOf="@id/grade_max" android:layout_toStartOf="@id/grade_max" android:layout_alignTop="@id/title" /> @@ -52,6 +48,5 @@ android:textColor="#343434" android:textSize="12sp" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" tools:text="10" /> \ No newline at end of file diff --git a/app/src/main/res/layout/list_news_item.xml b/app/src/main/res/layout/list_news_item.xml index 808e140..fa702fa 100644 --- a/app/src/main/res/layout/list_news_item.xml +++ b/app/src/main/res/layout/list_news_item.xml @@ -45,7 +45,6 @@ tools:text="20.09.2018" android:textColor="@color/colorFUOrange" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" android:layout_below="@id/header" /> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 5d1fe95..ae7379b 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -86,10 +86,6 @@ Tipps/Tricks Klicke ZURÜCK erneut zum Beenden! Sign in - Benutzername - Passwort (optional) - Log in - Log in Das Passwort ist zu kurz. Das Passwort ist nicht korrekt. Pflichtfeld @@ -117,4 +113,5 @@ Die Kantinenliste ist für Android 4 und darunter nicht verfügbar! Einträge zurücksetzen Einträge löschen + Entrag entfernen \ No newline at end of file diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml deleted file mode 100644 index a5bb54c..0000000 --- a/app/src/main/res/values-v21/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - \ 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 b57fafe..5320b8d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -94,10 +94,6 @@ Tips/Tricks Please click BACK again to exit! Sign in - Username - Password (optional) - Sign in or register - Sign in This password is too short This password is incorrect This field is required @@ -125,4 +121,5 @@ The canteen list is not available for Android 4 and below! Restore Defaults Delete Items + Remove entry diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 2799bbe..00d8fab 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -13,12 +13,7 @@ +