|
|
|
|
@ -2,13 +2,10 @@ package org.tasks.dialogs;
|
|
|
|
|
|
|
|
|
|
import android.app.Dialog;
|
|
|
|
|
import android.app.ProgressDialog;
|
|
|
|
|
import android.content.ContentResolver;
|
|
|
|
|
import android.content.Context;
|
|
|
|
|
import android.net.Uri;
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
import android.webkit.MimeTypeMap;
|
|
|
|
|
import com.todoroo.astrid.backup.TasksXmlImporter;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import javax.inject.Inject;
|
|
|
|
|
import org.tasks.analytics.Tracker;
|
|
|
|
|
import org.tasks.analytics.Tracking;
|
|
|
|
|
@ -16,21 +13,25 @@ import org.tasks.backup.TasksJsonImporter;
|
|
|
|
|
import org.tasks.injection.ForApplication;
|
|
|
|
|
import org.tasks.injection.InjectingNativeDialogFragment;
|
|
|
|
|
import org.tasks.injection.NativeDialogFragmentComponent;
|
|
|
|
|
import timber.log.Timber;
|
|
|
|
|
import org.tasks.ui.Toaster;
|
|
|
|
|
|
|
|
|
|
public class ImportTasksDialog extends InjectingNativeDialogFragment {
|
|
|
|
|
|
|
|
|
|
private static final String EXTRA_URI = "extra_uri";
|
|
|
|
|
private static final String EXTRA_EXTENSION = "extra_extension";
|
|
|
|
|
|
|
|
|
|
@Inject TasksXmlImporter xmlImporter;
|
|
|
|
|
@Inject TasksJsonImporter jsonImporter;
|
|
|
|
|
@Inject DialogBuilder dialogBuilder;
|
|
|
|
|
@Inject Tracker tracker;
|
|
|
|
|
@Inject @ForApplication Context context;
|
|
|
|
|
@Inject Toaster toaster;
|
|
|
|
|
|
|
|
|
|
public static ImportTasksDialog newImportTasksDialog(Uri data) {
|
|
|
|
|
public static ImportTasksDialog newImportTasksDialog(Uri data, String extension) {
|
|
|
|
|
ImportTasksDialog importTasksDialog = new ImportTasksDialog();
|
|
|
|
|
Bundle args = new Bundle();
|
|
|
|
|
args.putParcelable(EXTRA_URI, data);
|
|
|
|
|
args.putString(EXTRA_EXTENSION, extension);
|
|
|
|
|
importTasksDialog.setArguments(args);
|
|
|
|
|
return importTasksDialog;
|
|
|
|
|
}
|
|
|
|
|
@ -39,35 +40,26 @@ public class ImportTasksDialog extends InjectingNativeDialogFragment {
|
|
|
|
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
|
|
|
|
Bundle arguments = getArguments();
|
|
|
|
|
Uri data = arguments.getParcelable(EXTRA_URI);
|
|
|
|
|
String extension = arguments.getString(EXTRA_EXTENSION);
|
|
|
|
|
ProgressDialog progressDialog = dialogBuilder.newProgressDialog();
|
|
|
|
|
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
|
|
|
|
|
progressDialog.setCancelable(false);
|
|
|
|
|
progressDialog.setIndeterminate(true);
|
|
|
|
|
progressDialog.show();
|
|
|
|
|
setCancelable(false);
|
|
|
|
|
try {
|
|
|
|
|
String extension =
|
|
|
|
|
data.getScheme().equals(ContentResolver.SCHEME_CONTENT)
|
|
|
|
|
? MimeTypeMap.getSingleton()
|
|
|
|
|
.getExtensionFromMimeType(context.getContentResolver().getType(data))
|
|
|
|
|
: MimeTypeMap.getFileExtensionFromUrl(data.getPath());
|
|
|
|
|
switch (extension) {
|
|
|
|
|
case "json":
|
|
|
|
|
jsonImporter.importTasks(getActivity(), data, progressDialog);
|
|
|
|
|
tracker.reportEvent(Tracking.Events.IMPORT_JSON);
|
|
|
|
|
break;
|
|
|
|
|
case "xml":
|
|
|
|
|
xmlImporter.importTasks(getActivity(), data, progressDialog);
|
|
|
|
|
tracker.reportEvent(Tracking.Events.IMPORT_XML);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
throw new IOException("Invalid file type: " + extension);
|
|
|
|
|
}
|
|
|
|
|
return progressDialog;
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
Timber.e(e);
|
|
|
|
|
switch (extension) {
|
|
|
|
|
case "json":
|
|
|
|
|
jsonImporter.importTasks(getActivity(), data, progressDialog);
|
|
|
|
|
tracker.reportEvent(Tracking.Events.IMPORT_JSON);
|
|
|
|
|
break;
|
|
|
|
|
case "xml":
|
|
|
|
|
xmlImporter.importTasks(getActivity(), data, progressDialog);
|
|
|
|
|
tracker.reportEvent(Tracking.Events.IMPORT_XML);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
throw new RuntimeException("Invalid extension: " + extension);
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
return progressDialog;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|