mirror of https://github.com/tasks/tasks
Convert ShareLinkActivity to Kotlin
parent
949d9af9d8
commit
0146cd5766
@ -1,108 +0,0 @@
|
||||
package com.todoroo.astrid.activity;
|
||||
|
||||
import static android.content.Intent.ACTION_SEND;
|
||||
import static android.content.Intent.ACTION_SEND_MULTIPLE;
|
||||
import static com.google.common.collect.Lists.newArrayList;
|
||||
import static org.tasks.Strings.isNullOrEmpty;
|
||||
import static org.tasks.files.FileHelper.copyToUri;
|
||||
import static org.tasks.files.FileHelper.getFilename;
|
||||
import static org.tasks.intents.TaskIntents.getEditTaskIntent;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import com.google.common.io.Files;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
import com.todoroo.astrid.service.TaskCreator;
|
||||
import dagger.hilt.android.AndroidEntryPoint;
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext;
|
||||
import java.util.ArrayList;
|
||||
import javax.inject.Inject;
|
||||
import org.tasks.data.TaskAttachment;
|
||||
import org.tasks.files.FileHelper;
|
||||
import org.tasks.injection.InjectingAppCompatActivity;
|
||||
import org.tasks.preferences.Preferences;
|
||||
import timber.log.Timber;
|
||||
|
||||
/**
|
||||
* @author joshuagross
|
||||
* <p>Create a new task based on incoming links from the "share" menu
|
||||
*/
|
||||
@AndroidEntryPoint
|
||||
public final class ShareLinkActivity extends InjectingAppCompatActivity {
|
||||
|
||||
@Inject @ApplicationContext Context context;
|
||||
@Inject TaskCreator taskCreator;
|
||||
@Inject Preferences preferences;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
Intent intent = getIntent();
|
||||
String action = intent.getAction();
|
||||
|
||||
if (Intent.ACTION_PROCESS_TEXT.equals(action)) {
|
||||
CharSequence text = intent.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT);
|
||||
if (text != null) {
|
||||
Task task = taskCreator.createWithValues(text.toString());
|
||||
editTask(task);
|
||||
}
|
||||
} else if (ACTION_SEND.equals(action)) {
|
||||
String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT);
|
||||
Task task = taskCreator.createWithValues(subject);
|
||||
task.setNotes(intent.getStringExtra(Intent.EXTRA_TEXT));
|
||||
if (hasAttachments(intent)) {
|
||||
task.putTransitory(TaskAttachment.KEY, copyAttachment(intent));
|
||||
}
|
||||
editTask(task);
|
||||
} else if (ACTION_SEND_MULTIPLE.equals(action)) {
|
||||
Task task = taskCreator.createWithValues(intent.getStringExtra(Intent.EXTRA_SUBJECT));
|
||||
task.setNotes(intent.getStringExtra(Intent.EXTRA_TEXT));
|
||||
if (hasAttachments(intent)) {
|
||||
task.putTransitory(TaskAttachment.KEY, copyMultipleAttachments(intent));
|
||||
}
|
||||
editTask(task);
|
||||
} else {
|
||||
Timber.e("Unhandled intent: %s", intent);
|
||||
}
|
||||
finish();
|
||||
}
|
||||
|
||||
private void editTask(Task task) {
|
||||
Intent intent = getEditTaskIntent(this, null, task);
|
||||
intent.putExtra(MainActivity.FINISH_AFFINITY, true);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
private ArrayList<Uri> copyAttachment(Intent intent) {
|
||||
Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
|
||||
String filename = getFilename(context, uri);
|
||||
if (isNullOrEmpty(filename)) {
|
||||
String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT);
|
||||
filename =
|
||||
isNullOrEmpty(subject)
|
||||
? uri.getLastPathSegment()
|
||||
: subject.substring(0, Math.min(subject.length(), FileHelper.MAX_FILENAME_LENGTH));
|
||||
}
|
||||
String basename = Files.getNameWithoutExtension(filename);
|
||||
return newArrayList(copyToUri(context, preferences.getAttachmentsDirectory(), uri, basename));
|
||||
}
|
||||
|
||||
private ArrayList<Uri> copyMultipleAttachments(Intent intent) {
|
||||
ArrayList<Uri> result = new ArrayList<>();
|
||||
ArrayList<Uri> uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
|
||||
if (uris != null) {
|
||||
for (Uri uri : uris) {
|
||||
result.add(copyToUri(context, preferences.getAttachmentsDirectory(), uri));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private boolean hasAttachments(Intent intent) {
|
||||
String type = intent.getType();
|
||||
return type != null && (type.startsWith("image/") || type.startsWith("application/"));
|
||||
}
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
package com.todoroo.astrid.activity
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import com.google.common.collect.Lists
|
||||
import com.google.common.io.Files
|
||||
import com.todoroo.astrid.data.Task
|
||||
import com.todoroo.astrid.service.TaskCreator
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import org.tasks.Strings.isNullOrEmpty
|
||||
import org.tasks.data.TaskAttachment
|
||||
import org.tasks.files.FileHelper
|
||||
import org.tasks.injection.InjectingAppCompatActivity
|
||||
import org.tasks.intents.TaskIntents
|
||||
import org.tasks.preferences.Preferences
|
||||
import timber.log.Timber
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
* @author joshuagross
|
||||
*
|
||||
* Create a new task based on incoming links from the "share" menu
|
||||
*/
|
||||
@AndroidEntryPoint
|
||||
class ShareLinkActivity : InjectingAppCompatActivity() {
|
||||
@Inject @ApplicationContext lateinit var context: Context
|
||||
@Inject lateinit var taskCreator: TaskCreator
|
||||
@Inject lateinit var preferences: Preferences
|
||||
|
||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
val intent = intent
|
||||
val action = intent.action
|
||||
if (Intent.ACTION_PROCESS_TEXT == action) {
|
||||
val text = intent.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT)
|
||||
if (text != null) {
|
||||
val task = taskCreator.createWithValues(text.toString())
|
||||
editTask(task)
|
||||
}
|
||||
} else if (Intent.ACTION_SEND == action) {
|
||||
val subject = intent.getStringExtra(Intent.EXTRA_SUBJECT)
|
||||
val task = taskCreator.createWithValues(subject)
|
||||
task.notes = intent.getStringExtra(Intent.EXTRA_TEXT)
|
||||
if (hasAttachments(intent)) {
|
||||
task.putTransitory(TaskAttachment.KEY, copyAttachment(intent))
|
||||
}
|
||||
editTask(task)
|
||||
} else if (Intent.ACTION_SEND_MULTIPLE == action) {
|
||||
val task = taskCreator.createWithValues(intent.getStringExtra(Intent.EXTRA_SUBJECT))
|
||||
task.notes = intent.getStringExtra(Intent.EXTRA_TEXT)
|
||||
if (hasAttachments(intent)) {
|
||||
task.putTransitory(TaskAttachment.KEY, copyMultipleAttachments(intent))
|
||||
}
|
||||
editTask(task)
|
||||
} else {
|
||||
Timber.e("Unhandled intent: %s", intent)
|
||||
}
|
||||
finish()
|
||||
}
|
||||
|
||||
private fun editTask(task: Task) {
|
||||
val intent = TaskIntents.getEditTaskIntent(this, null, task)
|
||||
intent.putExtra(MainActivity.FINISH_AFFINITY, true)
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
private fun copyAttachment(intent: Intent): ArrayList<Uri> {
|
||||
val uri = intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)
|
||||
var filename = FileHelper.getFilename(context, uri)
|
||||
if (isNullOrEmpty(filename)) {
|
||||
val subject = intent.getStringExtra(Intent.EXTRA_SUBJECT)
|
||||
filename = if (isNullOrEmpty(subject)) uri.lastPathSegment else subject.substring(0, Math.min(subject.length, FileHelper.MAX_FILENAME_LENGTH))
|
||||
}
|
||||
val basename = Files.getNameWithoutExtension(filename!!)
|
||||
return Lists.newArrayList(FileHelper.copyToUri(context, preferences.attachmentsDirectory, uri, basename))
|
||||
}
|
||||
|
||||
private fun copyMultipleAttachments(intent: Intent): ArrayList<Uri> {
|
||||
val result = ArrayList<Uri>()
|
||||
val uris = intent.getParcelableArrayListExtra<Uri>(Intent.EXTRA_STREAM)
|
||||
if (uris != null) {
|
||||
for (uri in uris) {
|
||||
result.add(FileHelper.copyToUri(context, preferences.attachmentsDirectory, uri))
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
private fun hasAttachments(intent: Intent): Boolean {
|
||||
val type = intent.type
|
||||
return type != null && (type.startsWith("image/") || type.startsWith("application/"))
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue