From 160f05f6ca560b2fd6dab86845b91b4e97bd45c0 Mon Sep 17 00:00:00 2001 From: Elad Keyshawn Date: Thu, 6 Apr 2017 12:42:53 +0200 Subject: [PATCH] - moved library to dedicated folder - getLibraryData now in presenter --- app/src/main/AndroidManifest.xml | 2 +- .../org/kiwix/kiwixmobile/BasePresenter.java | 38 ++++++++++++++++ .../kiwixmobile/KiwixMobileActivity.java | 2 + .../java/org/kiwix/kiwixmobile/Presenter.java | 12 +++++ .../org/kiwix/kiwixmobile/ViewCallback.java | 8 ++++ .../kiwixmobile/ZimFileSelectFragment.java | 2 + .../di/components/ApplicationComponent.java | 3 +- .../downloader/DownloadFragment.java | 4 +- .../downloader/DownloadService.java | 2 +- .../kiwixmobile/library/LibraryAdapter.java | 9 +--- .../settings/KiwixSettingsActivity.java | 3 +- .../kiwix/kiwixmobile/utils/DimenUtils.java | 5 --- .../{ => zim_manager}/ZimManageActivity.java | 9 ++-- .../library_view}/LibraryFragment.java | 8 +++- .../library_view/LibraryPresenter.java | 45 +++++++++++++++++++ .../library_view/LibraryViewCallback.java | 20 +++++++++ .../library_view/UtilFunctions.java | 42 +++++++++++++++++ app/src/main/res/layout/activity_library.xml | 2 +- .../main/res/layout/fragment_zim_manager.xml | 2 +- app/src/main/res/layout/zim_manager.xml | 2 +- 20 files changed, 194 insertions(+), 26 deletions(-) create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/BasePresenter.java create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/Presenter.java create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/ViewCallback.java rename app/src/main/java/org/kiwix/kiwixmobile/{ => zim_manager}/ZimManageActivity.java (97%) rename app/src/main/java/org/kiwix/kiwixmobile/{ => zim_manager/library_view}/LibraryFragment.java (98%) create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryPresenter.java create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryViewCallback.java create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/UtilFunctions.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 61c61480a..6ab994244 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -122,7 +122,7 @@ diff --git a/app/src/main/java/org/kiwix/kiwixmobile/BasePresenter.java b/app/src/main/java/org/kiwix/kiwixmobile/BasePresenter.java new file mode 100644 index 000000000..fcca19f86 --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/BasePresenter.java @@ -0,0 +1,38 @@ +package org.kiwix.kiwixmobile; + +/** + * Created by EladKeyshawn on 06/04/2017. + */ +public class BasePresenter implements Presenter { + + private T mMvpView; + + @Override + public void attachView(T mvpView) { + mMvpView = mvpView; + } + + @Override + public void detachView() { + mMvpView = null; + } + + public boolean isViewAttached() { + return mMvpView != null; + } + + public T getMvpView() { + return mMvpView; + } + + public void checkViewAttached() { + if (!isViewAttached()) throw new MvpViewNotAttachedException(); + } + + public static class MvpViewNotAttachedException extends RuntimeException { + public MvpViewNotAttachedException() { + super("Please call Presenter.attachView(MvpView) before" + + " requesting data to the Presenter"); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 7f66c6875..aa4118db6 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -102,6 +102,8 @@ import org.kiwix.kiwixmobile.views.CompatFindActionModeCallback; import org.kiwix.kiwixmobile.views.web.KiwixWebView; import org.kiwix.kiwixmobile.views.web.ToolbarScrollingKiwixWebView; import org.kiwix.kiwixmobile.views.web.ToolbarStaticKiwixWebView; +import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity; +import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static org.kiwix.kiwixmobile.TableDrawerAdapter.DocumentSection; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/Presenter.java b/app/src/main/java/org/kiwix/kiwixmobile/Presenter.java new file mode 100644 index 000000000..2a3825b7e --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/Presenter.java @@ -0,0 +1,12 @@ +package org.kiwix.kiwixmobile; + +/** + * Created by EladKeyshawn on 06/04/2017. + */ + +public interface Presenter { + + void attachView(V viewCallback); + + void detachView(); +} \ No newline at end of file diff --git a/app/src/main/java/org/kiwix/kiwixmobile/ViewCallback.java b/app/src/main/java/org/kiwix/kiwixmobile/ViewCallback.java new file mode 100644 index 000000000..217ed06ae --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/ViewCallback.java @@ -0,0 +1,8 @@ +package org.kiwix.kiwixmobile; + +/** + * Created by EladKeyshawn on 06/04/2017. + */ + +public interface ViewCallback { +} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/ZimFileSelectFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/ZimFileSelectFragment.java index 463b50028..1c2bedded 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/ZimFileSelectFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/ZimFileSelectFragment.java @@ -55,6 +55,8 @@ import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.utils.LanguageUtils; import org.kiwix.kiwixmobile.utils.files.FileSearch; import org.kiwix.kiwixmobile.utils.files.FileUtils; +import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity; +import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/di/components/ApplicationComponent.java b/app/src/main/java/org/kiwix/kiwixmobile/di/components/ApplicationComponent.java index 02452b6ce..a778f74d0 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/di/components/ApplicationComponent.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/di/components/ApplicationComponent.java @@ -3,10 +3,10 @@ package org.kiwix.kiwixmobile.di.components; import dagger.Component; import javax.inject.Singleton; import org.kiwix.kiwixmobile.KiwixMobileActivity; -import org.kiwix.kiwixmobile.LibraryFragment; import org.kiwix.kiwixmobile.di.modules.ApplicationModule; import org.kiwix.kiwixmobile.di.modules.NetworkModule; import org.kiwix.kiwixmobile.downloader.DownloadService; +import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; @Singleton @Component(modules = { @@ -19,4 +19,5 @@ public interface ApplicationComponent { void inject(DownloadService service); void inject(LibraryFragment libraryFragment); + } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadFragment.java index a3c02cf49..3dfe651a1 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadFragment.java @@ -25,10 +25,10 @@ import android.widget.TextView; import java.util.Arrays; import java.util.LinkedHashMap; -import org.kiwix.kiwixmobile.LibraryFragment; +import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.ZimFileSelectFragment; -import org.kiwix.kiwixmobile.ZimManageActivity; +import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.utils.files.FileUtils; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadService.java b/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadService.java index 5155eb311..6a9b2b1b8 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadService.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadService.java @@ -28,7 +28,7 @@ import okhttp3.Response; import okio.BufferedSource; import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixMobileActivity; -import org.kiwix.kiwixmobile.LibraryFragment; +import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.database.BookDao; import org.kiwix.kiwixmobile.database.KiwixDatabase; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/library/LibraryAdapter.java b/app/src/main/java/org/kiwix/kiwixmobile/library/LibraryAdapter.java index 9d91d1439..33b5be4d6 100755 --- a/app/src/main/java/org/kiwix/kiwixmobile/library/LibraryAdapter.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/library/LibraryAdapter.java @@ -38,22 +38,17 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Set; -import org.kiwix.kiwixmobile.LibraryFragment; +import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; import org.kiwix.kiwixmobile.R; -import org.kiwix.kiwixmobile.ZimManageActivity; +import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity; import org.kiwix.kiwixmobile.database.BookDao; import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.database.NetworkLanguageDao; import org.kiwix.kiwixmobile.downloader.DownloadFragment; -import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity.Book; import org.kiwix.kiwixmobile.utils.LanguageUtils; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java index 7b87dc60b..4909afd61 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java @@ -45,11 +45,10 @@ import eu.mhutti1.utils.storage.StorageSelectDialog; import java.io.File; import java.util.Locale; import org.kiwix.kiwixmobile.KiwixMobileActivity; -import org.kiwix.kiwixmobile.LibraryFragment; +import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.database.RecentSearchDao; -import org.kiwix.kiwixmobile.utils.DimenUtils; import org.kiwix.kiwixmobile.utils.LanguageUtils; import org.kiwix.kiwixmobile.utils.StyleUtils; import org.kiwix.kiwixmobile.views.SliderPreference; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/utils/DimenUtils.java b/app/src/main/java/org/kiwix/kiwixmobile/utils/DimenUtils.java index 7db9a31ee..b94f6067d 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/utils/DimenUtils.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/utils/DimenUtils.java @@ -2,14 +2,9 @@ package org.kiwix.kiwixmobile.utils; import android.content.Context; import android.os.Build; -import android.support.design.widget.TabLayout; -import android.support.v4.view.ViewPager; import android.support.v7.widget.Toolbar; import android.util.TypedValue; import android.view.ViewGroup; -import android.widget.RelativeLayout; - -import org.kiwix.kiwixmobile.ZimManageActivity; /** * Created by gmon on 1/13/17. diff --git a/app/src/main/java/org/kiwix/kiwixmobile/ZimManageActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java similarity index 97% rename from app/src/main/java/org/kiwix/kiwixmobile/ZimManageActivity.java rename to app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java index 8a714599c..1fed48d53 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/ZimManageActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java @@ -1,4 +1,4 @@ -package org.kiwix.kiwixmobile; +package org.kiwix.kiwixmobile.zim_manager; import android.content.Context; import android.content.Intent; @@ -24,13 +24,16 @@ import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.LinearLayout; import android.widget.ListView; -import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; + +import org.kiwix.kiwixmobile.KiwixMobileActivity; +import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; +import org.kiwix.kiwixmobile.R; +import org.kiwix.kiwixmobile.ZimFileSelectFragment; import org.kiwix.kiwixmobile.downloader.DownloadFragment; import org.kiwix.kiwixmobile.library.LibraryAdapter; -import org.kiwix.kiwixmobile.utils.DimenUtils; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/LibraryFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java similarity index 98% rename from app/src/main/java/org/kiwix/kiwixmobile/LibraryFragment.java rename to app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java index 0a6fda06c..24760f361 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/LibraryFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java @@ -1,4 +1,4 @@ -package org.kiwix.kiwixmobile; +package org.kiwix.kiwixmobile.zim_manager.library_view; import android.app.Fragment; import android.app.FragmentManager; @@ -42,6 +42,10 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import javax.inject.Inject; + +import org.kiwix.kiwixmobile.KiwixApplication; +import org.kiwix.kiwixmobile.KiwixMobileActivity; +import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.database.BookDao; import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.downloader.DownloadFragment; @@ -52,6 +56,8 @@ import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.network.KiwixService; import org.kiwix.kiwixmobile.utils.StorageUtils; import org.kiwix.kiwixmobile.utils.StyleUtils; +import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity; + import rx.android.schedulers.AndroidSchedulers; import static org.kiwix.kiwixmobile.downloader.DownloadService.KIWIX_ROOT; diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryPresenter.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryPresenter.java new file mode 100644 index 000000000..e4eca6967 --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryPresenter.java @@ -0,0 +1,45 @@ +package org.kiwix.kiwixmobile.zim_manager.library_view; + +import org.kiwix.kiwixmobile.BasePresenter; +import org.kiwix.kiwixmobile.network.KiwixService; + +import javax.inject.Inject; + +import rx.android.schedulers.AndroidSchedulers; + +/** + * Created by EladKeyshawn on 06/04/2017. + */ + +public class LibraryPresenter extends BasePresenter { + + @Inject KiwixService kiwixService; + + @Inject + public LibraryPresenter() { + } + + + void loadBooks() { + getMvpView().displayScanningContent(); + kiwixService.getLibrary() + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(library -> { + getMvpView().showBooks(library.getBooks()); + }, error -> { + getMvpView().displayNoNetworkConnection(); + }); + } + + @Override + public void attachView(LibraryViewCallback view) { + super.attachView(view); + } + + @Override + public void detachView() { + super.detachView(); + } + + +} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryViewCallback.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryViewCallback.java new file mode 100644 index 000000000..376a874ea --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryViewCallback.java @@ -0,0 +1,20 @@ +package org.kiwix.kiwixmobile.zim_manager.library_view; + +import org.kiwix.kiwixmobile.ViewCallback; +import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; + +import java.util.LinkedList; + +/** + * Created by EladKeyshawn on 06/04/2017. + */ + +public interface LibraryViewCallback extends ViewCallback { + + void showBooks(LinkedList books); + + + void displayNoNetworkConnection(); + + void displayScanningContent(); +} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/UtilFunctions.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/UtilFunctions.java new file mode 100644 index 000000000..ccb94c90c --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/UtilFunctions.java @@ -0,0 +1,42 @@ +package org.kiwix.kiwixmobile.zim_manager.library_view; + +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.os.Build; + +import java.math.BigDecimal; +import java.math.MathContext; + +/** + * Created by EladKeyshawn on 06/04/2017. + */ + +public class UtilFunctions { + public static String bytesToHuman(long size) { + long KB = 1024; + long MB = KB * 1024; + long GB = MB * 1024; + long TB = GB * 1024; + long PB = TB * 1024; + long EB = PB * 1024; + + if (size < KB) { return size + " Bytes"; } + if (size >= KB && size < MB) { return round3SF((double) size / KB) + " KB"; } + if (size >= MB && size < GB) { return round3SF((double) size / MB) + " MB"; } + if (size >= GB && size < TB) { return round3SF((double) size / GB) + " GB"; } + if (size >= TB && size < PB) { return round3SF((double) size / TB) + " TB"; } + if (size >= PB && size < EB) { return round3SF((double) size / PB) + " PB"; } + if (size >= EB) { return round3SF((double) size / EB) + " EB"; } + + return "???"; + } + + + public static String round3SF(double size) { + BigDecimal bd = new BigDecimal(size); + bd = bd.round(new MathContext(3)); + return String.valueOf(bd.doubleValue()); + } + + +} diff --git a/app/src/main/res/layout/activity_library.xml b/app/src/main/res/layout/activity_library.xml index 3fa673821..e5bd9d735 100644 --- a/app/src/main/res/layout/activity_library.xml +++ b/app/src/main/res/layout/activity_library.xml @@ -4,7 +4,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - tools:context=".LibraryFragment"> + tools:context=".zim_manager.library_view.LibraryFragment"> + tools:context=".zim_manager.ZimManageActivity$PlaceholderFragment"> + tools:context=".zim_manager.ZimManageActivity">