deduplication and cleanup -> preparing a pull request

This commit is contained in:
ligi 2013-01-23 16:13:09 +01:00
parent e54dbbcdce
commit ab9b244af4
5 changed files with 165 additions and 239 deletions

View File

@ -11,10 +11,9 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.util.Log; import android.util.Log;
import de.danoeh.antennapod.activity.OpmlImportActivity; import de.danoeh.antennapod.activity.OpmlImportFromPathActivity;
import de.danoeh.antennapod.asynctask.FeedImageLoader; import de.danoeh.antennapod.asynctask.FeedImageLoader;
import de.danoeh.antennapod.feed.FeedManager; import de.danoeh.antennapod.feed.FeedManager;
import de.danoeh.antennapod.feed.FeedMedia; import de.danoeh.antennapod.feed.FeedMedia;
@ -94,7 +93,7 @@ public class PodcastApp extends Application implements
* available * available
*/ */
private void createImportDirectory() { private void createImportDirectory() {
File importDir = getDataFolder(this, OpmlImportActivity.IMPORT_DIR); File importDir = getDataFolder(this, OpmlImportFromPathActivity.IMPORT_DIR);
if (importDir != null) { if (importDir != null) {
if (importDir.exists()) { if (importDir.exists()) {
if (AppConfig.DEBUG) if (AppConfig.DEBUG)

View File

@ -1,27 +1,13 @@
package de.danoeh.antennapod.activity; package de.danoeh.antennapod.activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import de.danoeh.antennapod.AppConfig; import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.PodcastApp;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.asynctask.OpmlFeedQueuer; import de.danoeh.antennapod.asynctask.OpmlFeedQueuer;
import de.danoeh.antennapod.asynctask.OpmlImportWorker; import de.danoeh.antennapod.asynctask.OpmlImportWorker;
import de.danoeh.antennapod.opml.OpmlElement; import de.danoeh.antennapod.opml.OpmlElement;
import de.danoeh.antennapod.util.StorageUtils; import java.io.Reader;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
@ -30,8 +16,9 @@ import java.util.ArrayList;
public class OpmlImportBaseActivity extends SherlockActivity { public class OpmlImportBaseActivity extends SherlockActivity {
private static final String TAG = "OpmlImportBaseActivity"; private static final String TAG = "OpmlImportBaseActivity";
private OpmlImportWorker importWorker;
/** /**
* Handles the choices made by the user in the OpmlFeedChooserActivity and * Handles the choices made by the user in the OpmlFeedChooserActivity and
* starts the OpmlFeedQueuer if necessary. * starts the OpmlFeedQueuer if necessary.
*/ */
@ -68,6 +55,32 @@ public class OpmlImportBaseActivity extends SherlockActivity {
} }
} }
/** Starts the import process. */
protected void startImport(Reader reader) {
if (reader != null) {
importWorker = new OpmlImportWorker(this, reader) {
@Override
protected void onPostExecute(ArrayList<OpmlElement> result) {
super.onPostExecute(result);
if (result != null) {
if (AppConfig.DEBUG)
Log.d(TAG, "Parsing was successful");
OpmlImportHolder.setReadElements(result);
startActivityForResult(new Intent(
OpmlImportBaseActivity.this,
OpmlFeedChooserActivity.class), 0);
} else {
if (AppConfig.DEBUG)
Log.d(TAG, "Parser error occured");
}
}
};
importWorker.executeAsync();
}
}
protected boolean finishWhenCanceled() { protected boolean finishWhenCanceled() {
return false; return false;
} }

View File

@ -1,36 +1,13 @@
package de.danoeh.antennapod.activity; package de.danoeh.antennapod.activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.PodcastApp;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.asynctask.OpmlImportWorker;
import de.danoeh.antennapod.opml.OpmlElement;
import de.danoeh.antennapod.util.StorageUtils;
import java.io.*; import java.io.*;
import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.ArrayList;
/** Lets the user start the OPML-import process. */ /** Lets the user start the OPML-import process. */
public class OpmlImportFromIntentActivity extends OpmlImportBaseActivity { public class OpmlImportFromIntentActivity extends OpmlImportBaseActivity {
private static final String TAG = "OpmlImportFromPathActivity";
public static final String IMPORT_DIR = "import/";
private OpmlImportWorker importWorker;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -49,33 +26,6 @@ public class OpmlImportFromIntentActivity extends OpmlImportBaseActivity {
} }
/** Starts the import process. */
private void startImport(Reader reader) {
if (reader != null) {
importWorker = new OpmlImportWorker(this, reader) {
@Override
protected void onPostExecute(ArrayList<OpmlElement> result) {
super.onPostExecute(result);
if (result != null) {
if (AppConfig.DEBUG)
Log.d(TAG, "Parsing was successful");
OpmlImportHolder.setReadElements(result);
startActivityForResult(new Intent(
OpmlImportFromIntentActivity.this,
OpmlFeedChooserActivity.class), 0);
} else {
if (AppConfig.DEBUG)
Log.d(TAG, "Parser error occured");
}
}
};
importWorker.executeAsync();
}
}
@Override @Override
protected boolean finishWhenCanceled() { protected boolean finishWhenCanceled() {
return true; return true;

View File

@ -1,11 +1,7 @@
package de.danoeh.antennapod.activity; package de.danoeh.antennapod.activity;
import java.io.File;
import java.util.ArrayList;
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.View; import android.view.View;
@ -13,181 +9,163 @@ 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 com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem;
import de.danoeh.antennapod.AppConfig; import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.PodcastApp;
import de.danoeh.antennapod.R; import de.danoeh.antennapod.R;
import de.danoeh.antennapod.asynctask.OpmlFeedQueuer;
import de.danoeh.antennapod.asynctask.OpmlImportWorker;
import de.danoeh.antennapod.opml.OpmlElement;
import de.danoeh.antennapod.util.StorageUtils; import de.danoeh.antennapod.util.StorageUtils;
/** Lets the user start the OPML-import process. */ import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;
/**
* 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"; public static final String IMPORT_DIR = "import/";
private static final String TAG = "OpmlImportFromPathActivity";
private TextView txtvPath;
private Button butStart;
private String importPath;
public static final String IMPORT_DIR = "import/"; @Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(PodcastApp.getThemeResourceId());
super.onCreate(savedInstanceState);
private TextView txtvPath; getSupportActionBar().setDisplayHomeAsUpEnabled(true);
private Button butStart; setContentView(R.layout.opml_import);
private String importPath;
private OpmlImportWorker importWorker; txtvPath = (TextView) findViewById(R.id.txtvPath);
butStart = (Button) findViewById(R.id.butStartImport);
@Override butStart.setOnClickListener(new OnClickListener() {
protected void onCreate(Bundle savedInstanceState) { @Override
setTheme(PodcastApp.getThemeResourceId()); public void onClick(View v) {
super.onCreate(savedInstanceState); checkFolderForFiles();
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true); });
setContentView(R.layout.opml_import); }
txtvPath = (TextView) findViewById(R.id.txtvPath); @Override
butStart = (Button) findViewById(R.id.butStartImport); protected void onResume() {
super.onResume();
StorageUtils.checkStorageAvailability(this);
setImportPath();
}
butStart.setOnClickListener(new OnClickListener() { /**
@Override * Sets the importPath variable and makes txtvPath display the import
public void onClick(View v) { * directory.
checkFolderForFiles(); */
} private void setImportPath() {
File importDir = PodcastApp.getDataFolder(this, IMPORT_DIR);
boolean success = true;
if (!importDir.exists()) {
if (AppConfig.DEBUG)
Log.d(TAG, "Import directory doesn't exist. Creating...");
success = importDir.mkdir();
if (!success) {
Log.e(TAG, "Could not create directory");
}
}
if (success) {
txtvPath.setText(importDir.toString());
importPath = importDir.toString();
} else {
txtvPath.setText(R.string.opml_directory_error);
}
}
}); @Override
} public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
@Override @Override
protected void onResume() { public boolean onOptionsItemSelected(MenuItem item) {
super.onResume(); switch (item.getItemId()) {
StorageUtils.checkStorageAvailability(this); case android.R.id.home:
setImportPath(); finish();
} return true;
default:
return false;
}
}
/** /**
* Sets the importPath variable and makes txtvPath display the import * Looks at the contents of the import directory and decides what to do. If
* directory. * more than one file is in the directory, a dialog will be created to let
*/ * the user choose which item to import
private void setImportPath() { */
File importDir = PodcastApp.getDataFolder(this, IMPORT_DIR); private void checkFolderForFiles() {
boolean success = true; File dir = new File(importPath);
if (!importDir.exists()) { if (dir.isDirectory()) {
if (AppConfig.DEBUG) File[] fileList = dir.listFiles();
Log.d(TAG, "Import directory doesn't exist. Creating..."); if (fileList.length == 1) {
success = importDir.mkdir(); if (AppConfig.DEBUG)
if (!success) { Log.d(TAG, "Found one file, choosing that one.");
Log.e(TAG, "Could not create directory"); startImport(fileList[0]);
} } else if (fileList.length > 1) {
} Log.w(TAG, "Import directory contains more than one file.");
if (success) { askForFile(dir);
txtvPath.setText(importDir.toString()); } else {
importPath = importDir.toString(); Log.e(TAG, "Import directory is empty");
} else { Toast toast = Toast
txtvPath.setText(R.string.opml_directory_error); .makeText(this, R.string.opml_import_error_dir_empty,
} Toast.LENGTH_LONG);
} toast.show();
}
}
}
@Override private void startImport(File file) {
public boolean onCreateOptionsMenu(Menu menu) { try {
return true; Reader mReader = new FileReader(file);
} if (AppConfig.DEBUG) Log.d(TAG, "Parsing " + file.toString());
startImport(mReader);
} catch (FileNotFoundException e) {
Log.d(TAG, "File not found which really should be there");
// this should never happen as it is a file we have just chosen
}
}
@Override /**
public boolean onOptionsItemSelected(MenuItem item) { * Asks the user to choose from a list of files in a directory and returns
switch (item.getItemId()) { * his choice.
case android.R.id.home: */
finish(); private void askForFile(File dir) {
return true; final File[] fileList = dir.listFiles();
default: String[] fileNames = dir.list();
return false;
}
}
/** AlertDialog.Builder dialog = new AlertDialog.Builder(this);
* Looks at the contents of the import directory and decides what to do. If dialog.setTitle(R.string.choose_file_to_import_label);
* more than one file is in the directory, a dialog will be created to let dialog.setNeutralButton(android.R.string.cancel,
* the user choose which item to import new DialogInterface.OnClickListener() {
* */
private void checkFolderForFiles() {
File dir = new File(importPath);
if (dir.isDirectory()) {
File[] fileList = dir.listFiles();
if (fileList.length == 1) {
if (AppConfig.DEBUG)
Log.d(TAG, "Found one file, choosing that one.");
startImport(fileList[0]);
} else if (fileList.length > 1) {
Log.w(TAG, "Import directory contains more than one file.");
askForFile(dir);
} else {
Log.e(TAG, "Import directory is empty");
Toast toast = Toast
.makeText(this, R.string.opml_import_error_dir_empty,
Toast.LENGTH_LONG);
toast.show();
}
}
}
/** Starts the import process. */ @Override
private void startImport(File file) { public void onClick(DialogInterface dialog, int which) {
if (AppConfig.DEBUG)
Log.d(TAG, "Dialog was cancelled");
dialog.dismiss();
}
});
dialog.setItems(fileNames, new DialogInterface.OnClickListener() {
if (file != null) { @Override
importWorker = new OpmlImportWorker(this, file) { public void onClick(DialogInterface dialog, int which) {
if (AppConfig.DEBUG)
@Override Log.d(TAG, "File at index " + which + " was chosen");
protected void onPostExecute(ArrayList<OpmlElement> result) { dialog.dismiss();
super.onPostExecute(result); startImport(fileList[which]);
if (result != null) { }
if (AppConfig.DEBUG) });
Log.d(TAG, "Parsing was successful"); dialog.create().show();
OpmlImportHolder.setReadElements(result); }
startActivityForResult(new Intent(
OpmlImportFromPathActivity.this,
OpmlFeedChooserActivity.class), 0);
} else {
if (AppConfig.DEBUG)
Log.d(TAG, "Parser error occured");
}
}
};
importWorker.executeAsync();
}
}
/**
* Asks the user to choose from a list of files in a directory and returns
* his choice.
*/
private void askForFile(File dir) {
final File[] fileList = dir.listFiles();
String[] fileNames = dir.list();
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle(R.string.choose_file_to_import_label);
dialog.setNeutralButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (AppConfig.DEBUG)
Log.d(TAG, "Dialog was cancelled");
dialog.dismiss();
}
});
dialog.setItems(fileNames, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (AppConfig.DEBUG)
Log.d(TAG, "File at index " + which + " was chosen");
dialog.dismiss();
startImport(fileList[which]);
}
});
dialog.create().show();
}
} }

View File

@ -29,20 +29,6 @@ public class OpmlImportWorker extends
private Reader mReader; private Reader mReader;
public OpmlImportWorker(Context context, File file) {
super();
this.context = context;
// Create reader
try {
mReader = new FileReader(file);
if (AppConfig.DEBUG) Log.d(TAG, "Parsing " + file.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
exception = e;
}
}
public OpmlImportWorker(Context context, Reader reader) { public OpmlImportWorker(Context context, Reader reader) {
super(); super();
this.context = context; this.context = context;