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.