diff --git a/CHANGES.txt b/CHANGES.txt
index cd36c6e3..dc6f3b67 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,16 @@
+New in 2.0.0 (2015-08-23)
+- New design.
+- New inline reply layout.
+- Support for thread hiding.
+- Support for filtering threads, making posts either highlighted, hidden or completely removed.
+- Support for history.
+- More themes were added.
+- Album downloads have been improved.
+- Catalog mode now uses cards.
+- More advanced options added.
+- Minor features and bug fixes.
+
+
New in 1.2.11 (2015-06-20)
- Update/fix captchas
diff --git a/Clover/app/build.gradle b/Clover/app/build.gradle
index 05075bfa..e0fbc8f7 100644
--- a/Clover/app/build.gradle
+++ b/Clover/app/build.gradle
@@ -8,8 +8,8 @@ android {
minSdkVersion 14
targetSdkVersion 22
- versionName "v1.2.11"
- versionCode 50
+ versionName "v2.0.0"
+ versionCode 51
}
compileOptions {
diff --git a/Clover/app/src/main/java/org/floens/chan/Chan.java b/Clover/app/src/main/java/org/floens/chan/Chan.java
index fd2314d7..331f0822 100644
--- a/Clover/app/src/main/java/org/floens/chan/Chan.java
+++ b/Clover/app/src/main/java/org/floens/chan/Chan.java
@@ -145,8 +145,6 @@ public class Chan extends Application {
version = version.toLowerCase(Locale.ENGLISH).replace(" ", "_");
userAgent = getString(R.string.app_name) + "/" + version;
- cleanupOutdated();
-
File cacheDir = getExternalCacheDir() != null ? getExternalCacheDir() : getCacheDir();
replyManager = new ReplyManager(this);
@@ -197,23 +195,6 @@ public class Chan extends Application {
return activityForegroundCounter > 0;
}
- private void cleanupOutdated() {
- File ionCacheFolder = new File(getCacheDir() + "/ion");
- if (ionCacheFolder.exists() && ionCacheFolder.isDirectory()) {
- Logger.i(TAG, "Clearing old ion folder");
- for (File file : ionCacheFolder.listFiles()) {
- if (!file.delete()) {
- Logger.i(TAG, "Could not delete old ion file " + file.getName());
- }
- }
- if (!ionCacheFolder.delete()) {
- Logger.i(TAG, "Could not delete old ion folder");
- } else {
- Logger.i(TAG, "Deleted old ion folder");
- }
- }
- }
-
public static class ForegroundChangedMessage {
public boolean inForeground;
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/helper/PreviousVersionHandler.java b/Clover/app/src/main/java/org/floens/chan/ui/helper/PreviousVersionHandler.java
index 9bfbf811..6ee0fcb8 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/helper/PreviousVersionHandler.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/helper/PreviousVersionHandler.java
@@ -26,35 +26,66 @@ import android.widget.Button;
import org.floens.chan.R;
import org.floens.chan.core.settings.ChanSettings;
import org.floens.chan.utils.AndroidUtils;
+import org.floens.chan.utils.Logger;
+
+import java.io.File;
public class PreviousVersionHandler {
+ private static final String TAG = "PreviousVersionHandler";
private static final int CURRENT_VERSION = 1;
public void run(Context context) {
- if (ChanSettings.previousVersion.get() < CURRENT_VERSION) {
- int resource = context.getResources().getIdentifier("previous_version_" + CURRENT_VERSION, "string", context.getPackageName());
- if (resource != 0) {
- CharSequence message = Html.fromHtml(context.getString(resource));
-
- final AlertDialog dialog = new AlertDialog.Builder(context)
- .setMessage(message)
- .setPositiveButton(R.string.ok, null)
- .create();
- dialog.show();
- dialog.setCanceledOnTouchOutside(false);
-
- final Button button = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
- button.setEnabled(false);
- AndroidUtils.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- dialog.setCanceledOnTouchOutside(true);
- button.setEnabled(true);
- }
- }, 1500);
+ int previous = ChanSettings.previousVersion.get();
+ if (previous < CURRENT_VERSION) {
+ if (previous < 1) {
+ cleanupOutdatedIonFolder(context);
}
+ showMessage(context, CURRENT_VERSION);
+
ChanSettings.previousVersion.set(CURRENT_VERSION);
}
}
+
+ private void showMessage(Context context, int version) {
+ int resource = context.getResources().getIdentifier("previous_version_" + version, "string", context.getPackageName());
+ if (resource != 0) {
+ CharSequence message = Html.fromHtml(context.getString(resource));
+
+ final AlertDialog dialog = new AlertDialog.Builder(context)
+ .setMessage(message)
+ .setPositiveButton(R.string.ok, null)
+ .create();
+ dialog.show();
+ dialog.setCanceledOnTouchOutside(false);
+
+ final Button button = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
+ button.setEnabled(false);
+ AndroidUtils.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ dialog.setCanceledOnTouchOutside(true);
+ button.setEnabled(true);
+ }
+ }, 1500);
+ }
+ }
+
+ private void cleanupOutdatedIonFolder(Context context) {
+ Logger.i(TAG, "Cleaning up old ion folder");
+ File ionCacheFolder = new File(context.getCacheDir() + "/ion");
+ if (ionCacheFolder.exists() && ionCacheFolder.isDirectory()) {
+ Logger.i(TAG, "Clearing old ion folder");
+ for (File file : ionCacheFolder.listFiles()) {
+ if (!file.delete()) {
+ Logger.i(TAG, "Could not delete old ion file " + file.getName());
+ }
+ }
+ if (!ionCacheFolder.delete()) {
+ Logger.i(TAG, "Could not delete old ion folder");
+ } else {
+ Logger.i(TAG, "Deleted old ion folder");
+ }
+ }
+ }
}
diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml
index 123cbe59..5a59889e 100644
--- a/Clover/app/src/main/res/values/strings.xml
+++ b/Clover/app/src/main/res/values/strings.xml
@@ -25,6 +25,7 @@ along with this program. If not, see .
This is the beta of Clover v2, redesigned with the Google Material Design guidelines in mind.
Biggest changes:
+ - New design.
- New inline reply layout.
- Support for thread hiding.
- Support for filtering threads, making posts either highlighted, hidden or completely removed.