mirror of https://github.com/tasks/tasks
Add import/export activities
parent
333adec1ff
commit
c525734d79
@ -1,148 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2012 Todoroo Inc
|
|
||||||
*
|
|
||||||
* See the file "LICENSE" for the full license governing this code.
|
|
||||||
*/
|
|
||||||
package com.todoroo.astrid.backup;
|
|
||||||
|
|
||||||
import android.content.res.Resources;
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.preference.Preference;
|
|
||||||
import android.preference.Preference.OnPreferenceClickListener;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup.OnHierarchyChangeListener;
|
|
||||||
|
|
||||||
import com.todoroo.andlib.utility.DateUtilities;
|
|
||||||
import com.todoroo.andlib.utility.DialogUtilities;
|
|
||||||
import com.todoroo.astrid.utility.Flags;
|
|
||||||
import com.todoroo.astrid.utility.TodorooPreferenceActivity;
|
|
||||||
|
|
||||||
import org.tasks.R;
|
|
||||||
import org.tasks.preferences.Preferences;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
|
|
||||||
import static org.tasks.date.DateTimeUtils.newDate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Displays synchronization preferences and an action panel so users can
|
|
||||||
* initiate actions from the menu.
|
|
||||||
*
|
|
||||||
* @author timsu
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class BackupPreferences extends TodorooPreferenceActivity {
|
|
||||||
|
|
||||||
public static final String PREF_BACKUP_LAST_DATE = "backupDate"; //$NON-NLS-1$
|
|
||||||
|
|
||||||
public static final String PREF_BACKUP_LAST_ERROR = "backupError"; //$NON-NLS-1$
|
|
||||||
|
|
||||||
private int statusColor = Color.BLACK;
|
|
||||||
|
|
||||||
@Inject Preferences preferences;
|
|
||||||
@Inject TasksXmlImporter xmlImporter;
|
|
||||||
@Inject TasksXmlExporter xmlExporter;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getPreferenceResource() {
|
|
||||||
return R.xml.preferences_backup;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
getListView().setOnHierarchyChangeListener(new OnHierarchyChangeListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onChildViewRemoved(View parent, View child) {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onChildViewAdded(View parent, View child) {
|
|
||||||
View view = findViewById(R.id.status);
|
|
||||||
if(view != null) {
|
|
||||||
view.setBackgroundColor(statusColor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
findPreference(getString(R.string.backup_BAc_import)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
|
||||||
importTasks();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
findPreference(getString(R.string.backup_BAc_export)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
|
||||||
xmlExporter.exportTasks(BackupPreferences.this, TasksXmlExporter.ExportType.EXPORT_TYPE_MANUAL, null);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updatePreferences(Preference preference, Object value) {
|
|
||||||
final Resources r = getResources();
|
|
||||||
|
|
||||||
if (r.getString(R.string.backup_BPr_status_key).equals(preference.getKey())) {
|
|
||||||
String status;
|
|
||||||
String subtitle = ""; //$NON-NLS-1$
|
|
||||||
|
|
||||||
// last backup was error
|
|
||||||
final long last = preferences.getLong(PREF_BACKUP_LAST_DATE, 0);
|
|
||||||
final String error = preferences.getStringValue(PREF_BACKUP_LAST_ERROR);
|
|
||||||
if(error != null) {
|
|
||||||
status = r.getString(R.string.backup_status_failed);
|
|
||||||
subtitle = r.getString(R.string.backup_status_failed_subtitle);
|
|
||||||
statusColor = Color.rgb(100, 0, 0);
|
|
||||||
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onPreferenceClick(Preference p) {
|
|
||||||
DialogUtilities.okDialog(BackupPreferences.this, error, null);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if(last > 0) {
|
|
||||||
status = r.getString(R.string.backup_status_success,
|
|
||||||
DateUtilities.getDateStringWithTime(BackupPreferences.this,
|
|
||||||
newDate(last)));
|
|
||||||
statusColor = Color.rgb(0, 100, 0);
|
|
||||||
preference.setOnPreferenceClickListener(null);
|
|
||||||
} else {
|
|
||||||
status = r.getString(R.string.backup_status_never);
|
|
||||||
statusColor = Color.rgb(0, 0, 100);
|
|
||||||
preference.setOnPreferenceClickListener(null);
|
|
||||||
}
|
|
||||||
preference.setTitle(status);
|
|
||||||
preference.setSummary(subtitle);
|
|
||||||
|
|
||||||
View view = findViewById(R.id.status);
|
|
||||||
if(view != null) {
|
|
||||||
view.setBackgroundColor(statusColor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void importTasks() {
|
|
||||||
FilePickerBuilder.OnFilePickedListener listener = new FilePickerBuilder.OnFilePickedListener() {
|
|
||||||
@Override
|
|
||||||
public void onFilePicked(String filePath) {
|
|
||||||
xmlImporter.importTasks(BackupPreferences.this, filePath, new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Flags.set(Flags.REFRESH);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
new FilePickerBuilder(this,
|
|
||||||
getString(R.string.import_file_prompt),
|
|
||||||
BackupConstants.defaultExportDirectory(),
|
|
||||||
listener).show();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,20 @@
|
|||||||
|
package org.tasks.activities;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import com.todoroo.astrid.backup.TasksXmlExporter;
|
||||||
|
|
||||||
|
import org.tasks.injection.InjectingActivity;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
public class ExportTaskActivity extends InjectingActivity {
|
||||||
|
|
||||||
|
@Inject TasksXmlExporter xmlExporter;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
xmlExporter.exportTasks(ExportTaskActivity.this, TasksXmlExporter.ExportType.EXPORT_TYPE_MANUAL, null);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package org.tasks.activities;
|
||||||
|
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import com.todoroo.astrid.backup.BackupConstants;
|
||||||
|
import com.todoroo.astrid.backup.FilePickerBuilder;
|
||||||
|
import com.todoroo.astrid.backup.TasksXmlImporter;
|
||||||
|
import com.todoroo.astrid.utility.Flags;
|
||||||
|
|
||||||
|
import org.tasks.R;
|
||||||
|
import org.tasks.injection.InjectingActivity;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
public class ImportTaskActivity extends InjectingActivity {
|
||||||
|
|
||||||
|
@Inject TasksXmlImporter xmlImporter;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
FilePickerBuilder filePickerBuilder = new FilePickerBuilder(this,
|
||||||
|
R.string.import_file_prompt, BackupConstants.defaultExportDirectory());
|
||||||
|
filePickerBuilder.setOnFilePickedListener(new FilePickerBuilder.OnFilePickedListener() {
|
||||||
|
@Override
|
||||||
|
public void onFilePicked(String filePath) {
|
||||||
|
xmlImporter.importTasks(ImportTaskActivity.this, filePath, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Flags.set(Flags.REFRESH);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
filePickerBuilder.setOnDismissListener(new DialogInterface.OnDismissListener() {
|
||||||
|
@Override
|
||||||
|
public void onDismiss(DialogInterface dialog) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
filePickerBuilder.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
||||||
|
@Override
|
||||||
|
public void onCancel(DialogInterface dialog) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
filePickerBuilder.show();
|
||||||
|
}
|
||||||
|
}
|
@ -1,15 +0,0 @@
|
|||||||
package org.tasks.preferences;
|
|
||||||
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.preference.PreferenceActivity;
|
|
||||||
|
|
||||||
import org.tasks.R;
|
|
||||||
|
|
||||||
public class AppearancePreferences extends PreferenceActivity {
|
|
||||||
@Override
|
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
|
|
||||||
addPreferencesFromResource(R.xml.preferences_appearance);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,29 +1,28 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?><!--
|
||||||
<!--
|
|
||||||
** Copyright (c) 2012 Todoroo Inc
|
** Copyright (c) 2012 Todoroo Inc
|
||||||
**
|
**
|
||||||
** See the file "LICENSE" for the full license governing this code.
|
** See the file "LICENSE" for the full license governing this code.
|
||||||
-->
|
-->
|
||||||
<PreferenceScreen
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
android:title="@string/backup_BPr_header">
|
||||||
|
|
||||||
<PreferenceCategory
|
|
||||||
android:title="@string/backup_BPr_group_status">
|
|
||||||
|
|
||||||
<com.todoroo.astrid.ui.MultilinePreference
|
|
||||||
android:layout="@layout/status_preference"
|
|
||||||
android:key="@string/backup_BPr_status_key"
|
|
||||||
android:textSize="24sp"
|
|
||||||
android:gravity="center"/>
|
|
||||||
|
|
||||||
</PreferenceCategory>
|
|
||||||
|
|
||||||
<Preference
|
<PreferenceScreen android:title="@string/backup_BPr_header">
|
||||||
android:key="@string/backup_BAc_import"
|
|
||||||
android:title="@string/backup_BAc_import"/>
|
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="@string/backup_BAc_export"
|
android:key="@string/backup_BAc_import"
|
||||||
android:title="@string/backup_BAc_export"/>
|
android:title="@string/backup_BAc_import">
|
||||||
|
<intent
|
||||||
|
android:targetClass="org.tasks.activities.ImportTaskActivity"
|
||||||
|
android:targetPackage="org.tasks" />
|
||||||
|
</Preference>
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="@string/backup_BAc_export"
|
||||||
|
android:title="@string/backup_BAc_export">
|
||||||
|
<intent
|
||||||
|
android:targetClass="org.tasks.activities.ExportTaskActivity"
|
||||||
|
android:targetPackage="org.tasks" />
|
||||||
|
</Preference>
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
Loading…
Reference in New Issue