Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-01-05 12:55:05 +0300
committerStefan Niedermann <info@niedermann.it>2021-01-05 12:55:05 +0300
commitc92f9d251f6795130539c123c41ac431589332e6 (patch)
tree02101c464b22ac44eb6738ef3d10ac3324d892c1 /app/src
parente5daa14a0f57f97ac0dfdfa17e8fa9a2d4afc86e (diff)
parent56d77825138f935d296d79e62d259fc620b6d0b4 (diff)
Merge branch 'master' into toggleable-checkboxes
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/about/AboutActivity.java73
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/branding/BrandingUtil.java8
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/edit/category/CategoryAdapter.java9
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java3
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/items/ItemAdapter.java3
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java3
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/preferences/PreferencesFragment.java5
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java3
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java26
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java10
-rw-r--r--app/src/main/res/layout/activity_about.xml2
11 files changed, 68 insertions, 77 deletions
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"