Add one article per day in history

This commit is contained in:
Abdul Wadood 2018-07-02 12:17:25 +05:30 committed by Isaac Hutt
parent 4a71aef88b
commit 8af4808022
7 changed files with 56 additions and 59 deletions

View File

@ -1,16 +1,9 @@
package org.kiwix.kiwixmobile.data; package org.kiwix.kiwixmobile.data;
import org.kiwix.kiwixmobile.di.qualifiers.Computation;
import org.kiwix.kiwixmobile.di.qualifiers.IO;
import org.kiwix.kiwixmobile.di.qualifiers.MainThread;
import javax.inject.Singleton; import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import io.reactivex.Scheduler;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
@Module @Module
public class DataModule { public class DataModule {
@ -19,22 +12,4 @@ public class DataModule {
public DataSource provideDataSource(Repository repository) { public DataSource provideDataSource(Repository repository) {
return repository; return repository;
} }
@IO
@Provides
public Scheduler provideIoThread() {
return Schedulers.io();
}
@MainThread
@Provides
public Scheduler provideMainThread() {
return AndroidSchedulers.mainThread();
}
@Computation
@Provides
public Scheduler provideComputationThread() {
return Schedulers.computation();
}
} }

View File

@ -10,8 +10,6 @@ import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity;
import org.kiwix.kiwixmobile.models.Language; import org.kiwix.kiwixmobile.models.Language;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -94,18 +92,9 @@ public class Repository implements DataSource {
histories.add(0, null); histories.add(0, null);
} }
for (int position = 2; position < histories.size(); position++) { for (int position = 2; position < histories.size(); position++) {
if (history != null && histories.get(position) != null) { if (history != null && histories.get(position) != null &&
!history.getDate().equals(histories.get(position).getDate())) {
Calendar calendar1 = Calendar.getInstance(); histories.add(position, null);
calendar1.setTime(new Date(history.getTimeStamp()));
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(new Date(histories.get(position).getTimeStamp()));
if (calendar1.get(Calendar.YEAR) != calendar2.get(Calendar.YEAR) ||
calendar1.get(Calendar.DAY_OF_YEAR) != calendar2.get(Calendar.DAY_OF_YEAR)) {
histories.add(position, null);
}
} }
history = histories.get(position); history = histories.get(position);
} }

View File

