From b5bc4132474e7d98f441bad5dd012d33081b343c Mon Sep 17 00:00:00 2001 From: Jonas Rottmann Date: Tue, 2 May 2017 09:44:08 +0200 Subject: [PATCH 1/5] show better messages if opening file fails --- .../realmbrowser/files/FilesPresenter.java | 11 +++++++++-- .../src/main/res/values/realm_browser_strings.xml | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/FilesPresenter.java b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/FilesPresenter.java index dc259f4..0bda977 100644 --- a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/FilesPresenter.java +++ b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/FilesPresenter.java @@ -6,12 +6,14 @@ import java.util.ArrayList; +import de.jonasrottmann.realmbrowser.R; import de.jonasrottmann.realmbrowser.basemvp.BasePresenterImpl; import de.jonasrottmann.realmbrowser.files.model.FilesPojo; import de.jonasrottmann.realmbrowser.helper.RealmHolder; import de.jonasrottmann.realmbrowser.models.view.ModelsActivity; import io.realm.Realm; import io.realm.RealmConfiguration; +import io.realm.exceptions.RealmFileException; import io.realm.exceptions.RealmMigrationNeededException; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) @@ -47,12 +49,17 @@ public void onFileSelected(FilesPojo item) { } catch (RealmMigrationNeededException e) { if (isViewAttached()) { //noinspection ConstantConditions - getView().showToast("RealmMigrationNeededException"); + getView().showToast(String.format("%s %s", getView().getViewContext().getString(R.string.realm_browser_open_error), getView().getViewContext().getString(R.string.realm_browser_error_migration))); + } + } catch (RealmFileException e) { + if (isViewAttached()) { + //noinspection ConstantConditions + getView().showToast(String.format("%s %s", getView().getViewContext().getString(R.string.realm_browser_open_error), e.getMessage())); } } catch (Exception e) { if (isViewAttached()) { //noinspection ConstantConditions - getView().showToast("Can't open realm instance. You must close all open realm instances before opening this file."); + getView().showToast(String.format("%s %s", getView().getViewContext().getString(R.string.realm_browser_open_error), getView().getViewContext().getString(R.string.realm_browser_error_openinstances))); } } } diff --git a/realm-browser/src/main/res/values/realm_browser_strings.xml b/realm-browser/src/main/res/values/realm_browser_strings.xml index bdd60c7..71409b3 100644 --- a/realm-browser/src/main/res/values/realm_browser_strings.xml +++ b/realm-browser/src/main/res/values/realm_browser_strings.xml @@ -7,6 +7,9 @@ Filter Delete Save + Can\'t open realm instance. + Make sure to close all open realm instances before opening this file. + Migration needed. true From b719f87e2ad05c3d40baeeae947a14c69bf715f3 Mon Sep 17 00:00:00 2001 From: Jonas Rottmann Date: Tue, 2 May 2017 09:45:11 +0200 Subject: [PATCH 2/5] update gradle android plugin --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 9b8fb06..a9c5f47 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { minSdkVersion = 15 // plugins - androidGradlePluginVersion = '2.3.1' + androidGradlePluginVersion = '2.3.2' realmVersion = '3.1.2' dexcountVersion = '0.6.4' From d9593c6578ebbb8eb22f1bef9a36f31a2c3e4798 Mon Sep 17 00:00:00 2001 From: Jonas Rottmann Date: Fri, 5 May 2017 15:24:34 +0200 Subject: [PATCH 3/5] updated realm. fixed travis builds. --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index a9c5f47..236a176 100644 --- a/build.gradle +++ b/build.gradle @@ -10,8 +10,8 @@ buildscript { minSdkVersion = 15 // plugins - androidGradlePluginVersion = '2.3.2' - realmVersion = '3.1.2' + androidGradlePluginVersion = '2.3.1' + realmVersion = '3.1.4' dexcountVersion = '0.6.4' // dependencies From 8c7e1d79d2bcd03c20f8fe08b419cf0824a07f28 Mon Sep 17 00:00:00 2001 From: Jonas Rottmann Date: Thu, 11 May 2017 16:04:06 +0200 Subject: [PATCH 4/5] added information toast on ModelsActivity --- .../realmbrowser/models/ModelsContract.java | 9 ++++++++ .../realmbrowser/models/ModelsInteractor.java | 12 ++++++++++ .../realmbrowser/models/ModelsPresenter.java | 14 ++++++++++++ .../models/model/InformationPojo.java | 22 +++++++++++++++++++ .../models/view/ModelsActivity.java | 11 ++++++++++ ...wser_ic_information_outline_white_24dp.xml | 9 ++++++++ .../main/res/layout/realm_browser_toolbar.xml | 2 +- .../realm_browser_menu_modelsactivity.xml | 12 +++++++--- 8 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/model/InformationPojo.java create mode 100644 realm-browser/src/main/res/drawable/realm_browser_ic_information_outline_white_24dp.xml diff --git a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsContract.java b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsContract.java index 22590a0..adf7276 100644 --- a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsContract.java +++ b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsContract.java @@ -11,6 +11,7 @@ import de.jonasrottmann.realmbrowser.basemvp.BaseInteractor; import de.jonasrottmann.realmbrowser.basemvp.BasePresenter; import de.jonasrottmann.realmbrowser.basemvp.BaseView; +import de.jonasrottmann.realmbrowser.models.model.InformationPojo; import de.jonasrottmann.realmbrowser.models.model.ModelPojo; import static java.lang.annotation.RetentionPolicy.SOURCE; @@ -30,6 +31,8 @@ interface View extends BaseView { Context getViewContext(); void presentShareDialog(@NonNull String path); + + void showInformation(@NonNull InformationPojo informationPojo); } interface Presenter extends BasePresenter { @@ -43,9 +46,13 @@ interface Presenter extends BasePresenter { void onFilterChanged(@NonNull String filter); + void onInformationSelected(); + void updateWithModels(@NonNull ArrayList modelsList, @SortMode int sortMode); void presentShareDialog(@NonNull String path); + + void showInformation(@NonNull InformationPojo informationPojo); } interface Interactor extends BaseInteractor { @@ -56,5 +63,7 @@ interface Interactor extends BaseInteractor { void updateWithSortModeChanged(); void onShareSelected(); + + void onInformationSelected(); } } \ No newline at end of file diff --git a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsInteractor.java b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsInteractor.java index 92320d2..2ed31d3 100644 --- a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsInteractor.java +++ b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsInteractor.java @@ -4,12 +4,14 @@ import android.support.annotation.Nullable; import android.support.annotation.RestrictTo; +import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import de.jonasrottmann.realmbrowser.basemvp.BaseInteractorImpl; import de.jonasrottmann.realmbrowser.helper.RealmHolder; +import de.jonasrottmann.realmbrowser.models.model.InformationPojo; import de.jonasrottmann.realmbrowser.models.model.ModelPojo; import io.realm.Realm; import io.realm.RealmModel; @@ -47,6 +49,16 @@ public void updateWithSortModeChanged() { public void onShareSelected() { getPresenter().presentShareDialog(RealmHolder.getInstance().getRealmConfiguration().getPath()); } + + @Override + public void onInformationSelected() { + File realmFile = new File(RealmHolder.getInstance().getRealmConfiguration().getPath()); + long sizeInByte = 0; + if (realmFile.exists() && !realmFile.isDirectory()) { + sizeInByte = realmFile.length(); + } + getPresenter().showInformation(new InformationPojo(sizeInByte, realmFile.getPath())); + } //endregion //region Helper diff --git a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsPresenter.java b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsPresenter.java index 7c8da2d..eb475e2 100644 --- a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsPresenter.java +++ b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsPresenter.java @@ -7,6 +7,7 @@ import de.jonasrottmann.realmbrowser.basemvp.BasePresenterImpl; import de.jonasrottmann.realmbrowser.browser.view.RealmBrowserActivity; +import de.jonasrottmann.realmbrowser.models.model.InformationPojo; import de.jonasrottmann.realmbrowser.models.model.ModelPojo; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) @@ -33,6 +34,11 @@ public void onFilterChanged(@NonNull String filter) { interactor.updateWithFilter(filter); } + @Override + public void onInformationSelected() { + interactor.onInformationSelected(); + } + @Override public void onModelSelected(ModelPojo item) { if (isViewAttached()) { @@ -63,5 +69,13 @@ public void presentShareDialog(@NonNull String path) { getView().presentShareDialog(path); } } + + @Override + public void showInformation(@NonNull InformationPojo informationPojo) { + if (isViewAttached()) { + //noinspection ConstantConditions + getView().showInformation(informationPojo); + } + } //endregion } diff --git a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/model/InformationPojo.java b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/model/InformationPojo.java new file mode 100644 index 0000000..5389765 --- /dev/null +++ b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/model/InformationPojo.java @@ -0,0 +1,22 @@ +package de.jonasrottmann.realmbrowser.models.model; + +import android.support.annotation.RestrictTo; + +@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) +public class InformationPojo { + private final long sizeInByte; + private final String path; + + public InformationPojo(long sizeInByte, String path) { + this.sizeInByte = sizeInByte; + this.path = path; + } + + public long getSizeInByte() { + return sizeInByte; + } + + public String getPath() { + return path; + } +} diff --git a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/view/ModelsActivity.java b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/view/ModelsActivity.java index 0b25cec..177f53a 100644 --- a/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/view/ModelsActivity.java +++ b/realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/view/ModelsActivity.java @@ -15,9 +15,11 @@ import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; +import android.text.format.Formatter; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.widget.Toast; import java.io.File; import java.util.ArrayList; @@ -26,6 +28,7 @@ import de.jonasrottmann.realmbrowser.helper.RealmHolder; import de.jonasrottmann.realmbrowser.models.ModelsContract; import de.jonasrottmann.realmbrowser.models.ModelsPresenter; +import de.jonasrottmann.realmbrowser.models.model.InformationPojo; import de.jonasrottmann.realmbrowser.models.model.ModelPojo; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) @@ -122,6 +125,9 @@ public boolean onOptionsItemSelected(MenuItem item) { } else if (item.getItemId() == R.id.realm_browser_action_share) { presenter.onShareSelected(); return true; + } else if (item.getItemId() == R.id.realm_browser_action_info) { + presenter.onInformationSelected(); + return true; } else { return super.onOptionsItemSelected(item); } @@ -164,6 +170,11 @@ public void presentShareDialog(@NonNull String path) { startActivity(Intent.createChooser(intentShareFile, "Share Realm File")); } + @Override + public void showInformation(@NonNull InformationPojo informationPojo) { + Toast.makeText(this, String.format("%s\nSize: %s", informationPojo.getPath(), Formatter.formatShortFileSize(this, informationPojo.getSizeInByte())), Toast.LENGTH_LONG).show(); + } + @Override protected void onDestroy() { super.onDestroy(); diff --git a/realm-browser/src/main/res/drawable/realm_browser_ic_information_outline_white_24dp.xml b/realm-browser/src/main/res/drawable/realm_browser_ic_information_outline_white_24dp.xml new file mode 100644 index 0000000..4fce460 --- /dev/null +++ b/realm-browser/src/main/res/drawable/realm_browser_ic_information_outline_white_24dp.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/realm-browser/src/main/res/layout/realm_browser_toolbar.xml b/realm-browser/src/main/res/layout/realm_browser_toolbar.xml index a6428ec..aed976b 100644 --- a/realm-browser/src/main/res/layout/realm_browser_toolbar.xml +++ b/realm-browser/src/main/res/layout/realm_browser_toolbar.xml @@ -6,5 +6,5 @@ android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="8dp" - app:popupTheme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" + app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> \ No newline at end of file diff --git a/realm-browser/src/main/res/menu/realm_browser_menu_modelsactivity.xml b/realm-browser/src/main/res/menu/realm_browser_menu_modelsactivity.xml index 4745aef..2ffe2f1 100644 --- a/realm-browser/src/main/res/menu/realm_browser_menu_modelsactivity.xml +++ b/realm-browser/src/main/res/menu/realm_browser_menu_modelsactivity.xml @@ -7,7 +7,7 @@ android:icon="@drawable/realm_browser_ic_search_white_24dp" android:title="@string/realm_browser_action_filter" app:actionViewClass="android.support.v7.widget.SearchView" - app:showAsAction="ifRoom"/> + app:showAsAction="always"/> + + + android:title="Share File" + app:showAsAction="ifRoom"/> \ No newline at end of file From 9a97f67e529eb6a4d0eee59b275e3998c850c27f Mon Sep 17 00:00:00 2001 From: Jonas Rottmann Date: Thu, 11 May 2017 16:09:03 +0200 Subject: [PATCH 5/5] prepared readme for next version --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4931e42..5a57b4a 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,9 @@ The project is available via [JitPack.io](https://jitpack.io/#jonasrottmann/real 2. **Add the dependency** ``` dependencies { - debugCompile 'com.github.jonasrottmann.realm-browser:realm-browser:0.0.11' - testCompile 'com.github.jonasrottmann.realm-browser:realm-browser-no-op:0.0.11' - releaseCompile 'com.github.jonasrottmann.realm-browser:realm-browser-no-op:0.0.11' + debugCompile 'com.github.jonasrottmann.realm-browser:realm-browser:0.0.12' + testCompile 'com.github.jonasrottmann.realm-browser:realm-browser-no-op:0.0.12' + releaseCompile 'com.github.jonasrottmann.realm-browser:realm-browser-no-op:0.0.12' } ``` The no-op version of Realm Browser has empty functions which do nothing. It is not necessary to include this, but you may if you do not want to access Realm Browser in release mode. If you want to use a build of the newest development use `compile "com.github.jonasrottmann.realm-browser:realm-browser:develop-SNAPSHOT"` instead. @@ -37,7 +37,7 @@ The project is available via [JitPack.io](https://jitpack.io/#jonasrottmann/real 3. Exclude support libraries (maybe optional): Realm Browser depends on Android support libraries, so you might want to exclude them from your project if they conflict with the ones you include: ``` depedencies { - debugCompile ('com.github.jonasrottmann.realm-browser:realm-browser:0.0.11') { + debugCompile ('com.github.jonasrottmann.realm-browser:realm-browser:0.0.12') { exclude group: 'com.android.support'; } }