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 {