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-10 17:51:19 +0300
committerStefan Niedermann <info@niedermann.it>2021-01-10 17:51:19 +0300
commite9869df6aeb171a8978d6d4790416f1961e40487 (patch)
treec6246cf47e10f7cdf03b54d6fc3d70eebb83deda /app/src
parent2b530bdb7c742f7c0935bacaf8f368464ec19010 (diff)
Fix #1032 Save page title when sharing from browser
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java10
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java8
-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
4 files changed, 39 insertions, 139 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java
index 23e68804..980e5e0e 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java
@@ -1,7 +1,7 @@
package it.niedermann.owncloud.notes;
-import android.content.Intent;
import android.os.Bundle;
+import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
@@ -9,8 +9,9 @@ import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
-import it.niedermann.owncloud.notes.shared.model.DBNote;
import it.niedermann.owncloud.notes.main.MainActivity;
+import it.niedermann.owncloud.notes.shared.model.DBNote;
+import it.niedermann.owncloud.notes.shared.util.ShareUtil;
public class AppendToNoteActivity extends MainActivity {
@@ -22,8 +23,7 @@ public class AppendToNoteActivity extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- final Intent receivedIntent = getIntent();
- receivedText = receivedIntent.getStringExtra(Intent.EXTRA_TEXT);
+ receivedText = ShareUtil.extractSharedText(getIntent());
@Nullable final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
getSupportActionBar().setTitle(R.string.append_to_note);
@@ -35,7 +35,7 @@ public class AppendToNoteActivity extends MainActivity {
@Override
public void onNoteClick(int position, View v) {
- if (receivedText != null && receivedText.length() > 0) {
+ if (!TextUtils.isEmpty(receivedText)) {
final DBNote note = db.getNote(localAccount.getId(), ((DBNote) adapter.getItem(position)).getId());
final String oldContent = note.getContent();
String newContent;
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java
index 53f97d85..6ffa750b 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java
@@ -15,19 +15,23 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.Calendar;
import java.util.Objects;
+import it.niedermann.android.markdown.MarkdownUtil;
import it.niedermann.owncloud.notes.LockedActivity;
import it.niedermann.owncloud.notes.R;
-import it.niedermann.owncloud.notes.databinding.ActivityEditBinding;
import it.niedermann.owncloud.notes.accountpicker.AccountPickerListener;
+import it.niedermann.owncloud.notes.databinding.ActivityEditBinding;
import it.niedermann.owncloud.notes.main.MainActivity;
import it.niedermann.owncloud.notes.shared.model.Category;
import it.niedermann.owncloud.notes.shared.model.CloudNote;
import it.niedermann.owncloud.notes.shared.model.DBNote;
import it.niedermann.owncloud.notes.shared.model.LocalAccount;
import it.niedermann.owncloud.notes.shared.util.NoteUtil;
+import it.niedermann.owncloud.notes.shared.util.ShareUtil;
public class EditNoteActivity extends LockedActivity implements BaseNoteFragment.NoteFragmentListener, AccountPickerListener {
@@ -170,7 +174,7 @@ public class EditNoteActivity extends LockedActivity implements BaseNoteFragment
(Intent.ACTION_SEND.equals(intent.getAction()) ||
INTENT_GOOGLE_ASSISTANT.equals(intent.getAction()))
) {
- content = intent.getStringExtra(Intent.EXTRA_TEXT);
+ content = ShareUtil.extractSharedText(intent);
} else if (intent.hasExtra(PARAM_CONTENT)) {
content = intent.getStringExtra(PARAM_CONTENT);
}
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;
+ }
+ }
}