diff options
5 files changed, 91 insertions, 30 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/DirectoryChooserActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/DirectoryChooserActivity.java index 559fa0574..fcd2680fa 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/DirectoryChooserActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/DirectoryChooserActivity.java @@ -5,7 +5,6 @@ import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; -import android.os.Environment; import android.os.FileObserver; import android.support.v4.app.NavUtils; import android.support.v7.app.ActionBarActivity; @@ -15,17 +14,24 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; -import android.widget.*; +import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; -import de.danoeh.antennapod.BuildConfig; -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import de.danoeh.antennapod.BuildConfig; +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.core.preferences.UserPreferences; + /** * Let's the user choose a directory on the storage device. The selected folder * will be sent back to the starting activity as an activity result. @@ -37,6 +43,7 @@ public class DirectoryChooserActivity extends ActionBarActivity { public static final String RESULT_SELECTED_DIR = "selected_dir"; public static final int RESULT_CODE_DIR_SELECTED = 1; + public static final String NON_EMPTY_DIRECTORY_WARNING = "warn_non_empty_directory"; private Button butConfirm; private Button butCancel; @@ -52,6 +59,8 @@ public class DirectoryChooserActivity extends ActionBarActivity { private FileObserver fileObserver; + private boolean warnNonEmptyDirectory = false; + @Override protected void onCreate(Bundle savedInstanceState) { setTheme(UserPreferences.getTheme()); @@ -65,15 +74,18 @@ public class DirectoryChooserActivity extends ActionBarActivity { txtvSelectedFolder = (TextView) findViewById(R.id.txtvSelectedFolder); listDirectories = (ListView) findViewById(R.id.directory_list); - butConfirm.setOnClickListener(new OnClickListener() { + if(getIntent().getExtras() != null) { + warnNonEmptyDirectory = getIntent().getExtras().getBoolean(NON_EMPTY_DIRECTORY_WARNING, false); + } + butConfirm.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (isValidFile(selectedDir)) { - if (selectedDir.list().length == 0) { - returnSelectedFolder(); + if(warnNonEmptyDirectory && selectedDir.list().length > 0) { + showNonEmptyDirectoryWarning(); } else { - showNonEmptyDirectoryWarning(); + returnSelectedFolder(); } } } @@ -145,7 +157,7 @@ public class DirectoryChooserActivity extends ActionBarActivity { listDirectoriesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, filenames); listDirectories.setAdapter(listDirectoriesAdapter); - changeDirectory(Environment.getExternalStorageDirectory()); + changeDirectory(UserPreferences.getDataFolder(this, null)); } /** diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportFromPathActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportFromPathActivity.java index 162a8f2e5..07fa6d21d 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportFromPathActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportFromPathActivity.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.activity; import android.app.AlertDialog; import android.content.DialogInterface; +import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; @@ -11,20 +12,26 @@ import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStreamReader; +import java.io.Reader; + import de.danoeh.antennapod.BuildConfig; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.util.LangUtils; import de.danoeh.antennapod.core.util.StorageUtils; -import java.io.*; - /** * Lets the user start the OPML-import process from a path */ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity { private static final String TAG = "OpmlImportFromPathActivity"; private TextView txtvPath; + private Button butChoose; private Button butStart; private String importPath; @@ -36,9 +43,20 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.opml_import); + butChoose = (Button)findViewById(R.id.butChoosePath); txtvPath = (TextView) findViewById(R.id.txtvPath); butStart = (Button) findViewById(R.id.butStartImport); + butChoose.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + startActivityForResult( + new Intent(OpmlImportFromPathActivity.this, + DirectoryChooserActivity.class), + DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED + ); + } + }); butStart.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -46,13 +64,13 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity { } }); + setImportPath(); } @Override protected void onResume() { super.onResume(); StorageUtils.checkStorageAvailability(this); - setImportPath(); } /** @@ -167,5 +185,18 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity { dialog.create().show(); } + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + Log.d(TAG, "activity result: " + requestCode + " " + resultCode); + if (requestCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) { + if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) { + String dir = data + .getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR); + Log.d(TAG, dir); + txtvPath.setText(dir); + importPath = dir.toString(); + } + } + } } diff --git a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlExportWorker.java b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlExportWorker.java index 6bba956a6..68e144b40 100644 --- a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlExportWorker.java +++ b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlExportWorker.java @@ -24,10 +24,10 @@ import de.danoeh.antennapod.core.util.LangUtils; */ public class OpmlExportWorker extends AsyncTask<Void, Void, Void> { private static final String TAG = "OpmlExportWorker"; - private static final String DEFAULT_OUTPUT_NAME = "antennapod-feeds.opml"; + public static final String DEFAULT_OUTPUT_NAME = "antennapod-feeds.opml"; public static final String EXPORT_DIR = "export/"; - private Context context; + private final Context context; private File output; private ProgressDialog progDialog; diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java index ffac05321..b608a0919 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java @@ -61,6 +61,8 @@ public class PreferenceController { public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify"; private static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify"; + private static final int REQUEST_CHOOSE_DATA_DIR = 1; + private static final int REQUEST_CHOOSE_OMPL_EXPORT_DIR = 2; private final PreferenceUI ui; @@ -150,9 +152,12 @@ public class PreferenceController { @Override public boolean onPreferenceClick(Preference preference) { - new OpmlExportWorker(activity) - .executeAsync(); - + Intent intent = new Intent(activity, + DirectoryChooserActivity.class); + intent.putExtra(DirectoryChooserActivity.NON_EMPTY_DIRECTORY_WARNING, false); + activity.startActivityForResult(intent, + REQUEST_CHOOSE_OMPL_EXPORT_DIR + ); return true; } } @@ -163,10 +168,11 @@ public class PreferenceController { @Override public boolean onPreferenceClick(Preference preference) { - activity.startActivityForResult( - new Intent(activity, - DirectoryChooserActivity.class), - DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED + Intent intent = new Intent(activity, + DirectoryChooserActivity.class); + intent.putExtra(DirectoryChooserActivity.NON_EMPTY_DIRECTORY_WARNING, true); + activity.startActivityForResult(intent, + REQUEST_CHOOSE_DATA_DIR ); return true; } @@ -311,9 +317,18 @@ public class PreferenceController { if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) { String dir = data .getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR); - if (BuildConfig.DEBUG) - Log.d(TAG, "Setting data folder"); - UserPreferences.setDataFolder(dir); + switch(requestCode) { + case REQUEST_CHOOSE_DATA_DIR: + if (BuildConfig.DEBUG) + Log.d(TAG, "Setting data folder"); + UserPreferences.setDataFolder(dir); + break; + case REQUEST_CHOOSE_OMPL_EXPORT_DIR: + File path = new File(dir, OpmlExportWorker.DEFAULT_OUTPUT_NAME); + new OpmlExportWorker(ui.getActivity(), path) + .executeAsync(); + break; + } } } diff --git a/app/src/main/res/layout/opml_import.xml b/app/src/main/res/layout/opml_import.xml index 3e45a0400..1751d0d39 100644 --- a/app/src/main/res/layout/opml_import.xml +++ b/app/src/main/res/layout/opml_import.xml @@ -4,14 +4,16 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" + android:gravity="center" tools:background="@android:color/darker_gray"> - <TextView - android:layout_width="match_parent" + <Button + android:id="@+id/butChoosePath" + android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" android:layout_margin="8dp" - android:text="@string/opml_import_explanation" - tools:background="@android:color/holo_green_dark" /> + android:text="@string/choose_data_directory" /> <TextView android:id="@+id/txtvPath" @@ -19,7 +21,8 @@ android:layout_height="wrap_content" android:layout_margin="8dp" tools:text="Path" - tools:background="@android:color/holo_green_dark" /> + tools:background="@android:color/holo_green_dark" + android:gravity="center"/> <Button android:id="@+id/butStartImport" |