From 3527fe46abb26e4f1b033a644355ffc4461efd6a Mon Sep 17 00:00:00 2001 From: Floens Date: Sun, 26 Oct 2014 15:16:56 +0100 Subject: [PATCH 01/12] Make gradle dependencies fixed --- Clover/app/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Clover/app/build.gradle b/Clover/app/build.gradle index cab76148..4b3dcd45 100644 --- a/Clover/app/build.gradle +++ b/Clover/app/build.gradle @@ -70,9 +70,9 @@ dependencies { compile 'org.jsoup:jsoup:1.7.3' compile 'com.j256.ormlite:ormlite-core:4.48' compile 'com.j256.ormlite:ormlite-android:4.48' - compile 'com.android.support:support-v13:18.0.+' - compile 'com.koushikdutta.ion:ion:1.+' - compile 'pl.droidsonroids.gif:android-gif-drawable:1.0.+' + compile 'com.android.support:support-v13:18.0.0' + compile 'com.koushikdutta.ion:ion:1.3.8' + compile 'pl.droidsonroids.gif:android-gif-drawable:1.0.12' compile files('libs/httpclientandroidlib-1.2.1.jar') } From 67bb65769c62e1042ace639fd1068e5668a4b7e2 Mon Sep 17 00:00:00 2001 From: Floens Date: Sun, 26 Oct 2014 15:26:37 +0100 Subject: [PATCH 02/12] Update gradle --- Clover/build.gradle | 2 +- Clover/gradle/wrapper/gradle-wrapper.properties | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Clover/build.gradle b/Clover/build.gradle index d280c11e..5cb493a0 100644 --- a/Clover/build.gradle +++ b/Clover/build.gradle @@ -4,7 +4,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:0.12.+' + classpath 'com.android.tools.build:gradle:0.13.3' } } diff --git a/Clover/gradle/wrapper/gradle-wrapper.properties b/Clover/gradle/wrapper/gradle-wrapper.properties index fc4f23cc..8f993e40 100644 --- a/Clover/gradle/wrapper/gradle-wrapper.properties +++ b/Clover/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Jun 08 15:13:11 CEST 2014 +#Sun Oct 26 15:17:32 CET 2014 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.1-all.zip From cb0417df9bbb7d22d952a502311b4b5d5ba82e9f Mon Sep 17 00:00:00 2001 From: Floens Date: Sat, 1 Nov 2014 19:33:36 +0100 Subject: [PATCH 03/12] Disable pausing music when playing a video. --- .../chan/ui/view/ThumbnailImageView.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java index a2864ff3..d2498d3a 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java @@ -19,6 +19,7 @@ package org.floens.chan.ui.view; import android.content.ActivityNotFoundException; import android.content.Context; +import android.content.ContextWrapper; import android.content.Intent; import android.media.MediaPlayer; import android.net.Uri; @@ -261,7 +262,9 @@ public class ThumbnailImageView extends LoadView implements View.OnClickListener Toast.makeText(getContext(), R.string.open_link_failed, Toast.LENGTH_SHORT).show(); } } else { - videoView = new VideoView(getContext()); + Context proxyContext = new NoMusicServiceCommandContext(getContext()); + + videoView = new VideoView(proxyContext); videoView.setZOrderOnTop(true); videoView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); @@ -335,4 +338,19 @@ public class ThumbnailImageView extends LoadView implements View.OnClickListener public void onVideoError(File video); } + + public static class NoMusicServiceCommandContext extends ContextWrapper { + public NoMusicServiceCommandContext(Context base) { + super(base); + } + + @Override + public void sendBroadcast(Intent intent) { + // Only allow broadcasts when it's not a music service command + // Prevents pause intents from broadcasting + if (!"com.android.music.musicservicecommand".equals(intent.getAction())) { + super.sendBroadcast(intent); + } + } + } } From 7fbc6273b17a80bd8144550ca63901d43cfa12a0 Mon Sep 17 00:00:00 2001 From: Floens Date: Tue, 11 Nov 2014 11:04:08 +0100 Subject: [PATCH 04/12] Update build tools. --- Clover/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Clover/app/build.gradle b/Clover/app/build.gradle index 4b3dcd45..84236b33 100644 --- a/Clover/app/build.gradle +++ b/Clover/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 19 - buildToolsVersion "21.0.2" + buildToolsVersion "21.1.1" defaultConfig { minSdkVersion 14 From ae597ebf83a151d52ca7fa75aa781cc54bf4003c Mon Sep 17 00:00:00 2001 From: Floens Date: Wed, 19 Nov 2014 22:11:10 +0100 Subject: [PATCH 05/12] Removed default email --- .../src/main/java/org/floens/chan/core/ChanPreferences.java | 4 ---- .../main/java/org/floens/chan/ui/fragment/ReplyFragment.java | 4 ---- Clover/app/src/main/res/xml/preference.xml | 3 --- 3 files changed, 11 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/core/ChanPreferences.java b/Clover/app/src/main/java/org/floens/chan/core/ChanPreferences.java index 69790391..4de9c150 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/ChanPreferences.java +++ b/Clover/app/src/main/java/org/floens/chan/core/ChanPreferences.java @@ -37,10 +37,6 @@ public class ChanPreferences { return p().getString("preference_default_name", ""); } - public static String getDefaultEmail() { - return p().getString("preference_default_email", ""); - } - public static boolean getPinOnPost() { return p().getBoolean("preference_pin_on_post", false); } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java index 61b0a052..6f17f177 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java @@ -165,10 +165,6 @@ public class ReplyFragment extends DialogFragment { draft.name = ChanPreferences.getDefaultName(); } - if (TextUtils.isEmpty(draft.email)) { - draft.email = ChanPreferences.getDefaultEmail(); - } - nameView.setText(draft.name); emailView.setText(draft.email); subjectView.setText(draft.subject); diff --git a/Clover/app/src/main/res/xml/preference.xml b/Clover/app/src/main/res/xml/preference.xml index 27532113..44599fd5 100644 --- a/Clover/app/src/main/res/xml/preference.xml +++ b/Clover/app/src/main/res/xml/preference.xml @@ -91,9 +91,6 @@ along with this program. If not, see . - Date: Wed, 19 Nov 2014 22:57:00 +0100 Subject: [PATCH 06/12] Set target sdk version to 21 Fix spinner problems --- Clover/app/build.gradle | 4 +- Clover/app/proguard.cfg | 5 -- .../floens/chan/ui/activity/ChanActivity.java | 55 ++++--------------- 3 files changed, 14 insertions(+), 50 deletions(-) diff --git a/Clover/app/build.gradle b/Clover/app/build.gradle index 84236b33..9a4b0da6 100644 --- a/Clover/app/build.gradle +++ b/Clover/app/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 19 + compileSdkVersion 21 buildToolsVersion "21.1.1" defaultConfig { minSdkVersion 14 - targetSdkVersion 19 + targetSdkVersion 21 versionName "v1.2.2" versionCode 40 diff --git a/Clover/app/proguard.cfg b/Clover/app/proguard.cfg index 4faf19ff..7f3763cc 100644 --- a/Clover/app/proguard.cfg +++ b/Clover/app/proguard.cfg @@ -132,8 +132,3 @@ } -keep public class pl.droidsonroids.gif.GifIOException{*;} - -# Remove these when targetSdkVersion >= 21 --dontwarn pl.droidsonroids.gif.GifImageButton --dontwarn pl.droidsonroids.gif.GifImageView --dontwarn pl.droidsonroids.gif.GifTextView diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java index 695ed96a..1ea61488 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java @@ -649,9 +649,6 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele } private class BoardSpinnerAdapter extends BaseAdapter { - private static final int VIEW_TYPE_ITEM = 0; - private static final int VIEW_TYPE_ADD = 1; - private Context context; private Spinner spinner; private List boards; @@ -699,16 +696,6 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele return boards.size() + 1; } - @Override - public int getViewTypeCount() { - return 2; - } - - @Override - public int getItemViewType(int position) { - return position == getCount() - 1 ? VIEW_TYPE_ADD : VIEW_TYPE_ITEM; - } - @Override public long getItemId(final int position) { return position; @@ -716,42 +703,24 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele @Override public String getItem(final int position) { - switch (getItemViewType(position)) { - case VIEW_TYPE_ITEM: - return boards.get(position).key; - case VIEW_TYPE_ADD: - return context.getString(R.string.board_select_add); - default: - return ""; + if (position == getCount() - 1) { + return context.getString(R.string.board_select_add); + } else { + return boards.get(position).key; } } @Override public View getView(final int position, View convertView, final ViewGroup parent) { - switch (getItemViewType(position)) { - case VIEW_TYPE_ITEM: { - if (convertView == null || (Integer) convertView.getTag() != VIEW_TYPE_ITEM) { - convertView = LayoutInflater.from(context).inflate(R.layout.board_select_spinner, null); - convertView.setTag(VIEW_TYPE_ITEM); - } - - TextView textView = (TextView) convertView; - textView.setText(getItem(position)); - return textView; - } - case VIEW_TYPE_ADD: { - if (convertView == null || (Integer) convertView.getTag() != VIEW_TYPE_ADD) { - convertView = LayoutInflater.from(context).inflate(R.layout.board_select_add, null); - convertView.setTag(VIEW_TYPE_ADD); - } - - TextView textView = (TextView) convertView; - textView.setText(getItem(position)); - return textView; - } + if (position == getCount() - 1) { + TextView textView = (TextView) LayoutInflater.from(context).inflate(R.layout.board_select_add, null); + textView.setText(getItem(position)); + return textView; + } else { + TextView textView = (TextView) LayoutInflater.from(context).inflate(R.layout.board_select_spinner, null); + textView.setText(getItem(position)); + return textView; } - - return null; } } } From 549cbd3ae3590971283fee8285fa13f92653f104 Mon Sep 17 00:00:00 2001 From: Floens Date: Wed, 19 Nov 2014 23:20:07 +0100 Subject: [PATCH 07/12] Fix thread not loading when activity is restored. --- .../main/java/org/floens/chan/ui/activity/ChanActivity.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java index 1ea61488..b74360ba 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java @@ -105,8 +105,9 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele Uri startUri = startIntent.getData(); if (savedInstanceState != null) { - threadLoadable.readFromBundle(this, "thread", savedInstanceState); - startLoadingThread(threadLoadable); + Loadable threadTmp = new Loadable(); + threadTmp.readFromBundle(this, "thread", savedInstanceState); + startLoadingThread(threadTmp); // Reset page etc. Loadable tmp = new Loadable(); From 53c4d66d927bf4a404ebfe66c70ab05256c8366c Mon Sep 17 00:00:00 2001 From: Floens Date: Wed, 19 Nov 2014 23:22:54 +0100 Subject: [PATCH 08/12] Fix NPE in ImageViewActivity --- .../java/org/floens/chan/ui/activity/ImageViewActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java index 8081fc24..bc425855 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java @@ -266,7 +266,9 @@ public class ImageViewActivity extends Activity implements ViewPager.OnPageChang } private ImageViewFragment getFragment(int i) { - if (i >= 0 && i < adapter.getCount()) { + if (adapter == null) { + return null; + } else if (i >= 0 && i < adapter.getCount()) { Object o = adapter.instantiateItem(viewPager, i); if (o instanceof ImageViewFragment) { return (ImageViewFragment) o; From 28674bc83fd29e6a1680f0cb20f8f8f33f7eec50 Mon Sep 17 00:00:00 2001 From: Floens Date: Wed, 19 Nov 2014 23:45:33 +0100 Subject: [PATCH 09/12] Catch gif/ssiv OutOfMemoryError and show the user a oom message. --- .../SubsamplingScaleImageView.java | 12 ++++++++ .../chan/ui/view/CustomScaleImageView.java | 29 +++++++++++++++++-- .../chan/ui/view/ThumbnailImageView.java | 28 ++++++++++++------ Clover/app/src/main/res/values/strings.xml | 1 + 4 files changed, 58 insertions(+), 12 deletions(-) diff --git a/Clover/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java b/Clover/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java index 72dc5bfa..bb726f2c 100644 --- a/Clover/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java +++ b/Clover/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java @@ -1028,6 +1028,10 @@ public class SubsamplingScaleImageView extends View { } catch (OutOfMemoryError e) { Log.e(TAG, "OOM in decode tile", e); System.gc(); + final SubsamplingScaleImageView view = viewRef.get(); + if (view != null) { + view.onOutOfMemory(); + } } return null; } @@ -1092,6 +1096,10 @@ public class SubsamplingScaleImageView extends View { } catch (OutOfMemoryError e) { Log.e(TAG, "OOM in decode tile", e); System.gc(); + final SubsamplingScaleImageView view = viewRef.get(); + if (view != null) { + view.onOutOfMemory(); + } } return null; } @@ -1538,6 +1546,10 @@ public class SubsamplingScaleImageView extends View { } + protected void onOutOfMemory() { + + } + /** * Call to find whether the view is initialised and ready for rendering tiles. */ diff --git a/Clover/app/src/main/java/org/floens/chan/ui/view/CustomScaleImageView.java b/Clover/app/src/main/java/org/floens/chan/ui/view/CustomScaleImageView.java index 89980d73..a21c81c1 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/view/CustomScaleImageView.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/view/CustomScaleImageView.java @@ -20,6 +20,8 @@ import android.util.AttributeSet; import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; +import org.floens.chan.utils.Utils; + public class CustomScaleImageView extends SubsamplingScaleImageView { private InitedCallback initCallback; @@ -39,12 +41,33 @@ public class CustomScaleImageView extends SubsamplingScaleImageView { protected void onImageReady() { super.onImageReady(); - if (initCallback != null) { - initCallback.onInit(); - } + Utils.runOnUiThread(new Runnable() { + @Override + public void run() { + if (initCallback != null) { + initCallback.onInit(); + } + } + }); + } + + @Override + protected void onOutOfMemory() { + super.onOutOfMemory(); + + Utils.runOnUiThread(new Runnable() { + @Override + public void run() { + if (initCallback != null) { + initCallback.onOutOfMemory(); + } + } + }); } public interface InitedCallback { public void onInit(); + + public void onOutOfMemory(); } } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java index d2498d3a..fd9945da 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java @@ -158,14 +158,14 @@ public class ThumbnailImageView extends LoadView implements View.OnClickListener image.setInitCallback(new CustomScaleImageView.InitedCallback() { @Override public void onInit() { - Utils.runOnUiThread(new Runnable() { - @Override - public void run() { - removeAllViews(); - addView(image); - callback.setProgress(false); - } - }); + removeAllViews(); + addView(image); + callback.setProgress(false); + } + + @Override + public void onOutOfMemory() { + onOutOfMemoryError(); } }); } @@ -213,6 +213,11 @@ public class ThumbnailImageView extends LoadView implements View.OnClickListener e.printStackTrace(); onError(); return; + } catch (OutOfMemoryError e) { + System.gc(); + e.printStackTrace(); + onOutOfMemoryError(); + return; } GifImageView view = new GifImageView(getContext()); @@ -302,7 +307,7 @@ public class ThumbnailImageView extends LoadView implements View.OnClickListener } public void onError() { - Toast.makeText(getContext(), R.string.image_preview_failed, Toast.LENGTH_LONG).show(); + Toast.makeText(getContext(), R.string.image_preview_failed, Toast.LENGTH_SHORT).show(); callback.setProgress(false); } @@ -311,6 +316,11 @@ public class ThumbnailImageView extends LoadView implements View.OnClickListener callback.setProgress(false); } + public void onOutOfMemoryError() { + Toast.makeText(getContext(), R.string.image_preview_failed_oom, Toast.LENGTH_SHORT).show(); + callback.setProgress(false); + } + public void cancelLoad() { if (imageRequest != null) { imageRequest.cancel(); diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml index f49c4344..dfba6588 100644 --- a/Clover/app/src/main/res/values/strings.xml +++ b/Clover/app/src/main/res/values/strings.xml @@ -61,6 +61,7 @@ along with this program. If not, see . Start / stop playing Failed to show image + Failed to show image, out of memory Image not found Failed to open image From 72d04fd8647211b2df8e11e3d3f62911a5346047 Mon Sep 17 00:00:00 2001 From: Floens Date: Wed, 19 Nov 2014 23:56:08 +0100 Subject: [PATCH 10/12] Fix rare IllegalStateException in ReplyFragment when used as a dialog. --- .../main/java/org/floens/chan/ui/fragment/ReplyFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java index 6f17f177..9a223eae 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java @@ -379,7 +379,7 @@ public class ReplyFragment extends DialogFragment { private void closeReply() { if (getDialog() != null) { - dismiss(); + dismissAllowingStateLoss(); } else { context.finish(); } From cdaa719f51819007a724815a03bf4011b1407c5e Mon Sep 17 00:00:00 2001 From: VaguelyAsian <0850637@student.hr.nl> Date: Fri, 28 Nov 2014 16:03:52 +0100 Subject: [PATCH 11/12] Display message instead of progressbar when no loadable This changes the endless ProgressBar in the right pane to a (generic) TextView that shows "Select a thread". --- .../floens/chan/ui/fragment/ThreadFragment.java | 14 ++++++++++++++ Clover/app/src/main/res/values/strings.xml | 1 + 2 files changed, 15 insertions(+) diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java index 35ca2383..7fc20bfe 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java @@ -171,6 +171,10 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { container = new LoadView(inflater.getContext()); + if (loadable == null) { + container.setView(getCenteredMessageView(R.string.thread_not_specified)); + } + return container; } @@ -425,6 +429,16 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana return errorMessage; } + private View getCenteredMessageView(int stringResourceId) { + LinearLayout layout = new LinearLayout(baseActivity); + layout.setGravity(Gravity.CENTER); + TextView messageView = new TextView(baseActivity); + messageView.setText(getString(stringResourceId)); + layout.addView(messageView); + + return layout; + } + private static class SkipLogic { private final ImageView skip; private int lastFirstVisibleItem; diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml index dfba6588..8f5513db 100644 --- a/Clover/app/src/main/res/values/strings.xml +++ b/Clover/app/src/main/res/values/strings.xml @@ -72,6 +72,7 @@ along with this program. If not, see . Server inaccessible 404 not found No more posts + Select a thread Tap to refresh Loading Loading in %1$d From 2450eb3c3fef620fb4d7e9ae783e707e6b65f8a5 Mon Sep 17 00:00:00 2001 From: Floens Date: Mon, 1 Dec 2014 08:58:45 +0100 Subject: [PATCH 12/12] Use getActivity() in ThreadFragment, fix crash on restore state. --- .../chan/ui/fragment/ThreadFragment.java | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java index 7fc20bfe..975a5c2a 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java @@ -19,7 +19,6 @@ package org.floens.chan.ui.fragment; import android.app.Fragment; import android.content.Context; -import android.content.Intent; import android.content.res.TypedArray; import android.os.Bundle; import android.util.AttributeSet; @@ -61,7 +60,6 @@ import org.floens.chan.utils.Utils; import javax.net.ssl.SSLException; public class ThreadFragment extends Fragment implements ThreadManager.ThreadManagerListener, PostAdapter.PostAdapterListener { - private BaseActivity baseActivity; private ThreadManager threadManager; private Loadable loadable; @@ -78,7 +76,6 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana public static ThreadFragment newInstance(BaseActivity activity) { ThreadFragment fragment = new ThreadFragment(); - fragment.baseActivity = activity; fragment.threadManager = new ThreadManager(activity, fragment); return fragment; @@ -181,7 +178,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana @Override public void onPostClicked(Post post) { if (loadable.isBoardMode() || loadable.isCatalogMode()) { - baseActivity.onOPClicked(post); + ((BaseActivity) getActivity()).onOPClicked(post); } else if (loadable.isThreadMode() && isFiltering) { filterView.clearSearch(); postAdapter.scrollToPost(post.no); @@ -191,7 +188,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana @Override public void onThumbnailClicked(Post source) { if (postAdapter != null) { - ImageViewActivity.launch(baseActivity, postAdapter, source.no, threadManager); + ImageViewActivity.launch(getActivity(), postAdapter, source.no, threadManager); } } @@ -211,7 +208,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana @Override public void onOpenThread(final Loadable thread, int highlightedPost) { - baseActivity.onOpenThread(thread); + ((BaseActivity) getActivity()).onOpenThread(thread); this.highlightedPost = highlightedPost; } @@ -237,7 +234,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana highlightedPost = -1; } - baseActivity.onThreadLoaded(thread); + ((BaseActivity) getActivity()).onThreadLoaded(thread); } @Override @@ -266,25 +263,25 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana } private RelativeLayout createView() { - RelativeLayout compound = new RelativeLayout(baseActivity); + RelativeLayout compound = new RelativeLayout(getActivity()); - LinearLayout listViewContainer = new LinearLayout(baseActivity); + LinearLayout listViewContainer = new LinearLayout(getActivity()); listViewContainer.setOrientation(LinearLayout.VERTICAL); - filterView = new FilterView(baseActivity); + filterView = new FilterView(getActivity()); filterView.setVisibility(View.GONE); listViewContainer.addView(filterView, Utils.MATCH_WRAP_PARAMS); if (viewMode == ThreadManager.ViewMode.LIST) { - ListView list = new ListView(baseActivity); + ListView list = new ListView(getActivity()); listView = list; - postAdapter = new PostAdapter(baseActivity, threadManager, listView, this); + postAdapter = new PostAdapter(getActivity(), threadManager, listView, this); listView.setAdapter(postAdapter); list.setSelectionFromTop(loadable.listViewIndex, loadable.listViewTop); } else if (viewMode == ThreadManager.ViewMode.GRID) { - GridView grid = new GridView(baseActivity); + GridView grid = new GridView(getActivity()); grid.setNumColumns(GridView.AUTO_FIT); - TypedArray ta = baseActivity.obtainStyledAttributes(null, R.styleable.PostView, R.attr.post_style, 0); + TypedArray ta = getActivity().obtainStyledAttributes(null, R.styleable.PostView, R.attr.post_style, 0); int postGridWidth = ta.getDimensionPixelSize(R.styleable.PostView_grid_width, 0); int postGridSpacing = ta.getDimensionPixelSize(R.styleable.PostView_grid_spacing, 0); ta.recycle(); @@ -292,7 +289,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana grid.setVerticalSpacing(postGridSpacing); grid.setHorizontalSpacing(postGridSpacing); listView = grid; - postAdapter = new PostAdapter(baseActivity, threadManager, listView, this); + postAdapter = new PostAdapter(getActivity(), threadManager, listView, this); listView.setAdapter(postAdapter); listView.setSelection(loadable.listViewIndex); } @@ -331,7 +328,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana compound.addView(listViewContainer, Utils.MATCH_PARAMS); if (loadable.isThreadMode()) { - skip = new ImageView(baseActivity); + skip = new ImageView(getActivity()); skip.setImageResource(R.drawable.skip_arrow_down); skip.setVisibility(View.GONE); compound.addView(skip, Utils.WRAP_PARAMS); @@ -380,7 +377,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana private View getLoadErrorView(VolleyError error) { String errorMessage = getLoadErrorText(error); - LinearLayout wrapper = new LinearLayout(baseActivity); + LinearLayout wrapper = new LinearLayout(getActivity()); wrapper.setLayoutParams(Utils.MATCH_PARAMS); wrapper.setGravity(Gravity.CENTER); wrapper.setOrientation(LinearLayout.VERTICAL); @@ -391,7 +388,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana text.setTextSize(24f); wrapper.addView(text); - Button retry = new Button(baseActivity); + Button retry = new Button(getActivity()); retry.setText(R.string.thread_load_failed_retry); retry.setLayoutParams(Utils.WRAP_PARAMS); retry.setGravity(Gravity.CENTER); @@ -430,9 +427,9 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana } private View getCenteredMessageView(int stringResourceId) { - LinearLayout layout = new LinearLayout(baseActivity); + LinearLayout layout = new LinearLayout(getActivity()); layout.setGravity(Gravity.CENTER); - TextView messageView = new TextView(baseActivity); + TextView messageView = new TextView(getActivity()); messageView.setText(getString(stringResourceId)); layout.addView(messageView);