From 1a20dcae8762c5b7821ab849471b59242290c810 Mon Sep 17 00:00:00 2001 From: Adeel Zafar Date: Mon, 12 Aug 2019 00:17:21 +0500 Subject: [PATCH] Load Books in ZimHostActivity Make MainContract public Remove ZimFileSelectFragment --- .../di/modules/ActivityBindingModule.java | 2 +- .../kiwix/kiwixmobile/main/MainContract.java | 6 +- .../webserver/ZimHostActivity.java | 60 ++++++++++++++++--- app/src/main/res/layout/activity_zim_host.xml | 7 ++- 4 files changed, 59 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ActivityBindingModule.java b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ActivityBindingModule.java index 97f05e5b5..e68a3ec10 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ActivityBindingModule.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ActivityBindingModule.java @@ -73,6 +73,6 @@ public abstract class ActivityBindingModule { public abstract HelpActivity provideHelpActivity(); @PerActivity - @ContributesAndroidInjector + @ContributesAndroidInjector(modules = MainModule.class) public abstract ZimHostActivity provideZimHostActivity(); } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/MainContract.java b/app/src/main/java/org/kiwix/kiwixmobile/main/MainContract.java index 5aa973afe..aa66a5012 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/main/MainContract.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/main/MainContract.java @@ -10,15 +10,15 @@ import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BooksOnDiskList * The contract between {@link MainActivity} and {@link MainPresenter}. */ -class MainContract { +public class MainContract { - interface View extends BaseContract.View { + public interface View extends BaseContract.View { void addBooks(List books); void refreshBookmarksUrl(List urls); } - interface Presenter extends BaseContract.Presenter { + public interface Presenter extends BaseContract.Presenter { void loadBooks(); void saveBooks(List books); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/webserver/ZimHostActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/webserver/ZimHostActivity.java index 9f07c4759..578e729f3 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/webserver/ZimHostActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/webserver/ZimHostActivity.java @@ -10,6 +10,7 @@ import android.content.IntentSender; import android.content.ServiceConnection; import android.content.pm.PackageManager; import android.net.ConnectivityManager; +import android.net.Uri; import android.net.wifi.WifiConfiguration; import android.os.Build; import android.os.Handler; @@ -27,8 +28,7 @@ import android.os.Bundle; import androidx.appcompat.widget.Toolbar; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentTransaction; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import com.google.android.gms.common.api.ApiException; import com.google.android.gms.common.api.ResolvableApiException; @@ -39,24 +39,36 @@ import com.google.android.gms.location.LocationSettingsResponse; import com.google.android.gms.location.LocationSettingsStates; import com.google.android.gms.location.LocationSettingsStatusCodes; import com.google.android.gms.tasks.Task; +import java.io.File; import java.lang.reflect.Method; +import java.util.List; +import javax.inject.Inject; +import kotlin.Unit; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.base.BaseActivity; +import org.kiwix.kiwixmobile.main.MainActivity; +import org.kiwix.kiwixmobile.main.MainContract; import org.kiwix.kiwixmobile.wifi_hotspot.HotspotService; import org.kiwix.kiwixmobile.zim_manager.fileselect_view.ZimFileSelectFragment; +import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BookOnDiskDelegate; +import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BooksOnDiskAdapter; +import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BooksOnDiskListItem; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; import static org.kiwix.kiwixmobile.webserver.WebServerHelper.getAddress; import static org.kiwix.kiwixmobile.webserver.WebServerHelper.isServerStarted; public class ZimHostActivity extends BaseActivity implements - ServerStateListener { + ServerStateListener, MainContract.View { @BindView(R.id.startServerButton) Button startServerButton; @BindView(R.id.server_textView) TextView serverTextView; + @Inject + MainContract.Presenter presenter; + public static final String ACTION_TURN_ON_AFTER_O = "Turn_on_hotspot_after_oreo"; public static final String ACTION_TURN_OFF_AFTER_O = "Turn_off_hotspot_after_oreo"; public static final String ACTION_IS_HOTSPOT_ENABLED = "Is_hotspot_enabled"; @@ -68,6 +80,7 @@ public class ZimHostActivity extends BaseActivity implements private static final int LOCATION_SETTINGS_PERMISSION_RESULT = 101; private Intent serviceIntent; private Task task; + private BooksOnDiskAdapter booksAdapter; HotspotService hotspotService; String ip; boolean bound; @@ -88,6 +101,23 @@ public class ZimHostActivity extends BaseActivity implements startServerButton.setBackgroundColor(getResources().getColor(R.color.stopServer)); } + booksAdapter = new BooksOnDiskAdapter( + new BookOnDiskDelegate.BookDelegate(sharedPreferenceUtil, + bookOnDiskItem -> { + open(bookOnDiskItem); + return Unit.INSTANCE; + }, + null, + null), + BookOnDiskDelegate.LanguageDelegate.INSTANCE + ); + + presenter.attachView(this); + + RecyclerView homeRecyclerView = findViewById(R.id.recycler_view_zim_host); + presenter.loadBooks(); + homeRecyclerView.setAdapter(booksAdapter); + serviceConnection = new ServiceConnection() { @Override @@ -104,12 +134,6 @@ public class ZimHostActivity extends BaseActivity implements } }; - FragmentManager fragmentManager = getSupportFragmentManager(); - FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - ZimFileSelectFragment fragment = new ZimFileSelectFragment(); - fragmentTransaction.add(R.id.frameLayoutServer, fragment); - fragmentTransaction.commit(); - serviceIntent = new Intent(this, HotspotService.class); startServerButton.setOnClickListener(new View.OnClickListener() { @@ -132,6 +156,14 @@ public class ZimHostActivity extends BaseActivity implements }); } + public void open(BooksOnDiskListItem.BookOnDisk bookOnDisk) { + File file = bookOnDisk.getFile(); + Intent zimFile = new Intent(this, MainActivity.class); + zimFile.setData(Uri.fromFile(file)); + startActivity(zimFile); + finish(); + } + @Override protected void onStart() { super.onStart(); bindService(); @@ -172,6 +204,7 @@ public class ZimHostActivity extends BaseActivity implements @Override protected void onResume() { super.onResume(); + presenter.loadBooks(); if (isServerStarted) { ip = getAddress(); ip = ip.replaceAll("\n", ""); @@ -249,6 +282,7 @@ public class ZimHostActivity extends BaseActivity implements @Override protected void onDestroy() { super.onDestroy(); + presenter.detachView(); } private void setUpToolbar() { @@ -472,4 +506,12 @@ public class ZimHostActivity extends BaseActivity implements outState.putString(IP_STATE_KEY, ip); } } + + @Override public void addBooks(List books) { + booksAdapter.setItems(books); + } + + @Override public void refreshBookmarksUrl(List urls) { + //Do nothing + } } diff --git a/app/src/main/res/layout/activity_zim_host.xml b/app/src/main/res/layout/activity_zim_host.xml index 15992fce4..e85cfe47e 100644 --- a/app/src/main/res/layout/activity_zim_host.xml +++ b/app/src/main/res/layout/activity_zim_host.xml @@ -38,10 +38,11 @@ app:layout_constraintTop_toBottomOf="@+id/appBarLayout2" /> -