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
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-01-10 17:51:19 +0300
committerStefan Niedermann <info@niedermann.it>2021-01-10 17:51:19 +0300
commite9869df6aeb171a8978d6d4790416f1961e40487 (patch)
treec6246cf47e10f7cdf03b54d6fc3d70eebb83deda /app/src/main/java/it/niedermann/owncloud/notes/shared
parent2b530bdb7c742f7c0935bacaf8f368464ec19010 (diff)
Fix #1032 Save page title when sharing from browser
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes/shared')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java132
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/util/ShareUtil.java28
2 files changed, 28 insertions, 132 deletions
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
deleted file mode 100644
index f270fa9f..00000000
--- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Nextcloud Notes application
- *
- * @author Mario Danic
- * Copyright (C) 2018 Mario Danic <mario@lovelyhq.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package it.niedermann.owncloud.notes.shared.util;
-
-import android.content.Context;
-import android.graphics.Color;
-import android.text.Spannable;
-import android.text.TextPaint;
-import android.text.TextUtils;
-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;
-
-import it.niedermann.android.util.ColorUtil;
-import it.niedermann.owncloud.notes.NotesApplication;
-import it.niedermann.owncloud.notes.R;
-import it.niedermann.owncloud.notes.branding.BrandingUtil;
-
-public class DisplayUtils {
-
- private DisplayUtils() {
-
- }
-
- public static Spannable searchAndColor(Spannable spannable, CharSequence searchText, @NonNull Context context, @Nullable Integer current, @ColorInt int mainColor, @ColorInt int textColor) {
- CharSequence text = spannable.toString();
-
- Object[] spansToRemove = spannable.getSpans(0, text.length(), Object.class);
- for (Object span : spansToRemove) {
- if (span instanceof SearchSpan)
- spannable.removeSpan(span);
- }
-
- if (TextUtils.isEmpty(text) || TextUtils.isEmpty(searchText)) {
- return spannable;
- }
-
- Matcher m = Pattern.compile(searchText.toString(), Pattern.CASE_INSENSITIVE | Pattern.LITERAL)
- .matcher(text);
-
- int i = 1;
- while (m.find()) {
- int start = m.start();
- int end = m.end();
- spannable.setSpan(new SearchSpan(context, mainColor, textColor, (current != null && i == current)), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- i++;
- }
-
- return spannable;
- }
-
-
- static class SearchSpan extends MetricAffectingSpan {
-
- private final boolean current;
- @NonNull
- Context context;
- @ColorInt
- private final int mainColor;
- @ColorInt
- private final int textColor;
- @ColorInt
- private final int highlightColor;
-
- SearchSpan(@NonNull Context context, @ColorInt int mainColor, @ColorInt int textColor, boolean current) {
- this.context = context;
- this.mainColor = mainColor;
- this.textColor = textColor;
- this.current = current;
- this.highlightColor = ContextCompat.getColor(context, R.color.bg_highlighted);
- }
-
- @Override
- public void updateDrawState(TextPaint tp) {
- if (current) {
- if (NotesApplication.isDarkThemeActive(context)) {
- if (ColorUtil.INSTANCE.isColorDark(mainColor)) {
- tp.bgColor = Color.WHITE;
- tp.setColor(mainColor);
- } else {
- tp.bgColor = mainColor;
- tp.setColor(Color.BLACK);
- }
- } else {
- if (ColorUtil.INSTANCE.isColorDark(mainColor)) {
- tp.bgColor = mainColor;
- tp.setColor(Color.WHITE);
- } else {
- if (NotesColorUtil.contrastRatioIsSufficient(mainColor, highlightColor)) {
- tp.bgColor = highlightColor;
- } else {
- tp.bgColor = Color.BLACK;
- }
- tp.setColor(mainColor);
- }
- }
- } else {
- tp.bgColor = highlightColor;
- tp.setColor(BrandingUtil.getSecondaryForegroundColorDependingOnTheme(context, mainColor));
- }
- tp.setFakeBoldText(true);
- }
-
- @Override
- public void updateMeasureState(@NonNull TextPaint tp) {
- tp.setFakeBoldText(true);
- }
- }
-}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/ShareUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/ShareUtil.java
index 09ad7124..115d18dd 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/ShareUtil.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/ShareUtil.java
@@ -6,6 +6,11 @@ import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import it.niedermann.android.markdown.MarkdownUtil;
+
import static android.content.ClipDescription.MIMETYPE_TEXT_PLAIN;
public class ShareUtil {
@@ -17,4 +22,27 @@ public class ShareUtil {
.putExtra(Intent.EXTRA_TITLE, subject)
.putExtra(Intent.EXTRA_TEXT, text), subject));
}
+
+ public static String extractSharedText(@NonNull Intent intent) {
+ final String text = intent.getStringExtra(Intent.EXTRA_TEXT);
+ if (intent.hasExtra(Intent.EXTRA_SUBJECT)) {
+ final String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT);
+ try {
+ new URL(text);
+ if (text != null && subject != null && !subject.trim().isEmpty()) {
+ return MarkdownUtil.getMarkdownLink(subject, text);
+ } else {
+ return text;
+ }
+ } catch (MalformedURLException e) {
+ if (subject != null && !subject.trim().isEmpty()) {
+ return subject + ": " + text;
+ } else {
+ return text;
+ }
+ }
+ } else {
+ return text;
+ }
+ }
}