@ -1,5 +1,7 @@
package org.kiwix.kiwixmobile.data.local.dao; package org.kiwix.kiwixmobile.data.local.dao;
import android.content.Context;
import com.yahoo.squidb.data.SquidCursor; import com.yahoo.squidb.data.SquidCursor;
import com.yahoo.squidb.sql.Query; import com.yahoo.squidb.sql.Query;
@ -7,22 +9,29 @@ import org.kiwix.kiwixmobile.data.ZimContentProvider;
import org.kiwix.kiwixmobile.data.local.KiwixDatabase; import org.kiwix.kiwixmobile.data.local.KiwixDatabase;
import org.kiwix.kiwixmobile.data.local.entity.History; import org.kiwix.kiwixmobile.data.local.entity.History;
import java.text.DateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
public class HistoryDao { public class HistoryDao {
private final Context context;
private final KiwixDatabase kiwixDatabase; private final KiwixDatabase kiwixDatabase;
@Inject @Inject
HistoryDao(KiwixDatabase kiwixDatabase) { HistoryDao(Context context, KiwixDatabase kiwixDatabase) {
this.context = context;
this.kiwixDatabase = kiwixDatabase; this.kiwixDatabase = kiwixDatabase;
} }
public void saveHistory(String file, String favicon, String url, String title, long timeStamp) { public void saveHistory(String file, String favicon, String url, String title, long timeStamp) {
DateFormat dateFormat = android.text.format.DateFormat.getMediumDateFormat(context);
String date = dateFormat.format(new Date(timeStamp));
kiwixDatabase.deleteWhere(History.class, History.HISTORY_URL.eq(url).and(History.DATE.eq(date)));
kiwixDatabase.persist(new History().setZimFile(file).setFavicon(favicon) kiwixDatabase.persist(new History().setZimFile(file).setFavicon(favicon)
.setHistoryUrl(url).setHistoryTitle(title).setTimeStamp(timeStamp)); .setHistoryUrl(url).setHistoryTitle(title).setTimeStamp(timeStamp).setDate(date));
} }
public List<History> getHistoryList(boolean showHistoryCurrentBook) { public List<History> getHistoryList(boolean showHistoryCurrentBook) {
@ -35,6 +44,7 @@ public class HistoryDao {
.query(History.class, query.orderBy(History.TIME_STAMP.desc()))) { .query(History.class, query.orderBy(History.TIME_STAMP.desc()))) {
while (historySquidCursor.moveToNext()) { while (historySquidCursor.moveToNext()) {
History history = new History(); History history = new History();
history.setDate(historySquidCursor.get(History.DATE));
history.setFavicon(historySquidCursor.get(History.FAVICON)); history.setFavicon(historySquidCursor.get(History.FAVICON));
history.setHistoryTitle(historySquidCursor.get(History.HISTORY_TITLE)); history.setHistoryTitle(historySquidCursor.get(History.HISTORY_TITLE));
history.setHistoryUrl(historySquidCursor.get(History.HISTORY_URL)); history.setHistoryUrl(historySquidCursor.get(History.HISTORY_URL));

View File

@ -8,5 +8,6 @@ public class HistorySpec {
public String favicon; public String favicon;
public String historyUrl; public String historyUrl;
public String historyTitle; public String historyTitle;
public String date;
public long timeStamp; public long timeStamp;
} }

View File

@ -21,14 +21,20 @@ import android.app.NotificationManager;
import android.content.Context; import android.content.Context;
import org.kiwix.kiwixmobile.KiwixApplication; import org.kiwix.kiwixmobile.KiwixApplication;
import org.kiwix.kiwixmobile.di.qualifiers.Computation;
import org.kiwix.kiwixmobile.di.qualifiers.IO;
import org.kiwix.kiwixmobile.di.qualifiers.MainThread;
import org.kiwix.kiwixmobile.utils.BookUtils; import org.kiwix.kiwixmobile.utils.BookUtils;
import org.kiwix.kiwixmobile.utils.LanguageUtils;
import javax.inject.Singleton; import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import dagger.android.AndroidInjectionModule; import dagger.android.AndroidInjectionModule;
import org.kiwix.kiwixmobile.utils.LanguageUtils; import io.reactivex.Scheduler;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
@Module(includes = {ActivityBindingModule.class, AndroidInjectionModule.class}) @Module(includes = {ActivityBindingModule.class, AndroidInjectionModule.class})
public class ApplicationModule { public class ApplicationModule {
@ -38,19 +44,45 @@ public class ApplicationModule {
this.application = application; this.application = application;
} }
@Provides @Singleton Context provideApplicationContext() { @Provides
@Singleton
Context provideApplicationContext() {
return this.application; return this.application;
} }
@Provides @Singleton NotificationManager provideNotificationManager(Context context) { @Provides
@Singleton
NotificationManager provideNotificationManager(Context context) {
return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
} }
@Provides @Singleton BookUtils provideBookUtils(LanguageUtils.LanguageContainer container) { @Provides
@Singleton
BookUtils provideBookUtils(LanguageUtils.LanguageContainer container) {
return new BookUtils(container); return new BookUtils(container);
} }
@Provides @Singleton LanguageUtils.LanguageContainer provideLanguageContainer(){ @Provides
@Singleton
LanguageUtils.LanguageContainer provideLanguageContainer() {
return new LanguageUtils.LanguageContainer(); return new LanguageUtils.LanguageContainer();
} }
@IO
@Provides
public Scheduler provideIoThread() {
return Schedulers.io();
}
@MainThread
@Provides
public Scheduler provideMainThread() {
return AndroidSchedulers.mainThread();
}
@Computation
@Provides
public Scheduler provideComputationThread() {
return Schedulers.computation();
}
} }

View File

@ -12,10 +12,7 @@ import android.widget.TextView;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.data.local.entity.History; import org.kiwix.kiwixmobile.data.local.entity.History;
import java.text.DateFormat;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Locale;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
@ -63,9 +60,7 @@ class HistoryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
item.itemView.setOnLongClickListener(v -> item.itemView.setOnLongClickListener(v ->
itemClickListener.onItemLongClick(item.favicon, history)); itemClickListener.onItemLongClick(item.favicon, history));
} else { } else {
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault()); ((Category) holder).date.setText(historyList.get(position + 1).getDate());
((Category) holder).date.setText(dateFormat.format(new Date(historyList.get(position + 1)
.getTimeStamp())));
} }
} }

