package be.nikiroo.fanfix.reader.android;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.FragmentTransaction;
-import android.content.Intent;
-import android.os.AsyncTask;
+import android.content.Context;
+import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Environment;
+import android.text.InputType;
import android.view.View;
import android.widget.EditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
- config();
+ reader = config();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
- int i = 1;
+ @Override
+ protected void onStart() {
+ super.onStart();
+ refresh();
+ }
- public void buttonClick(View view) {
- AndroidReaderGroup group = null;
- if (group == null) {
- group = new AndroidReaderGroup();
- }
+ private void refresh() {
+ AndroidReaderGroup group = new AndroidReaderGroup();
FragmentTransaction trans = getFragmentManager().beginTransaction();
- trans.replace(R.id.dropZone, group);
+ trans.replace(R.id.Main_pnlStories, group);
trans.commit();
getFragmentManager().executePendingTransactions();
- group.fill(reader, null);
+ group.fill(reader.getLibrary().getList(), reader);
}
- public void onClick(View view) {
- new AsyncTask<Void, Void, String>() {
- @Override
- protected void onPreExecute() {
- EditText editText = findViewById(R.id.editText);
- editText.setText("Downloading...");
- }
-
- @Override
- protected String doInBackground(Void... voids) {
- try {
- URL[] urls = new URL[] {
- new URL("https://e621.net/pool/show/13124"),
- new URL("https://e621.net/pool/show/13121"), };
-
- for (int i = 0; i < urls.length; i++) {
- if (reader.getLibrary().getList().size() <= i) {
- reader.getLibrary().imprt(urls[i], null);
- }
- }
-
- String message = "";
- for (MetaData meta : reader.getLibrary().getList()) {
- message += meta.getTitle() + "\n";
+ public void onAdd(View view) {
+ final View root = findViewById(R.id.Main);
+
+ ask(this,
+ "Import new story",
+ "Enter the story URL (the program will then download it -- the interface will not be usable until it is downloaded",
+ "Download", new AnswerListener() {
+ @Override
+ public void onAnswer(final String answer) {
+ root.setEnabled(false);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ URL url = new URL(answer);
+ reader.getLibrary().imprt(url, null);
+ } catch (Throwable e) {
+ // TODO: show error message correctly
+ String mess = "";
+ for (String tab = ""; e != null
+ && e != e.getCause(); e = e
+ .getCause()) {
+ mess += tab + "["
+ + e.getClass().getSimpleName()
+ + "] " + e.getMessage() + "\n";
+ tab += "\t";
+ }
+
+ final String messf = mess;
+ AndroidReaderActivity.this
+ .runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ ask(AndroidReaderActivity.this,
+ "Error",
+ "Cannot import URL: \n"
+ + messf,
+ "OK", null);
+ }
+ });
+
+ }
+
+ AndroidReaderActivity.this
+ .runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ refresh();
+ root.setEnabled(true);
+ }
+ });
+ }
+ }).start();
}
+ });
- return message;
- } catch (Exception e) {
- return e.getClass() + ": " + e.getMessage();
- }
- }
-
- @Override
- protected void onPostExecute(String message) {
- EditText editText = findViewById(R.id.editText);
- editText.setText("testy");
-
- Intent intent = new Intent(AndroidReaderActivity.this,
- SayIt.class);
- intent.putExtra(SayIt.MESSAGE, message);
- startActivity(intent);
- }
- }.execute();
+ /*
+ * Intent intent = new Intent(AndroidReaderActivity.this, SayIt.class);
+ * intent.putExtra(SayIt.MESSAGE, message); startActivity(intent);
+ */
}
@Override
}
}
- private void config() {
+ private Reader config() {
if (reader != null) {
- return;
+ return reader;
}
String internal = getExternalFilesDir(null).toString();
Instance.setTraceHandler(new TraceHandler(true, true, 2));
BasicReader.setDefaultReaderType(Reader.ReaderType.ANDROID);
- reader = BasicReader.getReader();
+ return BasicReader.getReader();
+ }
+
+ public static void ask(Context context, String title, String message,
+ String okMessage, final AnswerListener listener) {
+ final EditText input = new EditText(context);
+ input.setFocusable(true);
+ input.setInputType(InputType.TYPE_CLASS_TEXT);
+
+ AlertDialog.Builder alert = new AlertDialog.Builder(context);
+ alert.setTitle(title);
+ alert.setMessage(message);
+ alert.setCancelable(true);
+ alert.setView(input);
+
+ if (listener != null) {
+ alert.setPositiveButton(okMessage,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ listener.onAnswer(input.getText().toString());
+ }
+ });
+
+ alert.setOnCancelListener(new DialogInterface.OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ listener.onAnswer(null);
+ }
+ });
+ }
+
+ alert.show();
+ }
+
+ private interface AnswerListener {
+ public void onAnswer(String answer);
}
}
\ No newline at end of file