From 300b3818a07795b3783a3570b61d5a2b7a230893 Mon Sep 17 00:00:00 2001 From: Abdul Wadood Date: Tue, 27 Mar 2018 23:36:32 +0530 Subject: [PATCH] Update to Dagger 2.15 --- app/build.gradle | 8 +- .../kiwix/kiwixmobile/KiwixApplication.java | 51 +++++++----- .../kiwixmobile/KiwixMobileActivity.java | 18 ++--- .../kiwix/kiwixmobile/ZimContentProvider.java | 17 ++-- .../kiwix/kiwixmobile/base/BaseActivity.java | 43 +--------- .../kiwix/kiwixmobile/base/BaseFragment.java | 32 ++++++++ .../bookmarks_view/BookmarksActivity.java | 9 --- .../di/components/ApplicationComponent.java | 19 +---- .../di/modules/ActivityBindingModule.java | 40 ++++++++++ .../di/modules/ApplicationModule.java | 4 +- .../downloader/DownloadFragment.java | 22 ++--- .../kiwixmobile/search/SearchActivity.java | 19 ++--- .../settings/KiwixSettingsActivity.java | 20 ++--- .../zim_manager/ZimManageActivity.java | 33 +++++--- .../zim_manager/ZimManagePresenter.java | 36 ++++++--- .../ZimFileSelectFragment.java | 80 ++++++------------- .../library_view/LibraryFragment.java | 30 +++---- build.gradle | 1 + 18 files changed, 242 insertions(+), 240 deletions(-) create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/base/BaseFragment.java create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/di/modules/ActivityBindingModule.java diff --git a/app/build.gradle b/app/build.gradle index c69365fed..6b8c2871e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,11 +76,13 @@ dependencies { implementation group: 'com.google.guava', name: 'guava', version: '21.0' // Dagger - implementation 'com.google.dagger:dagger:2.0.2' - annotationProcessor "com.google.dagger:dagger-compiler:2.0.2" - androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:2.0.2" compileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" androidTestCompileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" + implementation "com.google.dagger:dagger:$daggerVersion" + implementation "com.google.dagger:dagger-android:$daggerVersion" + annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion" + annotationProcessor "com.google.dagger:dagger-android-processor:$daggerVersion" + androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion" // SquiDB implementation 'com.yahoo.squidb:squidb:2.0.0' diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixApplication.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixApplication.java index 3f850a25e..2104fbff8 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixApplication.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixApplication.java @@ -17,6 +17,7 @@ */ package org.kiwix.kiwixmobile; +import android.app.Activity; import android.content.Context; import android.support.multidex.MultiDexApplication; import android.support.v7.app.AppCompatDelegate; @@ -27,23 +28,49 @@ import org.kiwix.kiwixmobile.di.components.ApplicationComponent; import org.kiwix.kiwixmobile.di.components.DaggerApplicationComponent; import org.kiwix.kiwixmobile.di.modules.ApplicationModule; -public class KiwixApplication extends MultiDexApplication { +import javax.inject.Inject; + +import dagger.android.AndroidInjector; +import dagger.android.DispatchingAndroidInjector; +import dagger.android.HasActivityInjector; + +public class KiwixApplication extends MultiDexApplication implements HasActivityInjector { private static KiwixApplication application; + private static ApplicationComponent applicationComponent; static { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); } - private ApplicationComponent applicationComponent; + @Inject + DispatchingAndroidInjector activityInjector; public static KiwixApplication getInstance() { return application; } + public static ApplicationComponent getApplicationComponent() { + return applicationComponent; + } + + public static void setApplicationComponent(ApplicationComponent applicationComponent) { + KiwixApplication.applicationComponent = applicationComponent; + } + + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + application = this; + setApplicationComponent(DaggerApplicationComponent.builder() + .applicationModule(new ApplicationModule(this)) + .build()); + } + @Override public void onCreate() { super.onCreate(); + applicationComponent.inject(this); if (LeakCanary.isInAnalyzerProcess(this)) { // This process is dedicated to LeakCanary for heap analysis. // You should not init your app in this process. @@ -53,23 +80,7 @@ public class KiwixApplication extends MultiDexApplication { } @Override - protected void attachBaseContext(Context base) { - super.attachBaseContext(base); - application = this; - initializeInjector(); - } - - private void initializeInjector() { - setApplicationComponent(DaggerApplicationComponent.builder() - .applicationModule(new ApplicationModule(this)) - .build()); - } - - public ApplicationComponent getApplicationComponent() { - return this.applicationComponent; - } - - public void setApplicationComponent(ApplicationComponent applicationComponent) { - this.applicationComponent = applicationComponent; + public AndroidInjector activityInjector() { + return activityInjector; } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 2865a7a95..6f71c611a 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -81,7 +81,6 @@ import org.kiwix.kiwixmobile.base.BaseActivity; import org.kiwix.kiwixmobile.bookmarks_view.BookmarksActivity; import org.kiwix.kiwixmobile.database.BookmarksDao; import org.kiwix.kiwixmobile.database.KiwixDatabase; -import org.kiwix.kiwixmobile.di.components.ApplicationComponent; import org.kiwix.kiwixmobile.search.SearchActivity; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; import org.kiwix.kiwixmobile.utils.DimenUtils; @@ -115,6 +114,8 @@ import butterknife.ButterKnife; import okhttp3.OkHttpClient; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; +import static android.os.Build.VERSION.SDK_INT; +import static android.os.Build.VERSION_CODES; import static org.kiwix.kiwixmobile.TableDrawerAdapter.DocumentSection; import static org.kiwix.kiwixmobile.TableDrawerAdapter.TableClickListener; import static org.kiwix.kiwixmobile.search.SearchActivity.EXTRA_SEARCH_IN_TEXT; @@ -147,8 +148,6 @@ import static org.kiwix.kiwixmobile.utils.Constants.TAG_CURRENT_TAB; import static org.kiwix.kiwixmobile.utils.Constants.TAG_FILE_SEARCHED; import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; -import static android.os.Build.VERSION.SDK_INT; -import static android.os.Build.VERSION_CODES; public class KiwixMobileActivity extends BaseActivity implements WebViewCallback { @@ -686,10 +685,6 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback tts.shutdown(); } - @Override protected void setupDagger(ApplicationComponent appComponent) { - appComponent.inject(this); - } - private void updateTableOfContents() { getCurrentWebView().loadUrl("javascript:(" + documentParserJs + ")()"); } @@ -1382,12 +1377,9 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback AppWidgetManager widgetManager = AppWidgetManager.getInstance(context); int[] ids = widgetManager.getAppWidgetIds(new ComponentName(context, KiwixSearchWidget.class)); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - widgetManager.notifyAppWidgetViewDataChanged(ids, android.R.id.list); - - intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids); - context.sendBroadcast(intent); - } + widgetManager.notifyAppWidgetViewDataChanged(ids, android.R.id.list); + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids); + context.sendBroadcast(intent); } private void setUpWebView() { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java b/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java index 844c29321..255354f11 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java @@ -29,7 +29,6 @@ import android.os.ParcelFileDescriptor.AutoCloseOutputStream; import android.util.Log; import android.webkit.MimeTypeMap; -import java.io.RandomAccessFile; import org.kiwix.kiwixlib.JNIKiwix; import org.kiwix.kiwixlib.JNIKiwixException; import org.kiwix.kiwixlib.JNIKiwixInt; @@ -37,6 +36,7 @@ import org.kiwix.kiwixlib.JNIKiwixReader; import org.kiwix.kiwixlib.JNIKiwixSearcher; import org.kiwix.kiwixlib.JNIKiwixString; import org.kiwix.kiwixlib.Pair; +import org.kiwix.kiwixmobile.utils.files.FileUtils; import java.io.File; import java.io.FileNotFoundException; @@ -44,13 +44,13 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.RandomAccessFile; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.inject.Inject; -import org.kiwix.kiwixmobile.utils.files.FileUtils; import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX; @@ -70,18 +70,17 @@ public class ZimContentProvider extends ContentProvider { public static String zimFileName; - @Inject public static JNIKiwix jniKiwix; + @Inject + public JNIKiwix jniKiwix; public static JNIKiwixReader currentJNIReader; public static JNIKiwixSearcher jniSearcher; - @Inject public static Context context; - private static ArrayList listedEntries; public void setupDagger() { - KiwixApplication.getInstance().getApplicationComponent().inject(this); + KiwixApplication.getApplicationComponent().inject(this); setIcuDataDirectory(); jniSearcher = new JNIKiwixSearcher(); listedEntries = new ArrayList<>(); @@ -109,7 +108,7 @@ public class ZimContentProvider extends ContentProvider { * file path itself (embedded fulltext index) */ return file; } - + public synchronized static String setZimFile(String fileName) { if (!new File(fileName).exists()) { Log.e(TAG_KIWIX, "Unable to find the ZIM file " + fileName); @@ -445,8 +444,8 @@ public class ZimContentProvider extends ContentProvider { } private void setIcuDataDirectory() { - File workingDir = context.getFilesDir(); - String icuDirPath = loadICUData(context, workingDir); + File workingDir = KiwixApplication.getInstance().getFilesDir(); + String icuDirPath = loadICUData(KiwixApplication.getInstance(), workingDir); if (icuDirPath != null) { Log.d(TAG_KIWIX, "Setting the ICU directory path to " + icuDirPath); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/base/BaseActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/base/BaseActivity.java index b17244664..32fbb2aa6 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/base/BaseActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/base/BaseActivity.java @@ -21,48 +21,13 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; -import org.kiwix.kiwixmobile.KiwixApplication; -import org.kiwix.kiwixmobile.di.components.ApplicationComponent; +import dagger.android.AndroidInjection; public abstract class BaseActivity extends AppCompatActivity { - - @Override protected void onCreate(@Nullable Bundle savedInstanceState) { + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + AndroidInjection.inject(this); super.onCreate(savedInstanceState); - setupDagger(KiwixApplication.getInstance().getApplicationComponent()); - //attachPresenter(); } - - @Override protected void onStart() { - super.onStart(); - //presenter.onStart(); - } - - @Override protected void onResume() { - super.onResume(); - //presenter.onResume(); - } - - @Override protected void onPause() { - super.onPause(); - //presenter.onPause(); - } - - @Override protected void onStop() { - super.onStop(); - //presenter.onStop(); - } - - @Override protected void onDestroy() { - super.onDestroy(); - //presenter.onDestroy(); - } - - //protected void attachPresenter(Presenter presenter) { - // this.presenter = presenter; - //} - - protected abstract void setupDagger(ApplicationComponent appComponent); - - //public abstract void attachPresenter(); } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/base/BaseFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/base/BaseFragment.java new file mode 100644 index 000000000..d5c18e184 --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/base/BaseFragment.java @@ -0,0 +1,32 @@ +package org.kiwix.kiwixmobile.base; + +import android.app.Activity; +import android.content.Context; +import android.os.Build; +import android.support.v4.app.Fragment; + +import org.kiwix.kiwixmobile.KiwixApplication; + +/** + * All fragments should inherit from this fragment. + */ + +public abstract class BaseFragment extends Fragment { + + @Override + public void onAttach(Context context) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + KiwixApplication.getApplicationComponent().inject(this); + } + super.onAttach(context); + } + + @SuppressWarnings("deprecation") + @Override + public void onAttach(Activity activity) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + KiwixApplication.getApplicationComponent().inject(this); + } + super.onAttach(activity); + } +} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/bookmarks_view/BookmarksActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/bookmarks_view/BookmarksActivity.java index 66cb35a74..8c724668d 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/bookmarks_view/BookmarksActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/bookmarks_view/BookmarksActivity.java @@ -22,9 +22,7 @@ package org.kiwix.kiwixmobile.bookmarks_view; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceManager; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.design.widget.CoordinatorLayout; @@ -48,7 +46,6 @@ import android.widget.ListView; import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.base.BaseActivity; -import org.kiwix.kiwixmobile.di.components.ApplicationComponent; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; @@ -108,12 +105,6 @@ public class BookmarksActivity extends BaseActivity presenter.loadBookmarks(this); } - @Override - protected void setupDagger(ApplicationComponent appComponent) { - appComponent.inject(this); - } - - private void setNoBookmarksState() { if (bookmarksList.getCount() == 0) { noBookmarksLayout.setVisibility(View.VISIBLE); 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 0fda985b0..333216a64 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 @@ -17,20 +17,17 @@ */ package org.kiwix.kiwixmobile.di.components; -import org.kiwix.kiwixmobile.KiwixMobileActivity; +import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.ZimContentProvider; -import org.kiwix.kiwixmobile.bookmarks_view.BookmarksActivity; +import org.kiwix.kiwixmobile.base.BaseFragment; import org.kiwix.kiwixmobile.di.modules.ApplicationModule; import org.kiwix.kiwixmobile.di.modules.JNIModule; import org.kiwix.kiwixmobile.di.modules.NetworkModule; -import org.kiwix.kiwixmobile.downloader.DownloadFragment; import org.kiwix.kiwixmobile.downloader.DownloadService; import org.kiwix.kiwixmobile.library.LibraryAdapter; -import org.kiwix.kiwixmobile.search.SearchActivity; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; import org.kiwix.kiwixmobile.views.AutoCompleteAdapter; import org.kiwix.kiwixmobile.views.web.KiwixWebView; -import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity; import org.kiwix.kiwixmobile.zim_manager.fileselect_view.ZimFileSelectFragment; import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; @@ -45,13 +42,13 @@ import dagger.Component; JNIModule.class, }) public interface ApplicationComponent { - void inject(KiwixMobileActivity activity); + void inject(KiwixApplication application); void inject(DownloadService service); void inject(LibraryFragment libraryFragment); - void inject(BookmarksActivity bookmarksActivity); + void inject(BaseFragment baseFragment); void inject(ZimFileSelectFragment zimFileSelectFragment); @@ -59,17 +56,9 @@ public interface ApplicationComponent { void inject(LibraryAdapter libraryAdapter); - void inject(SearchActivity searchActivity); - - void inject(ZimManageActivity zimManageActivity); - void inject(KiwixWebView kiwixWebView); - void inject(KiwixSettingsActivity kiwixSettingsActivity); - void inject(KiwixSettingsActivity.PrefsFragment prefsFragment); - void inject(DownloadFragment downloadFragment); - void inject(AutoCompleteAdapter autoCompleteAdapter); } 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 new file mode 100644 index 000000000..519bf7971 --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ActivityBindingModule.java @@ -0,0 +1,40 @@ +package org.kiwix.kiwixmobile.di.modules; + +import org.kiwix.kiwixmobile.KiwixMobileActivity; +import org.kiwix.kiwixmobile.bookmarks_view.BookmarksActivity; +import org.kiwix.kiwixmobile.di.PerActivity; +import org.kiwix.kiwixmobile.search.SearchActivity; +import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; +import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity; + +import dagger.Module; +import dagger.android.ContributesAndroidInjector; + +/** + * Dagger.Android annotation processor will create the sub-components. We also specify the modules + * to be used by each sub-components and make Dagger.Android aware of a scope annotation + * {@link PerActivity}. + */ + +@Module +public abstract class ActivityBindingModule { + @PerActivity + @ContributesAndroidInjector + public abstract KiwixMobileActivity provideKiwixMobileActivity(); + + @PerActivity + @ContributesAndroidInjector + public abstract KiwixSettingsActivity provideKiwixSettingsActivity(); + + @PerActivity + @ContributesAndroidInjector + public abstract ZimManageActivity provideZimManageActivity(); + + @PerActivity + @ContributesAndroidInjector + public abstract SearchActivity provideSearchActivity(); + + @PerActivity + @ContributesAndroidInjector + public abstract BookmarksActivity provideBookmarksActivity(); +} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ApplicationModule.java b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ApplicationModule.java index 62b527b58..6ca032f54 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ApplicationModule.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ApplicationModule.java @@ -27,8 +27,10 @@ import javax.inject.Singleton; import dagger.Module; import dagger.Provides; +import dagger.android.AndroidInjectionModule; -@Module public class ApplicationModule { +@Module(includes = {ActivityBindingModule.class, AndroidInjectionModule.class}) +public class ApplicationModule { private final KiwixApplication application; public ApplicationModule(KiwixApplication application) { 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 96b03bb20..b4d924b29 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/downloader/DownloadFragment.java @@ -25,11 +25,9 @@ import android.database.DataSetObserver; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; -import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.util.Base64; import android.view.LayoutInflater; @@ -42,11 +40,10 @@ import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; -import java.util.Locale; - import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; +import org.kiwix.kiwixmobile.base.BaseFragment; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.utils.NetworkUtils; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; @@ -57,14 +54,13 @@ import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; import java.util.Arrays; import java.util.LinkedHashMap; +import java.util.Locale; import javax.inject.Inject; -import static org.kiwix.kiwixmobile.utils.Constants.PREF_WIFI_ONLY; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; - -public class DownloadFragment extends Fragment { +public class DownloadFragment extends BaseFragment { public static LinkedHashMap mDownloads = new LinkedHashMap<>(); public static LinkedHashMap mDownloadFiles = new LinkedHashMap<>(); @@ -76,15 +72,11 @@ public class DownloadFragment extends Fragment { private Activity faActivity; private boolean hasArtificiallyPaused; - @Inject static SharedPreferenceUtil sharedPreferenceUtil; - - private void setupDagger() { - KiwixApplication.getInstance().getApplicationComponent().inject(this); - } + @Inject + SharedPreferenceUtil sharedPreferenceUtil; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - setupDagger(); faActivity = super.getActivity(); relLayout = (RelativeLayout) inflater.inflate(R.layout.download_management, container, false); @@ -122,7 +114,7 @@ public class DownloadFragment extends Fragment { downloadAdapter.unRegisterDataSetObserver(); } - public static void showNoWiFiWarning(Context context, Runnable yesAction) { + public void showNoWiFiWarning(Context context, Runnable yesAction) { new AlertDialog.Builder(context) .setTitle(R.string.wifi_only_title) .setMessage(R.string.wifi_only_msg) @@ -200,7 +192,7 @@ public class DownloadFragment extends Fragment { String fileName = FileUtils.getFileName(mDownloadFiles.get(mKeys[position])); { Snackbar completeSnack = Snackbar.make(mainLayout, getResources().getString(R.string.download_complete_snackbar), Snackbar.LENGTH_LONG); - completeSnack.setAction(getResources().getString(R.string.open), v -> ZimFileSelectFragment.finishResult(fileName)).setActionTextColor(getResources().getColor(R.color.white)).show(); + completeSnack.setAction(getResources().getString(R.string.open), v -> zimManageActivity.finishResult(fileName)).setActionTextColor(getResources().getColor(R.color.white)).show(); } ZimFileSelectFragment zimFileSelectFragment = (ZimFileSelectFragment) zimManageActivity.mSectionsPagerAdapter.getItem(0); zimFileSelectFragment.addBook(fileName); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/search/SearchActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchActivity.java index abb33b73d..1c7fb53ba 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/search/SearchActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchActivity.java @@ -19,16 +19,13 @@ package org.kiwix.kiwixmobile.search; import android.content.ActivityNotFoundException; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.speech.RecognizerIntent; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.v4.view.MenuItemCompat; import android.support.v7.app.AlertDialog; -import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.text.Html; @@ -44,9 +41,9 @@ import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; -import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; +import org.kiwix.kiwixmobile.base.BaseActivity; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.views.AutoCompleteAdapter; @@ -58,11 +55,11 @@ import javax.inject.Inject; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_IS_WIDGET_VOICE; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_SEARCH; -import static org.kiwix.kiwixmobile.utils.Constants.TAG_FILE_SEARCHED; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_SEARCH_TEXT; +import static org.kiwix.kiwixmobile.utils.Constants.TAG_FILE_SEARCHED; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; -public class SearchActivity extends AppCompatActivity +public class SearchActivity extends BaseActivity implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener, SearchViewCallback { public static final String EXTRA_SEARCH_IN_TEXT = "bool_searchintext"; @@ -79,19 +76,13 @@ public class SearchActivity extends AppCompatActivity @Inject SharedPreferenceUtil sharedPreferenceUtil; - private void setupDagger() { - KiwixApplication.getInstance().getApplicationComponent().inject(this); - } - @Override protected void onCreate(Bundle savedInstanceState) { - setupDagger(); + super.onCreate(savedInstanceState); if (sharedPreferenceUtil.getPrefNightMode()) { setTheme(R.style.AppTheme_Night); } - super.onCreate(savedInstanceState); - View contentView = LayoutInflater.from(this).inflate(R.layout.search, null); - setContentView(contentView); + setContentView(R.layout.search); if (savedInstanceState != null) { searchText = savedInstanceState.getString(EXTRA_SEARCH_TEXT); 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 0f5ecbebe..9b8131da3 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java @@ -31,7 +31,6 @@ import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.support.v7.app.AlertDialog; -import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.webkit.WebView; @@ -42,12 +41,12 @@ import org.kiwix.kiwixmobile.BuildConfig; import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; +import org.kiwix.kiwixmobile.base.BaseActivity; import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.database.RecentSearchDao; import org.kiwix.kiwixmobile.utils.LanguageUtils; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.StyleUtils; -import org.kiwix.kiwixmobile.views.LanguageSelectDialog; import org.kiwix.kiwixmobile.views.SliderPreference; import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryUtils; @@ -76,7 +75,7 @@ import static org.kiwix.kiwixmobile.utils.Constants.RESULT_HISTORY_CLEARED; import static org.kiwix.kiwixmobile.utils.Constants.RESULT_RESTART; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; -public class KiwixSettingsActivity extends AppCompatActivity { +public class KiwixSettingsActivity extends BaseActivity { public static boolean allHistoryCleared = false; @@ -86,18 +85,13 @@ public class KiwixSettingsActivity extends AppCompatActivity { @Inject SharedPreferenceUtil sharedPreferenceUtil; - private void setupDagger() { - KiwixApplication.getInstance().getApplicationComponent().inject(this); - } - @Override public void onCreate(Bundle savedInstanceState) { - setupDagger(); - if(nightMode(sharedPreferenceUtil)){ - setTheme(R.style.AppTheme_Night); - } getWindow().setWindowAnimations(R.style.WindowAnimationTransition); super.onCreate(savedInstanceState); + if (nightMode(sharedPreferenceUtil)) { + setTheme(R.style.AppTheme_Night); + } setContentView(R.layout.settings); allHistoryCleared = false; @@ -152,7 +146,7 @@ public class KiwixSettingsActivity extends AppCompatActivity { @Inject SharedPreferenceUtil sharedPreferenceUtil; void setupDagger() { - KiwixApplication.getInstance().getApplicationComponent().inject(this); + KiwixApplication.getApplicationComponent().inject(this); } @Override @@ -200,7 +194,7 @@ public class KiwixSettingsActivity extends AppCompatActivity { } else { findPreference(PREF_STORAGE).setTitle(sharedPreferenceUtil.getPrefStorageTitle("External")); } - findPreference(PREF_STORAGE).setSummary(LibraryUtils.bytesToHuman( new File(sharedPreferenceUtil.getPrefStorage()).getFreeSpace())); + findPreference(PREF_STORAGE).setSummary(LibraryUtils.bytesToHuman(new File(sharedPreferenceUtil.getPrefStorage()).getFreeSpace())); } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java index 6bcd5982d..d44db51a1 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java @@ -17,7 +17,9 @@ */ package org.kiwix.kiwixmobile.zim_manager; +import android.app.Activity; import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.provider.Settings; import android.support.annotation.NonNull; @@ -26,7 +28,6 @@ import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.TabLayout; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; -import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.util.Log; @@ -34,19 +35,22 @@ import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; -import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; +import org.kiwix.kiwixmobile.base.BaseActivity; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.views.LanguageSelectDialog; import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; +import java.io.File; + import javax.inject.Inject; +import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; -public class ZimManageActivity extends AppCompatActivity implements ZimManageViewCallback { +public class ZimManageActivity extends BaseActivity implements ZimManageViewCallback { public static final String TAB_EXTRA = "TAB"; /** @@ -81,17 +85,12 @@ public class ZimManageActivity extends AppCompatActivity implements ZimManageVie @Inject SharedPreferenceUtil sharedPreferenceUtil; - private void setupDagger() { - KiwixApplication.getInstance().getApplicationComponent().inject(this); - } - @Override protected void onCreate(Bundle savedInstanceState) { - setupDagger(); + super.onCreate(savedInstanceState); if (KiwixSettingsActivity.nightMode(sharedPreferenceUtil)) { setTheme(R.style.AppTheme_Night); } - super.onCreate(savedInstanceState); setContentView(R.layout.zim_manager); setUpToolbar(); @@ -131,7 +130,7 @@ public class ZimManageActivity extends AppCompatActivity implements ZimManageVie // Disable scrolling for the AppBarLayout on top of the screen // User can only scroll the PageViewer component - AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar); + AppBarLayout appBarLayout = findViewById(R.id.appbar); if (appBarLayout.getLayoutParams() != null) { CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams(); AppBarLayout.Behavior appBarLayoutBehaviour = new AppBarLayout.Behavior(); @@ -257,6 +256,20 @@ public class ZimManageActivity extends AppCompatActivity implements ZimManageVie } } + // Set zim file and return + public void finishResult(String path) { + if (path != null) { + File file = new File(path); + Uri uri = Uri.fromFile(file); + Log.i(TAG_KIWIX, "Opening Zim File: " + uri); + setResult(Activity.RESULT_OK, new Intent().setData(uri)); + finish(); + } else { + setResult(Activity.RESULT_CANCELED); + finish(); + } + } + private void showLanguageSelect() { new LanguageSelectDialog.Builder(this, dialogStyle()) .setLanguages(mSectionsPagerAdapter.libraryFragment.libraryAdapter.languages) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManagePresenter.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManagePresenter.java index 153ed798c..2ebe09ec7 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManagePresenter.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManagePresenter.java @@ -17,30 +17,46 @@ */ package org.kiwix.kiwixmobile.zim_manager; +import android.app.AlertDialog; import android.content.Context; import android.util.Log; +import org.kiwix.kiwixmobile.KiwixMobileActivity; +import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.base.BasePresenter; -import org.kiwix.kiwixmobile.downloader.DownloadFragment; import org.kiwix.kiwixmobile.downloader.DownloadService; +import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import javax.inject.Inject; import static org.kiwix.kiwixmobile.zim_manager.ZimManageActivity.KIWIX_TAG; /** - * Created by srv_twry on 15/2/18. + * Presenter for {@link ZimManageActivity} */ -public class ZimManagePresenter extends BasePresenter { +class ZimManagePresenter extends BasePresenter { - @Inject - public ZimManagePresenter() {} + @Inject + SharedPreferenceUtil mSharedPreferenceUtil; - void showNoWifiWarning(Context context, String action) { - if (DownloadService.ACTION_NO_WIFI.equals(action)) { - DownloadFragment.showNoWiFiWarning(context, () -> {}); - Log.i(KIWIX_TAG, "No WiFi, showing warning"); - } + @Inject + ZimManagePresenter() { + } + + void showNoWifiWarning(Context context, String action) { + if (DownloadService.ACTION_NO_WIFI.equals(action)) { + new AlertDialog.Builder(context) + .setTitle(R.string.wifi_only_title) + .setMessage(R.string.wifi_only_msg) + .setPositiveButton(R.string.yes, (dialog, i) -> { + mSharedPreferenceUtil.putPrefWifiOnly(false); + KiwixMobileActivity.wifiOnly = false; + }) + .setNegativeButton(R.string.no, (dialog, i) -> { + }) + .show(); + Log.i(KIWIX_TAG, "No WiFi, showing warning"); } + } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.java index d67022f86..2f3837b3b 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/fileselect_view/ZimFileSelectFragment.java @@ -20,14 +20,10 @@ package org.kiwix.kiwixmobile.zim_manager.fileselect_view; import android.Manifest; -import android.app.Activity; import android.content.Context; -import android.content.Intent; import android.content.pm.PackageManager; -import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AlertDialog; @@ -47,6 +43,7 @@ import android.widget.Toast; import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.ZimContentProvider; +import org.kiwix.kiwixmobile.base.BaseFragment; import org.kiwix.kiwixmobile.database.BookDao; import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.library.LibraryAdapter; @@ -68,17 +65,16 @@ import java.util.List; import javax.inject.Inject; import static org.kiwix.kiwixmobile.utils.Constants.REQUEST_STORAGE_PERMISSION; -import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX; import static org.kiwix.kiwixmobile.utils.NetworkUtils.parseURL; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; -public class ZimFileSelectFragment extends Fragment +public class ZimFileSelectFragment extends BaseFragment implements OnItemClickListener, AdapterView.OnItemLongClickListener, ZimFileSelectViewCallback{ - public static ZimManageActivity context; public RelativeLayout llLayout; public SwipeRefreshLayout swipeRefreshLayout; + private ZimManageActivity zimManageActivity; private RescanDataAdapter mRescanAdapter; private ArrayList mFiles; private ListView mZimFileList; @@ -91,14 +87,10 @@ public class ZimFileSelectFragment extends Fragment @Inject BookUtils bookUtils; @Inject SharedPreferenceUtil sharedPreferenceUtil; - private void setupDagger() { - KiwixApplication.getInstance().getApplicationComponent().inject(this); - } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - context = (ZimManageActivity) super.getActivity(); - setupDagger(); + KiwixApplication.getApplicationComponent().inject(this); + zimManageActivity = (ZimManageActivity) super.getActivity(); presenter.attachView(this); // Replace LinearLayout by the type of the root element of the layout you're trying to load llLayout = (RelativeLayout) inflater.inflate(R.layout.zim_list, container, false); @@ -111,45 +103,25 @@ public class ZimFileSelectFragment extends Fragment // SwipeRefreshLayout for the list view swipeRefreshLayout = llLayout.findViewById(R.id.zim_swiperefresh); - swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { - @Override - public void onRefresh() { - refreshFragment(); - } - }); + swipeRefreshLayout.setOnRefreshListener(this::refreshFragment); // A boolean to distinguish between a user refresh and a normal loading mHasRefresh = false; - mRescanAdapter = new RescanDataAdapter(ZimFileSelectFragment.context, 0, mFiles); + mRescanAdapter = new RescanDataAdapter(zimManageActivity, 0, mFiles); // Allow temporary use of ZimContentProvider to query books ZimContentProvider.canIterate = true; - presenter.loadLocalZimFileFromDb(context); - bookDao = new BookDao(KiwixDatabase.getInstance(context)); + presenter.loadLocalZimFileFromDb(zimManageActivity); + bookDao = new BookDao(KiwixDatabase.getInstance(zimManageActivity)); return llLayout; // We must return the loaded Layout } - // Set zim file and return - public static void finishResult(String path) { - ZimManageActivity zimManageActivity = context; - if (path != null) { - File file = new File(path); - Uri uri = Uri.fromFile(file); - Log.i(TAG_KIWIX, "Opening Zim File: " + uri); - zimManageActivity.setResult(Activity.RESULT_OK, new Intent().setData(uri)); - zimManageActivity.finish(); - } else { - zimManageActivity.setResult(Activity.RESULT_CANCELED); - zimManageActivity.finish(); - } - } - @Override public void onResume() { - presenter.loadLocalZimFileFromDb(context); + presenter.loadLocalZimFileFromDb(zimManageActivity); super.onResume(); } @@ -178,7 +150,7 @@ public class ZimFileSelectFragment extends Fragment } mHasRefresh = true; - presenter.loadLocalZimFileFromDb(context); + presenter.loadLocalZimFileFromDb(zimManageActivity); } // Add book after download @@ -225,11 +197,11 @@ public class ZimFileSelectFragment extends Fragment checkEmpty(); - new FileSearch(context, new FileSearch.ResultListener() { + new FileSearch(zimManageActivity, new FileSearch.ResultListener() { @Override public void onBookFound(LibraryNetworkEntity.Book book) { if (!mFiles.contains(book)) { - context.runOnUiThread(() -> { + zimManageActivity.runOnUiThread(() -> { Log.i("Scanner", "File Search: Found Book " + book.title); mFiles.add(book); mRescanAdapter.notifyDataSetChanged(); @@ -251,12 +223,12 @@ public class ZimFileSelectFragment extends Fragment boolean cached = mFiles.containsAll(bookDao.getBooks()) && bookDao.getBooks().containsAll(mFiles); // If content changed then update the list of downloadable books - if (!cached && context.mSectionsPagerAdapter.libraryFragment.libraryAdapter != null && context.searchView != null) { - context.mSectionsPagerAdapter.libraryFragment.libraryAdapter.getFilter().filter(context.searchView.getQuery()); + if (!cached && zimManageActivity.mSectionsPagerAdapter.libraryFragment.libraryAdapter != null && zimManageActivity.searchView != null) { + zimManageActivity.mSectionsPagerAdapter.libraryFragment.libraryAdapter.getFilter().filter(zimManageActivity.searchView.getQuery()); } // Save the current list of books - context.runOnUiThread(() -> { + zimManageActivity.runOnUiThread(() -> { mRescanAdapter.notifyDataSetChanged(); bookDao.saveBooks(mFiles); checkEmpty(); @@ -278,7 +250,7 @@ public class ZimFileSelectFragment extends Fragment && grantResults[0] == PackageManager.PERMISSION_GRANTED) { getFiles(); } else if (grantResults.length != 0) { - super.getActivity().finish(); + zimManageActivity.finish(); } } @@ -296,11 +268,11 @@ public class ZimFileSelectFragment extends Fragment file = data.file.getPath(); if (!data.file.canRead()) { - Toast.makeText(context, getString(R.string.error_filenotfound), Toast.LENGTH_LONG).show(); + Toast.makeText(zimManageActivity, getString(R.string.error_filenotfound), Toast.LENGTH_LONG).show(); return; } - finishResult(file); + zimManageActivity.finishResult(file); } @Override @@ -310,13 +282,13 @@ public class ZimFileSelectFragment extends Fragment } public void deleteSpecificZimDialog(int position) { - new AlertDialog.Builder(super.getActivity(), dialogStyle()) + new AlertDialog.Builder(zimManageActivity, dialogStyle()) .setMessage(getString(R.string.delete_specific_zim)) .setPositiveButton(getResources().getString(R.string.delete), (dialog, which) -> { if (deleteSpecificZimFile(position)) { - Toast.makeText(context, getResources().getString(R.string.delete_specific_zim_toast), Toast.LENGTH_SHORT).show(); + Toast.makeText(zimManageActivity, getResources().getString(R.string.delete_specific_zim_toast), Toast.LENGTH_SHORT).show(); } else { - Toast.makeText(context, getResources().getString(R.string.delete_zim_failed), Toast.LENGTH_SHORT).show(); + Toast.makeText(zimManageActivity, getResources().getString(R.string.delete_zim_failed), Toast.LENGTH_SHORT).show(); } }) .setNegativeButton(android.R.string.no, (dialog, which) -> { @@ -335,8 +307,8 @@ public class ZimFileSelectFragment extends Fragment mFiles.remove(position); mRescanAdapter.notifyDataSetChanged(); checkEmpty(); - if (context.mSectionsPagerAdapter.libraryFragment.libraryAdapter != null) { - context.mSectionsPagerAdapter.libraryFragment.libraryAdapter.getFilter().filter(context.searchView.getQuery()); + if (zimManageActivity.mSectionsPagerAdapter.libraryFragment.libraryAdapter != null) { + zimManageActivity.mSectionsPagerAdapter.libraryFragment.libraryAdapter.getFilter().filter(zimManageActivity.searchView.getQuery()); } return true; } @@ -361,7 +333,7 @@ public class ZimFileSelectFragment extends Fragment ViewHolder holder; LibraryNetworkEntity.Book book = getItem(position); if (convertView == null) { - convertView = View.inflate(context, R.layout.library_item, null); + convertView = View.inflate(zimManageActivity, R.layout.library_item, null); holder = new ViewHolder(); holder.title = convertView.findViewById(R.id.title); holder.description = convertView.findViewById(R.id.description); @@ -389,7 +361,7 @@ public class ZimFileSelectFragment extends Fragment holder.date.setText(book.getDate()); holder.size.setText(LibraryAdapter.createGbString(book.getSize())); holder.fileName.setText(parseURL(getActivity(), book.file.getPath())); - holder.favicon.setImageBitmap(LibraryAdapter.createBitmapFromEncodedString(book.getFavicon(), context)); + holder.favicon.setImageBitmap(LibraryAdapter.createBitmapFromEncodedString(book.getFavicon(), zimManageActivity)); //// Check if no value is empty. Set the view to View.GONE, if it is. To View.VISIBLE, if not. diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java index 4258eddf2..38c6a065b 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/library_view/LibraryFragment.java @@ -17,6 +17,7 @@ */ package org.kiwix.kiwixmobile.zim_manager.library_view; +import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; @@ -29,7 +30,6 @@ import android.net.NetworkInfo; import android.os.Bundle; import android.os.IBinder; import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.widget.SwipeRefreshLayout; import android.util.Log; @@ -46,11 +46,11 @@ import android.widget.Toast; import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.R; +import org.kiwix.kiwixmobile.base.BaseFragment; import org.kiwix.kiwixmobile.downloader.DownloadFragment; import org.kiwix.kiwixmobile.downloader.DownloadIntent; import org.kiwix.kiwixmobile.downloader.DownloadService; import org.kiwix.kiwixmobile.library.LibraryAdapter; -import org.kiwix.kiwixmobile.network.KiwixService; import org.kiwix.kiwixmobile.utils.NetworkUtils; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.StorageUtils; @@ -75,7 +75,7 @@ import static org.kiwix.kiwixmobile.downloader.DownloadService.KIWIX_ROOT; import static org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity.Book; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_BOOK; -public class LibraryFragment extends Fragment +public class LibraryFragment extends BaseFragment implements AdapterView.OnItemClickListener, StorageSelectDialog.OnSelectListener, LibraryViewCallback { @@ -86,9 +86,6 @@ public class LibraryFragment extends Fragment @BindView(R.id.network_permission_button) Button permissionButton; - @Inject - KiwixService kiwixService; - public LinearLayout llLayout; @BindView(R.id.library_swiperefresh) @@ -121,15 +118,10 @@ public class LibraryFragment extends Fragment @Inject SharedPreferenceUtil sharedPreferenceUtil; - private void setupDagger() { - KiwixApplication.getInstance().getApplicationComponent().inject(this); - } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - - setupDagger(); + KiwixApplication.getApplicationComponent().inject(this); TestingUtils.bindResource(LibraryFragment.class); llLayout = (LinearLayout) inflater.inflate(R.layout.activity_library, container, false); ButterKnife.bind(this, llLayout); @@ -299,9 +291,17 @@ public class LibraryFragment extends Fragment } if (KiwixMobileActivity.wifiOnly && !NetworkUtils.isWiFi(getContext())) { - DownloadFragment.showNoWiFiWarning(getContext(), () -> { - downloadFile((Book) parent.getAdapter().getItem(position)); - }); + new AlertDialog.Builder(getContext()) + .setTitle(R.string.wifi_only_title) + .setMessage(R.string.wifi_only_msg) + .setPositiveButton(R.string.yes, (dialog, i) -> { + sharedPreferenceUtil.putPrefWifiOnly(false); + KiwixMobileActivity.wifiOnly = false; + downloadFile((Book) parent.getAdapter().getItem(position)); + }) + .setNegativeButton(R.string.no, (dialog, i) -> { + }) + .show(); } else { downloadFile((Book) parent.getAdapter().getItem(position)); } diff --git a/build.gradle b/build.gradle index fc14cc435..90af3cb28 100644 --- a/build.gradle +++ b/build.gradle @@ -22,6 +22,7 @@ ext { okHttpVersion = '3.9.1' retrofitVersion = '2.3.0' javaxAnnotationVersion = '1.3.2' + daggerVersion = '2.15' } allprojects {