diff --git a/app/src/main/java/org/kiwix/kiwixmobile/base/BaseContract.java b/app/src/main/java/org/kiwix/kiwixmobile/base/BaseContract.java new file mode 100644 index 000000000..a58e6005b --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/base/BaseContract.java @@ -0,0 +1,28 @@ +package org.kiwix.kiwixmobile.base; + +public class BaseContract { + + /** + * The contract for a view must extend this interface. + * + * @param the type of presenter associated with the view + */ + public interface View { + + } + + public interface Presenter { + + /** + * Binds presenter with a view when resumed. The Presenter will perform initialization here. + * + * @param view the view associated with this presenter + */ + void attachView(T view); + + /** + * Drops the reference to the view when destroyed + */ + void detachView(); + } +} \ No newline at end of file diff --git a/app/src/main/java/org/kiwix/kiwixmobile/base/BasePresenter.java b/app/src/main/java/org/kiwix/kiwixmobile/base/BasePresenter.java index fc684b1e0..248b5ed15 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/base/BasePresenter.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/base/BasePresenter.java @@ -18,40 +18,20 @@ package org.kiwix.kiwixmobile.base; /** - * Created by EladKeyshawn on 05/04/2017. + * All presenters should inherit from this presenter. */ -public class BasePresenter implements Presenter { +public abstract class BasePresenter implements BaseContract.Presenter { - private T mMvpView; + protected T view; @Override - public void attachView(T mvpView) { - this.mMvpView = mvpView; + public void attachView(T view) { + this.view = view; } @Override public void detachView() { - mMvpView = null; + view = 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/base/Presenter.java b/app/src/main/java/org/kiwix/kiwixmobile/base/Presenter.java deleted file mode 100644 index ac1eac1f4..000000000 --- a/app/src/main/java/org/kiwix/kiwixmobile/base/Presenter.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Kiwix Android - * Copyright (C) 2018 Kiwix - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.kiwix.kiwixmobile.base; - -/** - * Created by EladKeyshawn on 05/04/2017. - */ -public interface Presenter { - - void attachView(V mvpView); - - void detachView(); -} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/base/ViewCallback.java b/app/src/main/java/org/kiwix/kiwixmobile/base/ViewCallback.java deleted file mode 100644 index e58701116..000000000 --- a/app/src/main/java/org/kiwix/kiwixmobile/base/ViewCallback.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Kiwix Android - * Copyright (C) 2018 Kiwix - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.kiwix.kiwixmobile.base; - -/** - * Created by EladKeyshawn on 05/04/2017. - */ -public interface ViewCallback { -} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/bookmark/BookmarksPresenter.java b/app/src/main/java/org/kiwix/kiwixmobile/bookmark/BookmarksPresenter.java index ce83a210c..bcddca145 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/bookmark/BookmarksPresenter.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/bookmark/BookmarksPresenter.java @@ -34,13 +34,13 @@ public class BookmarksPresenter extends BasePresenter { BookmarksDao bookmarksDao; @Inject - public BookmarksPresenter() { + BookmarksPresenter() { } public void loadBookmarks() { ArrayList bookmarks = bookmarksDao.getBookmarkTitles(ZimContentProvider.getId(), ZimContentProvider.getName()); ArrayList bookmarkUrls = bookmarksDao.getBookmarks(ZimContentProvider.getId(), ZimContentProvider.getName()); - getMvpView().showBookmarks(bookmarks, bookmarkUrls); + view.showBookmarks(bookmarks, bookmarkUrls); } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/bookmark/BookmarksViewCallback.java b/app/src/main/java/org/kiwix/kiwixmobile/bookmark/BookmarksViewCallback.java index d03fc03e2..06765cf97 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/bookmark/BookmarksViewCallback.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/bookmark/BookmarksViewCallback.java @@ -17,7 +17,7 @@ */ package org.kiwix.kiwixmobile.bookmark; -import org.kiwix.kiwixmobile.base.ViewCallback; +import org.kiwix.kiwixmobile.base.BaseContract; import java.util.ArrayList; @@ -25,7 +25,7 @@ import java.util.ArrayList; * Created by EladKeyshawn on 05/04/2017. */ -public interface BookmarksViewCallback extends ViewCallback { +public interface BookmarksViewCallback extends BaseContract.View { void showBookmarks(ArrayList bookmarks, ArrayList bookmarkUrls); void popDeleteBookmarksSnackbar(); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/search/SearchPresenter.java b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchPresenter.java index 0ab6759f4..47a69dff4 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/search/SearchPresenter.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchPresenter.java @@ -32,7 +32,7 @@ public class SearchPresenter extends BasePresenter { RecentSearchDao recentSearchDao; @Inject - public SearchPresenter() {} + SearchPresenter() {} @Override public void attachView(SearchViewCallback searchViewCallback) { @@ -40,7 +40,7 @@ public class SearchPresenter extends BasePresenter { } void getRecentSearches() { - getMvpView().addRecentSearches(recentSearchDao.getRecentSearches()); + view.addRecentSearches(recentSearchDao.getRecentSearches()); } void saveSearch(String title) { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/search/SearchViewCallback.java b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchViewCallback.java index 4a24369e4..4dc801a08 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/search/SearchViewCallback.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchViewCallback.java @@ -17,7 +17,7 @@ */ package org.kiwix.kiwixmobile.search; -import org.kiwix.kiwixmobile.base.ViewCallback; +import org.kiwix.kiwixmobile.base.BaseContract; import java.util.List; @@ -25,6 +25,6 @@ import java.util.List; * Created by srv_twry on 14/2/18. */ -public interface SearchViewCallback extends ViewCallback { +public interface SearchViewCallback extends BaseContract.View { void addRecentSearches(List recentSearches); } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewCallback.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewCallback.java index c46deb653..752e39b5a 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewCallback.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageViewCallback.java @@ -17,11 +17,11 @@ */ package org.kiwix.kiwixmobile.zim_manager; -import org.kiwix.kiwixmobile.base.ViewCallback; +import org.kiwix.kiwixmobile.base.BaseContract; /** * Created by srv_twry on 15/2/18. */ -public interface ZimManageViewCallback extends ViewCallback { +interface ZimManageViewCallback extends BaseContract.View { } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectPresenter.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectPresenter.java index 6c85f1b0d..5a48bcd23 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectPresenter.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectPresenter.java @@ -34,7 +34,7 @@ public class ZimFileSelectPresenter extends BasePresenter books = bookDao.getBooks(); - getMvpView().showFiles(books); + view.showFiles(books); } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectViewCallback.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectViewCallback.java index c5be8a024..015975a87 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectViewCallback.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectViewCallback.java @@ -17,7 +17,7 @@ */ package org.kiwix.kiwixmobile.zim_manager.fileselect_view; -import org.kiwix.kiwixmobile.base.ViewCallback; +import org.kiwix.kiwixmobile.base.BaseContract; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import java.util.ArrayList; @@ -25,6 +25,6 @@ import java.util.ArrayList; /** * Created by EladKeyshawn on 06/04/2017. */ -public interface ZimFileSelectViewCallback extends ViewCallback { +public interface ZimFileSelectViewCallback extends BaseContract.View { void showFiles(ArrayList books); } 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 index 0bcc3d712..e1a2c7259 100644 --- 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 @@ -42,17 +42,17 @@ public class LibraryPresenter extends BasePresenter { BookDao bookDao; @Inject - public LibraryPresenter() { + LibraryPresenter() { } void loadBooks() { - getMvpView().displayScanningContent(); + view.displayScanningContent(); kiwixService.getLibrary() .observeOn(AndroidSchedulers.mainThread()) - .subscribe(library -> getMvpView().showBooks(library.getBooks()), error -> { + .subscribe(library -> view.showBooks(library.getBooks()), error -> { String msg = error.getLocalizedMessage(); Log.w("kiwixLibrary", "Error loading books:" + (msg != null ? msg : "(null)")); - getMvpView().displayNoItemsFound(); + view.displayNoItemsFound(); }); } @@ -60,7 +60,7 @@ public class LibraryPresenter extends BasePresenter { for (LibraryNetworkEntity.Book book : bookDao.getDownloadingBooks()) { if (!DownloadFragment.mDownloads.containsValue(book)) { book.url = book.remoteUrl; - getMvpView().downloadFile(book); + view.downloadFile(book); } } } 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 index b379081f9..7529756e2 100644 --- 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 @@ -17,7 +17,7 @@ */ package org.kiwix.kiwixmobile.zim_manager.library_view; -import org.kiwix.kiwixmobile.base.ViewCallback; +import org.kiwix.kiwixmobile.base.BaseContract; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity.Book; @@ -27,7 +27,7 @@ import java.util.LinkedList; * Created by EladKeyshawn on 06/04/2017. */ -public interface LibraryViewCallback extends ViewCallback { +public interface LibraryViewCallback extends BaseContract.View { void showBooks(LinkedList books);