View File

@ -37,7 +37,6 @@ import org.kiwix.kiwixmobile.utils.StyleUtils;
import java.util.HashMap; import java.util.HashMap;
import static org.kiwix.kiwixmobile.main.MainActivity.nightMode;
import static org.kiwix.kiwixmobile.utils.Constants.CONTACT_EMAIL_ADDRESS; import static org.kiwix.kiwixmobile.utils.Constants.CONTACT_EMAIL_ADDRESS;
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_EXTERNAL_LINK; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_EXTERNAL_LINK;
@ -47,6 +46,7 @@ public class KiwixWebViewClient extends WebViewClient {
put("epub", "application/epub+zip"); put("epub", "application/epub+zip");
put("pdf", "application/pdf"); put("pdf", "application/pdf");
}}; }};
private final SharedPreferenceUtil sharedPreferenceUtil = new SharedPreferenceUtil(KiwixApplication.getInstance());
private View help; private View help;
private WebViewCallback callback; private WebViewCallback callback;
@ -113,7 +113,7 @@ public class KiwixWebViewClient extends WebViewClient {
); );
view.addView(help); view.addView(help);
ImageView welcome_image = help.findViewById(R.id.welcome_image); ImageView welcome_image = help.findViewById(R.id.welcome_image);
if (nightMode) { if (sharedPreferenceUtil.nightMode()) {
welcome_image.setImageResource(R.drawable.kiwix_welcome_night); welcome_image.setImageResource(R.drawable.kiwix_welcome_night);
} else { } else {
welcome_image.setImageResource(R.drawable.kiwix_welcome); welcome_image.setImageResource(R.drawable.kiwix_welcome);
@ -131,12 +131,7 @@ public class KiwixWebViewClient extends WebViewClient {
private void inflateHomeView(WebView view) { private void inflateHomeView(WebView view) {
LayoutInflater inflater = LayoutInflater.from(view.getContext()); LayoutInflater inflater = LayoutInflater.from(view.getContext());
help = inflater.inflate(R.layout.content_main, view, false); help = inflater.inflate(R.layout.content_main, view, false);
if (nightMode) {
ImageView cardImage = help.findViewById(R.id.content_main_card_image);
cardImage.setImageResource(R.drawable.ic_home_kiwix_banner_night);
}
callback.setHomePage(help); callback.setHomePage(help);
SharedPreferenceUtil sharedPreferenceUtil = new SharedPreferenceUtil(KiwixApplication.getInstance());
if (sharedPreferenceUtil.nightMode()) { if (sharedPreferenceUtil.nightMode()) {
ImageView cardImage = help.findViewById(R.id.content_main_card_image); ImageView cardImage = help.findViewById(R.id.content_main_card_image);
cardImage.setImageResource(R.drawable.ic_home_kiwix_banner_night); cardImage.setImageResource(R.drawable.ic_home_kiwix_banner_night);