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-02-11 14:00:26 +0300
committerStefan Niedermann <info@niedermann.it>2021-02-11 14:08:53 +0300
commit0c01f258c25d6fa2b162730324ea0e3a821c8fd6 (patch)
tree987ef5826ee393ead604d6e88d2896b6c1fb8c5f /app/src/main/java/it/niedermann
parenta0112185804066d054f555ecc8fcf9ab61f39ca5 (diff)
parent4a0c16fdada3b3f84937be57f1ce355f1cfb9a0e (diff)
Merge branch 'master' into 831-room
# Conflicts: # app/build.gradle # app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java # app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java # app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java # app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java # app/src/main/java/it/niedermann/owncloud/notes/shared/model/CloudNote.java # app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java # app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java
Diffstat (limited to 'app/src/main/java/it/niedermann')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java8
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/LockedActivity.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java19
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java17
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java8
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java5
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/model/CloudNote.java0
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java104
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java45
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/util/ShareUtil.java28
12 files changed, 70 insertions, 170 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 191f0d47..a827ab50 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;
@@ -12,6 +12,7 @@ import androidx.lifecycle.LiveData;
import it.niedermann.owncloud.notes.main.MainActivity;
import it.niedermann.owncloud.notes.persistence.entity.Note;
+import it.niedermann.owncloud.notes.shared.util.ShareUtil;
public class AppendToNoteActivity extends MainActivity {
@@ -23,8 +24,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);
@@ -36,7 +36,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 LiveData<Note> fullNote$ = mainViewModel.getFullNote(((Note) adapter.getItem(position)).getId());
fullNote$.observe(this, (fullNote) -> {
fullNote$.removeObservers(this);
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/LockedActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/LockedActivity.java
index 8b024050..7ce7206b 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/LockedActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/LockedActivity.java
@@ -93,7 +93,7 @@ public abstract class LockedActivity extends BrandedActivity {
}
private void askToUnlock() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && NotesApplication.isLocked()) {
+ if (NotesApplication.isLocked()) {
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
if (keyguardManager != null) {
Intent i = keyguardManager.createConfirmDeviceCredentialIntent(getString(R.string.unlock_notes), null);
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java b/app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java
index 852180b6..ef31acfc 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java
@@ -16,7 +16,7 @@ import static androidx.preference.PreferenceManager.getDefaultSharedPreferences;
public class NotesApplication extends MultiDexApplication {
private static final String TAG = NotesApplication.class.getSimpleName();
- private static final long LOCK_TIME = 30 * 1000;
+ private static final long LOCK_TIME = 30_000;
private static boolean lockedPreference = false;
private static boolean isLocked = true;
private static long lastInteraction = 0;
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 9b8fca09..c00db4aa 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
@@ -7,12 +7,17 @@ import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.PreferenceManager;
+import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
+import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException;
+import com.nextcloud.android.sso.helper.SingleAccountHelper;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@@ -24,12 +29,14 @@ import it.niedermann.owncloud.notes.LockedActivity;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.accountpicker.AccountPickerListener;
import it.niedermann.owncloud.notes.databinding.ActivityEditBinding;
+import it.niedermann.owncloud.notes.databinding.ActivityEditBinding;
import it.niedermann.owncloud.notes.edit.category.CategoryViewModel;
import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.persistence.entity.Note;
import it.niedermann.owncloud.notes.shared.model.DBStatus;
import it.niedermann.owncloud.notes.shared.model.NavigationCategory;
import it.niedermann.owncloud.notes.shared.util.NoteUtil;
+import it.niedermann.owncloud.notes.shared.util.ShareUtil;
import static it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType.FAVORITES;
@@ -55,6 +62,16 @@ public class EditNoteActivity extends LockedActivity implements BaseNoteFragment
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ try {
+ if (SingleAccountHelper.getCurrentSingleSignOnAccount(this) == null) {
+ throw new NoCurrentAccountSelectedException();
+ }
+ } catch (NextcloudFilesAppAccountNotFoundException | NoCurrentAccountSelectedException e) {
+ Toast.makeText(this, R.string.no_account_configured_yet, Toast.LENGTH_LONG).show();
+ finish();
+ return;
+ }
+
categoryViewModel = new ViewModelProvider(this).get(CategoryViewModel.class);
binding = ActivityEditBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
@@ -179,7 +196,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/importaccount/ImportAccountViewModel.java b/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java
index 10f44676..04b30d8d 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java
@@ -10,8 +10,6 @@ import it.niedermann.owncloud.notes.persistence.NotesDatabase;
import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.shared.model.Capabilities;
-import static it.niedermann.owncloud.notes.shared.util.DisplayUtils.convertToCategoryNavigationItem;
-
public class ImportAccountViewModel extends AndroidViewModel {
private static final String TAG = ImportAccountViewModel.class.getSimpleName();
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 315fdc42..f36c0c02 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
@@ -23,12 +23,10 @@ import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.GravityCompat;
-import androidx.core.view.ViewCompat;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.selection.SelectionTracker;
-import androidx.recyclerview.selection.SelectionTracker.SelectionObserver;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
@@ -81,7 +79,6 @@ import it.niedermann.owncloud.notes.shared.model.NoteClickListener;
import it.niedermann.owncloud.notes.shared.util.NoteUtil;
import static android.os.Build.VERSION.SDK_INT;
-import static android.os.Build.VERSION_CODES.LOLLIPOP;
import static android.os.Build.VERSION_CODES.O;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
@@ -420,7 +417,7 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A
tracker = ItemSelectionTracker.build(listView, adapter);
adapter.setTracker(tracker);
- tracker.addObserver(new SelectionObserver<Long>() {
+ tracker.addObserver(new SelectionTracker.SelectionObserver<Long>() {
@Override
public void onSelectionChanged() {
super.onSelectionChanged();
@@ -513,9 +510,7 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A
binding.headerView.setBackgroundColor(mainColor);
binding.appName.setTextColor(textColor);
- if (SDK_INT >= LOLLIPOP) {
- activityBinding.progressCircular.getIndeterminateDrawable().setColorFilter(getSecondaryForegroundColorDependingOnTheme(this, mainColor), PorterDuff.Mode.SRC_IN);
- }
+ activityBinding.progressCircular.getIndeterminateDrawable().setColorFilter(getSecondaryForegroundColorDependingOnTheme(this, mainColor), PorterDuff.Mode.SRC_IN);
// TODO We assume, that the background of the spinner is always white
activityBinding.swiperefreshlayout.setColorSchemeColors(contrastRatioIsSufficient(Color.WHITE, mainColor) ? mainColor : Color.BLACK);
@@ -664,12 +659,8 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A
private void updateToolbars(boolean disableSearch) {
activityBinding.homeToolbar.setVisibility(disableSearch ? VISIBLE : GONE);
activityBinding.toolbar.setVisibility(disableSearch ? GONE : VISIBLE);
- if (SDK_INT >= LOLLIPOP) {
- activityBinding.appBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator(activityBinding.appBar.getContext(),
- disableSearch ? R.animator.appbar_elevation_off : R.animator.appbar_elevation_on));
- } else {
- ViewCompat.setElevation(activityBinding.appBar, disableSearch ? 0 : getResources().getDimension(R.dimen.design_appbar_elevation));
- }
+ activityBinding.appBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator(activityBinding.appBar.getContext(),
+ disableSearch ? R.animator.appbar_elevation_off : R.animator.appbar_elevation_on));
if (disableSearch) {
activityBinding.searchView.setQuery(null, true);
}
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 73002879..6a0d5ceb 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
@@ -96,13 +96,7 @@ public abstract class NoteViewHolder extends RecyclerView.ViewHolder {
((Chip) noteCategory).setChipStrokeColor(ColorStateList.valueOf(categoryBackground));
((Chip) noteCategory).setChipBackgroundColor(ColorStateList.valueOf(isDarkThemeActive ? categoryBackground : Color.TRANSPARENT));
} else {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- DrawableCompat.setTint(noteCategory.getBackground(), categoryBackground);
- } else {
- final GradientDrawable drawable = (GradientDrawable) noteCategory.getBackground();
- drawable.setStroke(1, categoryBackground);
- drawable.setColor(isDarkThemeActive ? categoryBackground : Color.TRANSPARENT);
- }
+ DrawableCompat.setTint(noteCategory.getBackground(), categoryBackground);
}
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java
index 9034ce48..9432d6fa 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java
@@ -97,8 +97,10 @@ public abstract class NotesDatabase extends RoomDatabase {
private static NotesDatabase instance;
private static Context context;
private static NoteServerSyncHelper serverSyncHelper;
+ private static String defaultNonEmptyTitle;
private static NotesDatabase create(final Context context) {
+ defaultNonEmptyTitle = NoteUtil.generateNonEmptyNoteTitle("", context);
return Room.databaseBuilder(
context,
NotesDatabase.class,
@@ -269,7 +271,8 @@ public abstract class NotesDatabase extends RoomDatabase {
if (newTitle != null) {
title = newTitle;
} else {
- if (oldNote.getRemoteId() == null || localAccount.getPreferredApiVersion() == null || localAccount.getPreferredApiVersion().compareTo(new ApiVersion("1.0", 0, 0)) < 0) {
+ if ((oldNote.getRemoteId() == null || localAccount.getPreferredApiVersion() == null || localAccount.getPreferredApiVersion().compareTo(new ApiVersion("1.0", 0, 0)) < 0) &&
+ (defaultNonEmptyTitle.equals(oldNote.getTitle()))) {
title = NoteUtil.generateNonEmptyNoteTitle(newContent, context);
} else {
title = oldNote.getTitle();
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/model/CloudNote.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/model/CloudNote.java
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/model/CloudNote.java
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 db696d85..ad6b6793 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
@@ -1,22 +1,3 @@
-/*
- * 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;
@@ -52,91 +33,6 @@ public class 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);
- }
- }
-
public static List<NavigationItem.CategoryNavigationItem> convertToCategoryNavigationItem(@NonNull Context context, @NonNull Collection<CategoryWithNotesCount> counter) {
return counter.stream()
.map(ctr -> convertToCategoryNavigationItem(context, ctr))
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java
index 9254de82..32caeaaf 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java
@@ -7,10 +7,10 @@ import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import java.util.regex.Pattern;
-
import it.niedermann.owncloud.notes.R;
+import static it.niedermann.android.markdown.MarkdownUtil.removeMarkdown;
+
/**
* Provides basic functionality for Note operations.
* Created by stefan on 06.10.15.
@@ -18,13 +18,6 @@ import it.niedermann.owncloud.notes.R;
@SuppressWarnings("WeakerAccess")
public class NoteUtil {
- private static final Pattern pLists = Pattern.compile("^\\s*[*+-]\\s+", Pattern.MULTILINE);
- private static final Pattern pHeadings = Pattern.compile("^#+\\s+(.*?)\\s*#*$", Pattern.MULTILINE);
- private static final Pattern pHeadingLine = Pattern.compile("^(?:=*|-*)$", Pattern.MULTILINE);
- private static final Pattern pEmphasis = Pattern.compile("(\\*+|_+)(.*?)\\1", Pattern.MULTILINE);
- private static final Pattern pSpace1 = Pattern.compile("^\\s+", Pattern.MULTILINE);
- private static final Pattern pSpace2 = Pattern.compile("\\s+$", Pattern.MULTILINE);
-
public static final String EXCERPT_LINE_SEPARATOR = " ";
private NoteUtil() {
@@ -32,26 +25,6 @@ public class NoteUtil {
}
/**
- * Strips all MarkDown from the given String
- *
- * @param s String - MarkDown
- * @return Plain Text-String
- */
- @NonNull
- public static String removeMarkDown(@Nullable String s) {
- if (s == null)
- return "";
- String result = s;
- result = pLists.matcher(result).replaceAll("");
- result = pHeadings.matcher(result).replaceAll("$1");
- result = pHeadingLine.matcher(result).replaceAll("");
- result = pEmphasis.matcher(result).replaceAll("$2");
- result = pSpace1.matcher(result).replaceAll("");
- result = pSpace2.matcher(result).replaceAll("");
- return result;
- }
-
- /**
* Checks if a line is empty.
* <pre>
* " " -> empty
@@ -65,7 +38,7 @@ public class NoteUtil {
* @return boolean isEmpty
*/
public static boolean isEmptyLine(@Nullable String line) {
- return removeMarkDown(line).trim().length() == 0;
+ return removeMarkdown(line).trim().length() == 0;
}
/**
@@ -90,12 +63,12 @@ public class NoteUtil {
*/
@NonNull
public static String generateNoteExcerpt(@NonNull String content, @Nullable String title) {
- content = removeMarkDown(content.trim());
+ content = removeMarkdown(content.trim());
if (TextUtils.isEmpty(content)) {
return "";
}
if (!TextUtils.isEmpty(title)) {
- final String trimmedTitle = removeMarkDown(title.trim());
+ final String trimmedTitle = removeMarkdown(title.trim());
if (content.startsWith(trimmedTitle)) {
content = content.substring(trimmedTitle.length());
}
@@ -120,18 +93,18 @@ public class NoteUtil {
*/
@NonNull
public static String generateNoteTitle(@NonNull String content) {
- return getLineWithoutMarkDown(content, 0);
+ return getLineWithoutMarkdown(content, 0);
}
/**
- * Reads the requested line and strips all MarkDown. If line is empty, it will go ahead to find the next not-empty line.
+ * Reads the requested line and strips all Markdown. If line is empty, it will go ahead to find the next not-empty line.
*
* @param content String
* @param lineNumber int
* @return lineContent String
*/
@NonNull
- public static String getLineWithoutMarkDown(@NonNull String content, int lineNumber) {
+ public static String getLineWithoutMarkdown(@NonNull String content, int lineNumber) {
String line = "";
if (content.contains("\n")) {
String[] lines = content.split("\n");
@@ -140,7 +113,7 @@ public class NoteUtil {
currentLine++;
}
if (currentLine < lines.length) {
- line = NoteUtil.removeMarkDown(lines[currentLine]);
+ line = removeMarkdown(lines[currentLine]);
}
} else {
line = content;
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;
+ }
+ }
}