mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-10 07:48:30 -04:00
Add one article per day in history
This commit is contained in:
parent
4a71aef88b
commit
8af4808022
@ -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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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));
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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())));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user