Instead of having a fixed path, the user can now choose the path to
import from via dialog. This made the rather bloated instruction text
superfluous. Some minor changes to the DirectoryChooserActivity and the
OMPL Import layout.
This commit is contained in:
Martin Fietz 2015-02-28 02:33:19 +01:00
parent c9e8af52c2
commit 66121d606e
4 changed files with 67 additions and 19 deletions

View File

@ -15,17 +15,24 @@ import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.*; import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemClickListener;
import de.danoeh.antennapod.BuildConfig; import android.widget.ArrayAdapter;
import de.danoeh.antennapod.R; import android.widget.Button;
import de.danoeh.antennapod.core.preferences.UserPreferences; import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; 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 * 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. * will be sent back to the starting activity as an activity result.
@ -37,6 +44,7 @@ public class DirectoryChooserActivity extends ActionBarActivity {
public static final String RESULT_SELECTED_DIR = "selected_dir"; public static final String RESULT_SELECTED_DIR = "selected_dir";
public static final int RESULT_CODE_DIR_SELECTED = 1; 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 butConfirm;
private Button butCancel; private Button butCancel;
@ -52,6 +60,8 @@ public class DirectoryChooserActivity extends ActionBarActivity {
private FileObserver fileObserver; private FileObserver fileObserver;
private boolean warnNonEmptyDirectory = false;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
setTheme(UserPreferences.getTheme()); setTheme(UserPreferences.getTheme());
@ -65,15 +75,18 @@ public class DirectoryChooserActivity extends ActionBarActivity {
txtvSelectedFolder = (TextView) findViewById(R.id.txtvSelectedFolder); txtvSelectedFolder = (TextView) findViewById(R.id.txtvSelectedFolder);
listDirectories = (ListView) findViewById(R.id.directory_list); 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 @Override
public void onClick(View v) { public void onClick(View v) {
if (isValidFile(selectedDir)) { if (isValidFile(selectedDir)) {
if (selectedDir.list().length == 0) { if(warnNonEmptyDirectory && selectedDir.list().length > 0) {
returnSelectedFolder();
} else {
showNonEmptyDirectoryWarning(); showNonEmptyDirectoryWarning();
} else {
returnSelectedFolder();
} }
} }
} }

View File

@ -2,6 +2,7 @@ package de.danoeh.antennapod.activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.Menu; import android.view.Menu;
@ -11,20 +12,26 @@ import android.view.View.OnClickListener;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; 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.BuildConfig;
import de.danoeh.antennapod.R; import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.util.LangUtils; import de.danoeh.antennapod.core.util.LangUtils;
import de.danoeh.antennapod.core.util.StorageUtils; import de.danoeh.antennapod.core.util.StorageUtils;
import java.io.*;
/** /**
* Lets the user start the OPML-import process from a path * Lets the user start the OPML-import process from a path
*/ */
public class OpmlImportFromPathActivity extends OpmlImportBaseActivity { public class OpmlImportFromPathActivity extends OpmlImportBaseActivity {
private static final String TAG = "OpmlImportFromPathActivity"; private static final String TAG = "OpmlImportFromPathActivity";
private TextView txtvPath; private TextView txtvPath;
private Button butChoose;
private Button butStart; private Button butStart;
private String importPath; private String importPath;
@ -36,9 +43,20 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity {
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.opml_import); setContentView(R.layout.opml_import);
butChoose = (Button)findViewById(R.id.butChoosePath);
txtvPath = (TextView) findViewById(R.id.txtvPath); txtvPath = (TextView) findViewById(R.id.txtvPath);
butStart = (Button) findViewById(R.id.butStartImport); 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() { butStart.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -46,13 +64,13 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity {
} }
}); });
setImportPath();
} }
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
StorageUtils.checkStorageAvailability(this); StorageUtils.checkStorageAvailability(this);
setImportPath();
} }
/** /**
@ -167,5 +185,18 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity {
dialog.create().show(); 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();
}
}
}
} }

View File

@ -163,9 +163,10 @@ public class PreferenceController {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
activity.startActivityForResult( Intent intent = new Intent(activity,
new Intent(activity, DirectoryChooserActivity.class);
DirectoryChooserActivity.class), intent.putExtra(DirectoryChooserActivity.NON_EMPTY_DIRECTORY_WARNING, true);
activity.startActivityForResult(intent,
DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED
); );
return true; return true;

View File

@ -4,14 +4,16 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
android:gravity="center"
tools:background="@android:color/darker_gray"> tools:background="@android:color/darker_gray">
<TextView <Button
android:layout_width="match_parent" android:id="@+id/butChoosePath"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="8dp" android:layout_margin="8dp"
android:text="@string/opml_import_explanation" android:text="@string/choose_data_directory" />
tools:background="@android:color/holo_green_dark" />
<TextView <TextView
android:id="@+id/txtvPath" android:id="@+id/txtvPath"
@ -19,7 +21,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="8dp" android:layout_margin="8dp"
tools:text="Path" tools:text="Path"
tools:background="@android:color/holo_green_dark" /> tools:background="@android:color/holo_green_dark"
android:gravity="center"/>
<Button <Button
android:id="@+id/butStartImport" android:id="@+id/butStartImport"