diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-01-05 12:55:05 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-01-05 12:55:05 +0300 |
commit | c92f9d251f6795130539c123c41ac431589332e6 (patch) | |
tree | 02101c464b22ac44eb6738ef3d10ac3324d892c1 | |
parent | e5daa14a0f57f97ac0dfdfa17e8fa9a2d4afc86e (diff) | |
parent | 56d77825138f935d296d79e62d259fc620b6d0b4 (diff) |
Merge branch 'master' into toggleable-checkboxes
21 files changed, 166 insertions, 239 deletions
diff --git a/app/.classpath b/app/.classpath deleted file mode 100644 index 51769745..00000000 --- a/app/.classpath +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> - <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> - <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/> - <classpathentry kind="src" path="src"/> - <classpathentry kind="src" path="gen"/> - <classpathentry kind="output" path="bin/classes"/> -</classpath> diff --git a/app/.project b/app/.project deleted file mode 100644 index b3936bdb..00000000 --- a/app/.project +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>OwnCloudNotes</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>com.android.ide.eclipse.adt.ApkBuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>com.android.ide.eclipse.adt.AndroidNature</nature> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> diff --git a/app/build.gradle b/app/build.gradle index e551e090..8f39ab5b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 29 - buildToolsVersion '29.0.3' + buildToolsVersion '30.0.3' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/app/proguard-project.txt b/app/proguard-project.txt deleted file mode 100644 index f2fe1559..00000000 --- a/app/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/app/project.properties b/app/project.properties deleted file mode 100644 index f13bd4b1..00000000 --- a/app/project.properties +++ /dev/null @@ -1,13 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt -# Project target. -target=android-19 diff --git a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutActivity.java index d764ba7a..5c5bf519 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutActivity.java @@ -5,17 +5,23 @@ import android.os.Bundle; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentPagerAdapter; +import androidx.fragment.app.FragmentActivity; +import androidx.viewpager2.adapter.FragmentStateAdapter; + +import com.google.android.material.tabs.TabLayoutMediator; -import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.LockedActivity; +import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.branding.BrandingUtil; import it.niedermann.owncloud.notes.databinding.ActivityAboutBinding; public class AboutActivity extends LockedActivity { private ActivityAboutBinding binding; + private final static int POS_CREDITS = 0; + private final static int POS_CONTRIB = 1; + private final static int POS_LICENSE = 2; + private final static int TOTAL_COUNT = 3; @Override protected void onCreate(Bundle savedInstanceState) { @@ -25,8 +31,22 @@ public class AboutActivity extends LockedActivity { setContentView(binding.getRoot()); setSupportActionBar(binding.toolbar); - binding.pager.setAdapter(new TabsPagerAdapter(getSupportFragmentManager())); - binding.tabs.setupWithViewPager(binding.pager); + binding.pager.setAdapter(new TabsStateAdapter(this)); + // generate title based on given position + new TabLayoutMediator(binding.tabs, binding.pager, (tab, position) -> { + switch (position) { + default: // Fall-through to credits tab + case POS_CREDITS: + tab.setText(R.string.about_credits_tab_title); + break; + case POS_CONTRIB: + tab.setText(R.string.about_contribution_tab_title); + break; + case POS_LICENSE: + tab.setText(R.string.about_license_tab_title); + break; + } + }).attach(); } @Override @@ -36,15 +56,15 @@ public class AboutActivity extends LockedActivity { binding.tabs.setSelectedTabIndicatorColor(finalMainColor); } - private class TabsPagerAdapter extends FragmentPagerAdapter { + private static class TabsStateAdapter extends FragmentStateAdapter { - TabsPagerAdapter(FragmentManager fragmentManager) { - super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); + TabsStateAdapter(FragmentActivity fa) { + super(fa); } @Override - public int getCount() { - return 3; + public int getItemCount() { + return TOTAL_COUNT; } /** @@ -52,36 +72,17 @@ public class AboutActivity extends LockedActivity { */ @NonNull @Override - public Fragment getItem(int position) { + public Fragment createFragment(int position) { switch (position) { - case 1: - return new AboutFragmentContributingTab(); - - case 2: - return new AboutFragmentLicenseTab(); - - default: + default: // Fall-through to credits tab + case POS_CREDITS: return new AboutFragmentCreditsTab(); - } - } - /** - * generate title based on given position - */ - @Override - public CharSequence getPageTitle(int position) { - switch (position) { - case 0: - return getString(R.string.about_credits_tab_title); - - case 1: - return getString(R.string.about_contribution_tab_title); - - case 2: - return getString(R.string.about_license_tab_title); + case POS_CONTRIB: + return new AboutFragmentContributingTab(); - default: - return null; + case POS_LICENSE: + return new AboutFragmentLicenseTab(); } } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/branding/BrandingUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/branding/BrandingUtil.java index 7a4e6a51..c92cdf1f 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/branding/BrandingUtil.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/branding/BrandingUtil.java @@ -13,6 +13,8 @@ import android.widget.EditText; import androidx.annotation.ColorInt; import androidx.annotation.IdRes; import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.preference.PreferenceManager; @@ -43,7 +45,7 @@ public class BrandingUtil { Log.v(TAG, "--- Read: shared_preference_theme_main"); return sharedPreferences.getInt(pref_key_branding_main, context.getApplicationContext().getResources().getColor(R.color.defaultBrand)); } else { - return context.getResources().getColor(R.color.defaultBrand); + return ContextCompat.getColor(context, R.color.defaultBrand); } } @@ -70,7 +72,7 @@ public class BrandingUtil { if (isBrandingEnabled(context) && context instanceof BrandedActivity) { if (mainColor != previousMainColor || textColor != previousTextColor) { final BrandedActivity activity = (BrandedActivity) context; - activity.runOnUiThread(activity::recreate); + activity.runOnUiThread(() -> ActivityCompat.recreate(activity)); } } } @@ -80,7 +82,7 @@ public class BrandingUtil { */ @ColorInt public static int getSecondaryForegroundColorDependingOnTheme(@NonNull Context context, @ColorInt int mainColor) { - final int primaryColor = context.getResources().getColor(R.color.primary); + final int primaryColor = ContextCompat.getColor(context, R.color.primary); final boolean isDarkTheme = NotesApplication.isDarkThemeActive(context); if (isDarkTheme && !contrastRatioIsSufficient(mainColor, primaryColor)) { Log.v(TAG, "Contrast ratio between brand color " + String.format("#%06X", (0xFFFFFF & mainColor)) + " and dark theme is too low. Falling back to WHITE as brand color."); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/category/CategoryAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/category/CategoryAdapter.java index d938cb53..b5b4f394 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/category/CategoryAdapter.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/category/CategoryAdapter.java @@ -9,6 +9,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatImageView; +import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.recyclerview.widget.RecyclerView; @@ -50,17 +51,17 @@ public class CategoryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde switch (category.id) { case addItemId: - Drawable wrapDrawable = DrawableCompat.wrap(context.getResources().getDrawable(category.icon)); - DrawableCompat.setTint(wrapDrawable, context.getResources().getColor(R.color.icon_color_default)); + Drawable wrapDrawable = DrawableCompat.wrap(ContextCompat.getDrawable(context, category.icon)); + DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(context, R.color.icon_color_default)); categoryViewHolder.getIcon().setImageDrawable(wrapDrawable); categoryViewHolder.getCategoryWrapper().setOnClickListener((v) -> listener.onCategoryAdded()); break; case clearItemId: - categoryViewHolder.getIcon().setImageDrawable(context.getResources().getDrawable(category.icon)); + categoryViewHolder.getIcon().setImageDrawable(ContextCompat.getDrawable(context, category.icon)); categoryViewHolder.getCategoryWrapper().setOnClickListener((v) -> listener.onCategoryCleared()); break; default: - categoryViewHolder.getIcon().setImageDrawable(context.getResources().getDrawable(category.icon)); + categoryViewHolder.getIcon().setImageDrawable(ContextCompat.getDrawable(context, category.icon)); categoryViewHolder.getCategoryWrapper().setOnClickListener((v) -> listener.onCategoryChosen(category.label)); break; } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java index 1ce27fcc..66620320 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java @@ -22,6 +22,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.view.ActionMode; import androidx.appcompat.widget.SearchView; import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.view.GravityCompat; @@ -770,7 +771,7 @@ public class MainActivity extends LockedActivity implements NoteClickListener, V case server_settings: { // Recreate activity completely, because theme switching makes problems when only invalidating the views. // @see https://github.com/stefan-niedermann/nextcloud-notes/issues/529 - recreate(); + ActivityCompat.recreate(this); break; } case manage_account: { diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/ItemAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/ItemAdapter.java index 645533a7..da5425b7 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/ItemAdapter.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/ItemAdapter.java @@ -12,6 +12,7 @@ import androidx.annotation.ColorInt; import androidx.annotation.IntRange; import androidx.annotation.NonNull; import androidx.annotation.Px; +import androidx.core.content.ContextCompat; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.RecyclerView; @@ -63,7 +64,7 @@ public class ItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> i public <T extends Context & NoteClickListener> ItemAdapter(@NonNull T context, boolean gridView) { this.noteClickListener = context; this.gridView = gridView; - this.mainColor = context.getResources().getColor(R.color.defaultBrand); + this.mainColor = ContextCompat.getColor(context, R.color.defaultBrand); this.textColor = Color.WHITE; final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()); this.fontSize = getFontSizeFromPreferences(context, sp); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java index 15810817..49535e96 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java @@ -18,6 +18,7 @@ import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatImageView; +import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.recyclerview.widget.RecyclerView; @@ -112,7 +113,7 @@ public abstract class NoteViewHolder extends RecyclerView.ViewHolder { protected void bindSearchableContent(@NonNull Context context, @NonNull TextView textView, @Nullable CharSequence searchQuery, @NonNull String content, int mainColor) { CharSequence processedContent = content; if (!TextUtils.isEmpty(searchQuery)) { - @ColorInt final int searchBackground = context.getResources().getColor(R.color.bg_highlighted); + @ColorInt final int searchBackground = ContextCompat.getColor(context, R.color.bg_highlighted); @ColorInt final int searchForeground = BrandingUtil.getSecondaryForegroundColorDependingOnTheme(context, mainColor); // The Pattern.quote method will add \Q to the very beginning of the string and \E to the end of the string diff --git a/app/src/main/java/it/niedermann/owncloud/notes/preferences/PreferencesFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/preferences/PreferencesFragment.java index d324b9f6..4a890be0 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/preferences/PreferencesFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/preferences/PreferencesFragment.java @@ -7,6 +7,7 @@ import android.util.Log; import androidx.annotation.ColorInt; import androidx.annotation.Nullable; +import androidx.core.app.ActivityCompat; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; @@ -49,7 +50,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat implements Bra final Boolean branding = (Boolean) newValue; Log.v(TAG, "branding: " + branding); requireActivity().setResult(Activity.RESULT_OK); - requireActivity().recreate(); + ActivityCompat.recreate(requireActivity()); return true; }); } else { @@ -94,7 +95,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat implements Bra themePref.setOnPreferenceChangeListener((preference, newValue) -> { NotesApplication.setAppTheme(DarkModeSetting.valueOf((String) newValue)); requireActivity().setResult(Activity.RESULT_OK); - requireActivity().recreate(); + ActivityCompat.recreate(requireActivity()); return true; }); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java index 4d09f6a3..f270fa9f 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java @@ -29,6 +29,7 @@ import android.text.style.MetricAffectingSpan; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -89,7 +90,7 @@ public class DisplayUtils { this.mainColor = mainColor; this.textColor = textColor; this.current = current; - this.highlightColor = context.getResources().getColor(R.color.bg_highlighted); + this.highlightColor = ContextCompat.getColor(context, R.color.bg_highlighted); } @Override diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java index 9c117190..8bf80cb9 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java @@ -1,14 +1,10 @@ package it.niedermann.owncloud.notes.shared.util; -import android.os.Build; -import android.text.Html; -import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.widget.TextView; import androidx.annotation.NonNull; - -import static android.os.Build.VERSION_CODES.N; +import androidx.core.text.HtmlCompat; /** * Some helper functionality in alike the Android support library. @@ -28,24 +24,8 @@ public class SupportUtil { * @param formatArgs Arguments for the string resource. */ public static void setHtml(@NonNull TextView view, int stringId, Object... formatArgs) { - view.setText(SupportUtil.fromHtml(view.getResources().getString(stringId, formatArgs))); + view.setText(HtmlCompat.fromHtml( + view.getResources().getString(stringId, formatArgs), HtmlCompat.FROM_HTML_MODE_LEGACY)); view.setMovementMethod(LinkMovementMethod.getInstance()); } - - /** - * Creates a {@link Spanned} from a HTML string on all SDK versions. - * - * @param source Source string with HTML markup - * @return Spannable for using in a {@link TextView} - * @see Html#fromHtml(String) - * @see Html#fromHtml(String, int) - */ - private static Spanned fromHtml(String source) { - if (Build.VERSION.SDK_INT >= N) { - return Html.fromHtml(source, Html.FROM_HTML_MODE_LEGACY); - } else { - //noinspection deprecation - return Html.fromHtml(source); - } - } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java index 7584b966..188910e8 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java @@ -11,6 +11,8 @@ import android.net.Uri; import android.util.Log; import android.widget.RemoteViews; +import androidx.core.content.ContextCompat; + import java.util.NoSuchElementException; import it.niedermann.owncloud.notes.R; @@ -85,7 +87,7 @@ public class NoteListWidget extends AppWidgetProvider { views.setOnClickPendingIntent(R.id.widget_note_list_title_tv_dark, openAppI); views.setOnClickPendingIntent(R.id.widget_note_list_create_icon_dark, newNoteI); views.setPendingIntentTemplate(R.id.note_list_widget_lv_dark, templatePI); - views.setRemoteAdapter(appWidgetId, R.id.note_list_widget_lv_dark, serviceIntent); + views.setRemoteAdapter(R.id.note_list_widget_lv_dark, serviceIntent); views.setEmptyView(R.id.note_list_widget_lv_dark, R.id.widget_note_list_placeholder_tv_dark); awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv_dark); if (BrandingUtil.isBrandingEnabled(context)) { @@ -94,7 +96,7 @@ public class NoteListWidget extends AppWidgetProvider { views.setInt(R.id.widget_note_list_create_icon_dark, "setColorFilter", localAccount.getTextColor()); views.setTextColor(R.id.widget_note_list_title_tv_dark, localAccount.getTextColor()); } else { - views.setInt(R.id.widget_note_header_dark, "setBackgroundColor", context.getResources().getColor(R.color.defaultBrand)); + views.setInt(R.id.widget_note_header_dark, "setBackgroundColor", ContextCompat.getColor(context, R.color.defaultBrand)); views.setInt(R.id.widget_note_header_icon_dark, "setColorFilter", Color.WHITE); views.setInt(R.id.widget_note_list_create_icon_dark, "setColorFilter", Color.WHITE); views.setTextColor(R.id.widget_note_list_title_tv_dark, Color.WHITE); @@ -106,7 +108,7 @@ public class NoteListWidget extends AppWidgetProvider { views.setOnClickPendingIntent(R.id.widget_note_list_title_tv, openAppI); views.setOnClickPendingIntent(R.id.widget_note_list_create_icon, newNoteI); views.setPendingIntentTemplate(R.id.note_list_widget_lv, templatePI); - views.setRemoteAdapter(appWidgetId, R.id.note_list_widget_lv, serviceIntent); + views.setRemoteAdapter(R.id.note_list_widget_lv, serviceIntent); views.setEmptyView(R.id.note_list_widget_lv, R.id.widget_note_list_placeholder_tv); awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv); if (BrandingUtil.isBrandingEnabled(context)) { @@ -115,7 +117,7 @@ public class NoteListWidget extends AppWidgetProvider { views.setInt(R.id.widget_note_list_create_icon, "setColorFilter", localAccount.getTextColor()); views.setTextColor(R.id.widget_note_list_title_tv, localAccount.getTextColor()); } else { - views.setInt(R.id.widget_note_header, "setBackgroundColor", context.getResources().getColor(R.color.defaultBrand)); + views.setInt(R.id.widget_note_header, "setBackgroundColor", ContextCompat.getColor(context, R.color.defaultBrand)); views.setInt(R.id.widget_note_header_icon, "setColorFilter", Color.WHITE); views.setInt(R.id.widget_note_list_create_icon, "setColorFilter", Color.WHITE); views.setTextColor(R.id.widget_note_list_title_tv, Color.WHITE); diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 476c7743..d96e3026 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -28,7 +28,7 @@ app:tabIndicatorColor="@color/defaultBrand" /> </com.google.android.material.appbar.AppBarLayout> - <androidx.viewpager.widget.ViewPager + <androidx.viewpager2.widget.ViewPager2 android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar Binary files differindex 7a3265ee..e708b1c0 100644 --- a/gradle/wrapper/gradle-wrapper.jar +++ b/gradle/wrapper/gradle-wrapper.jar diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 996cd8b3..1f3fdbc5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Oct 13 09:37:22 CEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip @@ -1,4 +1,20 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## ## @@ -6,20 +22,38 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +64,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,33 +75,14 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -90,7 +106,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -110,11 +126,13 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` SEP="" @@ -138,27 +156,30 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index aec99730..ac1b06f9 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@@ -8,20 +24,23 @@ @rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
+if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-if exist "%JAVA_EXE%" goto init
+if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -45,34 +64,14 @@ echo location of your Java installation. goto fail
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/markdown/build.gradle b/markdown/build.gradle index 20764e10..8d09fa64 100644 --- a/markdown/build.gradle +++ b/markdown/build.gradle @@ -4,25 +4,17 @@ plugins { android { compileSdkVersion 30 - buildToolsVersion "30.0.1" + buildToolsVersion "30.0.3" defaultConfig { minSdkVersion 19 targetSdkVersion 30 - versionCode 1 - versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" multiDexEnabled true } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 |