Format code with Android Studio

captchafix
Florens Douwes 11 years ago
parent 01070a006d
commit e65c0db0a4
  1. 39
      Clover/app/src/main/java/org/floens/chan/core/loader/Loader.java
  2. 4
      Clover/app/src/main/java/org/floens/chan/core/loader/LoaderPool.java
  3. 15
      Clover/app/src/main/java/org/floens/chan/core/manager/BoardManager.java
  4. 8
      Clover/app/src/main/java/org/floens/chan/core/manager/PinnedManager.java
  5. 47
      Clover/app/src/main/java/org/floens/chan/core/manager/ReplyManager.java
  6. 92
      Clover/app/src/main/java/org/floens/chan/core/manager/ThreadManager.java
  7. 14
      Clover/app/src/main/java/org/floens/chan/core/model/Pin.java
  8. 20
      Clover/app/src/main/java/org/floens/chan/core/model/Post.java
  9. 4
      Clover/app/src/main/java/org/floens/chan/core/model/PostLinkable.java
  10. 12
      Clover/app/src/main/java/org/floens/chan/core/net/BoardsRequest.java
  11. 29
      Clover/app/src/main/java/org/floens/chan/core/net/ChanReaderRequest.java
  12. 8
      Clover/app/src/main/java/org/floens/chan/core/net/FileRequest.java
  13. 4
      Clover/app/src/main/java/org/floens/chan/core/net/GIFRequest.java
  14. 10
      Clover/app/src/main/java/org/floens/chan/core/net/JsonReaderRequest.java
  15. 6
      Clover/app/src/main/java/org/floens/chan/core/watch/PinWatcher.java
  16. 22
      Clover/app/src/main/java/org/floens/chan/core/watch/WatchNotifier.java
  17. 2
      Clover/app/src/main/java/org/floens/chan/database/DatabaseHelper.java
  18. 14
      Clover/app/src/main/java/org/floens/chan/service/WatchService.java
  19. 94
      Clover/app/src/main/java/org/floens/chan/ui/ScrollerRunnable.java
  20. 255
      Clover/app/src/main/java/org/floens/chan/ui/SwipeDismissListViewTouchListener.java
  21. 37
      Clover/app/src/main/java/org/floens/chan/ui/activity/BaseActivity.java
  22. 115
      Clover/app/src/main/java/org/floens/chan/ui/activity/BoardActivity.java
  23. 39
      Clover/app/src/main/java/org/floens/chan/ui/activity/BoardEditor.java
  24. 4
      Clover/app/src/main/java/org/floens/chan/ui/activity/DeveloperActivity.java
  25. 18
      Clover/app/src/main/java/org/floens/chan/ui/activity/ImagePickActivity.java
  26. 26
      Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java
  27. 16
      Clover/app/src/main/java/org/floens/chan/ui/activity/PassSettingsActivity.java
  28. 14
      Clover/app/src/main/java/org/floens/chan/ui/activity/ReplyActivity.java
  29. 4
      Clover/app/src/main/java/org/floens/chan/ui/activity/SettingsActivity.java
  30. 8
      Clover/app/src/main/java/org/floens/chan/ui/activity/WatchSettingsActivity.java
  31. 14
      Clover/app/src/main/java/org/floens/chan/ui/adapter/ImageViewAdapter.java
  32. 16
      Clover/app/src/main/java/org/floens/chan/ui/adapter/PinnedAdapter.java
  33. 20
      Clover/app/src/main/java/org/floens/chan/ui/adapter/PostAdapter.java
  34. 20
      Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java
  35. 14
      Clover/app/src/main/java/org/floens/chan/ui/fragment/PostRepliesFragment.java
  36. 44
      Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java
  37. 8
      Clover/app/src/main/java/org/floens/chan/ui/fragment/SettingsFragment.java
  38. 28
      Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java
  39. 36
      Clover/app/src/main/java/org/floens/chan/ui/view/CustomNetworkImageView.java
  40. 8
      Clover/app/src/main/java/org/floens/chan/ui/view/DragGripView.java
  41. 7
      Clover/app/src/main/java/org/floens/chan/ui/view/LoadView.java
  42. 11
      Clover/app/src/main/java/org/floens/chan/ui/view/NetworkPhotoView.java
  43. 20
      Clover/app/src/main/java/org/floens/chan/ui/view/PostView.java
  44. 8
      Clover/app/src/main/java/org/floens/chan/ui/view/ThreadWatchCounterView.java
  45. 29
      Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java
  46. 4
      Clover/app/src/main/java/org/floens/chan/utils/IconCache.java
  47. 6
      Clover/app/src/main/java/org/floens/chan/utils/ImageDecoder.java
  48. 29
      Clover/app/src/main/java/org/floens/chan/utils/ImageSaver.java
  49. 4
      Clover/app/src/main/java/org/floens/chan/utils/Logger.java
  50. 12
      Clover/app/src/main/java/org/floens/chan/utils/Utils.java

