diff --git a/Chan/AndroidManifest.xml b/Chan/AndroidManifest.xml
index 71a1ab7e..4341339d 100644
--- a/Chan/AndroidManifest.xml
+++ b/Chan/AndroidManifest.xml
@@ -53,6 +53,7 @@
diff --git a/Chan/res/layout/reply_view.xml b/Chan/res/layout/reply_view.xml
index 7ee66d1a..cc22e78f 100644
--- a/Chan/res/layout/reply_view.xml
+++ b/Chan/res/layout/reply_view.xml
@@ -2,8 +2,8 @@
@@ -84,26 +84,36 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
No file selected
Post Successful
Failed to load captcha
+ Tap to reload the captcha
Ask before opening links
Open link?
diff --git a/Chan/src/org/floens/chan/activity/BoardActivity.java b/Chan/src/org/floens/chan/activity/BoardActivity.java
index 10300d60..3a384f02 100644
--- a/Chan/src/org/floens/chan/activity/BoardActivity.java
+++ b/Chan/src/org/floens/chan/activity/BoardActivity.java
@@ -209,10 +209,10 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
return true;
case R.id.action_reply:
if (pane.isOpen()) {
- startReply(pane.isSlideable(), boardFragment);
+ startReply(pane.isSlideable(), boardLoadable);
} else {
if (threadFragment.getThreadManager().hasThread()) {
- startReply(pane.isSlideable(), threadFragment);
+ startReply(pane.isSlideable(), threadLoadable);
}
}
@@ -257,13 +257,13 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
updateActionBarState();
}
- private void startReply(boolean inActivity, ThreadFragment fragment) {
- if (inActivity) {
- ReplyActivity.setThreadFragment(fragment);
+ private void startReply(boolean startInActivity, Loadable loadable) {
+ if (startInActivity) {
+ ReplyActivity.setLoadable(loadable);
Intent i = new Intent(this, ReplyActivity.class);
startActivity(i);
} else {
- ReplyFragment reply = ReplyFragment.newInstance(fragment);
+ ReplyFragment reply = ReplyFragment.newInstance(loadable);
reply.show(getFragmentManager(), "replyDialog");
}
}
diff --git a/Chan/src/org/floens/chan/activity/ReplyActivity.java b/Chan/src/org/floens/chan/activity/ReplyActivity.java
index da63a357..062c8a24 100644
--- a/Chan/src/org/floens/chan/activity/ReplyActivity.java
+++ b/Chan/src/org/floens/chan/activity/ReplyActivity.java
@@ -1,7 +1,7 @@
package org.floens.chan.activity;
+import org.floens.chan.entity.Loadable;
import org.floens.chan.fragment.ReplyFragment;
-import org.floens.chan.fragment.ThreadFragment;
import android.app.Activity;
import android.app.FragmentTransaction;
@@ -10,24 +10,24 @@ import android.util.Log;
import android.view.MenuItem;
public class ReplyActivity extends Activity {
- private static ThreadFragment threadFragment;
+ private static Loadable loadable;
- public static void setThreadFragment(ThreadFragment tf) {
- threadFragment = tf;
+ public static void setLoadable(Loadable l) {
+ loadable = l;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (threadFragment != null) {
+ if (loadable != null) {
getActionBar().setDisplayHomeAsUpEnabled(true);
FragmentTransaction ft = getFragmentManager().beginTransaction();
- ft.replace(android.R.id.content, ReplyFragment.newInstance(threadFragment));
+ ft.replace(android.R.id.content, ReplyFragment.newInstance(loadable));
ft.commitAllowingStateLoss();
- threadFragment = null;
+ loadable = null;
} else {
Log.e("Chan", "ThreadFragment was null, exiting!");
finish();
diff --git a/Chan/src/org/floens/chan/activity/ThreadActivity.java b/Chan/src/org/floens/chan/activity/ThreadActivity.java
index 304e68ac..a630218a 100644
--- a/Chan/src/org/floens/chan/activity/ThreadActivity.java
+++ b/Chan/src/org/floens/chan/activity/ThreadActivity.java
@@ -68,7 +68,7 @@ public class ThreadActivity extends BaseActivity {
return true;
case R.id.action_reply:
- ReplyFragment reply = ReplyFragment.newInstance(threadFragment);
+ ReplyFragment reply = ReplyFragment.newInstance(loadable);
reply.show(getFragmentManager(), "replyDialog");
return true;
diff --git a/Chan/src/org/floens/chan/entity/Loadable.java b/Chan/src/org/floens/chan/entity/Loadable.java
index 8f1fd92b..0f77f111 100644
--- a/Chan/src/org/floens/chan/entity/Loadable.java
+++ b/Chan/src/org/floens/chan/entity/Loadable.java
@@ -7,7 +7,7 @@ import android.os.Bundle;
* Something that can be loaded, like a board or thread.
*/
public class Loadable {
- public Mode mode = Mode.INVALID;
+ public int mode = Mode.INVALID;
public String board = "";
public int no = -1;
public String title = "";
@@ -84,31 +84,29 @@ public class Loadable {
public void readFromBundle(Context context, Bundle bundle) {
String p = context.getPackageName();
+ mode = bundle.getInt(p + ".mode", Mode.INVALID);
board = bundle.getString(p + ".board", "");
no = bundle.getInt(p + ".no", -1);
title = bundle.getString(p + ".subject", "");
listViewIndex = bundle.getInt(p + ".listViewIndex");
listViewTop = bundle.getInt(p + ".listViewTop");
-
- // Log.e("Chan", "Read: " + board + ", " + no);
}
public void writeToBundle(Context context, Bundle bundle) {
String p = context.getPackageName();
+ bundle.putInt(p + ".mode", mode);
bundle.putString(p + ".board", board);
bundle.putInt(p + ".no", no);
bundle.putString(p + ".subject", title);
bundle.putInt(p + ".listViewIndex", listViewIndex);
bundle.putInt(p + ".listViewTop", listViewTop);
-
- // Log.e("Chan", "Write: " + board + ", " + no);
}
- public static enum Mode {
- INVALID,
- THREAD,
- BOARD,
- CATALOG
+ public static class Mode {
+ public static final int INVALID = -1;
+ public static final int THREAD = 0;
+ public static final int BOARD = 1;
+ public static final int CATALOG = 2;
}
}
diff --git a/Chan/src/org/floens/chan/fragment/ReplyFragment.java b/Chan/src/org/floens/chan/fragment/ReplyFragment.java
index 8d8736e4..13129dc3 100644
--- a/Chan/src/org/floens/chan/fragment/ReplyFragment.java
+++ b/Chan/src/org/floens/chan/fragment/ReplyFragment.java
@@ -8,7 +8,6 @@ import org.floens.chan.entity.Loadable;
import org.floens.chan.entity.Reply;
import org.floens.chan.manager.ReplyManager;
import org.floens.chan.manager.ReplyManager.ReplyResponse;
-import org.floens.chan.manager.ThreadManager;
import org.floens.chan.net.ChanUrls;
import org.floens.chan.utils.ImageDecoder;
import org.floens.chan.utils.LoadView;
@@ -21,6 +20,7 @@ import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.text.TextUtils;
+import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -45,8 +45,7 @@ import com.android.volley.toolbox.StringRequest;
public class ReplyFragment extends DialogFragment {
private int page = 0;
- private ThreadManager threadManager;
- private ThreadFragment threadFragment;
+ private Loadable loadable;
private final Reply draft = new Reply();
private boolean shouldSaveDraft = true;
@@ -70,28 +69,83 @@ public class ReplyFragment extends DialogFragment {
private TextView captchaText;
private LoadView responseContainer;
- public static ReplyFragment newInstance(ThreadFragment fragment) {
+ public static ReplyFragment newInstance(Loadable loadable) {
ReplyFragment reply = new ReplyFragment();
- reply.threadFragment = fragment;
- reply.threadManager = fragment.getThreadManager();
+ reply.loadable = loadable;
return reply;
}
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ loadable.writeToBundle(getActivity(), outState);
+ }
+
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- if (threadManager == null) return;
+ if (loadable == null && savedInstanceState != null) {
+ loadable = new Loadable();
+ loadable.readFromBundle(getActivity(), savedInstanceState);
+ }
- getCaptcha();
+ if (loadable != null) {
+ setClosable(true);
+
+ Dialog dialog = getDialog();
+ Context context = getActivity();
+ String title = loadable.isThreadMode() ?
+ context.getString(R.string.reply) + " /" + loadable.board + "/" + loadable.no :
+ context.getString(R.string.reply_to_board) + " /" + loadable.board + "/";
+
+ if (dialog == null) {
+ getActivity().getActionBar().setTitle(title);
+ } else {
+ dialog.setTitle(title);
+ }
+
+ if (getDialog() != null) {
+ getDialog().setOnKeyListener(new Dialog.OnKeyListener() {
+ @Override
+ public boolean onKey(DialogInterface dialogInterface, int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ if (page == 1) flipPage(0);
+ else if (page == 2) closeReply();
+ return true;
+ } else return false;
+ }
+ });
+ }
+
+ Reply draft = ReplyManager.getInstance().getReplyDraft();
+
+ if (TextUtils.isEmpty(draft.name)) {
+ draft.name = ChanApplication.getPreferences().getString("preference_default_name", "");
+ }
+
+ if (TextUtils.isEmpty(draft.email)) {
+ draft.email = ChanApplication.getPreferences().getString("preference_default_email", "");
+ }
+
+ nameView.setText(draft.name);
+ emailView.setText(draft.email);
+ subjectView.setText(draft.subject);
+ commentView.setText(draft.comment);
+ setFile(draft.file);
+
+ getCaptcha();
+ } else {
+ Log.e("Chan", "Loadable in ReplyFragment was null");
+ closeReply();
+ }
}
@Override
public void onPause() {
super.onPause();
- if (threadManager == null) return;
-
ReplyManager replyManager = ReplyManager.getInstance();
if (shouldSaveDraft) {
@@ -105,32 +159,18 @@ public class ReplyFragment extends DialogFragment {
replyManager.removeReplyDraft();
setFile(null);
}
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ ReplyManager replyManager = ReplyManager.getInstance();
replyManager.removeFileListener();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
- if (threadManager == null) {
- closeReply();
- return new View(inflater.getContext());
- }
-
- Dialog dialog = getDialog();
- Loadable l = threadManager.getLoadable();
- Context context = inflater.getContext();
- String title = l.isThreadMode() ?
- context.getString(R.string.reply) + " /" + l.board + "/" + l.no :
- context.getString(R.string.reply_to_board) + " /" + l.board + "/";
-
- if (dialog == null) {
- getActivity().getActionBar().setTitle(title);
- } else {
- dialog.setTitle(title);
- }
-
- setClosable(true);
-
// Setup the views with listeners
container = inflater.inflate(R.layout.reply_view, null);
flipper = (ViewFlipper)container.findViewById(R.id.reply_flipper);
@@ -201,41 +241,6 @@ public class ReplyFragment extends DialogFragment {
}
});
- if (dialog != null) {
- dialog.setOnKeyListener(new Dialog.OnKeyListener() {
- @Override
- public boolean onKey(DialogInterface dialogInterface, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- if (page == 1) {
- flipPage(0);
- } else if (page == 2) {
- closeReply();
- }
-
- return true;
- } else {
- return false;
- }
- }
- });
- }
-
- Reply draft = ReplyManager.getInstance().getReplyDraft();
-
- if (TextUtils.isEmpty(draft.name)) {
- draft.name = ChanApplication.getPreferences().getString("preference_default_name", "");
- }
-
- if (TextUtils.isEmpty(draft.email)) {
- draft.email = ChanApplication.getPreferences().getString("preference_default_email", "");
- }
-
- nameView.setText(draft.name);
- emailView.setText(draft.email);
- subjectView.setText(draft.subject);
- commentView.setText(draft.comment);
- setFile(draft.file);
-
return container;
}
@@ -308,7 +313,7 @@ public class ReplyFragment extends DialogFragment {
@Override
public void run() {
// Other thread
- final Bitmap bitmap = ImageDecoder.decodeFile(file, imageViewContainer.getWidth(), 1000);
+ final Bitmap bitmap = ImageDecoder.decodeFile(file, imageViewContainer.getWidth(), 3000);
getActivity().runOnUiThread(new Runnable() {
@Override
@@ -377,8 +382,6 @@ public class ReplyFragment extends DialogFragment {
responseContainer.setView(null);
- Loadable loadable = threadManager.getLoadable();
-
draft.name = nameView.getText().toString();
draft.email = emailView.getText().toString();
draft.subject = subjectView.getText().toString();
@@ -415,7 +418,7 @@ public class ReplyFragment extends DialogFragment {
} else if (response.isSuccessful) {
shouldSaveDraft = false;
Toast.makeText(getActivity(), R.string.reply_success, Toast.LENGTH_SHORT).show();
- threadFragment.reload();
+// threadFragment.reload(); // TODO
closeReply();
} else {
if (isVisible()) {