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.SharedPreferences;
import android.content.res.Configuration;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
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.feed.FeedManager;
import de.danoeh.antennapod.feed.FeedMedia;
@ -94,7 +93,7 @@ public class PodcastApp extends Application implements
* available
*/
private void createImportDirectory() {
File importDir = getDataFolder(this, OpmlImportActivity.IMPORT_DIR);
File importDir = getDataFolder(this, OpmlImportFromPathActivity.IMPORT_DIR);
if (importDir != null) {
if (importDir.exists()) {
if (AppConfig.DEBUG)

View File

@ -1,27 +1,13 @@
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.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.view.Menu;
import com.actionbarsherlock.view.MenuItem;
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.OpmlImportWorker;
import de.danoeh.antennapod.opml.OpmlElement;
import de.danoeh.antennapod.util.StorageUtils;
import java.io.File;
import java.io.Reader;
import java.util.ArrayList;
/**
@ -30,8 +16,9 @@ import java.util.ArrayList;
public class OpmlImportBaseActivity extends SherlockActivity {
private static final String TAG = "OpmlImportBaseActivity";
private OpmlImportWorker importWorker;
/**
/**
* Handles the choices made by the user in the OpmlFeedChooserActivity and
* 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() {
return false;
}

View File

@ -1,36 +1,13 @@
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.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.R;
import de.danoeh.antennapod.asynctask.OpmlImportWorker;
import de.danoeh.antennapod.opml.OpmlElement;
import de.danoeh.antennapod.util.StorageUtils;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
/** Lets the user start the OPML-import process. */
public class OpmlImportFromIntentActivity extends OpmlImportBaseActivity {
private static final String TAG = "OpmlImportFromPathActivity";
public static final String IMPORT_DIR = "import/";
private OpmlImportWorker importWorker;
@Override
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
protected boolean finishWhenCanceled() {
return true;

View File

@ -1,11 +1,7 @@
package de.danoeh.antennapod.activity;
import java.io.File;
import java.util.ArrayList;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
@ -13,181 +9,163 @@ 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.view.Menu;
import com.actionbarsherlock.view.MenuItem;
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.OpmlImportWorker;
import de.danoeh.antennapod.opml.OpmlElement;
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 {
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;
private Button butStart;
private String importPath;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.opml_import);
private OpmlImportWorker importWorker;
txtvPath = (TextView) findViewById(R.id.txtvPath);
butStart = (Button) findViewById(R.id.butStartImport);
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(PodcastApp.getThemeResourceId());
super.onCreate(savedInstanceState);
butStart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
checkFolderForFiles();
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.opml_import);
});
}
txtvPath = (TextView) findViewById(R.id.txtvPath);
butStart = (Button) findViewById(R.id.butStartImport);
@Override
protected void onResume() {
super.onResume();
StorageUtils.checkStorageAvailability(this);
setImportPath();
}
butStart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
checkFolderForFiles();
}
/**
* Sets the importPath variable and makes txtvPath display the import
* directory.
*/
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
protected void onResume() {
super.onResume();
StorageUtils.checkStorageAvailability(this);
setImportPath();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return false;
}
}
/**
* Sets the importPath variable and makes txtvPath display the import
* directory.
*/
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);
}
}
/**
* Looks at the contents of the import directory and decides what to do. If
* more than one file is in the directory, a dialog will be created to let
* the user choose which item to import
*/
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();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
private void startImport(File file) {
try {
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) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return false;
}
}
/**
* 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();
/**
* Looks at the contents of the import directory and decides what to do. If
* more than one file is in the directory, a dialog will be created to let
* the user choose which item to import
* */
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();
}
}
}
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() {
/** Starts the import process. */
private void startImport(File file) {
@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() {
if (file != null) {
importWorker = new OpmlImportWorker(this, file) {
@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(
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();
}
@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;
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) {
super();
this.context = context;