@ -17,8 +17,13 @@
*/
package org.floens.chan.core.loader;
import java.util.ArrayList;
import java.util.List;
import android.os.Handler;
import android.os.Looper;
import android.util.SparseArray;
import com.android.volley.Response;
import com.android.volley.ServerError;
import com.android.volley.VolleyError;
import org.floens.chan.ChanApplication;
import org.floens.chan.core.model.Loadable;
@ -27,19 +32,14 @@ import org.floens.chan.core.net.ChanReaderRequest;
import org.floens.chan.utils.Logger;
import org.floens.chan.utils.Time;
import android.os.Handler;
import android.os.Looper;
import android.util.SparseArray;
import com.android.volley.Response;
import com.android.volley.ServerError;
import com.android.volley.VolleyError;
import java.util.ArrayList;
import java.util.List;
public class Loader {
private static final String TAG = "Loader";
private static final Handler handler = new Handler(Looper.getMainLooper());
private static final int[] watchTimeouts = { 10, 15, 20, 30, 60, 90, 120, 180, 240, 300, 600, 1800, 3600 };
private static final int[] watchTimeouts = {10, 15, 20, 30, 60, 90, 120, 180, 240, 300, 600, 1800, 3600};
private final List<LoaderListener> listeners = new ArrayList<LoaderListener>();
private final Loadable loadable;
@ -61,9 +61,8 @@ public class Loader {
/**
* Add a LoaderListener
*
* @param l
* the listener to add
*
* @param l the listener to add
*/
public void addListener(LoaderListener l) {
listeners.add(l);
@ -71,9 +70,8 @@ public class Loader {
/**
* Remove a LoaderListener
*
* @param l
* the listener to remove
*
* @param l the listener to remove
* @return true if there are no more listeners, false otherwise
*/
public boolean removeListener(LoaderListener l) {
@ -183,7 +181,7 @@ public class Loader {
/**
* Get the time in milliseconds until another loadMore is recommended
*
*
* @return
*/
public long getTimeUntilLoadMore() {
@ -223,7 +221,9 @@ public class Loader {
public void run() {
pendingRunnable = null;
loadMoreIfTime();
};
}
;
};
Logger.d(TAG, "Scheduled reload in " + watchTimeouts[currentTimeout] * 1000L);
@ -255,7 +255,8 @@ public class Loader {
Loader.this.request = null;
onError(error);
}
});
}
);
ChanApplication.getVolleyRequestQueue().add(request);

@ -17,11 +17,11 @@
*/
package org.floens.chan.core.loader;
import org.floens.chan.core.model.Loadable;
import java.util.HashMap;
import java.util.Map;
import org.floens.chan.core.model.Loadable;
public class LoaderPool {
// private static final String TAG = "LoaderPool";

@ -17,10 +17,8 @@
*/
package org.floens.chan.core.manager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import org.floens.chan.ChanApplication;
import org.floens.chan.chan.ChanUrls;
@ -28,8 +26,10 @@ import org.floens.chan.core.model.Board;
import org.floens.chan.core.net.BoardsRequest;
import org.floens.chan.utils.Logger;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class BoardManager {
private static final String TAG = "BoardManager";
@ -173,7 +173,8 @@ public class BoardManager {
public void onErrorResponse(VolleyError error) {
Logger.e(TAG, "Failed to get boards from server");
}
}));
})
);
}
private List<Board> getDefaultBoards() {

@ -17,14 +17,14 @@
*/
package org.floens.chan.core.manager;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import org.floens.chan.ChanApplication;
import org.floens.chan.core.model.Loadable;
import org.floens.chan.core.model.Pin;
import android.content.Context;
import java.util.ArrayList;
import java.util.List;
public class PinnedManager {
private final List<PinListener> listeners = new ArrayList<PinListener>();
@ -48,7 +48,7 @@ public class PinnedManager {
*
* @param other
* @return The pin whose loadable is equal to the supplied loadable, or null
* if no pin was found.
* if no pin was found.
*/
public Pin findPinByLoadable(Loadable other) {
for (Pin pin : pins) {

@ -17,13 +17,8 @@
*/
package org.floens.chan.core.manager;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Locale;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.content.Context;
import android.content.Intent;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
@ -35,8 +30,14 @@ import org.floens.chan.ui.activity.ImagePickActivity;
import org.floens.chan.utils.Logger;
import org.floens.chan.utils.Utils;
import android.content.Context;
import android.content.Intent;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Locale;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import ch.boye.httpclientandroidlib.Header;
import ch.boye.httpclientandroidlib.HeaderElement;
import ch.boye.httpclientandroidlib.HttpResponse;
@ -81,8 +82,7 @@ public class ReplyManager {
/**
* Set an reply draft.
*
* @param value
* the draft to save.
* @param value the draft to save.
*/
public void setReplyDraft(Reply value) {
draft = value;
@ -100,8 +100,7 @@ public class ReplyManager {
/**
* Add an quote to the comment field. Looks like >>123456789\n
*
* @param no
* the raw no to quote to.
* @param no the raw no to quote to.
*/
public void quote(int no) {
draft.comment = draft.comment + ">>" + no + "\n";
@ -110,8 +109,7 @@ public class ReplyManager {
/**
* Pick an file. Starts up the ImagePickActivity.
*
* @param listener
* FileListener to listen on.
* @param listener FileListener to listen on.
*/
public void pickFile(FileListener listener) {
fileListener = listener;
@ -157,8 +155,7 @@ public class ReplyManager {
/**
* Get the CAPTCHA challenge hash from an JSON response.
*
* @param total
* The total response from the server
* @param total The total response from the server
* @return The pattern, or null when none was found.
*/
public static String getChallenge(String total) {
@ -264,11 +261,9 @@ public class ReplyManager {
/**
* 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.
* @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);
@ -341,11 +336,9 @@ public class ReplyManager {
/**
* 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.
* @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);

@ -17,8 +17,21 @@
*/
package org.floens.chan.core.manager;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.FragmentTransaction;
import android.app.ProgressDialog;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.text.TextUtils;
import android.widget.CheckBox;
import android.widget.Toast;
import com.android.volley.VolleyError;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
@ -38,21 +51,8 @@ import org.floens.chan.ui.fragment.ReplyFragment;
import org.floens.chan.utils.Logger;
import org.floens.chan.utils.Utils;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.FragmentTransaction;
import android.app.ProgressDialog;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.text.TextUtils;
import android.widget.CheckBox;
import android.widget.Toast;
import com.android.volley.VolleyError;
import java.util.ArrayList;
import java.util.List;
/**
* All PostView's need to have this referenced. This manages some things like
@ -224,24 +224,24 @@ public class ThreadManager implements Loader.LoaderListener {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0: // Reply
openReply(true); // todo if tablet
// Pass through
case 1: // Quote
ChanApplication.getReplyManager().quote(post.no);
break;
case 2: // Info
showPostInfo(post);
break;
case 3: // Show clickables
showPostLinkables(post);
break;
case 4: // Copy text
copyToClipboard(post.comment.toString());
break;
case 5: // Delete
deletePost(post);
break;
case 0: // Reply
openReply(true); // todo if tablet
// Pass through
case 1: // Quote
ChanApplication.getReplyManager().quote(post.no);
break;
case 2: // Info
showPostInfo(post);
break;
case 3: // Show clickables
showPostLinkables(post);
break;
case 4: // Copy text
copyToClipboard(post.comment.toString());
break;
case 5: // Delete
deletePost(post);
break;
}
}
});
@ -334,8 +334,7 @@ public class ThreadManager implements Loader.LoaderListener {
* linkable. b. when there's more than one linkable, show the user multiple
* options to select from.
*
* @param post
* The post that was clicked.
* @param post The post that was clicked.
*/
public void showPostLinkables(Post post) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
@ -380,8 +379,7 @@ public class ThreadManager implements Loader.LoaderListener {
/**
* Handle when a linkable has been clicked.
*
* @param linkable
* the selected linkable.
* @param linkable the selected linkable.
*/
private void handleLinkableSelected(final PostLinkable linkable) {
if (linkable.type == PostLinkable.Type.QUOTE) {
@ -413,8 +411,7 @@ public class ThreadManager implements Loader.LoaderListener {
* When a linkable to a post has been clicked, show a dialog with the
* referenced post in it.
*
* @param linkable
* the clicked linkable.
* @param linkable the clicked linkable.
*/
private void showPostReply(PostLinkable linkable) {
String value = linkable.value;
@ -442,9 +439,8 @@ public class ThreadManager implements Loader.LoaderListener {
/**
* Open an url.
*
* @param linkable
* Linkable with an url.
*
* @param linkable Linkable with an url.
*/
private void openLink(PostLinkable linkable) {
Utils.openLink(activity, linkable.value);
@ -505,10 +501,10 @@ public class ThreadManager implements Loader.LoaderListener {
doDeletePost(post, view.isChecked());
}
}).setNegativeButton(R.string.cancel, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show();
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show();
}
private void doDeletePost(Post post, boolean onlyImageDelete) {

@ -17,12 +17,12 @@
*/
package org.floens.chan.core.model;
import org.floens.chan.ChanApplication;
import org.floens.chan.core.watch.PinWatcher;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import org.floens.chan.ChanApplication;
import org.floens.chan.core.watch.PinWatcher;
@DatabaseTable
public class Pin {
// Database stuff
@ -33,12 +33,16 @@ public class Pin {
public Loadable loadable = new Loadable("", -1);
// ListView Stuff
/** Header is used to display a static header in the drawer listview. */
/**
* Header is used to display a static header in the drawer listview.
*/
public Type type = Type.THREAD;
public static enum Type {
HEADER, THREAD
};
}
;
// PinnedService stuff
public PinWatcher pinWatcher;

@ -17,9 +17,12 @@
*/
package org.floens.chan.core.model;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import android.graphics.Color;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import org.floens.chan.chan.ChanUrls;
import org.floens.chan.core.model.PostLinkable.Type;
@ -31,12 +34,9 @@ import org.jsoup.nodes.Node;
import org.jsoup.nodes.TextNode;
import org.jsoup.parser.Parser;
import android.graphics.Color;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
* Contains all data needed to represent a single post.
@ -113,7 +113,7 @@ public class Post {
/**
* Finish up the data
*
*
* @return false if this data is invalid
*/
public boolean finish(Loadable loadable) {

@ -28,7 +28,9 @@ import android.view.View;
public class PostLinkable extends ClickableSpan {
public static enum Type {
QUOTE, LINK, SPOILER
};
}
;
public final Post post;
public final String key;

@ -17,17 +17,17 @@
*/
package org.floens.chan.core.net;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.floens.chan.core.model.Board;
import android.util.JsonReader;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import org.floens.chan.core.model.Board;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class BoardsRequest extends JsonReaderRequest<List<Board>> {
public BoardsRequest(String url, Listener<List<Board>> listener, ErrorListener errorListener) {
super(url, listener, errorListener);

@ -17,20 +17,20 @@
*/
package org.floens.chan.core.net;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import android.util.JsonReader;
import com.android.volley.ParseError;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
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;
import com.android.volley.ParseError;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ChanReaderRequest extends JsonReaderRequest<List<Post>> {
private Loadable loadable;
@ -42,19 +42,16 @@ public class ChanReaderRequest extends JsonReaderRequest<List<Post>> {
/**
* Creates a ChanReaderRequest with supplied params
*
* @param mode
* ThreadManager mode
* @param board
* board key
* @param no
* page for board, no for threads
*
* @param mode ThreadManager mode
* @param board board key
* @param no page for board, no for threads
* @param listener
* @param errorListener
* @return New instance of ChanReaderRequest
*/
public static ChanReaderRequest newInstance(Loadable loadable, List<Post> cached, Listener<List<Post>> listener,
ErrorListener errorListener) {
ErrorListener errorListener) {
String url;
if (loadable.isBoardMode()) {

@ -17,10 +17,6 @@
*/
package org.floens.chan.core.net;
import java.io.File;
import org.floens.chan.ChanApplication;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
@ -29,6 +25,10 @@ import com.android.volley.Response.Listener;
import com.android.volley.toolbox.DiskBasedCache;
import com.android.volley.toolbox.HttpHeaderParser;
import org.floens.chan.ChanApplication;
import java.io.File;
public class FileRequest extends Request<Void> {
protected final Listener<File> listener;

@ -17,8 +17,6 @@
*/
package org.floens.chan.core.net;
import org.floens.chan.ui.view.GIFView;
import android.content.Context;
import com.android.volley.NetworkResponse;
@ -29,6 +27,8 @@ import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
import org.floens.chan.ui.view.GIFView;
public class GIFRequest extends Request<GIFView> {
protected final Listener<GIFView> listener;
private final Context context;

@ -17,11 +17,6 @@
*/
package org.floens.chan.core.net;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import android.util.JsonReader;
import com.android.volley.NetworkResponse;
@ -33,6 +28,11 @@ import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.HttpHeaderParser;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
public abstract class JsonReaderRequest<T> extends Request<T> {
protected final Listener<T> listener;
private VolleyError error;

@ -17,8 +17,7 @@
*/
package org.floens.chan.core.watch;
import java.util.ArrayList;
import java.util.List;
import com.android.volley.VolleyError;
import org.floens.chan.core.loader.Loader;
import org.floens.chan.core.loader.LoaderPool;
@ -27,7 +26,8 @@ import org.floens.chan.core.model.Post;
import org.floens.chan.service.WatchService;
import org.floens.chan.utils.Logger;
import com.android.volley.VolleyError;
import java.util.ArrayList;
import java.util.List;
public class PinWatcher implements Loader.LoaderListener {
private static final String TAG = "PinWatcher";

@ -17,10 +17,12 @@
*/
package org.floens.chan.core.watch;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.support.v4.app.NotificationCompat;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
@ -30,12 +32,10 @@ import org.floens.chan.service.WatchService;
import org.floens.chan.ui.activity.BoardActivity;
import org.floens.chan.utils.Logger;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.support.v4.app.NotificationCompat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class WatchNotifier {
private static final String TAG = "WatchNotifier";
@ -165,7 +165,7 @@ public class WatchNotifier {
@SuppressWarnings("deprecation")
private void showNotification(String tickerText, String title, String content, String contentInfo,
List<CharSequence> lines, boolean makeSound) {
List<CharSequence> lines, boolean makeSound) {
Intent intent = new Intent(context, BoardActivity.class);
intent.addCategory("android.intent.category.LAUNCHER");

@ -77,7 +77,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
switch (oldVersion) {
// Change tables if we make adjustments
// Change tables if we make adjustments
}
// Drop the tables and recreate them for now

@ -17,7 +17,12 @@
*/
package org.floens.chan.service;
import java.util.List;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import org.floens.chan.ChanApplication;
import org.floens.chan.core.ChanPreferences;
@ -25,12 +30,7 @@ import org.floens.chan.core.model.Pin;
import org.floens.chan.core.watch.WatchNotifier;
import org.floens.chan.utils.Logger;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import java.util.List;
public class WatchService extends Service {
private static final String TAG = "WatchService";

@ -79,61 +79,61 @@ public class ScrollerRunnable implements Runnable {
final int firstPos = mList.getFirstVisiblePosition();
switch (mMode) {
case MOVE_DOWN_POS: {
final int lastViewIndex = mList.getChildCount() - 1;
final int lastPos = firstPos + lastViewIndex;
if (lastViewIndex < 0) {
return;
}
if (lastPos == mLastSeenPos) {
// No new views, let things keep going.
mList.post(this);
return;
case MOVE_DOWN_POS: {
final int lastViewIndex = mList.getChildCount() - 1;
final int lastPos = firstPos + lastViewIndex;
if (lastViewIndex < 0) {
return;
}
if (lastPos == mLastSeenPos) {
// No new views, let things keep going.
mList.post(this);
return;
}
final View lastView = mList.getChildAt(lastViewIndex);
final int lastViewHeight = lastView.getHeight();
final int lastViewTop = lastView.getTop();
final int lastViewPixelsShowing = listHeight - lastViewTop;
final int extraScroll = lastPos < mList.getCount() - 1 ? mExtraScroll : mList.getPaddingBottom();
mList.smoothScrollBy(lastViewHeight - lastViewPixelsShowing + extraScroll, mScrollDuration);
mLastSeenPos = lastPos;
if (lastPos < mTargetPos) {
mList.post(this);
}
break;
}
final View lastView = mList.getChildAt(lastViewIndex);
final int lastViewHeight = lastView.getHeight();
final int lastViewTop = lastView.getTop();
final int lastViewPixelsShowing = listHeight - lastViewTop;
final int extraScroll = lastPos < mList.getCount() - 1 ? mExtraScroll : mList.getPaddingBottom();
case MOVE_UP_POS: {
if (firstPos == mLastSeenPos) {
// No new views, let things keep going.
mList.post(this);
return;
}
mList.smoothScrollBy(lastViewHeight - lastViewPixelsShowing + extraScroll, mScrollDuration);
final View firstView = mList.getChildAt(0);
if (firstView == null) {
return;
}
final int firstViewTop = firstView.getTop();
final int extraScroll = firstPos > 0 ? mExtraScroll : mList.getPaddingTop();
mLastSeenPos = lastPos;
if (lastPos < mTargetPos) {
mList.post(this);
}
break;
}
mList.smoothScrollBy(firstViewTop - extraScroll, mScrollDuration);
case MOVE_UP_POS: {
if (firstPos == mLastSeenPos) {
// No new views, let things keep going.
mList.post(this);
return;
}
mLastSeenPos = firstPos;
final View firstView = mList.getChildAt(0);
if (firstView == null) {
return;
if (firstPos > mTargetPos) {
mList.post(this);
}
break;
}
final int firstViewTop = firstView.getTop();
final int extraScroll = firstPos > 0 ? mExtraScroll : mList.getPaddingTop();
mList.smoothScrollBy(firstViewTop - extraScroll, mScrollDuration);
mLastSeenPos = firstPos;
if (firstPos > mTargetPos) {
mList.post(this);
}
break;
}
default:
break;
default:
break;
}
}
}

@ -16,10 +16,6 @@
package org.floens.chan.ui;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
@ -32,13 +28,17 @@ import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* A {@link android.view.View.OnTouchListener} that makes the list items in a
* {@link ListView} dismissable. {@link ListView} is given special treatment
* because by default it handles touches for its list items... i.e. it's in
* charge of drawing the pressed state (the list selector), handling list item
* clicks, etc.
*
*
* <p>
* After creating the listener, the caller should also call
* {@link ListView#setOnScrollListener(android.widget.AbsListView.OnScrollListener)}
@ -48,11 +48,11 @@ import android.widget.ListView;
* {@link SwipeDismissListViewTouchListener} is paused during list view
* scrolling.
* </p>
*
*
* <p>
* Example usage:
* </p>
*
*
* <pre>
* SwipeDismissListViewTouchListener touchListener = new SwipeDismissListViewTouchListener(listView,
* new SwipeDismissListViewTouchListener.OnDismissCallback() {
@ -66,7 +66,7 @@ import android.widget.ListView;
* listView.setOnTouchListener(touchListener);
* listView.setOnScrollListener(touchListener.makeScrollListener());
* </pre>
*
*
* <p>
* This class Requires API level 12 or later due to use of
* {@link android.view.ViewPropertyAnimator}.
@ -108,24 +108,20 @@ public class SwipeDismissListViewTouchListener implements View.OnTouchListener {
/**
* Called when the user has indicated they she would like to dismiss one
* or more list item positions.
*
* @param listView
* The originating {@link ListView}.
* @param reverseSortedPositions
* An array of positions to dismiss, sorted in descending
* order for convenience.
*
* @param listView The originating {@link ListView}.
* @param reverseSortedPositions An array of positions to dismiss, sorted in descending
* order for convenience.
*/
void onDismiss(ListView listView, int[] reverseSortedPositions);
}
/**
* Constructs a new swipe-to-dismiss touch listener for the given list view.
*
* @param listView
* The list view whose items should be dismissable.
* @param callbacks
* The callback to trigger when the user has indicated that she
* would like to dismiss one or more list items.
*
* @param listView The list view whose items should be dismissable.
* @param callbacks The callback to trigger when the user has indicated that she
* would like to dismiss one or more list items.
*/
public SwipeDismissListViewTouchListener(ListView listView, DismissCallbacks callbacks) {
ViewConfiguration vc = ViewConfiguration.get(listView.getContext());
@ -136,11 +132,11 @@ public class SwipeDismissListViewTouchListener implements View.OnTouchListener {
mListView = listView;
mCallbacks = callbacks;
}
public int getSlop() {
return mSlop;
}
public void setSlop(int slop) {
mSlop = slop;
}
@ -148,9 +144,8 @@ public class SwipeDismissListViewTouchListener implements View.OnTouchListener {
/**
* Enables or disables (pauses or resumes) watching for swipe-to-dismiss
* gestures.
*
* @param enabled
* Whether or not to watch for gestures.
*
* @param enabled Whether or not to watch for gestures.
*/
public void setEnabled(boolean enabled) {
mPaused = !enabled;
@ -164,7 +159,7 @@ public class SwipeDismissListViewTouchListener implements View.OnTouchListener {
* scroll changes through to this listener. This will ensure that this
* {@link SwipeDismissListViewTouchListener} is paused during list view
* scrolling.</p>
*
*
* @see SwipeDismissListViewTouchListener
*/
public AbsListView.OnScrollListener makeScrollListener() {
@ -195,126 +190,126 @@ public class SwipeDismissListViewTouchListener implements View.OnTouchListener {
}
switch (motionEvent.getActionMasked()) {
case MotionEvent.ACTION_DOWN: {
if (mPaused) {
return false;
case MotionEvent.ACTION_DOWN: {
if (mPaused) {
return false;
}
// TODO: ensure this is a finger, and set a flag
// Find the child view that was touched (perform a hit test)
Rect rect = new Rect();
int childCount = mListView.getChildCount();
int[] listViewCoords = new int[2];
mListView.getLocationOnScreen(listViewCoords);
int x = (int) motionEvent.getRawX() - listViewCoords[0];
int y = (int) motionEvent.getRawY() - listViewCoords[1];
View child;
for (int i = 0; i < childCount; i++) {
child = mListView.getChildAt(i);
child.getHitRect(rect);
if (rect.contains(x, y)) {
mDownView = child;
break;
}
}
if (mDownView != null) {
mDownX = motionEvent.getRawX();
mDownPosition = mListView.getPositionForView(mDownView);
if (mCallbacks.canDismiss(mDownPosition)) {
mVelocityTracker = VelocityTracker.obtain();
mVelocityTracker.addMovement(motionEvent);
} else {
mDownView = null;
}
}
view.onTouchEvent(motionEvent);
return true;
}
// TODO: ensure this is a finger, and set a flag
// Find the child view that was touched (perform a hit test)
Rect rect = new Rect();
int childCount = mListView.getChildCount();
int[] listViewCoords = new int[2];
mListView.getLocationOnScreen(listViewCoords);
int x = (int) motionEvent.getRawX() - listViewCoords[0];
int y = (int) motionEvent.getRawY() - listViewCoords[1];
View child;
for (int i = 0; i < childCount; i++) {
child = mListView.getChildAt(i);
child.getHitRect(rect);
if (rect.contains(x, y)) {
mDownView = child;
case MotionEvent.ACTION_UP: {
if (mVelocityTracker == null) {
break;
}
}
if (mDownView != null) {
mDownX = motionEvent.getRawX();
mDownPosition = mListView.getPositionForView(mDownView);
if (mCallbacks.canDismiss(mDownPosition)) {
mVelocityTracker = VelocityTracker.obtain();
mVelocityTracker.addMovement(motionEvent);
float deltaX = motionEvent.getRawX() - mDownX;
mVelocityTracker.addMovement(motionEvent);
mVelocityTracker.computeCurrentVelocity(1000);
float velocityX = mVelocityTracker.getXVelocity();
float absVelocityX = Math.abs(velocityX);
float absVelocityY = Math.abs(mVelocityTracker.getYVelocity());
boolean dismiss = false;
boolean dismissRight = false;
if (Math.abs(deltaX) > mViewWidth / 2) {
dismiss = true;
dismissRight = deltaX > 0;
} else if (mMinFlingVelocity <= absVelocityX && absVelocityX <= mMaxFlingVelocity
&& absVelocityY < absVelocityX) {
// dismiss only if flinging in the same direction as dragging
dismiss = (velocityX < 0) == (deltaX < 0);
dismissRight = mVelocityTracker.getXVelocity() > 0;
}
if (dismiss) {
// dismiss
dismiss(mDownView, mDownPosition, dismissRight);
} else {
mDownView = null;
// cancel
mDownView.animate().translationX(0).alpha(1).setDuration(mAnimationTime).setListener(null);
}
}
view.onTouchEvent(motionEvent);
return true;
}
case MotionEvent.ACTION_UP: {
if (mVelocityTracker == null) {
mVelocityTracker.recycle();
mVelocityTracker = null;
mDownX = 0;
mDownView = null;
mDownPosition = ListView.INVALID_POSITION;
mSwiping = false;
break;
}
float deltaX = motionEvent.getRawX() - mDownX;
mVelocityTracker.addMovement(motionEvent);
mVelocityTracker.computeCurrentVelocity(1000);
float velocityX = mVelocityTracker.getXVelocity();
float absVelocityX = Math.abs(velocityX);
float absVelocityY = Math.abs(mVelocityTracker.getYVelocity());
boolean dismiss = false;
boolean dismissRight = false;
if (Math.abs(deltaX) > mViewWidth / 2) {
dismiss = true;
dismissRight = deltaX > 0;
} else if (mMinFlingVelocity <= absVelocityX && absVelocityX <= mMaxFlingVelocity
&& absVelocityY < absVelocityX) {
// dismiss only if flinging in the same direction as dragging
dismiss = (velocityX < 0) == (deltaX < 0);
dismissRight = mVelocityTracker.getXVelocity() > 0;
}
if (dismiss) {
// dismiss
dismiss(mDownView, mDownPosition, dismissRight);
} else {
// cancel
mDownView.animate().translationX(0).alpha(1).setDuration(mAnimationTime).setListener(null);
}
mVelocityTracker.recycle();
mVelocityTracker = null;
mDownX = 0;
mDownView = null;
mDownPosition = ListView.INVALID_POSITION;
mSwiping = false;
break;
}
case MotionEvent.ACTION_CANCEL: {
if (mVelocityTracker == null) {
break;
}
case MotionEvent.ACTION_CANCEL: {
if (mVelocityTracker == null) {
if (mDownView != null) {
// cancel
mDownView.animate().translationX(0).alpha(1).setDuration(mAnimationTime).setListener(null);
}
mVelocityTracker.recycle();
mVelocityTracker = null;
mDownX = 0;
mDownView = null;
mDownPosition = ListView.INVALID_POSITION;
mSwiping = false;
break;
}
if (mDownView != null) {
// cancel
mDownView.animate().translationX(0).alpha(1).setDuration(mAnimationTime).setListener(null);
}
mVelocityTracker.recycle();
mVelocityTracker = null;
mDownX = 0;
mDownView = null;
mDownPosition = ListView.INVALID_POSITION;
mSwiping = false;
break;
}
case MotionEvent.ACTION_MOVE: {
if (mVelocityTracker == null || mPaused) {
break;
}
case MotionEvent.ACTION_MOVE: {
if (mVelocityTracker == null || mPaused) {
break;
}
mVelocityTracker.addMovement(motionEvent);
float deltaX = motionEvent.getRawX() - mDownX;
if (Math.abs(deltaX) > mSlop) {
mSwiping = true;
mListView.requestDisallowInterceptTouchEvent(true);
// Cancel ListView's touch (un-highlighting the item)
MotionEvent cancelEvent = MotionEvent.obtain(motionEvent);
cancelEvent.setAction(MotionEvent.ACTION_CANCEL
| (motionEvent.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT));
mListView.onTouchEvent(cancelEvent);
cancelEvent.recycle();
}
mVelocityTracker.addMovement(motionEvent);
float deltaX = motionEvent.getRawX() - mDownX;
if (Math.abs(deltaX) > mSlop) {
mSwiping = true;
mListView.requestDisallowInterceptTouchEvent(true);
// Cancel ListView's touch (un-highlighting the item)
MotionEvent cancelEvent = MotionEvent.obtain(motionEvent);
cancelEvent.setAction(MotionEvent.ACTION_CANCEL
| (motionEvent.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT));
mListView.onTouchEvent(cancelEvent);
cancelEvent.recycle();
}
if (mSwiping) {
mDownView.setTranslationX(deltaX);
mDownView.setAlpha(Math.max(0.15f, Math.min(1f, 1f - 2f * Math.abs(deltaX) / mViewWidth)));
return true;
if (mSwiping) {
mDownView.setTranslationX(deltaX);
mDownView.setAlpha(Math.max(0.15f, Math.min(1f, 1f - 2f * Math.abs(deltaX) / mViewWidth)));
return true;
}
break;
}
break;
}
}
return false;
}
@ -324,7 +319,7 @@ public class SwipeDismissListViewTouchListener implements View.OnTouchListener {
if (view == null) {
// No view, shortcut to calling onDismiss to let it deal with adapter
// updates and all that.
mCallbacks.onDismiss(mListView, new int[] { position });
mCallbacks.onDismiss(mListView, new int[]{position});
return;
}

@ -17,19 +17,6 @@
*/
package org.floens.chan.ui.activity;
import java.util.List;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
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.BadgeDrawable;
import org.floens.chan.ui.SwipeDismissListViewTouchListener;
import org.floens.chan.ui.SwipeDismissListViewTouchListener.DismissCallbacks;
import org.floens.chan.ui.adapter.PinnedAdapter;
import org.floens.chan.utils.Utils;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
@ -56,6 +43,19 @@ import android.widget.EditText;
import android.widget.ListView;
import android.widget.ShareActionProvider;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
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.BadgeDrawable;
import org.floens.chan.ui.SwipeDismissListViewTouchListener;
import org.floens.chan.ui.SwipeDismissListViewTouchListener.DismissCallbacks;
import org.floens.chan.ui.adapter.PinnedAdapter;
import org.floens.chan.utils.Utils;
import java.util.List;
public abstract class BaseActivity extends Activity implements PanelSlideListener, PinnedManager.PinListener {
private final static int ACTION_OPEN_URL = 1;
@ -165,7 +165,8 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
public boolean canDismiss(int position) {
return pinnedAdapter.getItem(position).type != Pin.Type.HEADER;
}
});
}
);
touchListener.setSlop((int) (touchListener.getSlop() * 0.4f));
@ -246,9 +247,9 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
startActivity(new Intent(this, SettingsActivity.class));
return true;
case R.id.action_settings:
startActivity(new Intent(this, SettingsActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
@ -295,7 +296,7 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
return;
}
NdefMessage message = new NdefMessage(new NdefRecord[] { record });
NdefMessage message = new NdefMessage(new NdefRecord[]{record});
adapter.setNdefPushMessage(message, this);
}

@ -17,18 +17,6 @@
*/
package org.floens.chan.ui.activity;
import java.util.List;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
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.WatchService;
import org.floens.chan.ui.fragment.ThreadFragment;
import org.floens.chan.utils.Utils;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.FragmentTransaction;
@ -47,6 +35,18 @@ import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.FrameLayout;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
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.WatchService;
import org.floens.chan.ui.fragment.ThreadFragment;
import org.floens.chan.utils.Utils;
import java.util.List;
public class BoardActivity extends BaseActivity implements ActionBar.OnNavigationListener {
private Loadable boardLoadable = new Loadable();
private Loadable threadLoadable = new Loadable();
@ -70,7 +70,8 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
final ActionBar actionBar = getActionBar();
actionBar.setListNavigationCallbacks(
new ArrayAdapter<String>(actionBar.getThemedContext(), R.layout.board_select_spinner,
android.R.id.text1, ChanApplication.getBoardManager().getSavedKeys()), this);
android.R.id.text1, ChanApplication.getBoardManager().getSavedKeys()), this
);
updatePaneState();
updateActionBarState();
@ -324,54 +325,54 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
}
switch (item.getItemId()) {
case R.id.action_reload_board:
case R.id.action_reload_tablet_board:
boardFragment.reload();
return true;
case R.id.action_reload_thread:
case R.id.action_reload_tablet_thread:
threadFragment.reload();
return true;
case R.id.action_reply:
if (threadPane.isOpen()) {
case R.id.action_reload_board:
case R.id.action_reload_tablet_board:
boardFragment.reload();
return true;
case R.id.action_reload_thread:
case R.id.action_reload_tablet_thread:
threadFragment.reload();
return true;
case R.id.action_reply:
if (threadPane.isOpen()) {
boardFragment.openReply();
} else {
threadFragment.openReply();
}
return true;
case R.id.action_reply_board:
boardFragment.openReply();
} else {
threadFragment.openReply();
}
return true;
case R.id.action_reply_board:
boardFragment.openReply();
return true;
case R.id.action_reply_thread:
threadFragment.openReply();
return true;
case R.id.action_reply_thread:
threadFragment.openReply();
return true;
case R.id.action_pin:
if (threadFragment.hasLoader()) {
Pin pin = new Pin();
pin.loadable = threadLoadable;
return true;
case R.id.action_pin:
if (threadFragment.hasLoader()) {
Pin pin = new Pin();
pin.loadable = threadLoadable;
addPin(pin);
addPin(pin);
pinDrawer.openDrawer(pinDrawerView);
}
pinDrawer.openDrawer(pinDrawerView);
}
return true;
case R.id.action_open_browser:
if (threadPane.isOpen()) {
showUrlOpenPicker(ChanUrls.getBoardUrlDesktop(boardLoadable.board));
} else {
if (threadFragment.hasLoader()) {
showUrlOpenPicker(ChanUrls.getThreadUrlDesktop(threadLoadable.board, threadLoadable.no));
return true;
case R.id.action_open_browser:
if (threadPane.isOpen()) {
showUrlOpenPicker(ChanUrls.getBoardUrlDesktop(boardLoadable.board));
} else {
if (threadFragment.hasLoader()) {
showUrlOpenPicker(ChanUrls.getThreadUrlDesktop(threadLoadable.board, threadLoadable.no));
}
}
}
return true;
case android.R.id.home:
threadPane.openPane();
return true;
case android.R.id.home:
threadPane.openPane();
return true;
return true;
}
return super.onOptionsItemSelected(item);
@ -510,11 +511,11 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
finish();
}
}).setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showUrlOpenPicker(url);
}
}).setCancelable(false).create().show();
@Override
public void onClick(DialogInterface dialog, int which) {
showUrlOpenPicker(url);
}
}).setCancelable(false).create().show();
}
private int getBoardIndexNavigator(String boardValue) {

@ -17,17 +17,6 @@
*/
package org.floens.chan.ui.activity;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import org.floens.chan.core.manager.BoardManager;
import org.floens.chan.core.model.Board;
import org.floens.chan.ui.SwipeDismissListViewTouchListener;
import org.floens.chan.utils.Utils;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
@ -55,6 +44,17 @@ import android.widget.Toast;
import com.mobeta.android.dslv.DragSortController;
import com.mobeta.android.dslv.DragSortListView;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import org.floens.chan.core.manager.BoardManager;
import org.floens.chan.core.model.Board;
import org.floens.chan.ui.SwipeDismissListViewTouchListener;
import org.floens.chan.utils.Utils;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class BoardEditor extends Activity {
private final BoardManager boardManager = ChanApplication.getBoardManager();
@ -109,7 +109,8 @@ public class BoardEditor extends Activity {
public boolean canDismiss(int position) {
return list.size() > 1;
}
});
}
);
listView.setOnTouchListener(new View.OnTouchListener() {
@Override
@ -147,9 +148,9 @@ public class BoardEditor extends Activity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add_board:
showAddBoardDialog();
return true;
case R.id.action_add_board:
showAddBoardDialog();
return true;
}
return super.onOptionsItemSelected(item);
@ -193,10 +194,10 @@ public class BoardEditor extends Activity {
}
}
}).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).create().show();
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).create().show();
}
private void showAddBoardDialog() {

@ -17,8 +17,6 @@
*/
package org.floens.chan.ui.activity;
import org.floens.chan.ChanApplication;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
@ -26,6 +24,8 @@ import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import org.floens.chan.ChanApplication;
public class DeveloperActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {

@ -17,15 +17,6 @@
*/
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.utils.IOUtils;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
@ -35,6 +26,15 @@ import android.os.Bundle;
import android.provider.OpenableColumns;
import android.widget.Toast;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import org.floens.chan.utils.IOUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class ImagePickActivity extends Activity {
private static final int IMAGE_RESULT = 1;

@ -17,8 +17,14 @@
*/
package org.floens.chan.ui.activity;
import java.util.ArrayList;
import java.util.List;
import android.app.ActionBar;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import org.floens.chan.R;
import org.floens.chan.core.model.Post;
@ -28,14 +34,8 @@ import org.floens.chan.ui.fragment.ImageViewFragment;
import org.floens.chan.utils.ImageSaver;
import org.floens.chan.utils.Logger;
import android.app.ActionBar;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import java.util.ArrayList;
import java.util.List;
/**
* An fragment pager that contains images. Call setPosts first, and then start
@ -54,10 +54,8 @@ public class ImageViewActivity extends Activity implements ViewPager.OnPageChang
/**
* Set the posts to show
*
* @param other
* the posts to get image data from
* @param selected
* the no that the user clicked on
* @param other the posts to get image data from
* @param selected the no that the user clicked on
*/
public static void setAdapter(PostAdapter adapter, int selected) {
postAdapter = adapter;

@ -17,14 +17,6 @@
*/
package org.floens.chan.ui.activity;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.core.manager.ReplyManager;
import org.floens.chan.core.manager.ReplyManager.PassResponse;
import org.floens.chan.core.model.Pass;
import org.floens.chan.utils.Utils;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
@ -43,6 +35,14 @@ import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Switch;
import android.widget.TextView;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.core.manager.ReplyManager;
import org.floens.chan.core.manager.ReplyManager.PassResponse;
import org.floens.chan.core.model.Pass;
import org.floens.chan.utils.Utils;
public class PassSettingsActivity extends Activity implements OnCheckedChangeListener {
private static PassSettingsActivity instance;

@ -17,15 +17,15 @@
*/
package org.floens.chan.ui.activity;
import org.floens.chan.core.model.Loadable;
import org.floens.chan.ui.fragment.ReplyFragment;
import org.floens.chan.utils.Logger;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.MenuItem;
import org.floens.chan.core.model.Loadable;
import org.floens.chan.ui.fragment.ReplyFragment;
import org.floens.chan.utils.Logger;
public class ReplyActivity extends Activity {
private static final String TAG = "ReplyActivity";
@ -56,10 +56,10 @@ public class ReplyActivity extends Activity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
case android.R.id.home:
finish();
return true;
return true;
}
return super.onOptionsItemSelected(item);

@ -17,11 +17,11 @@
*/
package org.floens.chan.ui.activity;
import org.floens.chan.ui.fragment.SettingsFragment;
import android.app.Activity;
import android.os.Bundle;
import org.floens.chan.ui.fragment.SettingsFragment;
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {

@ -17,10 +17,6 @@
*/
package org.floens.chan.ui.activity;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.utils.Utils;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
@ -42,6 +38,10 @@ import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.TextView;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.utils.Utils;
public class WatchSettingsActivity extends Activity implements OnCheckedChangeListener {
private Switch watchSwitch;

@ -17,19 +17,19 @@
*/
package org.floens.chan.ui.adapter;
import java.util.ArrayList;
import java.util.List;
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;
import android.support.v13.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import org.floens.chan.core.model.Post;
import org.floens.chan.ui.activity.ImageViewActivity;
import org.floens.chan.ui.fragment.ImageViewFragment;
import java.util.ArrayList;
import java.util.List;
public class ImageViewAdapter extends FragmentStatePagerAdapter {
private final ImageViewActivity activity;
private final ArrayList<Post> postList = new ArrayList<Post>();

@ -17,14 +17,6 @@
*/
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.core.ChanPreferences;
import org.floens.chan.core.model.Pin;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
@ -34,6 +26,14 @@ import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.core.model.Pin;
import java.util.ArrayList;
import java.util.HashMap;
public class PinnedAdapter extends ArrayAdapter<Pin> {
private final HashMap<Pin, Integer> idMap;
private int idCounter;

@ -17,8 +17,14 @@
*/
package org.floens.chan.ui.adapter;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import org.floens.chan.R;
import org.floens.chan.core.manager.ThreadManager;
@ -29,14 +35,8 @@ import org.floens.chan.ui.view.ThreadWatchCounterView;
import org.floens.chan.utils.Time;
import org.floens.chan.utils.Utils;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class PostAdapter extends BaseAdapter {
private final Context context;

@ -17,16 +17,6 @@
*/
package org.floens.chan.ui.fragment;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.core.model.Post;
import org.floens.chan.ui.activity.ImageViewActivity;
import org.floens.chan.ui.adapter.ImageViewAdapter;
import org.floens.chan.ui.view.ThumbnailImageView;
import org.floens.chan.ui.view.ThumbnailImageView.ThumbnailImageViewCallback;
import org.floens.chan.utils.ImageSaver;
import org.floens.chan.utils.Utils;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
@ -37,6 +27,16 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.VideoView;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.core.model.Post;
import org.floens.chan.ui.activity.ImageViewActivity;
import org.floens.chan.ui.adapter.ImageViewAdapter;
import org.floens.chan.ui.view.ThumbnailImageView;
import org.floens.chan.ui.view.ThumbnailImageView.ThumbnailImageViewCallback;
import org.floens.chan.utils.ImageSaver;
import org.floens.chan.utils.Utils;
public class ImageViewFragment extends Fragment implements ThumbnailImageViewCallback {
private Context context;
private ImageViewActivity activity;

@ -17,13 +17,6 @@
*/
package org.floens.chan.ui.fragment;
import java.util.List;
import org.floens.chan.R;
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;
import android.os.Bundle;
@ -33,6 +26,13 @@ import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import org.floens.chan.R;
import org.floens.chan.core.manager.ThreadManager;
import org.floens.chan.core.model.Post;
import org.floens.chan.ui.view.PostView;
import java.util.List;
/**
* A DialogFragment that shows a list of posts. Use the newInstance method for
* instantiating.

@ -17,22 +17,6 @@
*/
package org.floens.chan.ui.fragment;
import java.io.File;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
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.Logger;
import org.floens.chan.utils.Utils;
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
@ -65,6 +49,22 @@ import com.android.volley.toolbox.NetworkImageView;
import com.android.volley.toolbox.StringRequest;
import com.micromobs.android.floatlabel.FloatLabelEditText;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
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.Logger;
import org.floens.chan.utils.Utils;
import java.io.File;
public class ReplyFragment extends DialogFragment {
private static final String TAG = "ReplyFragment";
@ -314,9 +314,8 @@ public class ReplyFragment extends DialogFragment {
/**
* Flip to an page with an animation. Sets the correct text on the
* cancelButton:
*
* @param position
* 0-2
*
* @param position 0-2
*/
private void flipPage(int position) {
boolean flipBack = position < page;
@ -345,9 +344,8 @@ public class ReplyFragment extends DialogFragment {
/**
* Set the picked image in the imageView. Sets the file in the draft. Call
* null on the file to empty the imageView.
*
* @param imagePath
* file to image to send or null to clear
*
* @param imagePath file to image to send or null to clear
*/
private void setFile(final String name, final File file) {
draft.file = file;
@ -487,7 +485,7 @@ public class ReplyFragment extends DialogFragment {
/**
* Got response about or reply from ReplyManager
*
*
* @param response
*/
private void handleSubmitResponse(ReplyResponse response) {

@ -17,10 +17,6 @@
*/
package org.floens.chan.ui.fragment;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.ui.activity.AboutActivity;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
@ -30,6 +26,10 @@ import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup;
import android.widget.Toast;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.ui.activity.AboutActivity;
public class SettingsFragment extends PreferenceFragment {
private int clickCount = 0;

@ -17,19 +17,6 @@
*/
package org.floens.chan.ui.fragment;
import java.util.List;
import org.floens.chan.R;
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 org.floens.chan.utils.Utils;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
@ -49,6 +36,19 @@ import com.android.volley.NoConnectionError;
import com.android.volley.ServerError;
import com.android.volley.VolleyError;
import org.floens.chan.R;
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 org.floens.chan.utils.Utils;
import java.util.List;
public class ThreadFragment extends Fragment implements ThreadManager.ThreadManagerListener {
private BaseActivity baseActivity;
private ThreadManager threadManager;
@ -229,7 +229,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana
/**
* Returns an TextView containing the appropriate error message
*
*
* @param error
* @return
*/

@ -28,12 +28,14 @@ import com.android.volley.toolbox.ImageLoader.ImageListener;
/**
* Custom version of NetworkImageView
*
*
* Handles fetching an image from a URL as well as the life-cycle of the
* associated request.
*/
public class CustomNetworkImageView extends ImageView {
/** The URL of the network image to load */
/**
* The URL of the network image to load
*/
private String mUrl;
/**
@ -47,10 +49,14 @@ public class CustomNetworkImageView extends ImageView {
*/
private int mErrorImageId;
/** Local copy of the ImageLoader. */
/**
* Local copy of the ImageLoader.
*/
private ImageLoader mImageLoader;
/** Current ImageContainer. (either in-flight or finished) */
/**
* Current ImageContainer. (either in-flight or finished)
*/
private ImageContainer mImageContainer;
/**
@ -74,7 +80,7 @@ public class CustomNetworkImageView extends ImageView {
/**
* How larger the inner bitmap is to the defined view size.
*
*
* @param amount
*/
public void setMaxScale(float amount) {
@ -87,9 +93,8 @@ public class CustomNetworkImageView extends ImageView {
/**
* Animate the image fading in.
*
* @param duration
* duration of the fade animation in milliseconds
*
* @param duration duration of the fade animation in milliseconds
*/
public void setFadeIn(int time) {
mFadeTime = time;
@ -100,16 +105,14 @@ public class CustomNetworkImageView extends ImageView {
* calling this will immediately either set the cached image (if available)
* or the default image specified by
* {@link CustomNetworkImageView#setDefaultImageResId(int)} on the view.
*
*
* NOTE: If applicable,
* {@link CustomNetworkImageView#setDefaultImageResId(int)} and
* {@link CustomNetworkImageView#setErrorImageResId(int)} should be called
* prior to calling this function.
*
* @param url
* The URL that should be loaded into this ImageView.
* @param imageLoader
* ImageLoader that will be used to make the request.
*
* @param url The URL that should be loaded into this ImageView.
* @param imageLoader ImageLoader that will be used to make the request.
*/
public void setImageUrl(String url, ImageLoader imageLoader) {
mUrl = url;
@ -139,9 +142,8 @@ public class CustomNetworkImageView extends ImageView {
/**
* Loads the image for the view if it isn't already loaded.
*
* @param isInLayoutPass
* True if this was invoked from a layout pass, false otherwise.
*
* @param isInLayoutPass True if this was invoked from a layout pass, false otherwise.
*/
void loadImageIfNecessary(final boolean isInLayoutPass) {
int width = getWidth();

@ -44,7 +44,7 @@ public class DragGripView extends View {
private final float mRidgeSize;
private final float mRidgeGap;
// private int mWidth;
// private int mWidth;
private int mHeight;
public DragGripView(Context context) {
@ -77,10 +77,12 @@ public class DragGripView extends View {
View.resolveSize(
(int) (HORIZ_RIDGES * (mRidgeSize + mRidgeGap) - mRidgeGap)
+ getPaddingLeft() + getPaddingRight(),
widthMeasureSpec),
widthMeasureSpec
),
View.resolveSize(
(int) mRidgeSize,
heightMeasureSpec));
heightMeasureSpec)
);
}
@Override

@ -17,8 +17,6 @@
*/
package org.floens.chan.ui.view;
import org.floens.chan.utils.SimpleAnimatorListener;
import android.animation.Animator;
import android.content.Context;
import android.util.AttributeSet;
@ -28,6 +26,8 @@ import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import org.floens.chan.utils.SimpleAnimatorListener;
/**
* Container for a view with an ProgressBar. Toggles between the view and a
* ProgressBar.
@ -58,8 +58,7 @@ public class LoadView extends FrameLayout {
* Set the content of this container. It will fade the old one out with the
* new one. Set view to null to show the progressbar.
*
* @param view
* the view or null for a progressbar.
* @param view the view or null for a progressbar.
*/
public void setView(View view) {
setView(view, true);

@ -17,17 +17,18 @@
*/
package org.floens.chan.ui.view;
import org.floens.chan.R;
import org.floens.chan.ui.fragment.ImageViewFragment;
import uk.co.senab.photoview.PhotoViewAttacher;
import uk.co.senab.photoview.PhotoViewAttacher.OnViewTapListener;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.widget.Toast;
import com.android.volley.VolleyError;
import org.floens.chan.R;
import org.floens.chan.ui.fragment.ImageViewFragment;
import uk.co.senab.photoview.PhotoViewAttacher;
import uk.co.senab.photoview.PhotoViewAttacher.OnViewTapListener;
/**
* Extends NetworkImageView. Attaches a PhotoViewAttacher when setBitmap is
* called. Sets the progressBar to false when a bitmap gets set.

@ -17,16 +17,6 @@
*/
package org.floens.chan.ui.view;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
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.Time;
import org.floens.chan.utils.Utils;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
@ -50,6 +40,16 @@ import android.widget.TextView;
import com.android.volley.toolbox.NetworkImageView;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
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.Time;
import org.floens.chan.utils.Utils;
public class PostView extends LinearLayout implements View.OnClickListener, View.OnLongClickListener {
private final static LinearLayout.LayoutParams matchParams = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

@ -17,10 +17,6 @@
*/
package org.floens.chan.ui.view;
import org.floens.chan.core.loader.Loader;
import org.floens.chan.core.manager.ThreadManager;
import org.floens.chan.ui.adapter.PostAdapter;
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
@ -28,6 +24,10 @@ import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import org.floens.chan.core.loader.Loader;
import org.floens.chan.core.manager.ThreadManager;
import org.floens.chan.ui.adapter.PostAdapter;
public class ThreadWatchCounterView extends TextView implements View.OnClickListener {
private boolean detached = false;
private ThreadManager tm;

@ -17,17 +17,6 @@
*/
package org.floens.chan.ui.view;
import java.io.File;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import org.floens.chan.core.net.FileRequest;
import org.floens.chan.core.net.GIFRequest;
import org.floens.chan.utils.Logger;
import org.floens.chan.utils.Utils;
import uk.co.senab.photoview.PhotoViewAttacher;
import uk.co.senab.photoview.PhotoViewAttacher.OnViewTapListener;
import android.content.Context;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
@ -44,6 +33,18 @@ import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader.ImageContainer;
import com.android.volley.toolbox.ImageLoader.ImageListener;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import org.floens.chan.core.net.FileRequest;
import org.floens.chan.core.net.GIFRequest;
import org.floens.chan.utils.Logger;
import org.floens.chan.utils.Utils;
import java.io.File;
import uk.co.senab.photoview.PhotoViewAttacher;
import uk.co.senab.photoview.PhotoViewAttacher.OnViewTapListener;
public class ThumbnailImageView extends LoadView implements OnViewTapListener, View.OnClickListener {
private static final String TAG = "ThumbnailImageView";
@ -171,7 +172,8 @@ public class ThumbnailImageView extends LoadView implements OnViewTapListener, V
public void onErrorResponse(VolleyError error) {
onError();
}
}, getContext()));
}, getContext())
);
}
public void setVideo(String videoUrl) {
@ -228,7 +230,8 @@ public class ThumbnailImageView extends LoadView implements OnViewTapListener, V
public void onErrorResponse(VolleyError error) {
onError();
}
}));
})
);
}
@Override

@ -17,12 +17,12 @@
*/
package org.floens.chan.utils;
import org.floens.chan.R;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import org.floens.chan.R;
public class IconCache {
public static Bitmap stickyIcon;
public static Bitmap closedIcon;

@ -17,15 +17,15 @@
*/
package org.floens.chan.utils;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
/**
* Simple ImageDecoder with no threads. Taken from Volley ImageRequest.
*/

@ -17,16 +17,6 @@
*/
package org.floens.chan.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.core.net.ByteArrayRequest;
import android.app.AlertDialog;
import android.app.DownloadManager;
import android.content.Context;
@ -40,6 +30,16 @@ import android.widget.Toast;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import org.floens.chan.core.ChanPreferences;
import org.floens.chan.core.net.ByteArrayRequest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
public class ImageSaver {
private static final String TAG = "ImageSaver";
@ -88,7 +88,7 @@ public class ImageSaver {
}
public static void save(final Context context, String imageUrl, final String name, final String extension,
final boolean share) {
final boolean share) {
ChanApplication.getVolleyRequestQueue().add(new ByteArrayRequest(imageUrl, new Response.Listener<byte[]>() {
@Override
public void onResponse(byte[] data) {
@ -117,7 +117,7 @@ public class ImageSaver {
}
private static void storeImage(final Context context, byte[] data, String name, String extension,
final SaveCallback callback) {
final SaveCallback callback) {
String errorReason = null;
try {
@ -142,7 +142,7 @@ public class ImageSaver {
throw new IOException(errorReason);
}
MediaScannerConnection.scanFile(context, new String[] { savedFile.toString() }, null,
MediaScannerConnection.scanFile(context, new String[]{savedFile.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, final Uri uri) {
@ -154,7 +154,8 @@ public class ImageSaver {
}
});
}
});
}
);
} catch (IOException e) {
e.printStackTrace();

@ -17,10 +17,10 @@
*/
package org.floens.chan.utils;
import org.floens.chan.ChanApplication;
import android.util.Log;
import org.floens.chan.ChanApplication;
public class Logger {
private static final String TAG = "Clover";
private static final String TAG_SPACER = " | ";

@ -17,9 +17,6 @@
*/
package org.floens.chan.utils;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
@ -37,6 +34,9 @@ import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
import org.floens.chan.ChanApplication;
import org.floens.chan.R;
public class Utils {
private static DisplayMetrics displayMetrics;
@ -61,7 +61,7 @@ public class Utils {
/**
* Sets the android.R.attr.selectableItemBackground as background drawable
* on the view.
*
*
* @param view
*/
@SuppressWarnings("deprecation")
@ -71,7 +71,7 @@ public class Utils {
}
public static Drawable getSelectableBackgroundDrawable(Context context) {
TypedArray arr = context.obtainStyledAttributes(new int[] { android.R.attr.selectableItemBackground });
TypedArray arr = context.obtainStyledAttributes(new int[]{android.R.attr.selectableItemBackground});
Drawable drawable = arr.getDrawable(0);
@ -83,7 +83,7 @@ public class Utils {
/**
* Causes the runnable to be added to the message queue. The runnable will
* be run on the ui thread.
*
*
* @param runnable
*/
public static void runOnUiThread(Runnable runnable) {

Loading…
Cancel
Save