diff --git a/Chan/AndroidManifest.xml b/Chan/AndroidManifest.xml
index 2c7fbbdc..48d20742 100644
--- a/Chan/AndroidManifest.xml
+++ b/Chan/AndroidManifest.xml
@@ -1,17 +1,18 @@
+ android:versionName="v0.10" >
+
-
+
+ android:name="org.floens.chan.ui.activity.BoardActivity"
+ android:configChanges="keyboardHidden|orientation|screenSize"
+ android:label="@string/app_name" >
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ android:name="org.floens.chan.ui.activity.ReplyActivity"
+ android:configChanges="keyboardHidden|orientation|screenSize"
+ android:windowSoftInputMode="adjustResize" >
+ android:name="org.floens.chan.ui.activity.SettingsActivity"
+ android:parentActivityName="org.floens.chan.ui.activity.BoardActivity" >
+ android:value="org.floens.chan.ui.activity.BoardActivity" />
+ android:parentActivityName="org.floens.chan.ui.activity.BoardActivity" >
+ android:value="org.floens.chan.ui.activity.BoardActivity" />
+ android:parentActivityName="org.floens.chan.ui.activity.BoardActivity" >
+ android:value="org.floens.chan.ui.activity.BoardActivity" />
+ android:parentActivityName="org.floens.chan.ui.activity.BoardActivity" >
+ android:value="org.floens.chan.ui.activity.BoardActivity" />
-
+
-
+
-
+
+ android:name="org.floens.chan.service.PinnedService"
+ android:exported="false" >
-
+
\ No newline at end of file
diff --git a/Chan/libdocs/ormlite-android-4.48-javadoc.jar b/Chan/libs/ormlite-android-4.48-javadoc.jar
similarity index 100%
rename from Chan/libdocs/ormlite-android-4.48-javadoc.jar
rename to Chan/libs/ormlite-android-4.48-javadoc.jar
diff --git a/Chan/libdocs/ormlite-android-4.48-sources.jar b/Chan/libs/ormlite-android-4.48-sources.jar
similarity index 100%
rename from Chan/libdocs/ormlite-android-4.48-sources.jar
rename to Chan/libs/ormlite-android-4.48-sources.jar
diff --git a/Chan/libdocs/ormlite-core-4.48-javadoc.jar b/Chan/libs/ormlite-core-4.48-javadoc.jar
similarity index 100%
rename from Chan/libdocs/ormlite-core-4.48-javadoc.jar
rename to Chan/libs/ormlite-core-4.48-javadoc.jar
diff --git a/Chan/libdocs/ormlite-core-4.48-sources.jar b/Chan/libs/ormlite-core-4.48-sources.jar
similarity index 100%
rename from Chan/libdocs/ormlite-core-4.48-sources.jar
rename to Chan/libs/ormlite-core-4.48-sources.jar
diff --git a/Chan/res/layout/board_edit.xml b/Chan/res/layout/board_edit.xml
index 5132fbda..1ce030bf 100644
--- a/Chan/res/layout/board_edit.xml
+++ b/Chan/res/layout/board_edit.xml
@@ -1,6 +1,6 @@
-
-
+
diff --git a/Chan/res/layout/floatlabel_edittext.xml b/Chan/res/layout/floatlabel_edittext.xml
index d40a8722..133dadec 100644
--- a/Chan/res/layout/floatlabel_edittext.xml
+++ b/Chan/res/layout/floatlabel_edittext.xml
@@ -1,20 +1,20 @@
-
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="5dp"
+ android:orientation="vertical" >
+
+ android:layout_marginBottom="-8dp"
+ android:visibility="invisible" />
+ android:layout_height="wrap_content" />
+
\ No newline at end of file
diff --git a/Chan/res/layout/image_pager.xml b/Chan/res/layout/image_pager.xml
index 255c88b3..ce0127e5 100644
--- a/Chan/res/layout/image_pager.xml
+++ b/Chan/res/layout/image_pager.xml
@@ -5,10 +5,10 @@
android:background="@color/image_list_background"
android:orientation="vertical" >
-
-
+
\ No newline at end of file
diff --git a/Chan/res/layout/reply_view.xml b/Chan/res/layout/reply_view.xml
index 90068f99..bdb95148 100644
--- a/Chan/res/layout/reply_view.xml
+++ b/Chan/res/layout/reply_view.xml
@@ -96,7 +96,7 @@
android:text="@string/reply_file_delete" />
-
-
-
-
+
14dp
200dp
- 11dp
-
8dp
diff --git a/Chan/res/xml/preference.xml b/Chan/res/xml/preference.xml
index 7f899874..a4ac766f 100644
--- a/Chan/res/xml/preference.xml
+++ b/Chan/res/xml/preference.xml
@@ -6,13 +6,13 @@
android:title="@string/preference_watch_settings" >
@@ -44,7 +44,7 @@
android:title="@string/preference_developer" >
diff --git a/Chan/src/org/floens/chan/ChanApplication.java b/Chan/src/org/floens/chan/ChanApplication.java
index 6436fe05..86dbf6d1 100644
--- a/Chan/src/org/floens/chan/ChanApplication.java
+++ b/Chan/src/org/floens/chan/ChanApplication.java
@@ -1,9 +1,9 @@
package org.floens.chan;
+import org.floens.chan.core.manager.BoardManager;
+import org.floens.chan.core.manager.PinnedManager;
+import org.floens.chan.core.manager.ReplyManager;
import org.floens.chan.database.DatabaseManager;
-import org.floens.chan.manager.BoardManager;
-import org.floens.chan.manager.PinnedManager;
-import org.floens.chan.manager.ReplyManager;
import org.floens.chan.service.PinnedService;
import org.floens.chan.utils.IconCache;
@@ -23,6 +23,10 @@ public class ChanApplication extends Application {
private static ChanApplication instance;
private static RequestQueue volleyRequestQueue;
private static ImageLoader imageLoader;
+ private static BoardManager boardManager;
+ private static PinnedManager pinnedManager;
+ private static ReplyManager replyManager;
+ private static DatabaseManager databaseManager;
public ChanApplication() {
instance = this;
@@ -40,6 +44,22 @@ public class ChanApplication extends Application {
return imageLoader;
}
+ public static BoardManager getBoardManager() {
+ return boardManager;
+ }
+
+ public static PinnedManager getPinnedManager() {
+ return pinnedManager;
+ }
+
+ public static ReplyManager getReplyManager() {
+ return replyManager;
+ }
+
+ public static DatabaseManager getDatabaseManager() {
+ return databaseManager;
+ }
+
public static SharedPreferences getPreferences() {
return PreferenceManager.getDefaultSharedPreferences(instance);
}
@@ -65,11 +85,10 @@ public class ChanApplication extends Application {
volleyRequestQueue = Volley.newRequestQueue(this);
imageLoader = new ImageLoader(volleyRequestQueue, new BitmapLruImageCache(1024 * 1024 * 8));
- new DatabaseManager(this);
-
- new BoardManager(this);
- new PinnedManager(this);
- new ReplyManager(this);
+ databaseManager = new DatabaseManager(this);
+ boardManager = new BoardManager(this);
+ pinnedManager = new PinnedManager(this);
+ replyManager = new ReplyManager(this);
PinnedService.updateRunningState(this);
}
diff --git a/Chan/src/org/floens/chan/net/ChanUrls.java b/Chan/src/org/floens/chan/chan/ChanUrls.java
similarity index 98%
rename from Chan/src/org/floens/chan/net/ChanUrls.java
rename to Chan/src/org/floens/chan/chan/ChanUrls.java
index a41da72c..93f6481f 100644
--- a/Chan/src/org/floens/chan/net/ChanUrls.java
+++ b/Chan/src/org/floens/chan/chan/ChanUrls.java
@@ -1,4 +1,4 @@
-package org.floens.chan.net;
+package org.floens.chan.chan;
import java.util.Locale;
diff --git a/Chan/src/org/floens/chan/utils/ChanPreferences.java b/Chan/src/org/floens/chan/core/ChanPreferences.java
similarity index 98%
rename from Chan/src/org/floens/chan/utils/ChanPreferences.java
rename to Chan/src/org/floens/chan/core/ChanPreferences.java
index 083f5256..ebb0b426 100644
--- a/Chan/src/org/floens/chan/utils/ChanPreferences.java
+++ b/Chan/src/org/floens/chan/core/ChanPreferences.java
@@ -1,4 +1,4 @@
-package org.floens.chan.utils;
+package org.floens.chan.core;
import org.floens.chan.ChanApplication;
import org.floens.chan.service.PinnedService;
diff --git a/Chan/src/org/floens/chan/loader/EndOfLineException.java b/Chan/src/org/floens/chan/core/loader/EndOfLineException.java
similarity index 91%
rename from Chan/src/org/floens/chan/loader/EndOfLineException.java
rename to Chan/src/org/floens/chan/core/loader/EndOfLineException.java
index c1087c40..f95a5b52 100644
--- a/Chan/src/org/floens/chan/loader/EndOfLineException.java
+++ b/Chan/src/org/floens/chan/core/loader/EndOfLineException.java
@@ -1,4 +1,4 @@
-package org.floens.chan.loader;
+package org.floens.chan.core.loader;
import com.android.volley.NetworkResponse;
import com.android.volley.VolleyError;
diff --git a/Chan/src/org/floens/chan/loader/Loader.java b/Chan/src/org/floens/chan/core/loader/Loader.java
similarity index 97%
rename from Chan/src/org/floens/chan/loader/Loader.java
rename to Chan/src/org/floens/chan/core/loader/Loader.java
index bad53f4a..903946a5 100644
--- a/Chan/src/org/floens/chan/loader/Loader.java
+++ b/Chan/src/org/floens/chan/core/loader/Loader.java
@@ -1,11 +1,12 @@
-package org.floens.chan.loader;
+package org.floens.chan.core.loader;
import java.util.ArrayList;
import java.util.List;
import org.floens.chan.ChanApplication;
-import org.floens.chan.model.Loadable;
-import org.floens.chan.model.Post;
+import org.floens.chan.core.model.Loadable;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.core.net.ChanReaderRequest;
import org.floens.chan.utils.Logger;
import android.os.Handler;
diff --git a/Chan/src/org/floens/chan/loader/LoaderPool.java b/Chan/src/org/floens/chan/core/loader/LoaderPool.java
similarity index 92%
rename from Chan/src/org/floens/chan/loader/LoaderPool.java
rename to Chan/src/org/floens/chan/core/loader/LoaderPool.java
index 907b02e3..a8e9d3fa 100644
--- a/Chan/src/org/floens/chan/loader/LoaderPool.java
+++ b/Chan/src/org/floens/chan/core/loader/LoaderPool.java
@@ -1,9 +1,9 @@
-package org.floens.chan.loader;
+package org.floens.chan.core.loader;
import java.util.HashMap;
import java.util.Map;
-import org.floens.chan.model.Loadable;
+import org.floens.chan.core.model.Loadable;
public class LoaderPool {
// private static final String TAG = "LoaderPool";
diff --git a/Chan/src/org/floens/chan/manager/BoardManager.java b/Chan/src/org/floens/chan/core/manager/BoardManager.java
similarity index 90%
rename from Chan/src/org/floens/chan/manager/BoardManager.java
rename to Chan/src/org/floens/chan/core/manager/BoardManager.java
index f25b2fb2..17892b06 100644
--- a/Chan/src/org/floens/chan/manager/BoardManager.java
+++ b/Chan/src/org/floens/chan/core/manager/BoardManager.java
@@ -1,13 +1,13 @@
-package org.floens.chan.manager;
+package org.floens.chan.core.manager;
import java.util.ArrayList;
import java.util.Scanner;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.model.Board;
-import org.floens.chan.net.BoardsRequest;
-import org.floens.chan.net.ChanUrls;
+import org.floens.chan.chan.ChanUrls;
+import org.floens.chan.core.model.Board;
+import org.floens.chan.core.net.BoardsRequest;
import org.floens.chan.utils.Logger;
import android.content.Context;
@@ -18,31 +18,23 @@ import com.android.volley.VolleyError;
public class BoardManager {
private static final String TAG = "BoardManager";
-
- private static BoardManager instance;
-
+
private final Context context;
// Including nsfw ones
private ArrayList allBoards = new ArrayList();
private ArrayList myBoards = new ArrayList();
-
+
private final ArrayList myBoardsKeys = new ArrayList();
private final ArrayList myBoardsValues = new ArrayList();
-
+
public BoardManager(Context context) {
- instance = this;
-
this.context = context;
-
+
loadFromServer();
myBoards = loadMyBoards();
updateMyBoardsKeysAndValues(myBoards);
}
-
- public static BoardManager getInstance() {
- return instance;
- }
-
+
/**
* Avoid having 0 boards, which causes graphical problems
* @param list
@@ -81,56 +73,56 @@ public class BoardManager {
}
return list;
}
-
+
public ArrayList getMyBoards() {
return myBoards;
}
-
+
public void setMyBoards(ArrayList list) {
myBoards.clear();
myBoards = list;
updateMyBoardsKeysAndValues(list);
storeBoardListInDatabase("myBoards", myBoards);
}
-
+
private void updateMyBoardsKeysAndValues(ArrayList list) {
myBoardsKeys.clear();
myBoardsValues.clear();
-
+
for (Board board : list) {
myBoardsKeys.add(board.key);
myBoardsValues.add(board.value);
}
}
-
+
public ArrayList getMyBoardsKeys() {
return myBoardsKeys;
}
-
+
public ArrayList getMyBoardsValues() {
return myBoardsValues;
}
-
+
public boolean getBoardExists(String board) {
for (Board e : allBoards) {
if (e.value.equals(board)) {
return true;
}
}
-
+
return false;
}
-
+
public String getBoardKey(String value) {
for (Board e : allBoards) {
if (e.value.equals(value)) {
return e.key;
}
}
-
+
return null;
}
-
+
/**
* Try to add value to the supplied list.
* @param list
@@ -140,87 +132,87 @@ public class BoardManager {
for (Board board : list) {
if (board.value.equals(value)) {
Toast.makeText(context, R.string.board_add_duplicate, Toast.LENGTH_LONG).show();
-
+
return;
}
}
-
+
for (Board board : allBoards) {
if (board.value.equals(value)) {
list.add(board);
-
+
String text = context.getString(R.string.board_add_success) + " " + board.key;
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
-
+
return;
}
}
-
+
Toast.makeText(context, R.string.board_add_fail, Toast.LENGTH_LONG).show();
}
-
+
private ArrayList loadMyBoards() {
ArrayList list = getBoardListFromDatabase("myBoards");
if (list == null || list.size() == 0) {
list = getDefaultBoards();
-
+
storeBoardListInDatabase("myBoards", list);
}
-
+
return list;
}
-
+
private void storeBoardListInDatabase(String key, ArrayList list) {
String total = "";
-
+
for (Board board : list) {
total += board.key + "|" + board.value + "\n";
}
-
+
ChanApplication.getPreferences().edit().putString(key, total).commit();
}
-
+
private ArrayList getBoardListFromDatabase(String key) {
String total = ChanApplication.getPreferences().getString(key, null);
if (total == null) return null;
-
+
ArrayList list = new ArrayList();
-
+
Scanner scanner = new Scanner(total);
-
+
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] splitted = line.split("\\|");
-
+
if (splitted.length < 2) continue;
-
+
Board board = new Board();
board.key = splitted[0];
board.value = splitted[1];
if (!board.finish()) {
Logger.wtf(TAG, "board.finish in loadfrompreferences threw up");
}
-
+
list.add(board);
}
-
+
scanner.close();
-
+
return list;
}
-
+
private void loadFromServer() {
ArrayList temp = getBoardListFromDatabase("allBoards");
if (temp != null) {
allBoards = temp;
}
-
+
ChanApplication.getVolleyRequestQueue().add(new BoardsRequest(ChanUrls.getBoardsUrl(), new Response.Listener>() {
@Override
public void onResponse(ArrayList data) {
storeBoardListInDatabase("allBoards", data);
allBoards = data;
-
+
Logger.i(TAG, "Got boards from server");
}
}, new Response.ErrorListener() {
diff --git a/Chan/src/org/floens/chan/manager/PinnedManager.java b/Chan/src/org/floens/chan/core/manager/PinnedManager.java
similarity index 79%
rename from Chan/src/org/floens/chan/manager/PinnedManager.java
rename to Chan/src/org/floens/chan/core/manager/PinnedManager.java
index 19b11beb..22b8b04e 100644
--- a/Chan/src/org/floens/chan/manager/PinnedManager.java
+++ b/Chan/src/org/floens/chan/core/manager/PinnedManager.java
@@ -1,27 +1,20 @@
-package org.floens.chan.manager;
+package org.floens.chan.core.manager;
import java.util.ArrayList;
import java.util.List;
-import org.floens.chan.database.DatabaseManager;
-import org.floens.chan.model.Loadable;
-import org.floens.chan.model.Pin;
+import org.floens.chan.ChanApplication;
+import org.floens.chan.core.model.Loadable;
+import org.floens.chan.core.model.Pin;
import android.content.Context;
public class PinnedManager {
- private static PinnedManager instance;
-
private final List listeners = new ArrayList();
private final List pins;
public PinnedManager(Context context) {
- instance = this;
- pins = DatabaseManager.getInstance().getPinned();
- }
-
- public static PinnedManager getInstance() {
- return instance;
+ pins = ChanApplication.getDatabaseManager().getPinned();
}
public void addPinListener(PinListener l) {
@@ -65,7 +58,7 @@ public class PinnedManager {
}
pins.add(pin);
- DatabaseManager.getInstance().addPin(pin);
+ ChanApplication.getDatabaseManager().addPin(pin);
onPinsChanged();
@@ -78,7 +71,7 @@ public class PinnedManager {
*/
public void remove(Pin pin) {
pins.remove(pin);
- DatabaseManager.getInstance().removePin(pin);
+ ChanApplication.getDatabaseManager().removePin(pin);
pin.destroy();
onPinsChanged();
@@ -89,7 +82,7 @@ public class PinnedManager {
* @param pin
*/
public void update(Pin pin) {
- DatabaseManager.getInstance().updatePin(pin);
+ ChanApplication.getDatabaseManager().updatePin(pin);
onPinsChanged();
}
@@ -103,7 +96,7 @@ public class PinnedManager {
new Thread(new Runnable() {
@Override
public void run() {
- DatabaseManager.getInstance().updatePins(pins);
+ ChanApplication.getDatabaseManager().updatePins(pins);
}
}).start();
}
diff --git a/Chan/src/org/floens/chan/manager/ReplyManager.java b/Chan/src/org/floens/chan/core/manager/ReplyManager.java
similarity index 90%
rename from Chan/src/org/floens/chan/manager/ReplyManager.java
rename to Chan/src/org/floens/chan/core/manager/ReplyManager.java
index 6d1eedef..114876bf 100644
--- a/Chan/src/org/floens/chan/manager/ReplyManager.java
+++ b/Chan/src/org/floens/chan/core/manager/ReplyManager.java
@@ -1,4 +1,4 @@
-package org.floens.chan.manager;
+package org.floens.chan.core.manager;
import java.io.File;
import java.io.IOException;
@@ -8,11 +8,11 @@ import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.floens.chan.activity.ImagePickActivity;
-import org.floens.chan.database.DatabaseManager;
-import org.floens.chan.model.Reply;
-import org.floens.chan.model.SavedReply;
-import org.floens.chan.net.ChanUrls;
+import org.floens.chan.ChanApplication;
+import org.floens.chan.chan.ChanUrls;
+import org.floens.chan.core.model.Reply;
+import org.floens.chan.core.model.SavedReply;
+import org.floens.chan.ui.activity.ImagePickActivity;
import org.floens.chan.utils.Logger;
import org.floens.chan.utils.Utils;
@@ -35,43 +35,36 @@ import ch.boye.httpclientandroidlib.util.EntityUtils;
*/
public class ReplyManager {
private static final String TAG = "ReplyManager";
-
- private static ReplyManager instance;
-
+
private static final Pattern challengePattern = Pattern.compile("challenge.?:.?'([\\w-]+)'");
private static final Pattern responsePattern = Pattern.compile("");
private static final int POST_TIMEOUT = 10000;
-
+
private final Context context;
private Reply draft;
private FileListener fileListener;
private final Random random = new Random();
-
+
public ReplyManager(Context context) {
- ReplyManager.instance = this;
this.context = context;
draft = new Reply();
}
-
- public static ReplyManager getInstance() {
- return instance;
- }
-
+
/**
* Clear the draft
*/
public void removeReplyDraft() {
draft = new Reply();
}
-
+
/**
- * Set an reply draft.
+ * Set an reply draft.
* @param value the draft to save.
*/
public void setReplyDraft(Reply value) {
draft = value;
}
-
+
/**
* Gets the saved reply draft.
* @return the saved draft or an empty draft.
@@ -79,7 +72,7 @@ public class ReplyManager {
public Reply getReplyDraft() {
return draft;
}
-
+
/**
* Add an quote to the comment field. Looks like >>123456789\n
* @param no the raw no to quote to.
@@ -87,19 +80,19 @@ public class ReplyManager {
public void quote(int no) {
draft.comment = draft.comment + ">>" + no + "\n";
}
-
+
/**
* Pick an file. Starts up the ImagePickActivity.
* @param listener FileListener to listen on.
*/
public void pickFile(FileListener listener) {
fileListener = listener;
-
+
Intent intent = new Intent(context, ImagePickActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
-
+
/**
* Called from ImagePickActivity, sends onFileLoading to the fileListener.
*/
@@ -108,7 +101,7 @@ public class ReplyManager {
fileListener.onFileLoading();
}
}
-
+
/**
* Called from ImagePickActivity. Sends the file to the listening fileListener, and deletes the fileListener.
*/
@@ -118,14 +111,14 @@ public class ReplyManager {
}
fileListener = null;
}
-
+
/**
* Delete the fileListener.
*/
public void removeFileListener() {
fileListener = null;
}
-
+
/**
* Get the CAPTCHA challenge hash from an JSON response.
* @param total The total response from the server
@@ -134,54 +127,54 @@ public class ReplyManager {
public static String getChallenge(String total) {
Matcher matcher = challengePattern.matcher(total);
matcher.find();
-
+
if (matcher.groupCount() == 1) {
return matcher.group(1);
} else {
return null;
}
}
-
+
/**
- * Send an reply off to the server.
+ * Send an reply off to the server.
* @param reply The reply object with all data needed, like captcha and the file.
* @param listener The listener, after server response.
*/
public void sendDelete(final SavedReply reply, boolean onlyImageDelete, final DeleteListener listener) {
Logger.i(TAG, "Sending delete request: " + reply.board + ", " + reply.no);
-
+
HttpPost httpPost = new HttpPost(ChanUrls.getDeleteUrl(reply.board));
-
+
MultipartEntity entity = new MultipartEntity();
-
+
try {
entity.addPart(Integer.toString(reply.no), new StringBody("delete"));
-
+
if (onlyImageDelete) {
entity.addPart("onlyimgdel", new StringBody("on"));
}
-
+
// res not necessary
-
+
entity.addPart("mode", new StringBody("usrdel"));
entity.addPart("pwd", new StringBody(reply.password));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return;
}
-
+
httpPost.setEntity(entity);
-
+
sendHttpPost(httpPost, new HttpPostSendListener() {
@Override
public void onReponse(String responseString) {
DeleteResponse e = new DeleteResponse();
-
+
if (responseString == null) {
e.isNetworkError = true;
} else {
e.responseData = responseString;
-
+
if (responseString.contains("You must wait longer before deleting this post")) {
e.isUserError = true;
e.isTooSoonError = true;
@@ -195,43 +188,43 @@ public class ReplyManager {
e.isSuccessful = true;
}
}
-
+
listener.onResponse(e);
}
});
}
-
+
/**
- * Send an reply off to the server.
+ * Send an reply off to the server.
* @param reply The reply object with all data needed, like captcha and the file.
* @param listener The listener, after server response.
*/
public void sendReply(final Reply reply, final ReplyListener listener) {
Logger.i(TAG, "Sending reply request: " + reply.board + ", " + reply.resto);
-
+
HttpPost httpPost = new HttpPost(ChanUrls.getPostUrl(reply.board));
-
+
MultipartEntity entity = new MultipartEntity();
-
+
reply.password = Long.toHexString(random.nextLong());
-
+
try {
entity.addPart("name", new StringBody(reply.name));
entity.addPart("email", new StringBody(reply.email));
-
+
entity.addPart("sub", new StringBody(reply.subject));
entity.addPart("com", new StringBody(reply.comment));
-
+
if (reply.resto >= 0) {
entity.addPart("resto", new StringBody(Integer.toString(reply.resto)));
}
-
+
entity.addPart("recaptcha_challenge_field", new StringBody(reply.captchaChallenge));
entity.addPart("recaptcha_response_field", new StringBody(reply.captchaResponse));
-
+
entity.addPart("mode", new StringBody("regist"));
entity.addPart("pwd", new StringBody(reply.password));
-
+
if (reply.file != null) {
entity.addPart("upfile", new FileBody(reply.file, reply.fileName, "application/octet-stream", "UTF-8"));
}
@@ -239,23 +232,23 @@ public class ReplyManager {
e.printStackTrace();
return;
}
-
+
httpPost.setEntity(entity);
-
+
sendHttpPost(httpPost, new HttpPostSendListener() {
@Override
public void onReponse(String responseString) {
ReplyResponse e = new ReplyResponse();
-
+
if (responseString == null) {
e.isNetworkError = true;
} else {
e.responseData = responseString;
-
+
if (responseString.contains("No file selected")) {
e.isUserError = true;
e.isFileError = true;
- } else if (responseString.contains("You forgot to solve the CAPTCHA") ||
+ } else if (responseString.contains("You forgot to solve the CAPTCHA") ||
responseString.contains("You seem to have mistyped the CAPTCHA")) {
e.isUserError = true;
e.isCaptchaError = true;
@@ -263,18 +256,18 @@ public class ReplyManager {
e.isSuccessful = true;
}
}
-
+
if (e.isSuccessful) {
Matcher matcher = responsePattern.matcher(e.responseData);
-
+
if (matcher.find() && matcher.groupCount() == 2) {
try {
SavedReply savedReply = new SavedReply();
savedReply.board = reply.board;
savedReply.no = Integer.parseInt(matcher.group(2));
savedReply.password = reply.password;
-
- DatabaseManager.getInstance().saveReply(savedReply);
+
+ ChanApplication.getDatabaseManager().saveReply(savedReply);
} catch (NumberFormatException err) {
err.printStackTrace();
}
@@ -282,12 +275,12 @@ public class ReplyManager {
Logger.w(TAG, "No thread & no in the response");
}
}
-
+
listener.onResponse(e);
}
});
}
-
+
/**
* Async task to send an reply to the server.
* Uses HttpClient. Since Android 4.4 there is an updated version of HttpClient, 4.2, given with Android.
@@ -302,11 +295,11 @@ public class ReplyManager {
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, POST_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpParameters, POST_TIMEOUT);
-
+
DefaultHttpClient client = new DefaultHttpClient(httpParameters);
-
+
String responseString = null;
-
+
try {
HttpResponse response = client.execute(post);
responseString = EntityUtils.toString(response.getEntity(), "UTF-8");
@@ -315,23 +308,23 @@ public class ReplyManager {
} catch (IOException e) {
e.printStackTrace();
}
-
+
final String finalResponseString = responseString;
-
+
Utils.runOnUiThread(new Runnable() {
@Override
public void run() {
listener.onReponse(finalResponseString);
}
});
- }
+ }
}).start();
}
-
+
private static interface HttpPostSendListener {
public void onReponse(String responseString);
}
-
+
public static abstract class FileListener {
/**
* When a file is picked.
@@ -343,11 +336,11 @@ public class ReplyManager {
*/
public abstract void onFileLoading();
}
-
+
public static interface DeleteListener {
public void onResponse(DeleteResponse response);
}
-
+
public static class DeleteResponse {
public boolean isNetworkError = false;
public boolean isUserError = false;
@@ -357,37 +350,37 @@ public class ReplyManager {
public boolean isSuccessful = false;
public String responseData = "";
}
-
+
public static interface ReplyListener {
public void onResponse(ReplyResponse response);
}
-
+
public static class ReplyResponse {
/**
* No response from server.
*/
public boolean isNetworkError = false;
-
+
/**
* Some user error, like no file or captcha wrong.
*/
public boolean isUserError = false;
-
+
/**
* The userError was an fileError
*/
public boolean isFileError = false;
-
+
/**
* The userError was an captchaError
*/
public boolean isCaptchaError = false;
-
+
/**
* Received 'post successful'
*/
public boolean isSuccessful = false;
-
+
/**
* Raw html from the response. Used to set html in an WebView to the client, when the error was not
* recognized by Chan.
diff --git a/Chan/src/org/floens/chan/manager/ThreadManager.java b/Chan/src/org/floens/chan/core/manager/ThreadManager.java
similarity index 92%
rename from Chan/src/org/floens/chan/manager/ThreadManager.java
rename to Chan/src/org/floens/chan/core/manager/ThreadManager.java
index c6e424f2..58517291 100644
--- a/Chan/src/org/floens/chan/manager/ThreadManager.java
+++ b/Chan/src/org/floens/chan/core/manager/ThreadManager.java
@@ -1,23 +1,23 @@
-package org.floens.chan.manager;
+package org.floens.chan.core.manager;
import java.util.ArrayList;
import java.util.List;
+import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.activity.ReplyActivity;
-import org.floens.chan.database.DatabaseManager;
-import org.floens.chan.fragment.PostRepliesFragment;
-import org.floens.chan.fragment.ReplyFragment;
-import org.floens.chan.loader.Loader;
-import org.floens.chan.loader.LoaderPool;
-import org.floens.chan.manager.ReplyManager.DeleteListener;
-import org.floens.chan.manager.ReplyManager.DeleteResponse;
-import org.floens.chan.model.Loadable;
-import org.floens.chan.model.Pin;
-import org.floens.chan.model.Post;
-import org.floens.chan.model.PostLinkable;
-import org.floens.chan.model.SavedReply;
-import org.floens.chan.utils.ChanPreferences;
+import org.floens.chan.core.ChanPreferences;
+import org.floens.chan.core.loader.Loader;
+import org.floens.chan.core.loader.LoaderPool;
+import org.floens.chan.core.manager.ReplyManager.DeleteListener;
+import org.floens.chan.core.manager.ReplyManager.DeleteResponse;
+import org.floens.chan.core.model.Loadable;
+import org.floens.chan.core.model.Pin;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.core.model.PostLinkable;
+import org.floens.chan.core.model.SavedReply;
+import org.floens.chan.ui.activity.ReplyActivity;
+import org.floens.chan.ui.fragment.PostRepliesFragment;
+import org.floens.chan.ui.fragment.ReplyFragment;
import org.floens.chan.utils.Logger;
import android.app.Activity;
@@ -102,9 +102,9 @@ public class ThreadManager implements Loader.LoaderListener {
public void bottomPostViewed() {
if (loader != null && loader.getLoadable().isThreadMode()) {
- Pin pin = PinnedManager.getInstance().findPinByLoadable(loader.getLoadable());
+ Pin pin = ChanApplication.getPinnedManager().findPinByLoadable(loader.getLoadable());
if (pin != null) {
- PinnedManager.getInstance().onPinViewed(pin);
+ ChanApplication.getPinnedManager().onPinViewed(pin);
}
}
}
@@ -175,7 +175,7 @@ public class ThreadManager implements Loader.LoaderListener {
String[] temp = activity.getResources().getStringArray(R.array.post_options);
// Only add the delete option when the post is a saved reply
- if (DatabaseManager.getInstance().isSavedReply(post.board, post.no)) {
+ if (ChanApplication.getDatabaseManager().isSavedReply(post.board, post.no)) {
items = new String[temp.length + 1];
System.arraycopy(temp, 0, items, 0, temp.length);
items[items.length - 1] = activity.getString(R.string.delete);
@@ -191,7 +191,7 @@ public class ThreadManager implements Loader.LoaderListener {
openReply(true); // todo if tablet
// Pass through
case 1: // Quote
- ReplyManager.getInstance().quote(post.no);
+ ChanApplication.getReplyManager().quote(post.no);
break;
case 2: // Info
showPostInfo(post);
@@ -468,7 +468,7 @@ public class ThreadManager implements Loader.LoaderListener {
}
private void doDeletePost(Post post, boolean onlyImageDelete) {
- SavedReply reply = DatabaseManager.getInstance().getSavedReply(post.board, post.no);
+ SavedReply reply = ChanApplication.getDatabaseManager().getSavedReply(post.board, post.no);
if (reply == null) {
/*
* reply = new SavedReply(); reply.board = "g"; reply.no = 1234;
@@ -479,7 +479,7 @@ public class ThreadManager implements Loader.LoaderListener {
final ProgressDialog dialog = ProgressDialog.show(activity, null, activity.getString(R.string.delete_wait));
- ReplyManager.getInstance().sendDelete(reply, onlyImageDelete, new DeleteListener() {
+ ChanApplication.getReplyManager().sendDelete(reply, onlyImageDelete, new DeleteListener() {
@Override
public void onResponse(DeleteResponse response) {
dialog.dismiss();
diff --git a/Chan/src/org/floens/chan/model/Board.java b/Chan/src/org/floens/chan/core/model/Board.java
similarity index 93%
rename from Chan/src/org/floens/chan/model/Board.java
rename to Chan/src/org/floens/chan/core/model/Board.java
index 123c7a48..dc4f5a91 100644
--- a/Chan/src/org/floens/chan/model/Board.java
+++ b/Chan/src/org/floens/chan/core/model/Board.java
@@ -1,4 +1,4 @@
-package org.floens.chan.model;
+package org.floens.chan.core.model;
/**
* Board key and value.
diff --git a/Chan/src/org/floens/chan/model/Loadable.java b/Chan/src/org/floens/chan/core/model/Loadable.java
similarity index 99%
rename from Chan/src/org/floens/chan/model/Loadable.java
rename to Chan/src/org/floens/chan/core/model/Loadable.java
index f49882d9..37510a07 100644
--- a/Chan/src/org/floens/chan/model/Loadable.java
+++ b/Chan/src/org/floens/chan/core/model/Loadable.java
@@ -1,4 +1,4 @@
-package org.floens.chan.model;
+package org.floens.chan.core.model;
import android.content.Context;
import android.os.Bundle;
diff --git a/Chan/src/org/floens/chan/model/Pin.java b/Chan/src/org/floens/chan/core/model/Pin.java
similarity index 93%
rename from Chan/src/org/floens/chan/model/Pin.java
rename to Chan/src/org/floens/chan/core/model/Pin.java
index c2608053..48fb9b27 100644
--- a/Chan/src/org/floens/chan/model/Pin.java
+++ b/Chan/src/org/floens/chan/core/model/Pin.java
@@ -1,6 +1,6 @@
-package org.floens.chan.model;
+package org.floens.chan.core.model;
-import org.floens.chan.watch.PinWatcher;
+import org.floens.chan.core.watch.PinWatcher;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
diff --git a/Chan/src/org/floens/chan/model/Post.java b/Chan/src/org/floens/chan/core/model/Post.java
similarity index 98%
rename from Chan/src/org/floens/chan/model/Post.java
rename to Chan/src/org/floens/chan/core/model/Post.java
index 79829b41..07a03987 100644
--- a/Chan/src/org/floens/chan/model/Post.java
+++ b/Chan/src/org/floens/chan/core/model/Post.java
@@ -1,12 +1,12 @@
-package org.floens.chan.model;
+package org.floens.chan.core.model;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
-import org.floens.chan.model.PostLinkable.Type;
-import org.floens.chan.net.ChanUrls;
-import org.floens.chan.view.PostView;
+import org.floens.chan.chan.ChanUrls;
+import org.floens.chan.core.model.PostLinkable.Type;
+import org.floens.chan.ui.view.PostView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
diff --git a/Chan/src/org/floens/chan/model/PostLinkable.java b/Chan/src/org/floens/chan/core/model/PostLinkable.java
similarity index 96%
rename from Chan/src/org/floens/chan/model/PostLinkable.java
rename to Chan/src/org/floens/chan/core/model/PostLinkable.java
index 64bb5cbc..af4553af 100644
--- a/Chan/src/org/floens/chan/model/PostLinkable.java
+++ b/Chan/src/org/floens/chan/core/model/PostLinkable.java
@@ -1,4 +1,4 @@
-package org.floens.chan.model;
+package org.floens.chan.core.model;
import android.graphics.Color;
import android.text.TextPaint;
diff --git a/Chan/src/org/floens/chan/model/Reply.java b/Chan/src/org/floens/chan/core/model/Reply.java
similarity index 92%
rename from Chan/src/org/floens/chan/model/Reply.java
rename to Chan/src/org/floens/chan/core/model/Reply.java
index 7c358a1b..003b0c93 100644
--- a/Chan/src/org/floens/chan/model/Reply.java
+++ b/Chan/src/org/floens/chan/core/model/Reply.java
@@ -1,4 +1,4 @@
-package org.floens.chan.model;
+package org.floens.chan.core.model;
import java.io.File;
diff --git a/Chan/src/org/floens/chan/model/SavedReply.java b/Chan/src/org/floens/chan/core/model/SavedReply.java
similarity index 90%
rename from Chan/src/org/floens/chan/model/SavedReply.java
rename to Chan/src/org/floens/chan/core/model/SavedReply.java
index aac86c04..6ec55cda 100644
--- a/Chan/src/org/floens/chan/model/SavedReply.java
+++ b/Chan/src/org/floens/chan/core/model/SavedReply.java
@@ -1,4 +1,4 @@
-package org.floens.chan.model;
+package org.floens.chan.core.model;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
diff --git a/Chan/src/org/floens/chan/net/BoardsRequest.java b/Chan/src/org/floens/chan/core/net/BoardsRequest.java
similarity index 97%
rename from Chan/src/org/floens/chan/net/BoardsRequest.java
rename to Chan/src/org/floens/chan/core/net/BoardsRequest.java
index 158e176d..408a9867 100644
--- a/Chan/src/org/floens/chan/net/BoardsRequest.java
+++ b/Chan/src/org/floens/chan/core/net/BoardsRequest.java
@@ -1,9 +1,9 @@
-package org.floens.chan.net;
+package org.floens.chan.core.net;
import java.io.IOException;
import java.util.ArrayList;
-import org.floens.chan.model.Board;
+import org.floens.chan.core.model.Board;
import android.util.JsonReader;
diff --git a/Chan/src/org/floens/chan/net/ByteArrayRequest.java b/Chan/src/org/floens/chan/core/net/ByteArrayRequest.java
similarity index 95%
rename from Chan/src/org/floens/chan/net/ByteArrayRequest.java
rename to Chan/src/org/floens/chan/core/net/ByteArrayRequest.java
index eb12a8ff..59809d02 100644
--- a/Chan/src/org/floens/chan/net/ByteArrayRequest.java
+++ b/Chan/src/org/floens/chan/core/net/ByteArrayRequest.java
@@ -1,4 +1,4 @@
-package org.floens.chan.net;
+package org.floens.chan.core.net;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
diff --git a/Chan/src/org/floens/chan/loader/ChanReaderRequest.java b/Chan/src/org/floens/chan/core/net/ChanReaderRequest.java
similarity index 96%
rename from Chan/src/org/floens/chan/loader/ChanReaderRequest.java
rename to Chan/src/org/floens/chan/core/net/ChanReaderRequest.java
index efc7a2b5..ffc432b0 100644
--- a/Chan/src/org/floens/chan/loader/ChanReaderRequest.java
+++ b/Chan/src/org/floens/chan/core/net/ChanReaderRequest.java
@@ -1,13 +1,13 @@
-package org.floens.chan.loader;
+package org.floens.chan.core.net;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import org.floens.chan.database.DatabaseManager;
-import org.floens.chan.model.Loadable;
-import org.floens.chan.model.Post;
-import org.floens.chan.net.ChanUrls;
+import org.floens.chan.ChanApplication;
+import org.floens.chan.chan.ChanUrls;
+import org.floens.chan.core.model.Loadable;
+import org.floens.chan.core.model.Post;
import android.util.JsonReader;
@@ -87,7 +87,7 @@ public class ChanReaderRequest extends JsonReaderRequest> {
}
}
- post.isSavedReply = DatabaseManager.getInstance().isSavedReply(post.board, post.no);
+ post.isSavedReply = ChanApplication.getDatabaseManager().isSavedReply(post.board, post.no);
}
}
diff --git a/Chan/src/org/floens/chan/net/GIFRequest.java b/Chan/src/org/floens/chan/core/net/GIFRequest.java
similarity index 94%
rename from Chan/src/org/floens/chan/net/GIFRequest.java
rename to Chan/src/org/floens/chan/core/net/GIFRequest.java
index 5bfdbd6c..400f64a5 100644
--- a/Chan/src/org/floens/chan/net/GIFRequest.java
+++ b/Chan/src/org/floens/chan/core/net/GIFRequest.java
@@ -1,6 +1,6 @@
-package org.floens.chan.net;
+package org.floens.chan.core.net;
-import org.floens.chan.view.GIFView;
+import org.floens.chan.ui.view.GIFView;
import android.content.Context;
diff --git a/Chan/src/org/floens/chan/watch/PinWatcher.java b/Chan/src/org/floens/chan/core/watch/PinWatcher.java
similarity index 87%
rename from Chan/src/org/floens/chan/watch/PinWatcher.java
rename to Chan/src/org/floens/chan/core/watch/PinWatcher.java
index 2d9cd2cd..87864cca 100644
--- a/Chan/src/org/floens/chan/watch/PinWatcher.java
+++ b/Chan/src/org/floens/chan/core/watch/PinWatcher.java
@@ -1,11 +1,11 @@
-package org.floens.chan.watch;
+package org.floens.chan.core.watch;
import java.util.List;
-import org.floens.chan.loader.Loader;
-import org.floens.chan.loader.LoaderPool;
-import org.floens.chan.model.Pin;
-import org.floens.chan.model.Post;
+import org.floens.chan.core.loader.Loader;
+import org.floens.chan.core.loader.LoaderPool;
+import org.floens.chan.core.model.Pin;
+import org.floens.chan.core.model.Post;
import org.floens.chan.service.PinnedService;
import org.floens.chan.utils.Logger;
diff --git a/Chan/src/org/floens/chan/watch/WatchNotifier.java b/Chan/src/org/floens/chan/core/watch/WatchNotifier.java
similarity index 89%
rename from Chan/src/org/floens/chan/watch/WatchNotifier.java
rename to Chan/src/org/floens/chan/core/watch/WatchNotifier.java
index 72d7de41..fce41eae 100644
--- a/Chan/src/org/floens/chan/watch/WatchNotifier.java
+++ b/Chan/src/org/floens/chan/core/watch/WatchNotifier.java
@@ -1,12 +1,12 @@
-package org.floens.chan.watch;
+package org.floens.chan.core.watch;
import java.util.List;
+import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.activity.BoardActivity;
-import org.floens.chan.manager.PinnedManager;
-import org.floens.chan.model.Pin;
+import org.floens.chan.core.model.Pin;
import org.floens.chan.service.PinnedService;
+import org.floens.chan.ui.activity.BoardActivity;
import android.app.Notification;
import android.app.NotificationManager;
@@ -26,7 +26,7 @@ public class WatchNotifier {
}
public void update() {
- List pins = PinnedManager.getInstance().getPins();
+ List pins = ChanApplication.getPinnedManager().getPins();
int count = 0;
int pinCount = 0;
diff --git a/Chan/src/org/floens/chan/database/DatabaseHelper.java b/Chan/src/org/floens/chan/database/DatabaseHelper.java
index 47889b36..f87db8d1 100644
--- a/Chan/src/org/floens/chan/database/DatabaseHelper.java
+++ b/Chan/src/org/floens/chan/database/DatabaseHelper.java
@@ -2,9 +2,9 @@ package org.floens.chan.database;
import java.sql.SQLException;
-import org.floens.chan.model.Loadable;
-import org.floens.chan.model.Pin;
-import org.floens.chan.model.SavedReply;
+import org.floens.chan.core.model.Loadable;
+import org.floens.chan.core.model.Pin;
+import org.floens.chan.core.model.SavedReply;
import org.floens.chan.utils.Logger;
import android.content.Context;
diff --git a/Chan/src/org/floens/chan/database/DatabaseManager.java b/Chan/src/org/floens/chan/database/DatabaseManager.java
index dd368e69..c93f8eb5 100644
--- a/Chan/src/org/floens/chan/database/DatabaseManager.java
+++ b/Chan/src/org/floens/chan/database/DatabaseManager.java
@@ -3,61 +3,53 @@ package org.floens.chan.database;
import java.sql.SQLException;
import java.util.List;
-import org.floens.chan.model.Pin;
-import org.floens.chan.model.SavedReply;
+import org.floens.chan.core.model.Pin;
+import org.floens.chan.core.model.SavedReply;
import org.floens.chan.utils.Logger;
import android.content.Context;
public class DatabaseManager {
private static final String TAG = "DatabaseManager";
-
- private static DatabaseManager instance;
-
+
private final DatabaseHelper helper;
private List savedReplies;
-
+
public DatabaseManager(Context context) {
- instance = this;
-
helper = new DatabaseHelper(context);
}
-
- public static DatabaseManager getInstance() {
- return instance;
- }
-
+
public void saveReply(SavedReply saved) {
Logger.e(TAG, "Saving " + saved.board + ", " + saved.no);
-
+
try {
helper.savedDao.create(saved);
} catch (SQLException e) {
Logger.e(TAG, "Error saving reply", e);
}
-
+
loadSavedReplies();
}
-
+
public SavedReply getSavedReply(String board, int no) {
if (savedReplies == null) {
loadSavedReplies();
}
-
+
// TODO: optimize this
for (SavedReply r : savedReplies) {
if (r.board.equals(board) && r.no == no) {
return r;
}
}
-
+
return null;
}
-
+
public boolean isSavedReply(String board, int no) {
return getSavedReply(board, no) != null;
}
-
+
private void loadSavedReplies() {
// TODO trim the table if it gets too large
try {
@@ -66,7 +58,7 @@ public class DatabaseManager {
Logger.e(TAG, "Error loading saved replies", e);
}
}
-
+
public void addPin(Pin pin) {
try {
helper.loadableDao.create(pin.loadable);
@@ -75,7 +67,7 @@ public class DatabaseManager {
Logger.e(TAG, "Error adding pin to db", e);
}
}
-
+
public void removePin(Pin pin) {
try {
helper.pinDao.delete(pin);
@@ -84,7 +76,7 @@ public class DatabaseManager {
Logger.e(TAG, "Error removing pin from db", e);
}
}
-
+
public void updatePin(Pin pin) {
try {
helper.pinDao.update(pin);
@@ -93,13 +85,13 @@ public class DatabaseManager {
Logger.e(TAG, "Error updating pin in db", e);
}
}
-
+
public void updatePins(List pins) {
try {
for (Pin pin : pins) {
helper.pinDao.update(pin);
}
-
+
for (Pin pin : pins) {
helper.loadableDao.update(pin.loadable);
}
@@ -107,7 +99,7 @@ public class DatabaseManager {
Logger.e(TAG, "Error updating pins in db", e);
}
}
-
+
public List getPinned() {
List list = null;
try {
@@ -118,13 +110,13 @@ public class DatabaseManager {
} catch (SQLException e) {
Logger.e(TAG, "Error getting pins from db", e);
}
-
+
return list;
}
-
+
public String getSummary() {
String o = "";
-
+
try {
o += "Loadable rows: " + helper.loadableDao.countOf() + "\n";
o += "Pin rows: " + helper.pinDao.countOf() + "\n";
@@ -132,10 +124,10 @@ public class DatabaseManager {
} catch (SQLException e) {
e.printStackTrace();
}
-
+
return o;
}
-
+
public void reset() {
helper.reset();
loadSavedReplies();
diff --git a/Chan/src/org/floens/chan/service/PinnedService.java b/Chan/src/org/floens/chan/service/PinnedService.java
index fa59a467..2a7f33a6 100644
--- a/Chan/src/org/floens/chan/service/PinnedService.java
+++ b/Chan/src/org/floens/chan/service/PinnedService.java
@@ -2,11 +2,11 @@ package org.floens.chan.service;
import java.util.List;
-import org.floens.chan.manager.PinnedManager;
-import org.floens.chan.model.Pin;
-import org.floens.chan.utils.ChanPreferences;
+import org.floens.chan.ChanApplication;
+import org.floens.chan.core.ChanPreferences;
+import org.floens.chan.core.model.Pin;
+import org.floens.chan.core.watch.WatchNotifier;
import org.floens.chan.utils.Logger;
-import org.floens.chan.watch.WatchNotifier;
import android.app.Service;
import android.content.Context;
@@ -77,7 +77,7 @@ public class PinnedService extends Service {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
- PinnedManager.getInstance().onPinsChanged();
+ ChanApplication.getPinnedManager().onPinsChanged();
}
});
}
@@ -151,7 +151,7 @@ public class PinnedService extends Service {
}
private void update() {
- List pins = PinnedManager.getInstance().getPins();
+ List pins = ChanApplication.getPinnedManager().getPins();
for (Pin pin : pins) {
pin.updateWatch();
}
diff --git a/Chan/src/org/floens/chan/utils/ScrollerRunnable.java b/Chan/src/org/floens/chan/ui/ScrollerRunnable.java
similarity index 99%
rename from Chan/src/org/floens/chan/utils/ScrollerRunnable.java
rename to Chan/src/org/floens/chan/ui/ScrollerRunnable.java
index 16eecc18..b7d2182d 100644
--- a/Chan/src/org/floens/chan/utils/ScrollerRunnable.java
+++ b/Chan/src/org/floens/chan/ui/ScrollerRunnable.java
@@ -1,4 +1,4 @@
-package org.floens.chan.utils;
+package org.floens.chan.ui;
import android.view.View;
import android.view.ViewConfiguration;
diff --git a/Chan/src/org/floens/chan/animation/SwipeDismissListViewTouchListener.java b/Chan/src/org/floens/chan/ui/SwipeDismissListViewTouchListener.java
similarity index 99%
rename from Chan/src/org/floens/chan/animation/SwipeDismissListViewTouchListener.java
rename to Chan/src/org/floens/chan/ui/SwipeDismissListViewTouchListener.java
index 3834c8d7..d11e7d31 100644
--- a/Chan/src/org/floens/chan/animation/SwipeDismissListViewTouchListener.java
+++ b/Chan/src/org/floens/chan/ui/SwipeDismissListViewTouchListener.java
@@ -1,4 +1,4 @@
-package org.floens.chan.animation;
+package org.floens.chan.ui;
/*
* Copyright 2013 Google Inc.
diff --git a/Chan/src/org/floens/chan/utils/ViewFlipperAnimations.java b/Chan/src/org/floens/chan/ui/ViewFlipperAnimations.java
similarity index 98%
rename from Chan/src/org/floens/chan/utils/ViewFlipperAnimations.java
rename to Chan/src/org/floens/chan/ui/ViewFlipperAnimations.java
index 30262631..7db18757 100644
--- a/Chan/src/org/floens/chan/utils/ViewFlipperAnimations.java
+++ b/Chan/src/org/floens/chan/ui/ViewFlipperAnimations.java
@@ -1,4 +1,4 @@
-package org.floens.chan.utils;
+package org.floens.chan.ui;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
diff --git a/Chan/src/org/floens/chan/activity/AboutActivity.java b/Chan/src/org/floens/chan/ui/activity/AboutActivity.java
similarity index 91%
rename from Chan/src/org/floens/chan/activity/AboutActivity.java
rename to Chan/src/org/floens/chan/ui/activity/AboutActivity.java
index 0ce28556..9ed00645 100644
--- a/Chan/src/org/floens/chan/activity/AboutActivity.java
+++ b/Chan/src/org/floens/chan/ui/activity/AboutActivity.java
@@ -1,4 +1,4 @@
-package org.floens.chan.activity;
+package org.floens.chan.ui.activity;
import android.app.Activity;
import android.os.Bundle;
diff --git a/Chan/src/org/floens/chan/activity/BaseActivity.java b/Chan/src/org/floens/chan/ui/activity/BaseActivity.java
similarity index 92%
rename from Chan/src/org/floens/chan/activity/BaseActivity.java
rename to Chan/src/org/floens/chan/ui/activity/BaseActivity.java
index bb7a15c8..698e9e8e 100644
--- a/Chan/src/org/floens/chan/activity/BaseActivity.java
+++ b/Chan/src/org/floens/chan/ui/activity/BaseActivity.java
@@ -1,12 +1,13 @@
-package org.floens.chan.activity;
+package org.floens.chan.ui.activity;
+import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.adapter.PinnedAdapter;
-import org.floens.chan.animation.SwipeDismissListViewTouchListener;
-import org.floens.chan.animation.SwipeDismissListViewTouchListener.DismissCallbacks;
-import org.floens.chan.manager.PinnedManager;
-import org.floens.chan.model.Pin;
-import org.floens.chan.model.Post;
+import org.floens.chan.core.manager.PinnedManager;
+import org.floens.chan.core.model.Pin;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.ui.SwipeDismissListViewTouchListener;
+import org.floens.chan.ui.SwipeDismissListViewTouchListener.DismissCallbacks;
+import org.floens.chan.ui.adapter.PinnedAdapter;
import android.app.Activity;
import android.app.AlertDialog;
@@ -72,14 +73,14 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
threadPane = (SlidingPaneLayout) findViewById(R.id.pane_container);
initPane();
- PinnedManager.getInstance().addPinListener(this);
+ ChanApplication.getPinnedManager().addPinListener(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
- PinnedManager.getInstance().removePinListener(this);
+ ChanApplication.getPinnedManager().removePinListener(this);
}
private void initPane() {
@@ -151,15 +152,15 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
}
public void addPin(Pin pin) {
- PinnedManager.getInstance().add(pin);
+ ChanApplication.getPinnedManager().add(pin);
}
public void removePin(Pin pin) {
- PinnedManager.getInstance().remove(pin);
+ ChanApplication.getPinnedManager().remove(pin);
}
public void updatePin(Pin pin) {
- PinnedManager.getInstance().update(pin);
+ ChanApplication.getPinnedManager().update(pin);
}
private void changePinTitle(final Pin pin) {
diff --git a/Chan/src/org/floens/chan/activity/BoardActivity.java b/Chan/src/org/floens/chan/ui/activity/BoardActivity.java
similarity index 93%
rename from Chan/src/org/floens/chan/activity/BoardActivity.java
rename to Chan/src/org/floens/chan/ui/activity/BoardActivity.java
index 1556aeec..cb240953 100644
--- a/Chan/src/org/floens/chan/activity/BoardActivity.java
+++ b/Chan/src/org/floens/chan/ui/activity/BoardActivity.java
@@ -1,17 +1,16 @@
-package org.floens.chan.activity;
+package org.floens.chan.ui.activity;
import java.util.ArrayList;
import java.util.List;
+import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.fragment.ThreadFragment;
-import org.floens.chan.manager.BoardManager;
-import org.floens.chan.manager.PinnedManager;
-import org.floens.chan.model.Loadable;
-import org.floens.chan.model.Pin;
-import org.floens.chan.model.Post;
-import org.floens.chan.net.ChanUrls;
+import org.floens.chan.chan.ChanUrls;
+import org.floens.chan.core.model.Loadable;
+import org.floens.chan.core.model.Pin;
+import org.floens.chan.core.model.Post;
import org.floens.chan.service.PinnedService;
+import org.floens.chan.ui.fragment.ThreadFragment;
import android.app.ActionBar;
import android.app.AlertDialog;
@@ -58,7 +57,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
actionBar.getThemedContext(),
R.layout.board_select_spinner,
android.R.id.text1,
- BoardManager.getInstance().getMyBoardsKeys()
+ ChanApplication.getBoardManager().getMyBoardsKeys()
), this);
Intent startIntent = getIntent();
@@ -107,7 +106,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
protected void onPause() {
super.onPause();
- PinnedManager.getInstance().updateAll();
+ ChanApplication.getPinnedManager().updateAll();
}
@Override
@@ -121,7 +120,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
@Override
public boolean onNavigationItemSelected(int position, long id) {
if (!boardSetByIntent) {
- boardLoadable = new Loadable(BoardManager.getInstance().getMyBoardsValues().get(position));
+ boardLoadable = new Loadable(ChanApplication.getBoardManager().getMyBoardsValues().get(position));
startLoadingBoard(boardLoadable);
}
@@ -316,7 +315,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
private void startLoadingThread(Loadable loadable) {
if (loadable.mode == Loadable.Mode.INVALID) return;
- Pin pin = PinnedManager.getInstance().findPinByLoadable(loadable);
+ Pin pin = ChanApplication.getPinnedManager().findPinByLoadable(loadable);
if (pin != null) {
// Use the loadable from the pin.
// This way we can store the listview position in the pin loadable,
@@ -351,7 +350,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
// Board mode
String rawBoard = parts.get(0);
- if (BoardManager.getInstance().getBoardExists(rawBoard)) {
+ if (ChanApplication.getBoardManager().getBoardExists(rawBoard)) {
boardSetByIntent = true;
startLoadingBoard(new Loadable(rawBoard));
@@ -360,7 +359,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
if (!setNavigationFromBoardValue(rawBoard)) {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
- String value = BoardManager.getInstance().getBoardKey(rawBoard);
+ String value = ChanApplication.getBoardManager().getBoardKey(rawBoard);
actionBar.setTitle(value == null ? ("/" + rawBoard + "/") : value);
}
@@ -377,7 +376,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
no = Integer.parseInt(parts.get(2));
} catch (NumberFormatException e) {}
- if (no >= 0 && BoardManager.getInstance().getBoardExists(rawBoard)) {
+ if (no >= 0 && ChanApplication.getBoardManager().getBoardExists(rawBoard)) {
boardSetByIntent = true;
startLoadingBoard(new Loadable(rawBoard));
@@ -421,7 +420,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
* @return true if spinner was set, false otherwise
*/
private boolean setNavigationFromBoardValue(String boardValue) {
- ArrayList list = BoardManager.getInstance().getMyBoardsValues();
+ ArrayList list = ChanApplication.getBoardManager().getMyBoardsValues();
int foundIndex = -1;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals(boardValue)) {
diff --git a/Chan/src/org/floens/chan/activity/BoardEditor.java b/Chan/src/org/floens/chan/ui/activity/BoardEditor.java
similarity index 90%
rename from Chan/src/org/floens/chan/activity/BoardEditor.java
rename to Chan/src/org/floens/chan/ui/activity/BoardEditor.java
index 08885a69..bb2d1a1c 100644
--- a/Chan/src/org/floens/chan/activity/BoardEditor.java
+++ b/Chan/src/org/floens/chan/ui/activity/BoardEditor.java
@@ -1,12 +1,12 @@
-package org.floens.chan.activity;
+package org.floens.chan.ui.activity;
import java.util.ArrayList;
+import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.adapter.BoardEditAdapter;
-import org.floens.chan.manager.BoardManager;
-import org.floens.chan.model.Board;
-import org.floens.chan.view.DynamicListView;
+import org.floens.chan.core.model.Board;
+import org.floens.chan.ui.adapter.BoardEditAdapter;
+import org.floens.chan.ui.view.DynamicListView;
import android.app.Activity;
import android.app.AlertDialog;
@@ -35,7 +35,7 @@ public class BoardEditor extends Activity {
setContentView(R.layout.board_edit);
// Copy not a reference
- list = (ArrayList) BoardManager.getInstance().getMyBoards().clone();
+ list = (ArrayList) ChanApplication.getBoardManager().getMyBoards().clone();
adapter = new BoardEditAdapter(this, R.layout.board_view, list, this);
listView = (DynamicListView) findViewById(R.id.board_edit_list);
@@ -51,7 +51,7 @@ public class BoardEditor extends Activity {
// For runtime changes
if (list.size() > 0) {
- BoardManager.getInstance().setMyBoards((ArrayList) list.clone());
+ ChanApplication.getBoardManager().setMyBoards((ArrayList) list.clone());
}
}
@@ -65,7 +65,7 @@ public class BoardEditor extends Activity {
}
private void addBoard(String value) {
- BoardManager.getInstance().addBoard(list, value);
+ ChanApplication.getBoardManager().addBoard(list, value);
adapter = new BoardEditAdapter(this, R.layout.board_view, list, this);
listView.setArrayList(list);
diff --git a/Chan/src/org/floens/chan/activity/DeveloperActivity.java b/Chan/src/org/floens/chan/ui/activity/DeveloperActivity.java
similarity index 87%
rename from Chan/src/org/floens/chan/activity/DeveloperActivity.java
rename to Chan/src/org/floens/chan/ui/activity/DeveloperActivity.java
index cb5cd49f..734dcf27 100644
--- a/Chan/src/org/floens/chan/activity/DeveloperActivity.java
+++ b/Chan/src/org/floens/chan/ui/activity/DeveloperActivity.java
@@ -1,6 +1,6 @@
-package org.floens.chan.activity;
+package org.floens.chan.ui.activity;
-import org.floens.chan.database.DatabaseManager;
+import org.floens.chan.ChanApplication;
import android.app.Activity;
import android.os.Bundle;
@@ -33,7 +33,7 @@ public class DeveloperActivity extends Activity {
String dbSummary = "";
dbSummary += "Database summary:\n";
- dbSummary += DatabaseManager.getInstance().getSummary();
+ dbSummary += ChanApplication.getDatabaseManager().getSummary();
TextView db = new TextView(this);
db.setPadding(0, 25, 0, 0);
@@ -44,7 +44,7 @@ public class DeveloperActivity extends Activity {
resetDbButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- DatabaseManager.getInstance().reset();
+ ChanApplication.getDatabaseManager().reset();
System.exit(0);
}
});
diff --git a/Chan/src/org/floens/chan/activity/ImagePickActivity.java b/Chan/src/org/floens/chan/ui/activity/ImagePickActivity.java
similarity index 90%
rename from Chan/src/org/floens/chan/activity/ImagePickActivity.java
rename to Chan/src/org/floens/chan/ui/activity/ImagePickActivity.java
index 605ee6f3..873c39c2 100644
--- a/Chan/src/org/floens/chan/activity/ImagePickActivity.java
+++ b/Chan/src/org/floens/chan/ui/activity/ImagePickActivity.java
@@ -1,12 +1,12 @@
-package org.floens.chan.activity;
+package org.floens.chan.ui.activity;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.manager.ReplyManager;
import org.floens.chan.utils.IOUtils;
import android.app.Activity;
@@ -43,7 +43,7 @@ public class ImagePickActivity extends Activity {
if (data != null) {
final Uri uri = data.getData();
- ReplyManager.getInstance()._onPickedFileLoading();
+ ChanApplication.getReplyManager()._onPickedFileLoading();
// Async load the stream into "pickedFileCache", an file in the cache root
new Thread(new Runnable() {
@@ -64,7 +64,7 @@ public class ImagePickActivity extends Activity {
runOnUiThread(new Runnable() {
@Override
public void run() {
- ReplyManager.getInstance()._onPickedFile(cacheFile);
+ ChanApplication.getReplyManager()._onPickedFile(cacheFile);
}
});
diff --git a/Chan/src/org/floens/chan/imageview/activity/ImageViewActivity.java b/Chan/src/org/floens/chan/ui/activity/ImageViewActivity.java
similarity index 95%
rename from Chan/src/org/floens/chan/imageview/activity/ImageViewActivity.java
rename to Chan/src/org/floens/chan/ui/activity/ImageViewActivity.java
index 0220ca7a..afcee46b 100644
--- a/Chan/src/org/floens/chan/imageview/activity/ImageViewActivity.java
+++ b/Chan/src/org/floens/chan/ui/activity/ImageViewActivity.java
@@ -1,12 +1,12 @@
-package org.floens.chan.imageview.activity;
+package org.floens.chan.ui.activity;
import java.util.ArrayList;
import org.floens.chan.R;
-import org.floens.chan.adapter.PostAdapter;
-import org.floens.chan.imageview.ImageSaver;
-import org.floens.chan.imageview.adapter.ImageViewAdapter;
-import org.floens.chan.model.Post;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.ui.adapter.ImageViewAdapter;
+import org.floens.chan.ui.adapter.PostAdapter;
+import org.floens.chan.utils.ImageSaver;
import org.floens.chan.utils.Logger;
import android.app.ActionBar;
diff --git a/Chan/src/org/floens/chan/activity/ReplyActivity.java b/Chan/src/org/floens/chan/ui/activity/ReplyActivity.java
similarity index 90%
rename from Chan/src/org/floens/chan/activity/ReplyActivity.java
rename to Chan/src/org/floens/chan/ui/activity/ReplyActivity.java
index fc801c24..04085c09 100644
--- a/Chan/src/org/floens/chan/activity/ReplyActivity.java
+++ b/Chan/src/org/floens/chan/ui/activity/ReplyActivity.java
@@ -1,7 +1,7 @@
-package org.floens.chan.activity;
+package org.floens.chan.ui.activity;
-import org.floens.chan.fragment.ReplyFragment;
-import org.floens.chan.model.Loadable;
+import org.floens.chan.core.model.Loadable;
+import org.floens.chan.ui.fragment.ReplyFragment;
import org.floens.chan.utils.Logger;
import android.app.Activity;
diff --git a/Chan/src/org/floens/chan/activity/SettingsActivity.java b/Chan/src/org/floens/chan/ui/activity/SettingsActivity.java
similarity index 79%
rename from Chan/src/org/floens/chan/activity/SettingsActivity.java
rename to Chan/src/org/floens/chan/ui/activity/SettingsActivity.java
index 2c84b9e0..8baae3cd 100644
--- a/Chan/src/org/floens/chan/activity/SettingsActivity.java
+++ b/Chan/src/org/floens/chan/ui/activity/SettingsActivity.java
@@ -1,6 +1,6 @@
-package org.floens.chan.activity;
+package org.floens.chan.ui.activity;
-import org.floens.chan.fragment.SettingsFragment;
+import org.floens.chan.ui.fragment.SettingsFragment;
import android.app.Activity;
import android.os.Bundle;
diff --git a/Chan/src/org/floens/chan/activity/WatchSettingsActivity.java b/Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java
similarity index 97%
rename from Chan/src/org/floens/chan/activity/WatchSettingsActivity.java
rename to Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java
index 6776696e..e267e779 100644
--- a/Chan/src/org/floens/chan/activity/WatchSettingsActivity.java
+++ b/Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java
@@ -1,7 +1,7 @@
-package org.floens.chan.activity;
+package org.floens.chan.ui.activity;
import org.floens.chan.R;
-import org.floens.chan.utils.ChanPreferences;
+import org.floens.chan.core.ChanPreferences;
import org.floens.chan.utils.Utils;
import android.app.Activity;
diff --git a/Chan/src/org/floens/chan/adapter/BoardEditAdapter.java b/Chan/src/org/floens/chan/ui/adapter/BoardEditAdapter.java
similarity index 95%
rename from Chan/src/org/floens/chan/adapter/BoardEditAdapter.java
rename to Chan/src/org/floens/chan/ui/adapter/BoardEditAdapter.java
index a1bb0698..6d8df16e 100644
--- a/Chan/src/org/floens/chan/adapter/BoardEditAdapter.java
+++ b/Chan/src/org/floens/chan/ui/adapter/BoardEditAdapter.java
@@ -14,14 +14,14 @@
* limitations under the License.
*/
-package org.floens.chan.adapter;
+package org.floens.chan.ui.adapter;
import java.util.HashMap;
import java.util.List;
import org.floens.chan.R;
-import org.floens.chan.activity.BoardEditor;
-import org.floens.chan.model.Board;
+import org.floens.chan.core.model.Board;
+import org.floens.chan.ui.activity.BoardEditor;
import android.content.Context;
import android.view.LayoutInflater;
diff --git a/Chan/src/org/floens/chan/imageview/adapter/ImageViewAdapter.java b/Chan/src/org/floens/chan/ui/adapter/ImageViewAdapter.java
similarity index 87%
rename from Chan/src/org/floens/chan/imageview/adapter/ImageViewAdapter.java
rename to Chan/src/org/floens/chan/ui/adapter/ImageViewAdapter.java
index da88d4cc..aecbf9cb 100644
--- a/Chan/src/org/floens/chan/imageview/adapter/ImageViewAdapter.java
+++ b/Chan/src/org/floens/chan/ui/adapter/ImageViewAdapter.java
@@ -1,10 +1,10 @@
-package org.floens.chan.imageview.adapter;
+package org.floens.chan.ui.adapter;
import java.util.ArrayList;
-import org.floens.chan.imageview.activity.ImageViewActivity;
-import org.floens.chan.imageview.fragment.ImageViewFragment;
-import org.floens.chan.model.Post;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.ui.activity.ImageViewActivity;
+import org.floens.chan.ui.fragment.ImageViewFragment;
import android.app.Fragment;
import android.app.FragmentManager;
diff --git a/Chan/src/org/floens/chan/adapter/PinnedAdapter.java b/Chan/src/org/floens/chan/ui/adapter/PinnedAdapter.java
similarity index 94%
rename from Chan/src/org/floens/chan/adapter/PinnedAdapter.java
rename to Chan/src/org/floens/chan/ui/adapter/PinnedAdapter.java
index 4e75f0c0..275d9f96 100644
--- a/Chan/src/org/floens/chan/adapter/PinnedAdapter.java
+++ b/Chan/src/org/floens/chan/ui/adapter/PinnedAdapter.java
@@ -1,11 +1,11 @@
-package org.floens.chan.adapter;
+package org.floens.chan.ui.adapter;
import java.util.ArrayList;
import java.util.HashMap;
+import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.manager.PinnedManager;
-import org.floens.chan.model.Pin;
+import org.floens.chan.core.model.Pin;
import android.content.Context;
import android.view.LayoutInflater;
@@ -69,7 +69,7 @@ public class PinnedAdapter extends ArrayAdapter {
header.type = Pin.Type.HEADER;
add(header);
- addAll(PinnedManager.getInstance().getPins());
+ addAll(ChanApplication.getPinnedManager().getPins());
notifyDataSetChanged();
}
diff --git a/Chan/src/org/floens/chan/adapter/PostAdapter.java b/Chan/src/org/floens/chan/ui/adapter/PostAdapter.java
similarity index 94%
rename from Chan/src/org/floens/chan/adapter/PostAdapter.java
rename to Chan/src/org/floens/chan/ui/adapter/PostAdapter.java
index 22120a81..b2a2f946 100644
--- a/Chan/src/org/floens/chan/adapter/PostAdapter.java
+++ b/Chan/src/org/floens/chan/ui/adapter/PostAdapter.java
@@ -1,15 +1,15 @@
-package org.floens.chan.adapter;
+package org.floens.chan.ui.adapter;
import java.util.ArrayList;
import java.util.List;
import org.floens.chan.R;
-import org.floens.chan.manager.ThreadManager;
-import org.floens.chan.model.Post;
-import org.floens.chan.utils.ScrollerRunnable;
+import org.floens.chan.core.manager.ThreadManager;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.ui.ScrollerRunnable;
+import org.floens.chan.ui.view.PostView;
+import org.floens.chan.ui.view.ThreadWatchCounterView;
import org.floens.chan.utils.Utils;
-import org.floens.chan.view.PostView;
-import org.floens.chan.view.ThreadWatchCounterView;
import android.content.Context;
import android.view.Gravity;
diff --git a/Chan/src/org/floens/chan/imageview/fragment/ImageViewFragment.java b/Chan/src/org/floens/chan/ui/fragment/ImageViewFragment.java
similarity index 94%
rename from Chan/src/org/floens/chan/imageview/fragment/ImageViewFragment.java
rename to Chan/src/org/floens/chan/ui/fragment/ImageViewFragment.java
index 62cd0454..4bb3eba8 100644
--- a/Chan/src/org/floens/chan/imageview/fragment/ImageViewFragment.java
+++ b/Chan/src/org/floens/chan/ui/fragment/ImageViewFragment.java
@@ -1,12 +1,12 @@
-package org.floens.chan.imageview.fragment;
+package org.floens.chan.ui.fragment;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.imageview.activity.ImageViewActivity;
-import org.floens.chan.imageview.view.NetworkPhotoView;
-import org.floens.chan.model.Post;
-import org.floens.chan.net.GIFRequest;
-import org.floens.chan.view.GIFView;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.core.net.GIFRequest;
+import org.floens.chan.ui.activity.ImageViewActivity;
+import org.floens.chan.ui.view.GIFView;
+import org.floens.chan.ui.view.NetworkPhotoView;
import uk.co.senab.photoview.PhotoViewAttacher.OnViewTapListener;
import android.app.Fragment;
diff --git a/Chan/src/org/floens/chan/fragment/PostRepliesFragment.java b/Chan/src/org/floens/chan/ui/fragment/PostRepliesFragment.java
similarity index 95%
rename from Chan/src/org/floens/chan/fragment/PostRepliesFragment.java
rename to Chan/src/org/floens/chan/ui/fragment/PostRepliesFragment.java
index c7092f0d..155e6ffe 100644
--- a/Chan/src/org/floens/chan/fragment/PostRepliesFragment.java
+++ b/Chan/src/org/floens/chan/ui/fragment/PostRepliesFragment.java
@@ -1,11 +1,11 @@
-package org.floens.chan.fragment;
+package org.floens.chan.ui.fragment;
import java.util.List;
import org.floens.chan.R;
-import org.floens.chan.manager.ThreadManager;
-import org.floens.chan.model.Post;
-import org.floens.chan.view.PostView;
+import org.floens.chan.core.manager.ThreadManager;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.ui.view.PostView;
import android.app.DialogFragment;
import android.content.DialogInterface;
diff --git a/Chan/src/org/floens/chan/fragment/ReplyFragment.java b/Chan/src/org/floens/chan/ui/fragment/ReplyFragment.java
similarity index 95%
rename from Chan/src/org/floens/chan/fragment/ReplyFragment.java
rename to Chan/src/org/floens/chan/ui/fragment/ReplyFragment.java
index cbc2205e..98733622 100644
--- a/Chan/src/org/floens/chan/fragment/ReplyFragment.java
+++ b/Chan/src/org/floens/chan/ui/fragment/ReplyFragment.java
@@ -1,19 +1,19 @@
-package org.floens.chan.fragment;
+package org.floens.chan.ui.fragment;
import java.io.File;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.manager.ReplyManager;
-import org.floens.chan.manager.ReplyManager.ReplyResponse;
-import org.floens.chan.model.Loadable;
-import org.floens.chan.model.Reply;
-import org.floens.chan.net.ChanUrls;
-import org.floens.chan.utils.ChanPreferences;
+import org.floens.chan.chan.ChanUrls;
+import org.floens.chan.core.ChanPreferences;
+import org.floens.chan.core.manager.ReplyManager;
+import org.floens.chan.core.manager.ReplyManager.ReplyResponse;
+import org.floens.chan.core.model.Loadable;
+import org.floens.chan.core.model.Reply;
+import org.floens.chan.ui.ViewFlipperAnimations;
+import org.floens.chan.ui.view.LoadView;
import org.floens.chan.utils.ImageDecoder;
-import org.floens.chan.utils.LoadView;
import org.floens.chan.utils.Logger;
-import org.floens.chan.utils.ViewFlipperAnimations;
import android.app.Dialog;
import android.app.DialogFragment;
@@ -123,7 +123,7 @@ public class ReplyFragment extends DialogFragment {
});
}
- Reply draft = ReplyManager.getInstance().getReplyDraft();
+ Reply draft = ChanApplication.getReplyManager().getReplyDraft();
if (TextUtils.isEmpty(draft.name)) {
draft.name = ChanPreferences.getDefaultName();
@@ -150,7 +150,7 @@ public class ReplyFragment extends DialogFragment {
public void onPause() {
super.onPause();
- ReplyManager replyManager = ReplyManager.getInstance();
+ ReplyManager replyManager = ChanApplication.getReplyManager();
if (shouldSaveDraft) {
draft.name = nameView.getText().toString();
@@ -169,7 +169,7 @@ public class ReplyFragment extends DialogFragment {
public void onDestroy() {
super.onDestroy();
- ReplyManager replyManager = ReplyManager.getInstance();
+ ReplyManager replyManager = ChanApplication.getReplyManager();
replyManager.removeFileListener();
}
@@ -210,7 +210,7 @@ public class ReplyFragment extends DialogFragment {
fileButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
- ReplyManager.getInstance().pickFile(new ReplyManager.FileListener() {
+ ChanApplication.getReplyManager().pickFile(new ReplyManager.FileListener() {
@Override
public void onFile(File file) {
setFile(file);
@@ -397,7 +397,7 @@ public class ReplyFragment extends DialogFragment {
draft.resto = loadable.isBoardMode() ? -1 : loadable.no;
draft.board = loadable.board;
- ReplyManager.getInstance().sendReply(draft, new ReplyManager.ReplyListener() {
+ ChanApplication.getReplyManager().sendReply(draft, new ReplyManager.ReplyListener() {
@Override
public void onResponse(ReplyResponse response) {
handleSubmitResponse(response);
diff --git a/Chan/src/org/floens/chan/fragment/SettingsFragment.java b/Chan/src/org/floens/chan/ui/fragment/SettingsFragment.java
similarity index 96%
rename from Chan/src/org/floens/chan/fragment/SettingsFragment.java
rename to Chan/src/org/floens/chan/ui/fragment/SettingsFragment.java
index 9d337c25..4c652a14 100644
--- a/Chan/src/org/floens/chan/fragment/SettingsFragment.java
+++ b/Chan/src/org/floens/chan/ui/fragment/SettingsFragment.java
@@ -1,8 +1,8 @@
-package org.floens.chan.fragment;
+package org.floens.chan.ui.fragment;
import org.floens.chan.R;
-import org.floens.chan.activity.AboutActivity;
-import org.floens.chan.utils.ChanPreferences;
+import org.floens.chan.core.ChanPreferences;
+import org.floens.chan.ui.activity.AboutActivity;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
diff --git a/Chan/src/org/floens/chan/fragment/ThreadFragment.java b/Chan/src/org/floens/chan/ui/fragment/ThreadFragment.java
similarity index 93%
rename from Chan/src/org/floens/chan/fragment/ThreadFragment.java
rename to Chan/src/org/floens/chan/ui/fragment/ThreadFragment.java
index c29975ab..992ed912 100644
--- a/Chan/src/org/floens/chan/fragment/ThreadFragment.java
+++ b/Chan/src/org/floens/chan/ui/fragment/ThreadFragment.java
@@ -1,16 +1,16 @@
-package org.floens.chan.fragment;
+package org.floens.chan.ui.fragment;
import java.util.List;
import org.floens.chan.R;
-import org.floens.chan.activity.BaseActivity;
-import org.floens.chan.adapter.PostAdapter;
-import org.floens.chan.imageview.activity.ImageViewActivity;
-import org.floens.chan.loader.EndOfLineException;
-import org.floens.chan.manager.ThreadManager;
-import org.floens.chan.model.Loadable;
-import org.floens.chan.model.Post;
-import org.floens.chan.utils.LoadView;
+import org.floens.chan.core.loader.EndOfLineException;
+import org.floens.chan.core.manager.ThreadManager;
+import org.floens.chan.core.model.Loadable;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.ui.activity.BaseActivity;
+import org.floens.chan.ui.activity.ImageViewActivity;
+import org.floens.chan.ui.adapter.PostAdapter;
+import org.floens.chan.ui.view.LoadView;
import android.app.Fragment;
import android.content.Intent;
diff --git a/Chan/src/org/floens/chan/view/DynamicListView.java b/Chan/src/org/floens/chan/ui/view/DynamicListView.java
similarity index 99%
rename from Chan/src/org/floens/chan/view/DynamicListView.java
rename to Chan/src/org/floens/chan/ui/view/DynamicListView.java
index 62dd22ce..07558ad9 100644
--- a/Chan/src/org/floens/chan/view/DynamicListView.java
+++ b/Chan/src/org/floens/chan/ui/view/DynamicListView.java
@@ -14,11 +14,11 @@
* limitations under the License.
*/
-package org.floens.chan.view;
+package org.floens.chan.ui.view;
import java.util.ArrayList;
-import org.floens.chan.adapter.BoardEditAdapter;
+import org.floens.chan.ui.adapter.BoardEditAdapter;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
diff --git a/Chan/src/org/floens/chan/view/GIFView.java b/Chan/src/org/floens/chan/ui/view/GIFView.java
similarity index 98%
rename from Chan/src/org/floens/chan/view/GIFView.java
rename to Chan/src/org/floens/chan/ui/view/GIFView.java
index 58a5e027..e316b0ad 100644
--- a/Chan/src/org/floens/chan/view/GIFView.java
+++ b/Chan/src/org/floens/chan/ui/view/GIFView.java
@@ -1,4 +1,4 @@
-package org.floens.chan.view;
+package org.floens.chan.ui.view;
import android.content.Context;
import android.graphics.Canvas;
diff --git a/Chan/src/org/floens/chan/view/HackyViewPager.java b/Chan/src/org/floens/chan/ui/view/HackyViewPager.java
similarity index 97%
rename from Chan/src/org/floens/chan/view/HackyViewPager.java
rename to Chan/src/org/floens/chan/ui/view/HackyViewPager.java
index 2cc88dbf..5e26a408 100644
--- a/Chan/src/org/floens/chan/view/HackyViewPager.java
+++ b/Chan/src/org/floens/chan/ui/view/HackyViewPager.java
@@ -1,4 +1,4 @@
-package org.floens.chan.view;
+package org.floens.chan.ui.view;
import android.content.Context;
import android.support.v4.view.ViewPager;
diff --git a/Chan/src/org/floens/chan/utils/LoadView.java b/Chan/src/org/floens/chan/ui/view/LoadView.java
similarity index 95%
rename from Chan/src/org/floens/chan/utils/LoadView.java
rename to Chan/src/org/floens/chan/ui/view/LoadView.java
index d0f57762..74e74392 100644
--- a/Chan/src/org/floens/chan/utils/LoadView.java
+++ b/Chan/src/org/floens/chan/ui/view/LoadView.java
@@ -1,4 +1,6 @@
-package org.floens.chan.utils;
+package org.floens.chan.ui.view;
+
+import org.floens.chan.utils.SimpleAnimatorListener;
import android.animation.Animator;
import android.content.Context;
diff --git a/Chan/src/org/floens/chan/imageview/view/NetworkPhotoView.java b/Chan/src/org/floens/chan/ui/view/NetworkPhotoView.java
similarity index 95%
rename from Chan/src/org/floens/chan/imageview/view/NetworkPhotoView.java
rename to Chan/src/org/floens/chan/ui/view/NetworkPhotoView.java
index b170a610..6500d405 100644
--- a/Chan/src/org/floens/chan/imageview/view/NetworkPhotoView.java
+++ b/Chan/src/org/floens/chan/ui/view/NetworkPhotoView.java
@@ -1,7 +1,7 @@
-package org.floens.chan.imageview.view;
+package org.floens.chan.ui.view;
import org.floens.chan.R;
-import org.floens.chan.imageview.fragment.ImageViewFragment;
+import org.floens.chan.ui.fragment.ImageViewFragment;
import uk.co.senab.photoview.PhotoViewAttacher;
import uk.co.senab.photoview.PhotoViewAttacher.OnViewTapListener;
diff --git a/Chan/src/org/floens/chan/view/PostView.java b/Chan/src/org/floens/chan/ui/view/PostView.java
similarity index 98%
rename from Chan/src/org/floens/chan/view/PostView.java
rename to Chan/src/org/floens/chan/ui/view/PostView.java
index 255e48c2..d37f4fb2 100644
--- a/Chan/src/org/floens/chan/view/PostView.java
+++ b/Chan/src/org/floens/chan/ui/view/PostView.java
@@ -1,11 +1,11 @@
-package org.floens.chan.view;
+package org.floens.chan.ui.view;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.manager.ThreadManager;
-import org.floens.chan.model.Post;
-import org.floens.chan.model.PostLinkable;
-import org.floens.chan.net.ChanUrls;
+import org.floens.chan.chan.ChanUrls;
+import org.floens.chan.core.manager.ThreadManager;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.core.model.PostLinkable;
import org.floens.chan.utils.IconCache;
import org.floens.chan.utils.Utils;
diff --git a/Chan/src/org/floens/chan/view/ThreadWatchCounterView.java b/Chan/src/org/floens/chan/ui/view/ThreadWatchCounterView.java
similarity index 94%
rename from Chan/src/org/floens/chan/view/ThreadWatchCounterView.java
rename to Chan/src/org/floens/chan/ui/view/ThreadWatchCounterView.java
index de7f03f5..e283840b 100644
--- a/Chan/src/org/floens/chan/view/ThreadWatchCounterView.java
+++ b/Chan/src/org/floens/chan/ui/view/ThreadWatchCounterView.java
@@ -1,7 +1,7 @@
-package org.floens.chan.view;
+package org.floens.chan.ui.view;
-import org.floens.chan.loader.Loader;
-import org.floens.chan.manager.ThreadManager;
+import org.floens.chan.core.loader.Loader;
+import org.floens.chan.core.manager.ThreadManager;
import android.content.Context;
import android.os.Handler;
diff --git a/Chan/src/org/floens/chan/imageview/ImageSaver.java b/Chan/src/org/floens/chan/utils/ImageSaver.java
similarity index 95%
rename from Chan/src/org/floens/chan/imageview/ImageSaver.java
rename to Chan/src/org/floens/chan/utils/ImageSaver.java
index c4473389..00b76c19 100644
--- a/Chan/src/org/floens/chan/imageview/ImageSaver.java
+++ b/Chan/src/org/floens/chan/utils/ImageSaver.java
@@ -1,4 +1,4 @@
-package org.floens.chan.imageview;
+package org.floens.chan.utils;
import java.io.File;
import java.io.FileOutputStream;
@@ -6,9 +6,8 @@ import java.io.IOException;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
-import org.floens.chan.net.ByteArrayRequest;
-import org.floens.chan.utils.ChanPreferences;
-import org.floens.chan.utils.Logger;
+import org.floens.chan.core.ChanPreferences;
+import org.floens.chan.core.net.ByteArrayRequest;
import android.content.Context;
import android.media.MediaScannerConnection;
diff --git a/Chan/src/uk/co/senab/photoview/PhotoView.java b/Chan/src/uk/co/senab/photoview/PhotoView.java
index 8bf304ed..a331b255 100644
--- a/Chan/src/uk/co/senab/photoview/PhotoView.java
+++ b/Chan/src/uk/co/senab/photoview/PhotoView.java
@@ -15,6 +15,9 @@
*******************************************************************************/
package uk.co.senab.photoview;
+import uk.co.senab.photoview.PhotoViewAttacher.OnMatrixChangedListener;
+import uk.co.senab.photoview.PhotoViewAttacher.OnPhotoTapListener;
+import uk.co.senab.photoview.PhotoViewAttacher.OnViewTapListener;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
@@ -24,10 +27,6 @@ import android.net.Uri;
import android.util.AttributeSet;
import android.widget.ImageView;
-import uk.co.senab.photoview.PhotoViewAttacher.OnMatrixChangedListener;
-import uk.co.senab.photoview.PhotoViewAttacher.OnPhotoTapListener;
-import uk.co.senab.photoview.PhotoViewAttacher.OnViewTapListener;
-
public class PhotoView extends ImageView implements IPhotoView {
private final PhotoViewAttacher mAttacher;
diff --git a/Chan/src/uk/co/senab/photoview/gestures/EclairGestureDetector.java b/Chan/src/uk/co/senab/photoview/gestures/EclairGestureDetector.java
index 2d5215b1..11439c91 100644
--- a/Chan/src/uk/co/senab/photoview/gestures/EclairGestureDetector.java
+++ b/Chan/src/uk/co/senab/photoview/gestures/EclairGestureDetector.java
@@ -15,12 +15,11 @@
*******************************************************************************/
package uk.co.senab.photoview.gestures;
+import uk.co.senab.photoview.Compat;
import android.annotation.TargetApi;
import android.content.Context;
import android.view.MotionEvent;
-import uk.co.senab.photoview.Compat;
-
@TargetApi(5)
public class EclairGestureDetector extends CupcakeGestureDetector {