Update to Dagger 2.15

This commit is contained in:
Abdul Wadood 2018-03-27 23:36:32 +05:30 committed by Isaac Hutt
parent fba4adf0f1
commit 300b3818a0
18 changed files with 242 additions and 240 deletions

View File

@ -76,11 +76,13 @@ dependencies {
implementation group: 'com.google.guava', name: 'guava', version: '21.0' implementation group: 'com.google.guava', name: 'guava', version: '21.0'
// Dagger // 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" compileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion"
androidTestCompileOnly "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 // SquiDB
implementation 'com.yahoo.squidb:squidb:2.0.0' implementation 'com.yahoo.squidb:squidb:2.0.0'

View File

@ -17,6 +17,7 @@
*/ */
package org.kiwix.kiwixmobile; package org.kiwix.kiwixmobile;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.support.multidex.MultiDexApplication; import android.support.multidex.MultiDexApplication;
import android.support.v7.app.AppCompatDelegate; 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.components.DaggerApplicationComponent;
import org.kiwix.kiwixmobile.di.modules.ApplicationModule; 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 KiwixApplication application;
private static ApplicationComponent applicationComponent;
static { static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
} }
private ApplicationComponent applicationComponent; @Inject
DispatchingAndroidInjector<Activity> activityInjector;
public static KiwixApplication getInstance() { public static KiwixApplication getInstance() {
return application; 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 @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
applicationComponent.inject(this);
if (LeakCanary.isInAnalyzerProcess(this)) { if (LeakCanary.isInAnalyzerProcess(this)) {
// This process is dedicated to LeakCanary for heap analysis. // This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process. // You should not init your app in this process.
@ -53,23 +80,7 @@ public class KiwixApplication extends MultiDexApplication {
} }
@Override @Override
protected void attachBaseContext(Context base) { public AndroidInjector<Activity> activityInjector() {
super.attachBaseContext(base); return activityInjector;
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;
} }
} }

View File

@ -81,7 +81,6 @@ import org.kiwix.kiwixmobile.base.BaseActivity;
import org.kiwix.kiwixmobile.bookmarks_view.BookmarksActivity; import org.kiwix.kiwixmobile.bookmarks_view.BookmarksActivity;
import org.kiwix.kiwixmobile.database.BookmarksDao; import org.kiwix.kiwixmobile.database.BookmarksDao;
import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.database.KiwixDatabase;
import org.kiwix.kiwixmobile.di.components.ApplicationComponent;
import org.kiwix.kiwixmobile.search.SearchActivity; import org.kiwix.kiwixmobile.search.SearchActivity;
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
import org.kiwix.kiwixmobile.utils.DimenUtils; import org.kiwix.kiwixmobile.utils.DimenUtils;
@ -115,6 +114,8 @@ import butterknife.ButterKnife;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; 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.DocumentSection;
import static org.kiwix.kiwixmobile.TableDrawerAdapter.TableClickListener; import static org.kiwix.kiwixmobile.TableDrawerAdapter.TableClickListener;
import static org.kiwix.kiwixmobile.search.SearchActivity.EXTRA_SEARCH_IN_TEXT; 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_FILE_SEARCHED;
import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX; import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX;
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; 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 { public class KiwixMobileActivity extends BaseActivity implements WebViewCallback {
@ -686,10 +685,6 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
tts.shutdown(); tts.shutdown();
} }
@Override protected void setupDagger(ApplicationComponent appComponent) {
appComponent.inject(this);
}
private void updateTableOfContents() { private void updateTableOfContents() {
getCurrentWebView().loadUrl("javascript:(" + documentParserJs + ")()"); getCurrentWebView().loadUrl("javascript:(" + documentParserJs + ")()");
} }
@ -1382,13 +1377,10 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
AppWidgetManager widgetManager = AppWidgetManager.getInstance(context); AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
int[] ids = widgetManager.getAppWidgetIds(new ComponentName(context, KiwixSearchWidget.class)); 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); widgetManager.notifyAppWidgetViewDataChanged(ids, android.R.id.list);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
context.sendBroadcast(intent); context.sendBroadcast(intent);
} }
}
private void setUpWebView() { private void setUpWebView() {

View File

@ -29,7 +29,6 @@ import android.os.ParcelFileDescriptor.AutoCloseOutputStream;
import android.util.Log; import android.util.Log;
import android.webkit.MimeTypeMap; import android.webkit.MimeTypeMap;
import java.io.RandomAccessFile;
import org.kiwix.kiwixlib.JNIKiwix; import org.kiwix.kiwixlib.JNIKiwix;
import org.kiwix.kiwixlib.JNIKiwixException; import org.kiwix.kiwixlib.JNIKiwixException;
import org.kiwix.kiwixlib.JNIKiwixInt; import org.kiwix.kiwixlib.JNIKiwixInt;
@ -37,6 +36,7 @@ import org.kiwix.kiwixlib.JNIKiwixReader;
import org.kiwix.kiwixlib.JNIKiwixSearcher; import org.kiwix.kiwixlib.JNIKiwixSearcher;
import org.kiwix.kiwixlib.JNIKiwixString; import org.kiwix.kiwixlib.JNIKiwixString;
import org.kiwix.kiwixlib.Pair; import org.kiwix.kiwixlib.Pair;
import org.kiwix.kiwixmobile.utils.files.FileUtils;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@ -44,13 +44,13 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.inject.Inject; import javax.inject.Inject;
import org.kiwix.kiwixmobile.utils.files.FileUtils;
import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX; import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX;
@ -70,18 +70,17 @@ public class ZimContentProvider extends ContentProvider {
public static String zimFileName; public static String zimFileName;
@Inject public static JNIKiwix jniKiwix; @Inject
public JNIKiwix jniKiwix;
public static JNIKiwixReader currentJNIReader; public static JNIKiwixReader currentJNIReader;
public static JNIKiwixSearcher jniSearcher; public static JNIKiwixSearcher jniSearcher;
@Inject public static Context context;
private static ArrayList<String> listedEntries; private static ArrayList<String> listedEntries;
public void setupDagger() { public void setupDagger() {
KiwixApplication.getInstance().getApplicationComponent().inject(this); KiwixApplication.getApplicationComponent().inject(this);
setIcuDataDirectory(); setIcuDataDirectory();
jniSearcher = new JNIKiwixSearcher(); jniSearcher = new JNIKiwixSearcher();
listedEntries = new ArrayList<>(); listedEntries = new ArrayList<>();
@ -445,8 +444,8 @@ public class ZimContentProvider extends ContentProvider {
} }
private void setIcuDataDirectory() { private void setIcuDataDirectory() {
File workingDir = context.getFilesDir(); File workingDir = KiwixApplication.getInstance().getFilesDir();
String icuDirPath = loadICUData(context, workingDir); String icuDirPath = loadICUData(KiwixApplication.getInstance(), workingDir);
if (icuDirPath != null) { if (icuDirPath != null) {
Log.d(TAG_KIWIX, "Setting the ICU directory path to " + icuDirPath); Log.d(TAG_KIWIX, "Setting the ICU directory path to " + icuDirPath);

View File

@ -21,48 +21,13 @@ import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import org.kiwix.kiwixmobile.KiwixApplication; import dagger.android.AndroidInjection;
import org.kiwix.kiwixmobile.di.components.ApplicationComponent;
public abstract class BaseActivity extends AppCompatActivity { public abstract class BaseActivity extends AppCompatActivity {
@Override
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
AndroidInjection.inject(this);
super.onCreate(savedInstanceState); 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();
} }

View File

@ -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);
}
}

View File

@ -22,9 +22,7 @@ package org.kiwix.kiwixmobile.bookmarks_view;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.Settings; import android.provider.Settings;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.CoordinatorLayout;
@ -48,7 +46,6 @@ import android.widget.ListView;
import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.base.BaseActivity; import org.kiwix.kiwixmobile.base.BaseActivity;
import org.kiwix.kiwixmobile.di.components.ApplicationComponent;
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
@ -108,12 +105,6 @@ public class BookmarksActivity extends BaseActivity
presenter.loadBookmarks(this); presenter.loadBookmarks(this);
} }
@Override
protected void setupDagger(ApplicationComponent appComponent) {
appComponent.inject(this);
}
private void setNoBookmarksState() { private void setNoBookmarksState() {
if (bookmarksList.getCount() == 0) { if (bookmarksList.getCount() == 0) {
noBookmarksLayout.setVisibility(View.VISIBLE); noBookmarksLayout.setVisibility(View.VISIBLE);

View File

@ -17,20 +17,17 @@
*/ */
package org.kiwix.kiwixmobile.di.components; 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.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.ApplicationModule;
import org.kiwix.kiwixmobile.di.modules.JNIModule; import org.kiwix.kiwixmobile.di.modules.JNIModule;
import org.kiwix.kiwixmobile.di.modules.NetworkModule; import org.kiwix.kiwixmobile.di.modules.NetworkModule;
import org.kiwix.kiwixmobile.downloader.DownloadFragment;
import org.kiwix.kiwixmobile.downloader.DownloadService; import org.kiwix.kiwixmobile.downloader.DownloadService;
import org.kiwix.kiwixmobile.library.LibraryAdapter; import org.kiwix.kiwixmobile.library.LibraryAdapter;
import org.kiwix.kiwixmobile.search.SearchActivity;
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
import org.kiwix.kiwixmobile.views.AutoCompleteAdapter; import org.kiwix.kiwixmobile.views.AutoCompleteAdapter;
import org.kiwix.kiwixmobile.views.web.KiwixWebView; 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.fileselect_view.ZimFileSelectFragment;
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment;
@ -45,13 +42,13 @@ import dagger.Component;
JNIModule.class, JNIModule.class,
}) })
public interface ApplicationComponent { public interface ApplicationComponent {
void inject(KiwixMobileActivity activity); void inject(KiwixApplication application);
void inject(DownloadService service); void inject(DownloadService service);
void inject(LibraryFragment libraryFragment); void inject(LibraryFragment libraryFragment);
void inject(BookmarksActivity bookmarksActivity); void inject(BaseFragment baseFragment);
void inject(ZimFileSelectFragment zimFileSelectFragment); void inject(ZimFileSelectFragment zimFileSelectFragment);
@ -59,17 +56,9 @@ public interface ApplicationComponent {
void inject(LibraryAdapter libraryAdapter); void inject(LibraryAdapter libraryAdapter);
void inject(SearchActivity searchActivity);
void inject(ZimManageActivity zimManageActivity);
void inject(KiwixWebView kiwixWebView); void inject(KiwixWebView kiwixWebView);
void inject(KiwixSettingsActivity kiwixSettingsActivity);
void inject(KiwixSettingsActivity.PrefsFragment prefsFragment); void inject(KiwixSettingsActivity.PrefsFragment prefsFragment);
void inject(DownloadFragment downloadFragment);
void inject(AutoCompleteAdapter autoCompleteAdapter); void inject(AutoCompleteAdapter autoCompleteAdapter);
} }

View File

@ -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();
}

View File

@ -27,8 +27,10 @@ import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import dagger.android.AndroidInjectionModule;
@Module public class ApplicationModule { @Module(includes = {ActivityBindingModule.class, AndroidInjectionModule.class})
public class ApplicationModule {
private final KiwixApplication application; private final KiwixApplication application;
public ApplicationModule(KiwixApplication application) { public ApplicationModule(KiwixApplication application) {

View File

@ -25,11 +25,9 @@ import android.database.DataSetObserver;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.util.Base64; import android.util.Base64;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -42,11 +40,10 @@ import android.widget.ProgressBar;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import java.util.Locale;
import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixApplication;
import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.base.BaseFragment;
import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity;
import org.kiwix.kiwixmobile.utils.NetworkUtils; import org.kiwix.kiwixmobile.utils.NetworkUtils;
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; 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.Arrays;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Locale;
import javax.inject.Inject; import javax.inject.Inject;
import static org.kiwix.kiwixmobile.utils.Constants.PREF_WIFI_ONLY;
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
public class DownloadFragment extends BaseFragment {
public class DownloadFragment extends Fragment {
public static LinkedHashMap<Integer, LibraryNetworkEntity.Book> mDownloads = new LinkedHashMap<>(); public static LinkedHashMap<Integer, LibraryNetworkEntity.Book> mDownloads = new LinkedHashMap<>();
public static LinkedHashMap<Integer, String> mDownloadFiles = new LinkedHashMap<>(); public static LinkedHashMap<Integer, String> mDownloadFiles = new LinkedHashMap<>();
@ -76,15 +72,11 @@ public class DownloadFragment extends Fragment {
private Activity faActivity; private Activity faActivity;
private boolean hasArtificiallyPaused; private boolean hasArtificiallyPaused;
@Inject static SharedPreferenceUtil sharedPreferenceUtil; @Inject
SharedPreferenceUtil sharedPreferenceUtil;
private void setupDagger() {
KiwixApplication.getInstance().getApplicationComponent().inject(this);
}
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setupDagger();
faActivity = super.getActivity(); faActivity = super.getActivity();
relLayout = (RelativeLayout) inflater.inflate(R.layout.download_management, container, false); relLayout = (RelativeLayout) inflater.inflate(R.layout.download_management, container, false);
@ -122,7 +114,7 @@ public class DownloadFragment extends Fragment {
downloadAdapter.unRegisterDataSetObserver(); downloadAdapter.unRegisterDataSetObserver();
} }
public static void showNoWiFiWarning(Context context, Runnable yesAction) { public void showNoWiFiWarning(Context context, Runnable yesAction) {
new AlertDialog.Builder(context) new AlertDialog.Builder(context)
.setTitle(R.string.wifi_only_title) .setTitle(R.string.wifi_only_title)
.setMessage(R.string.wifi_only_msg) .setMessage(R.string.wifi_only_msg)
@ -200,7 +192,7 @@ public class DownloadFragment extends Fragment {
String fileName = FileUtils.getFileName(mDownloadFiles.get(mKeys[position])); String fileName = FileUtils.getFileName(mDownloadFiles.get(mKeys[position]));
{ {
Snackbar completeSnack = Snackbar.make(mainLayout, getResources().getString(R.string.download_complete_snackbar), Snackbar.LENGTH_LONG); 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 zimFileSelectFragment = (ZimFileSelectFragment) zimManageActivity.mSectionsPagerAdapter.getItem(0);
zimFileSelectFragment.addBook(fileName); zimFileSelectFragment.addBook(fileName);

View File

@ -19,16 +19,13 @@ package org.kiwix.kiwixmobile.search;
import android.content.ActivityNotFoundException; import android.content.ActivityNotFoundException;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings; import android.provider.Settings;
import android.speech.RecognizerIntent; import android.speech.RecognizerIntent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.text.Html; import android.text.Html;
@ -44,9 +41,9 @@ import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import org.kiwix.kiwixmobile.KiwixApplication;
import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.base.BaseActivity;
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
import org.kiwix.kiwixmobile.views.AutoCompleteAdapter; 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_IS_WIDGET_VOICE;
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_SEARCH; 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.EXTRA_SEARCH_TEXT;
import static org.kiwix.kiwixmobile.utils.Constants.TAG_FILE_SEARCHED;
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
public class SearchActivity extends AppCompatActivity public class SearchActivity extends BaseActivity
implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener, SearchViewCallback { implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener, SearchViewCallback {
public static final String EXTRA_SEARCH_IN_TEXT = "bool_searchintext"; public static final String EXTRA_SEARCH_IN_TEXT = "bool_searchintext";
@ -79,19 +76,13 @@ public class SearchActivity extends AppCompatActivity
@Inject @Inject
SharedPreferenceUtil sharedPreferenceUtil; SharedPreferenceUtil sharedPreferenceUtil;
private void setupDagger() {
KiwixApplication.getInstance().getApplicationComponent().inject(this);
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
setupDagger(); super.onCreate(savedInstanceState);
if (sharedPreferenceUtil.getPrefNightMode()) { if (sharedPreferenceUtil.getPrefNightMode()) {
setTheme(R.style.AppTheme_Night); setTheme(R.style.AppTheme_Night);
} }
super.onCreate(savedInstanceState); setContentView(R.layout.search);
View contentView = LayoutInflater.from(this).inflate(R.layout.search, null);
setContentView(contentView);
if (savedInstanceState != null) { if (savedInstanceState != null) {
searchText = savedInstanceState.getString(EXTRA_SEARCH_TEXT); searchText = savedInstanceState.getString(EXTRA_SEARCH_TEXT);

View File

@ -31,7 +31,6 @@ import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.webkit.WebView; import android.webkit.WebView;
@ -42,12 +41,12 @@ import org.kiwix.kiwixmobile.BuildConfig;
import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixApplication;
import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.base.BaseActivity;
import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.database.KiwixDatabase;
import org.kiwix.kiwixmobile.database.RecentSearchDao; import org.kiwix.kiwixmobile.database.RecentSearchDao;
import org.kiwix.kiwixmobile.utils.LanguageUtils; import org.kiwix.kiwixmobile.utils.LanguageUtils;
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
import org.kiwix.kiwixmobile.utils.StyleUtils; import org.kiwix.kiwixmobile.utils.StyleUtils;
import org.kiwix.kiwixmobile.views.LanguageSelectDialog;
import org.kiwix.kiwixmobile.views.SliderPreference; import org.kiwix.kiwixmobile.views.SliderPreference;
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryUtils; 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.Constants.RESULT_RESTART;
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
public class KiwixSettingsActivity extends AppCompatActivity { public class KiwixSettingsActivity extends BaseActivity {
public static boolean allHistoryCleared = false; public static boolean allHistoryCleared = false;
@ -86,18 +85,13 @@ public class KiwixSettingsActivity extends AppCompatActivity {
@Inject @Inject
SharedPreferenceUtil sharedPreferenceUtil; SharedPreferenceUtil sharedPreferenceUtil;
private void setupDagger() {
KiwixApplication.getInstance().getApplicationComponent().inject(this);
}
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
setupDagger();
if(nightMode(sharedPreferenceUtil)){
setTheme(R.style.AppTheme_Night);
}
getWindow().setWindowAnimations(R.style.WindowAnimationTransition); getWindow().setWindowAnimations(R.style.WindowAnimationTransition);
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (nightMode(sharedPreferenceUtil)) {
setTheme(R.style.AppTheme_Night);
}
setContentView(R.layout.settings); setContentView(R.layout.settings);
allHistoryCleared = false; allHistoryCleared = false;
@ -152,7 +146,7 @@ public class KiwixSettingsActivity extends AppCompatActivity {
@Inject SharedPreferenceUtil sharedPreferenceUtil; @Inject SharedPreferenceUtil sharedPreferenceUtil;
void setupDagger() { void setupDagger() {
KiwixApplication.getInstance().getApplicationComponent().inject(this); KiwixApplication.getApplicationComponent().inject(this);
} }
@Override @Override
@ -200,7 +194,7 @@ public class KiwixSettingsActivity extends AppCompatActivity {
} else { } else {
findPreference(PREF_STORAGE).setTitle(sharedPreferenceUtil.getPrefStorageTitle("External")); 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()));
} }
} }

View File

@ -17,7 +17,9 @@
*/ */
package org.kiwix.kiwixmobile.zim_manager; package org.kiwix.kiwixmobile.zim_manager;
import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings; import android.provider.Settings;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@ -26,7 +28,6 @@ import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.TabLayout; import android.support.design.widget.TabLayout;
import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.util.Log; import android.util.Log;
@ -34,19 +35,22 @@ import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.widget.Toast; import android.widget.Toast;
import org.kiwix.kiwixmobile.KiwixApplication;
import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.base.BaseActivity;
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
import org.kiwix.kiwixmobile.views.LanguageSelectDialog; import org.kiwix.kiwixmobile.views.LanguageSelectDialog;
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment; import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment;
import java.io.File;
import javax.inject.Inject; import javax.inject.Inject;
import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX;
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; 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"; public static final String TAB_EXTRA = "TAB";
/** /**
@ -81,17 +85,12 @@ public class ZimManageActivity extends AppCompatActivity implements ZimManageVie
@Inject @Inject
SharedPreferenceUtil sharedPreferenceUtil; SharedPreferenceUtil sharedPreferenceUtil;
private void setupDagger() {
KiwixApplication.getInstance().getApplicationComponent().inject(this);
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
setupDagger(); super.onCreate(savedInstanceState);
if (KiwixSettingsActivity.nightMode(sharedPreferenceUtil)) { if (KiwixSettingsActivity.nightMode(sharedPreferenceUtil)) {
setTheme(R.style.AppTheme_Night); setTheme(R.style.AppTheme_Night);
} }
super.onCreate(savedInstanceState);
setContentView(R.layout.zim_manager); setContentView(R.layout.zim_manager);
setUpToolbar(); setUpToolbar();
@ -131,7 +130,7 @@ public class ZimManageActivity extends AppCompatActivity implements ZimManageVie
// Disable scrolling for the AppBarLayout on top of the screen // Disable scrolling for the AppBarLayout on top of the screen
// User can only scroll the PageViewer component // User can only scroll the PageViewer component
AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar); AppBarLayout appBarLayout = findViewById(R.id.appbar);
if (appBarLayout.getLayoutParams() != null) { if (appBarLayout.getLayoutParams() != null) {
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams(); CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior appBarLayoutBehaviour = new AppBarLayout.Behavior(); 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() { private void showLanguageSelect() {
new LanguageSelectDialog.Builder(this, dialogStyle()) new LanguageSelectDialog.Builder(this, dialogStyle())
.setLanguages(mSectionsPagerAdapter.libraryFragment.libraryAdapter.languages) .setLanguages(mSectionsPagerAdapter.libraryFragment.libraryAdapter.languages)

View File

@ -17,29 +17,45 @@
*/ */
package org.kiwix.kiwixmobile.zim_manager; package org.kiwix.kiwixmobile.zim_manager;
import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.util.Log; import android.util.Log;
import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.base.BasePresenter; import org.kiwix.kiwixmobile.base.BasePresenter;
import org.kiwix.kiwixmobile.downloader.DownloadFragment;
import org.kiwix.kiwixmobile.downloader.DownloadService; import org.kiwix.kiwixmobile.downloader.DownloadService;
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
import javax.inject.Inject; import javax.inject.Inject;
import static org.kiwix.kiwixmobile.zim_manager.ZimManageActivity.KIWIX_TAG; 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<ZimManageViewCallback> { class ZimManagePresenter extends BasePresenter<ZimManageViewCallback> {
@Inject @Inject
public ZimManagePresenter() {} SharedPreferenceUtil mSharedPreferenceUtil;
@Inject
ZimManagePresenter() {
}
void showNoWifiWarning(Context context, String action) { void showNoWifiWarning(Context context, String action) {
if (DownloadService.ACTION_NO_WIFI.equals(action)) { if (DownloadService.ACTION_NO_WIFI.equals(action)) {
DownloadFragment.showNoWiFiWarning(context, () -> {}); 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"); Log.i(KIWIX_TAG, "No WiFi, showing warning");
} }
} }

View File

@ -20,14 +20,10 @@
package org.kiwix.kiwixmobile.zim_manager.fileselect_view; package org.kiwix.kiwixmobile.zim_manager.fileselect_view;
import android.Manifest; import android.Manifest;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
@ -47,6 +43,7 @@ import android.widget.Toast;
import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixApplication;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.ZimContentProvider; import org.kiwix.kiwixmobile.ZimContentProvider;
import org.kiwix.kiwixmobile.base.BaseFragment;
import org.kiwix.kiwixmobile.database.BookDao; import org.kiwix.kiwixmobile.database.BookDao;
import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.database.KiwixDatabase;
import org.kiwix.kiwixmobile.library.LibraryAdapter; import org.kiwix.kiwixmobile.library.LibraryAdapter;
@ -68,17 +65,16 @@ import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import static org.kiwix.kiwixmobile.utils.Constants.REQUEST_STORAGE_PERMISSION; 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.NetworkUtils.parseURL;
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
public class ZimFileSelectFragment extends Fragment public class ZimFileSelectFragment extends BaseFragment
implements OnItemClickListener, AdapterView.OnItemLongClickListener, ZimFileSelectViewCallback{ implements OnItemClickListener, AdapterView.OnItemLongClickListener, ZimFileSelectViewCallback{
public static ZimManageActivity context;
public RelativeLayout llLayout; public RelativeLayout llLayout;
public SwipeRefreshLayout swipeRefreshLayout; public SwipeRefreshLayout swipeRefreshLayout;
private ZimManageActivity zimManageActivity;
private RescanDataAdapter mRescanAdapter; private RescanDataAdapter mRescanAdapter;
private ArrayList<LibraryNetworkEntity.Book> mFiles; private ArrayList<LibraryNetworkEntity.Book> mFiles;
private ListView mZimFileList; private ListView mZimFileList;
@ -91,14 +87,10 @@ public class ZimFileSelectFragment extends Fragment
@Inject BookUtils bookUtils; @Inject BookUtils bookUtils;
@Inject SharedPreferenceUtil sharedPreferenceUtil; @Inject SharedPreferenceUtil sharedPreferenceUtil;
private void setupDagger() {
KiwixApplication.getInstance().getApplicationComponent().inject(this);
}
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
context = (ZimManageActivity) super.getActivity(); KiwixApplication.getApplicationComponent().inject(this);
setupDagger(); zimManageActivity = (ZimManageActivity) super.getActivity();
presenter.attachView(this); presenter.attachView(this);
// Replace LinearLayout by the type of the root element of the layout you're trying to load // 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); 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 for the list view
swipeRefreshLayout = llLayout.findViewById(R.id.zim_swiperefresh); swipeRefreshLayout = llLayout.findViewById(R.id.zim_swiperefresh);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { swipeRefreshLayout.setOnRefreshListener(this::refreshFragment);
@Override
public void onRefresh() {
refreshFragment();
}
});
// A boolean to distinguish between a user refresh and a normal loading // A boolean to distinguish between a user refresh and a normal loading
mHasRefresh = false; mHasRefresh = false;
mRescanAdapter = new RescanDataAdapter(ZimFileSelectFragment.context, 0, mFiles); mRescanAdapter = new RescanDataAdapter(zimManageActivity, 0, mFiles);
// Allow temporary use of ZimContentProvider to query books // Allow temporary use of ZimContentProvider to query books
ZimContentProvider.canIterate = true; ZimContentProvider.canIterate = true;
presenter.loadLocalZimFileFromDb(context); presenter.loadLocalZimFileFromDb(zimManageActivity);
bookDao = new BookDao(KiwixDatabase.getInstance(context)); bookDao = new BookDao(KiwixDatabase.getInstance(zimManageActivity));
return llLayout; // We must return the loaded Layout 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 @Override
public void onResume() { public void onResume() {
presenter.loadLocalZimFileFromDb(context); presenter.loadLocalZimFileFromDb(zimManageActivity);
super.onResume(); super.onResume();
} }
@ -178,7 +150,7 @@ public class ZimFileSelectFragment extends Fragment
} }
mHasRefresh = true; mHasRefresh = true;
presenter.loadLocalZimFileFromDb(context); presenter.loadLocalZimFileFromDb(zimManageActivity);
} }
// Add book after download // Add book after download
@ -225,11 +197,11 @@ public class ZimFileSelectFragment extends Fragment
checkEmpty(); checkEmpty();
new FileSearch(context, new FileSearch.ResultListener() { new FileSearch(zimManageActivity, new FileSearch.ResultListener() {
@Override @Override
public void onBookFound(LibraryNetworkEntity.Book book) { public void onBookFound(LibraryNetworkEntity.Book book) {
if (!mFiles.contains(book)) { if (!mFiles.contains(book)) {
context.runOnUiThread(() -> { zimManageActivity.runOnUiThread(() -> {
Log.i("Scanner", "File Search: Found Book " + book.title); Log.i("Scanner", "File Search: Found Book " + book.title);
mFiles.add(book); mFiles.add(book);
mRescanAdapter.notifyDataSetChanged(); mRescanAdapter.notifyDataSetChanged();
@ -251,12 +223,12 @@ public class ZimFileSelectFragment extends Fragment
boolean cached = mFiles.containsAll(bookDao.getBooks()) && bookDao.getBooks().containsAll(mFiles); boolean cached = mFiles.containsAll(bookDao.getBooks()) && bookDao.getBooks().containsAll(mFiles);
// If content changed then update the list of downloadable books // If content changed then update the list of downloadable books
if (!cached && context.mSectionsPagerAdapter.libraryFragment.libraryAdapter != null && context.searchView != null) { if (!cached && zimManageActivity.mSectionsPagerAdapter.libraryFragment.libraryAdapter != null && zimManageActivity.searchView != null) {
context.mSectionsPagerAdapter.libraryFragment.libraryAdapter.getFilter().filter(context.searchView.getQuery()); zimManageActivity.mSectionsPagerAdapter.libraryFragment.libraryAdapter.getFilter().filter(zimManageActivity.searchView.getQuery());
} }
// Save the current list of books // Save the current list of books
context.runOnUiThread(() -> { zimManageActivity.runOnUiThread(() -> {
mRescanAdapter.notifyDataSetChanged(); mRescanAdapter.notifyDataSetChanged();
bookDao.saveBooks(mFiles); bookDao.saveBooks(mFiles);
checkEmpty(); checkEmpty();
@ -278,7 +250,7 @@ public class ZimFileSelectFragment extends Fragment
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) { && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
getFiles(); getFiles();
} else if (grantResults.length != 0) { } else if (grantResults.length != 0) {
super.getActivity().finish(); zimManageActivity.finish();
} }
} }
@ -296,11 +268,11 @@ public class ZimFileSelectFragment extends Fragment
file = data.file.getPath(); file = data.file.getPath();
if (!data.file.canRead()) { 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; return;
} }
finishResult(file); zimManageActivity.finishResult(file);
} }
@Override @Override
@ -310,13 +282,13 @@ public class ZimFileSelectFragment extends Fragment
} }
public void deleteSpecificZimDialog(int position) { public void deleteSpecificZimDialog(int position) {
new AlertDialog.Builder(super.getActivity(), dialogStyle()) new AlertDialog.Builder(zimManageActivity, dialogStyle())
.setMessage(getString(R.string.delete_specific_zim)) .setMessage(getString(R.string.delete_specific_zim))
.setPositiveButton(getResources().getString(R.string.delete), (dialog, which) -> { .setPositiveButton(getResources().getString(R.string.delete), (dialog, which) -> {
if (deleteSpecificZimFile(position)) { 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 { } 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) -> { .setNegativeButton(android.R.string.no, (dialog, which) -> {
@ -335,8 +307,8 @@ public class ZimFileSelectFragment extends Fragment
mFiles.remove(position); mFiles.remove(position);
mRescanAdapter.notifyDataSetChanged(); mRescanAdapter.notifyDataSetChanged();
checkEmpty(); checkEmpty();
if (context.mSectionsPagerAdapter.libraryFragment.libraryAdapter != null) { if (zimManageActivity.mSectionsPagerAdapter.libraryFragment.libraryAdapter != null) {
context.mSectionsPagerAdapter.libraryFragment.libraryAdapter.getFilter().filter(context.searchView.getQuery()); zimManageActivity.mSectionsPagerAdapter.libraryFragment.libraryAdapter.getFilter().filter(zimManageActivity.searchView.getQuery());
} }
return true; return true;
} }
@ -361,7 +333,7 @@ public class ZimFileSelectFragment extends Fragment
ViewHolder holder; ViewHolder holder;
LibraryNetworkEntity.Book book = getItem(position); LibraryNetworkEntity.Book book = getItem(position);
if (convertView == null) { 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 = new ViewHolder();
holder.title = convertView.findViewById(R.id.title); holder.title = convertView.findViewById(R.id.title);
holder.description = convertView.findViewById(R.id.description); holder.description = convertView.findViewById(R.id.description);
@ -389,7 +361,7 @@ public class ZimFileSelectFragment extends Fragment
holder.date.setText(book.getDate()); holder.date.setText(book.getDate());
holder.size.setText(LibraryAdapter.createGbString(book.getSize())); holder.size.setText(LibraryAdapter.createGbString(book.getSize()));
holder.fileName.setText(parseURL(getActivity(), book.file.getPath())); 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. //// Check if no value is empty. Set the view to View.GONE, if it is. To View.VISIBLE, if not.

View File

@ -17,6 +17,7 @@
*/ */
package org.kiwix.kiwixmobile.zim_manager.library_view; package org.kiwix.kiwixmobile.zim_manager.library_view;
import android.app.AlertDialog;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
@ -29,7 +30,6 @@ import android.net.NetworkInfo;
import android.os.Bundle; import android.os.Bundle;
import android.os.IBinder; import android.os.IBinder;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log; import android.util.Log;
@ -46,11 +46,11 @@ import android.widget.Toast;
import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixApplication;
import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.base.BaseFragment;
import org.kiwix.kiwixmobile.downloader.DownloadFragment; import org.kiwix.kiwixmobile.downloader.DownloadFragment;
import org.kiwix.kiwixmobile.downloader.DownloadIntent; import org.kiwix.kiwixmobile.downloader.DownloadIntent;
import org.kiwix.kiwixmobile.downloader.DownloadService; import org.kiwix.kiwixmobile.downloader.DownloadService;
import org.kiwix.kiwixmobile.library.LibraryAdapter; import org.kiwix.kiwixmobile.library.LibraryAdapter;
import org.kiwix.kiwixmobile.network.KiwixService;
import org.kiwix.kiwixmobile.utils.NetworkUtils; import org.kiwix.kiwixmobile.utils.NetworkUtils;
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
import org.kiwix.kiwixmobile.utils.StorageUtils; 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.library.entity.LibraryNetworkEntity.Book;
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_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 { implements AdapterView.OnItemClickListener, StorageSelectDialog.OnSelectListener, LibraryViewCallback {
@ -86,9 +86,6 @@ public class LibraryFragment extends Fragment
@BindView(R.id.network_permission_button) @BindView(R.id.network_permission_button)
Button permissionButton; Button permissionButton;
@Inject
KiwixService kiwixService;
public LinearLayout llLayout; public LinearLayout llLayout;
@BindView(R.id.library_swiperefresh) @BindView(R.id.library_swiperefresh)
@ -121,15 +118,10 @@ public class LibraryFragment extends Fragment
@Inject @Inject
SharedPreferenceUtil sharedPreferenceUtil; SharedPreferenceUtil sharedPreferenceUtil;
private void setupDagger() {
KiwixApplication.getInstance().getApplicationComponent().inject(this);
}
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
KiwixApplication.getApplicationComponent().inject(this);
setupDagger();
TestingUtils.bindResource(LibraryFragment.class); TestingUtils.bindResource(LibraryFragment.class);
llLayout = (LinearLayout) inflater.inflate(R.layout.activity_library, container, false); llLayout = (LinearLayout) inflater.inflate(R.layout.activity_library, container, false);
ButterKnife.bind(this, llLayout); ButterKnife.bind(this, llLayout);
@ -299,9 +291,17 @@ public class LibraryFragment extends Fragment
} }
if (KiwixMobileActivity.wifiOnly && !NetworkUtils.isWiFi(getContext())) { if (KiwixMobileActivity.wifiOnly && !NetworkUtils.isWiFi(getContext())) {
DownloadFragment.showNoWiFiWarning(getContext(), () -> { 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)); downloadFile((Book) parent.getAdapter().getItem(position));
}); })
.setNegativeButton(R.string.no, (dialog, i) -> {
})
.show();
} else { } else {
downloadFile((Book) parent.getAdapter().getItem(position)); downloadFile((Book) parent.getAdapter().getItem(position));
} }

View File

@ -22,6 +22,7 @@ ext {
okHttpVersion = '3.9.1' okHttpVersion = '3.9.1'
retrofitVersion = '2.3.0' retrofitVersion = '2.3.0'
javaxAnnotationVersion = '1.3.2' javaxAnnotationVersion = '1.3.2'
daggerVersion = '2.15'
} }
allprojects { allprojects {