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

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstefan-niedermann <info@niedermann.it>2020-03-15 20:24:14 +0300
committerstefan-niedermann <info@niedermann.it>2020-03-15 20:24:14 +0300
commitfc711d851a294e273436dad8dc0267857fcfb3fa (patch)
tree33da0a12e5f638b677a5266631f2843a793f235a
parentd469d5f84512bf797312c1f38f307f947a43c494 (diff)
#248 Add Deck as a "share to" location
-rw-r--r--app/src/main/AndroidManifest.xml45
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/SelectCardActivity.java82
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java31
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackFragment.java6
-rw-r--r--fastlane/metadata/android/en-US/changelogs/3001.txt0
-rw-r--r--fastlane/metadata/android/en-US/changelogs/4000.txt1
6 files changed, 146 insertions, 19 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cc0f25840..025df338a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -11,19 +11,20 @@
<application
android:name="it.niedermann.nextcloud.deck.Application"
android:allowBackup="true"
+ android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
+ android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:hardwareAccelerated="true"
android:theme="@style/AppTheme"
- android:networkSecurityConfig="@xml/network_security_config"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name_short"
android:theme="@style/SplashTheme">
+
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
@@ -41,21 +42,43 @@
</activity>
<activity
+ android:name=".ui.SelectCardActivity"
+ android:label="@string/app_name_short"
+ android:theme="@style/SplashTheme">
+
+ <intent-filter>
+ <action android:name="android.intent.action.SEND" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <data android:mimeType="*/*" />
+ </intent-filter>
+
+ <meta-data
+ android:name="android.app.shortcuts"
+ android:resource="@xml/shortcuts" />
+ <meta-data
+ android:name="android.app.searchable"
+ android:resource="@xml/searchable" />
+ <meta-data
+ android:name="android.app.default_searchable"
+ android:value=".ui.MainActivity" />
+ </activity>
+
+ <activity
android:name=".ui.EditActivity"
android:label="@string/edit"
- android:theme="@style/AppTheme"
- android:parentActivityName="it.niedermann.nextcloud.deck.ui.MainActivity" />
+ android:parentActivityName="it.niedermann.nextcloud.deck.ui.MainActivity"
+ android:theme="@style/AppTheme" />
<activity
android:name=".ui.AttachmentsActivity"
- android:theme="@style/TransparentTheme"
- android:parentActivityName="it.niedermann.nextcloud.deck.ui.EditActivity" />
+ android:parentActivityName="it.niedermann.nextcloud.deck.ui.EditActivity"
+ android:theme="@style/TransparentTheme" />
<activity
android:name=".ui.SettingsActivity"
android:label="@string/simple_settings"
- android:theme="@style/AppTheme"
- android:parentActivityName="it.niedermann.nextcloud.deck.ui.MainActivity" />
+ android:parentActivityName="it.niedermann.nextcloud.deck.ui.MainActivity"
+ android:theme="@style/AppTheme" />
<activity
android:name=".ui.ImportAccountActivity"
@@ -65,8 +88,8 @@
<activity
android:name=".ui.AboutActivity"
android:label="@string/about"
- android:theme="@style/AppTheme"
- android:parentActivityName="it.niedermann.nextcloud.deck.ui.MainActivity" />
+ android:parentActivityName="it.niedermann.nextcloud.deck.ui.MainActivity"
+ android:theme="@style/AppTheme" />
<activity
android:name=".ui.exception.ExceptionActivity"
@@ -74,9 +97,9 @@
<service
android:name=".ui.tiles.EditCardTileService"
+ android:description="@string/add_a_new_card_using_the_button"
android:icon="@drawable/ic_app_logo"
android:label="@string/add_card"
- android:description="@string/add_a_new_card_using_the_button"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE" />
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/SelectCardActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/SelectCardActivity.java
new file mode 100644
index 000000000..ac9162265
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/SelectCardActivity.java
@@ -0,0 +1,82 @@
+package it.niedermann.nextcloud.deck.ui;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+
+import java.io.File;
+
+import it.niedermann.nextcloud.deck.DeckLog;
+import it.niedermann.nextcloud.deck.model.Attachment;
+import it.niedermann.nextcloud.deck.model.full.FullCard;
+import it.niedermann.nextcloud.deck.ui.card.CardAdapter;
+import it.niedermann.nextcloud.deck.util.FileUtils;
+
+public class SelectCardActivity extends MainActivity implements CardAdapter.SelectCardListener {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding.addStackButton.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onCardSelected(FullCard fullCard) {
+ Intent receivedIntent = getIntent();
+ String receivedAction = receivedIntent.getAction();
+ String receivedType = receivedIntent.getType();
+ DeckLog.info(receivedAction);
+ DeckLog.info(receivedType);
+ if (receivedType != null) {
+ if (receivedType.startsWith("text/")) {
+ String receivedText = receivedIntent.getStringExtra(Intent.EXTRA_TEXT);
+ if (receivedText != null) {
+ appendText(fullCard, receivedText);
+ } else {
+ DeckLog.warn("Did not receive any text.");
+ }
+ } else if (receivedType.startsWith("image/")) {
+ Uri receivedUri = receivedIntent.getParcelableExtra(Intent.EXTRA_STREAM);
+ if (receivedUri != null) {
+ appendAttachment(fullCard, receivedUri);
+ } else {
+ DeckLog.warn("Did not receive any extra.");
+ }
+ }
+ syncManager.updateCard(fullCard);
+ } else {
+ DeckLog.logError(new IllegalArgumentException("receivedType must not be null for " + SelectCardActivity.class.getCanonicalName()));
+ }
+ finish();
+ }
+
+ private void appendText(@NonNull FullCard fullCard, @NonNull String receivedText) {
+ DeckLog.log(receivedText);
+ String oldDescription = fullCard.getCard().getDescription();
+ if (oldDescription == null || oldDescription.length() == 0) {
+ fullCard.getCard().setDescription(receivedText);
+ } else {
+ fullCard.getCard().setDescription(oldDescription + "\n\n" + receivedText);
+ }
+ }
+
+ private void appendAttachment(@NonNull FullCard fullCard, @NonNull Uri uri) {
+ DeckLog.info("Uri: " + uri.toString());
+ String path = FileUtils.getPath(this, uri);
+ if (path != null) {
+ File uploadFile = new File(path);
+ syncManager.addAttachmentToCard(fullCard.getAccountId(), fullCard.getCard().getLocalId(), Attachment.getMimetypeForUri(this, uri), uploadFile);
+ } else {
+ DeckLog.warn("path to file is null");
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ return true;
+ }
+} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java
index 0c0143da9..4533b2260 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java
@@ -19,6 +19,7 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
@@ -75,15 +76,23 @@ public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ItemCardViewHo
private LifecycleOwner lifecycleOwner;
private List<FullStack> availableStacks = new ArrayList<>();
+ @Nullable
+ private final SelectCardListener selectCardListener;
+
private int maxAvatarCount;
private int maxLabelsShown;
private int maxLabelsChars;
public CardAdapter(long boardId, boolean canEdit, @NonNull SyncManager syncManager, @NonNull Fragment fragment) {
+ this(boardId, canEdit, syncManager, fragment, null);
+ }
+
+ public CardAdapter(long boardId, boolean canEdit, @NonNull SyncManager syncManager, @NonNull Fragment fragment, @Nullable SelectCardListener selectCardListener) {
this.lifecycleOwner = fragment;
this.boardId = boardId;
this.canEdit = canEdit;
this.syncManager = syncManager;
+ this.selectCardListener = selectCardListener;
}
@NonNull
@@ -113,14 +122,18 @@ public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ItemCardViewHo
FullCard card = cardList.get(position);
viewHolder.binding.card.setOnClickListener((View clickedView) -> {
- Intent intent = new Intent(clickedView.getContext(), EditActivity.class);
- intent.putExtra(BUNDLE_KEY_ACCOUNT_ID, card.getAccountId());
- intent.putExtra(BUNDLE_KEY_BOARD_ID, boardId);
- intent.putExtra(BUNDLE_KEY_LOCAL_ID, card.getLocalId());
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intent);
+ if (selectCardListener == null) {
+ Intent intent = new Intent(clickedView.getContext(), EditActivity.class);
+ intent.putExtra(BUNDLE_KEY_ACCOUNT_ID, card.getAccountId());
+ intent.putExtra(BUNDLE_KEY_BOARD_ID, boardId);
+ intent.putExtra(BUNDLE_KEY_LOCAL_ID, card.getLocalId());
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(intent);
+ } else {
+ selectCardListener.onCardSelected(card);
+ }
});
- if (canEdit) {
+ if (canEdit && selectCardListener == null) {
viewHolder.binding.card.setOnLongClickListener((View draggedView) -> {
ClipData dragData = ClipData.newPlainText("cardid", card.getLocalId() + "");
@@ -402,4 +415,8 @@ public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ItemCardViewHo
this.binding = binding;
}
}
+
+ public interface SelectCardListener {
+ void onCardSelected(FullCard fullCard);
+ }
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackFragment.java
index e84ccb037..3eff9f512 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackFragment.java
@@ -81,7 +81,11 @@ public class StackFragment extends Fragment {
syncManager = new SyncManager(activity);
- adapter = new CardAdapter(boardId, getArguments().getBoolean(KEY_HAS_EDIT_PERMISSION), syncManager, this);
+ if(requireActivity() instanceof CardAdapter.SelectCardListener) {
+ adapter = new CardAdapter(boardId, getArguments().getBoolean(KEY_HAS_EDIT_PERMISSION), syncManager, this, (CardAdapter.SelectCardListener) requireActivity());
+ } else {
+ adapter = new CardAdapter(boardId, getArguments().getBoolean(KEY_HAS_EDIT_PERMISSION), syncManager, this);
+ }
binding.recyclerView.setAdapter(adapter);
if (onScrollListener != null) {
binding.recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
diff --git a/fastlane/metadata/android/en-US/changelogs/3001.txt b/fastlane/metadata/android/en-US/changelogs/3001.txt
deleted file mode 100644
index e69de29bb..000000000
--- a/fastlane/metadata/android/en-US/changelogs/3001.txt
+++ /dev/null
diff --git a/fastlane/metadata/android/en-US/changelogs/4000.txt b/fastlane/metadata/android/en-US/changelogs/4000.txt
new file mode 100644
index 000000000..22150694b
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/4000.txt
@@ -0,0 +1 @@
+- #248 Add Deck as a "share to" location \ No newline at end of file