From 349a8ed41c3849e44bcf6309c42856caa327a0a2 Mon Sep 17 00:00:00 2001 From: CeuiLiSA Date: Thu, 19 Mar 2020 11:14:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=8E=86=E5=8F=B2=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8D=A2=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 3 + .../lisa/activities/ImageDetailActivity.java | 5 +- .../ceui/lisa/activities/MainActivity.java | 3 + .../main/java/ceui/lisa/activities/Shaft.java | 11 +- .../lisa/activities/TemplateActivity.java | 20 +-- .../{AAdapter.java => ArticleAdapter.java} | 5 +- .../{BAdapter.java => BookedTagAdapter.java} | 5 +- .../{CAdapter.java => CommentAdapter.java} | 4 +- .../ceui/lisa/adapters/DownlistAdapter.java | 4 +- .../lisa/adapters/DownloadTaskAdapter.java | 91 ------------- .../ceui/lisa/adapters/DownloadedAdapter.java | 81 ++++++++++++ .../lisa/adapters/DownloadingAdapter.java | 59 +++++++++ .../ceui/lisa/adapters/HistoryAdapter.java | 26 +--- .../java/ceui/lisa/adapters/SpringHolder.java | 32 +++++ .../{HAdapter.java => TagAdapter.java} | 4 +- .../main/java/ceui/lisa/cache/SfOperator.java | 15 ++- .../main/java/ceui/lisa/core/TagFilter.java | 4 - .../java/ceui/lisa/dialogs/MuteDialog.java | 11 ++ .../{QueueListener.java => DListener.java} | 113 ++++++++-------- .../ceui/lisa/download/IllustDownload.java | 8 +- .../java/ceui/lisa/download/TaskQueue.java | 7 +- .../{FragmentAbout.kt => FragmentAboutApp.kt} | 2 +- ...entBookTag.java => FragmentBookedTag.java} | 10 +- .../lisa/fragments/FragmentCardIllust.java | 4 +- .../{FragmentC.java => FragmentComment.java} | 10 +- .../java/ceui/lisa/fragments/FragmentDF.java | 121 ++++++++++++++++++ .../{FragmentD.java => FragmentDownload.java} | 8 +- .../fragments/FragmentDownloadFinish.java | 18 +-- .../ceui/lisa/fragments/FragmentFilter.java | 20 ++- .../ceui/lisa/fragments/FragmentHotTag.java | 4 +- .../fragments/FragmentLocalImageDetail.java | 1 + .../lisa/fragments/FragmentLocalUsers.java | 4 +- .../java/ceui/lisa/fragments/FragmentM.java | 4 +- .../java/ceui/lisa/fragments/FragmentND.java | 61 +++++++++ .../lisa/fragments/FragmentNowDownload.java | 77 ----------- .../ceui/lisa/fragments/FragmentPivision.java | 4 +- .../lisa/fragments/FragmentRecmdManga.java | 3 +- .../lisa/fragments/FragmentSearchResult.java | 4 +- .../lisa/fragments/FragmentSingleIllust.java | 3 +- ...ntAboutUser.java => FragmentUserInfo.java} | 2 +- .../ceui/lisa/fragments/ListFragment.java | 9 ++ .../main/java/ceui/lisa/http/ErrorCtrl.java | 7 +- app/src/main/java/ceui/lisa/http/Retro.java | 33 +++-- .../java/ceui/lisa/http/TokenInterceptor.java | 16 +-- .../ceui/lisa/interfaces/DataControl.java | 3 +- app/src/main/java/ceui/lisa/utils/Local.java | 28 ++-- .../java/ceui/lisa/utils/PixivOperate.java | 3 +- .../drawable/ic_chevron_left_black_24dp.xml | 8 +- .../drawable/ic_chevron_right_black_24dp.xml | 2 +- .../main/res/layout/activity_image_detail.xml | 103 ++++++++------- app/src/main/res/layout/dialog_mute_tag.xml | 12 +- app/src/main/res/layout/fragment_filter.xml | 29 +++++ .../main/res/layout/fragment_novel_holder.xml | 14 +- .../res/layout/fragment_single_illust.xml | 33 +++-- .../main/res/layout/recy_download_task.xml | 115 +++++++++-------- build.gradle | 1 + 56 files changed, 762 insertions(+), 525 deletions(-) rename app/src/main/java/ceui/lisa/adapters/{AAdapter.java => ArticleAdapter.java} (88%) rename app/src/main/java/ceui/lisa/adapters/{BAdapter.java => BookedTagAdapter.java} (90%) rename app/src/main/java/ceui/lisa/adapters/{CAdapter.java => CommentAdapter.java} (95%) delete mode 100644 app/src/main/java/ceui/lisa/adapters/DownloadTaskAdapter.java create mode 100644 app/src/main/java/ceui/lisa/adapters/DownloadedAdapter.java create mode 100644 app/src/main/java/ceui/lisa/adapters/DownloadingAdapter.java create mode 100644 app/src/main/java/ceui/lisa/adapters/SpringHolder.java rename app/src/main/java/ceui/lisa/adapters/{HAdapter.java => TagAdapter.java} (93%) rename app/src/main/java/ceui/lisa/download/{QueueListener.java => DListener.java} (51%) rename app/src/main/java/ceui/lisa/fragments/{FragmentAbout.kt => FragmentAboutApp.kt} (97%) rename app/src/main/java/ceui/lisa/fragments/{FragmentBookTag.java => FragmentBookedTag.java} (87%) rename app/src/main/java/ceui/lisa/fragments/{FragmentC.java => FragmentComment.java} (96%) create mode 100644 app/src/main/java/ceui/lisa/fragments/FragmentDF.java rename app/src/main/java/ceui/lisa/fragments/{FragmentD.java => FragmentDownload.java} (92%) create mode 100644 app/src/main/java/ceui/lisa/fragments/FragmentND.java delete mode 100644 app/src/main/java/ceui/lisa/fragments/FragmentNowDownload.java rename app/src/main/java/ceui/lisa/fragments/{FragmentAboutUser.java => FragmentUserInfo.java} (95%) diff --git a/app/build.gradle b/app/build.gradle index 769938131..436dde220 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -128,6 +128,9 @@ dependencies { implementation 'com.blankj:utilcodex:1.26.0' implementation group: 'net.lingala.zip4j', name: 'zip4j', version: '2.2.8' + implementation 'com.safframework.log:saf-logginginterceptor:1.4.6' + implementation 'com.github.devlight.shadowlayout:library:1.0.2' + implementation project(path: ':models') testImplementation 'junit:junit:4.12' diff --git a/app/src/main/java/ceui/lisa/activities/ImageDetailActivity.java b/app/src/main/java/ceui/lisa/activities/ImageDetailActivity.java index 4ddc3d9f7..58a041e3b 100644 --- a/app/src/main/java/ceui/lisa/activities/ImageDetailActivity.java +++ b/app/src/main/java/ceui/lisa/activities/ImageDetailActivity.java @@ -32,6 +32,9 @@ import ceui.lisa.models.IllustsBean; import ceui.lisa.utils.Common; +/** + * 图片二级详情 + */ public class ImageDetailActivity extends BaseActivity { private IllustsBean mIllustsBean; @@ -162,8 +165,6 @@ public void onPageScrollStateChanged(int i) { }); downloadSingle.setText("路径:" + localIllust.get(index)); } - currentPage.setTextAppearance(mContext, R.style.shadowText); - downloadSingle.setTextAppearance(mContext, R.style.shadowText); } diff --git a/app/src/main/java/ceui/lisa/activities/MainActivity.java b/app/src/main/java/ceui/lisa/activities/MainActivity.java index 77e8a0a53..f16367035 100644 --- a/app/src/main/java/ceui/lisa/activities/MainActivity.java +++ b/app/src/main/java/ceui/lisa/activities/MainActivity.java @@ -58,6 +58,9 @@ import static ceui.lisa.activities.Shaft.sUserModel; +/** + * 主页 + */ public class MainActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener { diff --git a/app/src/main/java/ceui/lisa/activities/Shaft.java b/app/src/main/java/ceui/lisa/activities/Shaft.java index 17350b918..8875a3400 100644 --- a/app/src/main/java/ceui/lisa/activities/Shaft.java +++ b/app/src/main/java/ceui/lisa/activities/Shaft.java @@ -2,6 +2,7 @@ import android.app.Application; import android.content.Context; +import android.content.SharedPreferences; import com.google.gson.Gson; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -18,11 +19,15 @@ import ceui.lisa.utils.Params; import ceui.lisa.utils.Settings; +import static ceui.lisa.utils.Local.LOCAL_DATA; + public class Shaft extends Application { public static UserModel sUserModel; public static Settings sSettings; public static Gson sGson; + public static SharedPreferences sPreferences; + /** * 状态栏高度,初始化 */ @@ -46,10 +51,6 @@ public static Context getContext() { return sContext; } - public static void setContext(Context context) { - sContext = context; - } - @Override public void onCreate() { super.onCreate(); @@ -59,6 +60,8 @@ public void onCreate() { sGson = new Gson(); //0.0127254 + sPreferences = getSharedPreferences(LOCAL_DATA, Context.MODE_PRIVATE); + final long before = System.nanoTime(); sUserModel = Local.getUser(); diff --git a/app/src/main/java/ceui/lisa/activities/TemplateActivity.java b/app/src/main/java/ceui/lisa/activities/TemplateActivity.java index 6bdd1d114..c4f202be2 100644 --- a/app/src/main/java/ceui/lisa/activities/TemplateActivity.java +++ b/app/src/main/java/ceui/lisa/activities/TemplateActivity.java @@ -11,12 +11,12 @@ import ceui.lisa.R; import ceui.lisa.databinding.ActivityFragmentBinding; -import ceui.lisa.fragments.FragmentAbout; -import ceui.lisa.fragments.FragmentAboutUser; -import ceui.lisa.fragments.FragmentBookTag; -import ceui.lisa.fragments.FragmentC; +import ceui.lisa.fragments.FragmentAboutApp; +import ceui.lisa.fragments.FragmentUserInfo; +import ceui.lisa.fragments.FragmentBookedTag; +import ceui.lisa.fragments.FragmentComment; import ceui.lisa.fragments.FragmentCollection; -import ceui.lisa.fragments.FragmentD; +import ceui.lisa.fragments.FragmentDownload; import ceui.lisa.fragments.FragmentEditAccount; import ceui.lisa.fragments.FragmentEditFile; import ceui.lisa.fragments.FragmentFollowUser; @@ -104,20 +104,20 @@ protected Fragment createNewFragment() { case "相关评论": { int id = intent.getIntExtra(Params.ILLUST_ID, 0); String title = intent.getStringExtra(Params.ILLUST_TITLE); - return FragmentC.newInstance(id, title); + return FragmentComment.newInstance(id, title); } case "账号管理": return new FragmentLocalUsers(); case "按标签筛选": { String keyword = intent.getStringExtra(EXTRA_KEYWORD); - return FragmentBookTag.newInstance(keyword); + return FragmentBookedTag.newInstance(keyword); } case "按标签收藏": { int id = intent.getIntExtra(Params.ILLUST_ID, 0); return FragmentSelectBookTag.newInstance(id); } case "关于软件": - return new FragmentAbout(); + return new FragmentAboutApp(); case "批量下载": return new FragmentMultiDownload(); case "画廊": @@ -133,7 +133,7 @@ protected Fragment createNewFragment() { case "搜索": return new FragmentSearch(); case "详细信息": - return new FragmentAboutUser(); + return new FragmentUserInfo(); case "一言": if(Dev.isDev){ }else { @@ -153,7 +153,7 @@ protected Fragment createNewFragment() { return FragmentLikeIllust.newInstance(intent.getIntExtra(Params.USER_ID, 0), FragmentLikeIllust.TYPE_PUBLUC, true); case "下载管理": - return new FragmentD(); + return new FragmentDownload(); case "收藏夹": getWindow().setStatusBarColor(getResources().getColor(R.color.colorPrimary)); return new FragmentCollection(); diff --git a/app/src/main/java/ceui/lisa/adapters/AAdapter.java b/app/src/main/java/ceui/lisa/adapters/ArticleAdapter.java similarity index 88% rename from app/src/main/java/ceui/lisa/adapters/AAdapter.java rename to app/src/main/java/ceui/lisa/adapters/ArticleAdapter.java index 1186df0a8..19ceefc9f 100644 --- a/app/src/main/java/ceui/lisa/adapters/AAdapter.java +++ b/app/src/main/java/ceui/lisa/adapters/ArticleAdapter.java @@ -12,11 +12,12 @@ import ceui.lisa.models.SpotlightArticlesBean; import ceui.lisa.utils.GlideUtil; -public class AAdapter extends BaseAdapter { +//特辑 +public class ArticleAdapter extends BaseAdapter { private int imageSize; - public AAdapter(List targetList, Context context) { + public ArticleAdapter(List targetList, Context context) { super(targetList, context); imageSize = mContext.getResources().getDisplayMetrics().widthPixels - 2 * mContext.getResources().getDimensionPixelSize(R.dimen.sixteen_dp); diff --git a/app/src/main/java/ceui/lisa/adapters/BAdapter.java b/app/src/main/java/ceui/lisa/adapters/BookedTagAdapter.java similarity index 90% rename from app/src/main/java/ceui/lisa/adapters/BAdapter.java rename to app/src/main/java/ceui/lisa/adapters/BookedTagAdapter.java index dc53c31b3..6c51e0ca2 100644 --- a/app/src/main/java/ceui/lisa/adapters/BAdapter.java +++ b/app/src/main/java/ceui/lisa/adapters/BookedTagAdapter.java @@ -11,11 +11,12 @@ import ceui.lisa.models.TagsBean; import ceui.lisa.utils.PixivOperate; -public class BAdapter extends BaseAdapter { +//自己收藏的Tag +public class BookedTagAdapter extends BaseAdapter { private boolean isMuted = false; - public BAdapter(List targetList, Context context, boolean muted) { + public BookedTagAdapter(List targetList, Context context, boolean muted) { super(targetList, context); isMuted = muted; } diff --git a/app/src/main/java/ceui/lisa/adapters/CAdapter.java b/app/src/main/java/ceui/lisa/adapters/CommentAdapter.java similarity index 95% rename from app/src/main/java/ceui/lisa/adapters/CAdapter.java rename to app/src/main/java/ceui/lisa/adapters/CommentAdapter.java index 755be1d4c..fa4d28a28 100644 --- a/app/src/main/java/ceui/lisa/adapters/CAdapter.java +++ b/app/src/main/java/ceui/lisa/adapters/CommentAdapter.java @@ -22,10 +22,10 @@ * 评论列表 */ -public class CAdapter extends BaseAdapter { +public class CommentAdapter extends BaseAdapter { - public CAdapter(List targetList, Context context) { + public CommentAdapter(List targetList, Context context) { super(targetList, context); } diff --git a/app/src/main/java/ceui/lisa/adapters/DownlistAdapter.java b/app/src/main/java/ceui/lisa/adapters/DownlistAdapter.java index c5ad993dc..b713984af 100644 --- a/app/src/main/java/ceui/lisa/adapters/DownlistAdapter.java +++ b/app/src/main/java/ceui/lisa/adapters/DownlistAdapter.java @@ -21,6 +21,7 @@ import java.util.List; import ceui.lisa.R; +import ceui.lisa.activities.Shaft; import ceui.lisa.database.DownloadEntity; import ceui.lisa.interfaces.OnItemClickListener; import ceui.lisa.models.IllustsBean; @@ -34,7 +35,6 @@ public class DownlistAdapter extends RecyclerView.Adapter allIllust; - private Gson mGson = new Gson(); private int imageSize = 0; private SimpleDateFormat mTime = new SimpleDateFormat("MM月dd日 HH: mm"); @@ -61,7 +61,7 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int positi ViewGroup.LayoutParams params = currentOne.illust.getLayoutParams(); params.height = imageSize; params.width = imageSize; - IllustsBean currentIllust = mGson.fromJson(allIllust.get(position).getIllustGson(), IllustsBean.class); + IllustsBean currentIllust = Shaft.sGson.fromJson(allIllust.get(position).getIllustGson(), IllustsBean.class); currentOne.illust.setLayoutParams(params); Glide.with(mContext) .load(allIllust.get(position).getFilePath()) diff --git a/app/src/main/java/ceui/lisa/adapters/DownloadTaskAdapter.java b/app/src/main/java/ceui/lisa/adapters/DownloadTaskAdapter.java deleted file mode 100644 index c2e70d338..000000000 --- a/app/src/main/java/ceui/lisa/adapters/DownloadTaskAdapter.java +++ /dev/null @@ -1,91 +0,0 @@ -package ceui.lisa.adapters; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ProgressBar; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.liulishuo.okdownload.StatusUtil; - -import java.util.List; - -import ceui.lisa.R; -import ceui.lisa.database.IllustTask; -import ceui.lisa.download.QueueListener; -import ceui.lisa.interfaces.OnItemClickListener; - - -public class DownloadTaskAdapter extends RecyclerView.Adapter { - - private Context mContext; - private OnItemClickListener mOnItemClickListener; - private List allIllust; - - public DownloadTaskAdapter(List list, Context context) { - mContext = context; - allIllust = list; - } - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new TagHolder( - LayoutInflater.from(mContext).inflate( - R.layout.recy_download_task, parent, false) - ); - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - final TagHolder currentOne = (TagHolder) holder; - - - ((QueueListener) allIllust.get(position).getDownloadTask().getListener()).bind(currentOne, - allIllust.get(position).getDownloadTask()); - StatusUtil.Status status = StatusUtil.getStatus(allIllust.get(position).getDownloadTask()); - if (status == StatusUtil.Status.COMPLETED) { - currentOne.state.setText(mContext.getString(R.string.has_download)); - } else if (status == StatusUtil.Status.IDLE) { - currentOne.state.setText("闲置中"); - } else if (status == StatusUtil.Status.PENDING) { - currentOne.state.setText("等待下载"); - } else if (status == StatusUtil.Status.RUNNING) { - currentOne.state.setText("下载中"); - } else if (status == StatusUtil.Status.UNKNOWN) { - currentOne.state.setText("未知状态"); - } else { - currentOne.state.setText("最坏的情况"); - } - if (mOnItemClickListener != null) { - holder.itemView.setOnClickListener(v -> mOnItemClickListener.onItemClick(v, position, 0)); - } - } - - @Override - public int getItemCount() { - return allIllust.size(); - } - - public void setOnItemClickListener(OnItemClickListener itemClickListener) { - mOnItemClickListener = itemClickListener; - } - - public static class TagHolder extends RecyclerView.ViewHolder { - public ProgressBar mProgressBar; - public TextView title, currentSize, fullSize, state; - - TagHolder(View itemView) { - super(itemView); - title = itemView.findViewById(R.id.task_name); - mProgressBar = itemView.findViewById(R.id.progress); - currentSize = itemView.findViewById(R.id.current_size); - fullSize = itemView.findViewById(R.id.full_size); - state = itemView.findViewById(R.id.state); - } - } -} diff --git a/app/src/main/java/ceui/lisa/adapters/DownloadedAdapter.java b/app/src/main/java/ceui/lisa/adapters/DownloadedAdapter.java new file mode 100644 index 000000000..c97dc25ef --- /dev/null +++ b/app/src/main/java/ceui/lisa/adapters/DownloadedAdapter.java @@ -0,0 +1,81 @@ +package ceui.lisa.adapters; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; + +import com.bumptech.glide.Glide; + +import java.text.SimpleDateFormat; +import java.util.List; + +import ceui.lisa.R; +import ceui.lisa.activities.Shaft; +import ceui.lisa.database.DownloadEntity; +import ceui.lisa.databinding.RecyViewHistoryBinding; +import ceui.lisa.models.IllustsBean; +import ceui.lisa.utils.GlideUtil; + +public class DownloadedAdapter extends BaseAdapter { + + private int imageSize = 0; + private SimpleDateFormat mTime = new SimpleDateFormat("MM月dd日 HH: mm"); + + public DownloadedAdapter(List targetList, Context context) { + super(targetList, context); + imageSize = (mContext.getResources().getDisplayMetrics().widthPixels - + mContext.getResources().getDimensionPixelSize(R.dimen.four_dp)) / 2; + } + + @Override + public void initLayout() { + mLayoutID = R.layout.recy_view_history; + } + + @Override + public void bindData(DownloadEntity target, + ViewHolder bindView, int position) { + ViewGroup.LayoutParams params = bindView.baseBind.illustImage.getLayoutParams(); + params.height = imageSize; + params.width = imageSize; + bindView.baseBind.illustImage.setLayoutParams(params); + + IllustsBean currentIllust = Shaft.sGson.fromJson(allIllust.get(position).getIllustGson(), IllustsBean.class); + Glide.with(mContext) + .load(allIllust.get(position).getFilePath()) + .placeholder(R.color.light_bg) + .into(bindView.baseBind.illustImage); + bindView.baseBind.title.setText(allIllust.get(position).getFileName()); + bindView.baseBind.author.setText("by: " + currentIllust.getUser().getName()); + bindView.baseBind.time.setText(mTime.format(allIllust.get(position).getDownloadTime())); + + if (currentIllust.getPage_count() == 1) { + bindView.baseBind.pSize.setVisibility(View.GONE); + } else { + bindView.baseBind.pSize.setVisibility(View.VISIBLE); + bindView.baseBind.pSize.setText(currentIllust.getPage_count() + "P"); + } + + //从-400 丝滑滑动到0 + ((SpringHolder) bindView).spring.setCurrentValue(-400); + ((SpringHolder) bindView).spring.setEndValue(0); + + if (mOnItemClickListener != null) { + bindView.itemView.setOnClickListener(v -> + mOnItemClickListener.onItemClick(v, position, 0)); + bindView.baseBind.author.setOnClickListener(v -> { + bindView.baseBind.author.setTag(currentIllust.getUser().getId()); + mOnItemClickListener.onItemClick(bindView.baseBind.author, position, 1); + }); + } + } + + @Override + public ViewHolder getNormalItem(ViewGroup parent) { + return new SpringHolder(DataBindingUtil.inflate( + LayoutInflater.from(mContext), mLayoutID, parent, false).getRoot()); + } +} diff --git a/app/src/main/java/ceui/lisa/adapters/DownloadingAdapter.java b/app/src/main/java/ceui/lisa/adapters/DownloadingAdapter.java new file mode 100644 index 000000000..a7f3a0ae3 --- /dev/null +++ b/app/src/main/java/ceui/lisa/adapters/DownloadingAdapter.java @@ -0,0 +1,59 @@ +package ceui.lisa.adapters; + +import android.content.Context; + +import com.liulishuo.okdownload.DownloadTask; +import com.liulishuo.okdownload.StatusUtil; + +import java.util.List; + +import ceui.lisa.R; +import ceui.lisa.database.IllustTask; +import ceui.lisa.databinding.RecyDownloadTaskBinding; +import ceui.lisa.download.DListener; + +//正在下载 +public class DownloadingAdapter extends BaseAdapter { + + public DownloadingAdapter(List targetList, Context context) { + super(targetList, context); + } + + @Override + public void initLayout() { + mLayoutID = R.layout.recy_download_task; + } + + @Override + public void bindData(IllustTask target, ViewHolder bindView, int position) { + bindView.baseBind.taskName.setText(target.getDownloadTask().getFilename()); + + DListener listener = (DListener) allIllust.get(position).getDownloadTask().getListener(); + StatusUtil.Status status = StatusUtil.getStatus(allIllust.get(position).getDownloadTask()); + if (status == StatusUtil.Status.COMPLETED) { + bindView.baseBind.state.setText(mContext.getString(R.string.has_download)); + } else if (status == StatusUtil.Status.IDLE) { + bindView.baseBind.state.setText("闲置中"); + } else if (status == StatusUtil.Status.PENDING) { + bindView.baseBind.state.setText("等待下载"); + } else if (status == StatusUtil.Status.RUNNING) { + bindView.baseBind.state.setText("下载中"); + } else if (status == StatusUtil.Status.UNKNOWN) { + bindView.baseBind.state.setText("未知状态"); + } else { + bindView.baseBind.state.setText("最坏的情况"); + } + if (listener.getNowID() == target.getDownloadTask().getId()) { + bindView.baseBind.progress.setTag("update"); + bindView.baseBind.currentSize.setTag("update"); + bindView.baseBind.progress.setProgress(listener.getNowOffset()); + bindView.baseBind.progress.setMax(listener.getMax()); + listener.bind(bindView.baseBind.progress, bindView.baseBind.currentSize); + } else { + bindView.baseBind.progress.setTag("wtf"); + bindView.baseBind.currentSize.setTag("wtf"); + bindView.baseBind.progress.setProgress(0); + bindView.baseBind.currentSize.setText("0.00KB / 未知大小"); + } + } +} diff --git a/app/src/main/java/ceui/lisa/adapters/HistoryAdapter.java b/app/src/main/java/ceui/lisa/adapters/HistoryAdapter.java index 1c5ba023c..396124fa6 100644 --- a/app/src/main/java/ceui/lisa/adapters/HistoryAdapter.java +++ b/app/src/main/java/ceui/lisa/adapters/HistoryAdapter.java @@ -82,8 +82,8 @@ public void bindData(IllustHistoryEntity target, ViewHolder @@ -97,27 +97,7 @@ public void bindData(IllustHistoryEntity target, ViewHolder getNormalItem(ViewGroup parent) { - return new TagHolder(DataBindingUtil.inflate( + return new SpringHolder(DataBindingUtil.inflate( LayoutInflater.from(mContext), mLayoutID, parent, false).getRoot()); } - - public static class TagHolder extends ViewHolder { - - Spring spring; - - public TagHolder(@NonNull View itemView) { - super(itemView); - - SpringSystem springSystem = SpringSystem.create(); - spring = springSystem.createSpring(); - spring.setSpringConfig(SpringConfig.fromOrigamiTensionAndFriction(40, 5)); - spring.addListener(new SimpleSpringListener() { - - @Override - public void onSpringUpdate(Spring spring) { - itemView.setTranslationX((float) spring.getCurrentValue()); - } - }); - } - } } diff --git a/app/src/main/java/ceui/lisa/adapters/SpringHolder.java b/app/src/main/java/ceui/lisa/adapters/SpringHolder.java new file mode 100644 index 000000000..106d8f4ee --- /dev/null +++ b/app/src/main/java/ceui/lisa/adapters/SpringHolder.java @@ -0,0 +1,32 @@ +package ceui.lisa.adapters; + +import android.view.View; + +import androidx.annotation.NonNull; + +import com.facebook.rebound.SimpleSpringListener; +import com.facebook.rebound.Spring; +import com.facebook.rebound.SpringConfig; +import com.facebook.rebound.SpringSystem; + +import ceui.lisa.databinding.RecyViewHistoryBinding; + +class SpringHolder extends ViewHolder { + + Spring spring; + + SpringHolder(@NonNull View itemView) { + super(itemView); + + SpringSystem springSystem = SpringSystem.create(); + spring = springSystem.createSpring(); + spring.setSpringConfig(SpringConfig.fromOrigamiTensionAndFriction(40, 5)); + spring.addListener(new SimpleSpringListener() { + + @Override + public void onSpringUpdate(Spring spring) { + itemView.setTranslationX((float) spring.getCurrentValue()); + } + }); + } +} diff --git a/app/src/main/java/ceui/lisa/adapters/HAdapter.java b/app/src/main/java/ceui/lisa/adapters/TagAdapter.java similarity index 93% rename from app/src/main/java/ceui/lisa/adapters/HAdapter.java rename to app/src/main/java/ceui/lisa/adapters/TagAdapter.java index 51b4dd1d1..75168a2b5 100644 --- a/app/src/main/java/ceui/lisa/adapters/HAdapter.java +++ b/app/src/main/java/ceui/lisa/adapters/TagAdapter.java @@ -17,11 +17,11 @@ import ceui.lisa.models.IllustsBean; import ceui.lisa.utils.GlideUtil; -public class HAdapter extends BaseAdapter implements MultiDownload { +public class TagAdapter extends BaseAdapter implements MultiDownload { private int imageSize; - public HAdapter(List targetList, Context context) { + public TagAdapter(List targetList, Context context) { super(targetList, context); imageSize = (mContext.getResources().getDisplayMetrics().widthPixels - mContext.getResources().getDimensionPixelSize(R.dimen.two_dp)) / 3; diff --git a/app/src/main/java/ceui/lisa/cache/SfOperator.java b/app/src/main/java/ceui/lisa/cache/SfOperator.java index 21f507d1e..53ec20096 100644 --- a/app/src/main/java/ceui/lisa/cache/SfOperator.java +++ b/app/src/main/java/ceui/lisa/cache/SfOperator.java @@ -1,5 +1,9 @@ package ceui.lisa.cache; +import android.content.SharedPreferences; + +import ceui.lisa.activities.Shaft; + /** * 使用shared preference 存储 */ @@ -7,12 +11,15 @@ public class SfOperator implements IOperate { @Override public T getModel(String key, Class pClass) { - return null; + String value = Shaft.sPreferences.getString(key, ""); + return Shaft.sGson.fromJson(value, pClass); } @Override public void saveModel(String ket, T pT) { - + SharedPreferences.Editor editor = Shaft.sPreferences.edit(); + editor.putString(ket, Shaft.sGson.toJson(pT)); + editor.apply(); } @Override @@ -22,6 +29,8 @@ public void clearAll() { @Override public void clear(String key) { - + SharedPreferences.Editor editor = Shaft.sPreferences.edit(); + editor.putString(key, ""); + editor.apply(); } } diff --git a/app/src/main/java/ceui/lisa/core/TagFilter.java b/app/src/main/java/ceui/lisa/core/TagFilter.java index 797962550..7753cd920 100644 --- a/app/src/main/java/ceui/lisa/core/TagFilter.java +++ b/app/src/main/java/ceui/lisa/core/TagFilter.java @@ -16,9 +16,7 @@ public class TagFilter { public static void judge(IllustsBean illustsBean) { - String tagString = illustsBean.getTagString(); - Common.showLog(illustsBean.getTitle() + " " + tagString); if (TextUtils.isEmpty(tagString)) { return; } @@ -26,7 +24,6 @@ public static void judge(IllustsBean illustsBean) { List temp = getMutedTags(); for (TagsBean bean : temp) { String name = "*#" + bean.getName() + ","; - //Common.showLog(illustsBean.getTitle() + " " + name); if (tagString.contains(name)) { illustsBean.setShield(true); break; @@ -42,7 +39,6 @@ public static List getMutedTags() { } for (TagMuteEntity muteEntity : muteEntities) { TagsBean bean = Shaft.sGson.fromJson(muteEntity.getTagJson(), TagsBean.class); - //Common.showLog(bean.getName()); result.add(bean); } return result; diff --git a/app/src/main/java/ceui/lisa/dialogs/MuteDialog.java b/app/src/main/java/ceui/lisa/dialogs/MuteDialog.java index 25e416027..a9c06f3a5 100644 --- a/app/src/main/java/ceui/lisa/dialogs/MuteDialog.java +++ b/app/src/main/java/ceui/lisa/dialogs/MuteDialog.java @@ -1,5 +1,6 @@ package ceui.lisa.dialogs; +import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -12,6 +13,7 @@ import java.util.List; import ceui.lisa.R; +import ceui.lisa.activities.TemplateActivity; import ceui.lisa.databinding.DialogMuteTagBinding; import ceui.lisa.models.IllustsBean; import ceui.lisa.models.TagsBean; @@ -82,6 +84,15 @@ public void onClick(View v) { } } }); + baseBind.other.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(mContext, TemplateActivity.class); + intent.putExtra(TemplateActivity.EXTRA_FRAGMENT, "标签屏蔽记录"); + mContext.startActivity(intent); + dismiss(); + } + }); } @Override diff --git a/app/src/main/java/ceui/lisa/download/QueueListener.java b/app/src/main/java/ceui/lisa/download/DListener.java similarity index 51% rename from app/src/main/java/ceui/lisa/download/QueueListener.java rename to app/src/main/java/ceui/lisa/download/DListener.java index 61a67cc27..bc9770606 100644 --- a/app/src/main/java/ceui/lisa/download/QueueListener.java +++ b/app/src/main/java/ceui/lisa/download/DListener.java @@ -1,22 +1,7 @@ -/* - * Copyright (c) 2017 LingoChamp Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package ceui.lisa.download; -import android.util.SparseArray; +import android.widget.ProgressBar; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -33,38 +18,24 @@ import org.greenrobot.eventbus.EventBus; import ceui.lisa.activities.Shaft; -import ceui.lisa.adapters.DownloadTaskAdapter; import ceui.lisa.database.IllustTask; import ceui.lisa.utils.Channel; import ceui.lisa.utils.Common; -public class QueueListener extends DownloadListener1 { - - private static final String TAG = "QueueListener"; - private SparseArray holderMap = new SparseArray<>(); +public class DListener extends DownloadListener1 { + private ProgressBar mProgressBar; + private TextView currentSize; + private int nowID = 0, max = 0, nowOffset = 0; - public QueueListener() { - Common.showLog("QueueListener 生成了一个实例 " + System.currentTimeMillis()); - } - - public void bind(DownloadTaskAdapter.TagHolder holder, DownloadTask task) { - // replace. - final int size = holderMap.size(); - for (int i = 0; i < size; i++) { - if (holderMap.valueAt(i) == holder) { - holderMap.removeAt(i); - break; - } - } - holderMap.put(task.getId(), holder); - final String taskName = task.getFilename(); - holder.title.setText(taskName); + public void bind(ProgressBar progressBar, TextView textView) { + mProgressBar = progressBar; + currentSize = textView; } @Override public void taskStart(@NonNull DownloadTask task, @NonNull Listener1Assist.Listener1Model model) { - + nowID = task.getId(); } @Override @@ -75,24 +46,33 @@ public void retry(@NonNull DownloadTask task, @NonNull ResumeFailedCause cause) @Override public void connected(@NonNull DownloadTask task, int blockCount, long currentOffset, long totalLength) { - final DownloadTaskAdapter.TagHolder holder = holderMap.get(task.getId()); - if (holder != null) { - holder.mProgressBar.setMax((int) totalLength); - holder.fullSize.setText(" / " + FileSizeUtil.formatFileSize(totalLength)); - holder.mProgressBar.setProgress((int) currentOffset); - } } @Override public void progress(@NonNull DownloadTask task, long currentOffset, long totalLength) { + Common.showLog("progress " + task.getFilename() + " " + currentOffset + "/" + totalLength); + if (mProgressBar != null){ + if ("update".equals(mProgressBar.getTag())) { + mProgressBar.setMax((int) totalLength); + mProgressBar.setProgress((int) currentOffset); + } else { + mProgressBar.setProgress(0); + } + } - final DownloadTaskAdapter.TagHolder holder = holderMap.get(task.getId()); - if (holder != null) { - Common.showLog("totalLength : " + totalLength + " currentOffset " + currentOffset); - holder.mProgressBar.setMax((int) totalLength); - holder.mProgressBar.setProgress((int) currentOffset); - holder.currentSize.setText(FileSizeUtil.formatFileSize(currentOffset)); + + if (currentSize != null) { + if ("update".equals(currentSize.getTag())) { + currentSize.setText(String.format("%s / %s", + FileSizeUtil.formatFileSize(currentOffset), + FileSizeUtil.formatFileSize(totalLength))); + } else { + currentSize.setText("0.00KB / 未知大小"); + } } + + max = (int) totalLength; + nowOffset = (int) currentOffset; } @Override @@ -105,22 +85,16 @@ public void taskEnd(@NonNull DownloadTask task, @NonNull EndCause cause, @Nullab try { Common.showLog(task.getFile().getPath()); if (task.getFilename().contains(".zip")) { - //ZipUtil.unpack(task.getFile(), new File(FileCreator.FILE_GIF_CHILD_PATH + task.getFilename().substring(0, task.getFilename().length() - 4))); - - try { ZipFile zipFile = new ZipFile(task.getFile().getPath()); zipFile.extractAll(Shaft.sSettings.getGifUnzipPath() + task.getFilename().substring(0, task.getFilename().length() - 4)); Common.showToast("图组ZIP解压完成"); - //通知FragmentSingleIllust 开始播放gif Channel channel = new Channel(); channel.setReceiver("FragmentSingleIllust"); EventBus.getDefault().post(channel); - - } catch (ZipException e) { e.printStackTrace(); } @@ -129,9 +103,30 @@ public void taskEnd(@NonNull DownloadTask task, @NonNull EndCause cause, @Nullab e.printStackTrace(); } - TaskQueue.get().removeTask(illustTask); + } + + public int getNowID() { + return nowID; + } + public void setNowID(int nowID) { + this.nowID = nowID; + } + + public int getMax() { + return max; + } + + public void setMax(int max) { + this.max = max; + } + + public int getNowOffset() { + return nowOffset; + } + public void setNowOffset(int nowOffset) { + this.nowOffset = nowOffset; } -} \ No newline at end of file +} diff --git a/app/src/main/java/ceui/lisa/download/IllustDownload.java b/app/src/main/java/ceui/lisa/download/IllustDownload.java index fe2c3a808..4ff2b8d5e 100644 --- a/app/src/main/java/ceui/lisa/download/IllustDownload.java +++ b/app/src/main/java/ceui/lisa/download/IllustDownload.java @@ -60,7 +60,7 @@ public void doSomething(Object t) { illustTask.setIllustsBean(illustsBean); illustTask.setDownloadTask(task); TaskQueue.get().addTask(illustTask); - task.enqueue(new QueueListener()); + task.enqueue(new DListener()); Common.showToast(Shaft.getContext().getString(R.string.one_item_added)); } }); @@ -97,7 +97,7 @@ public void doSomething(Object t) { illustTask.setIllustsBean(illustsBean); illustTask.setDownloadTask(task); TaskQueue.get().addTask(illustTask); - task.enqueue(new QueueListener()); + task.enqueue(new DListener()); Common.showToast(Shaft.getContext().getString(R.string.one_item_added)); } } @@ -143,7 +143,7 @@ public void doSomething(Object t) { } DownloadTask[] taskArray = new DownloadTask[tempList.size()]; - DownloadTask.enqueue(tempList.toArray(taskArray), new QueueListener()); + DownloadTask.enqueue(tempList.toArray(taskArray), new DListener()); Common.showToast(tempList.size() + Shaft.getContext().getString(R.string.has_been_added)); } }); @@ -227,7 +227,7 @@ public void doSomething(Object t) { } DownloadTask[] taskArray = new DownloadTask[tempList.size()]; - DownloadTask.enqueue(tempList.toArray(taskArray), new QueueListener()); + DownloadTask.enqueue(tempList.toArray(taskArray), new DListener()); Common.showToast(tempList.size() + Shaft.getContext().getString(R.string.has_been_added)); } }); diff --git a/app/src/main/java/ceui/lisa/download/TaskQueue.java b/app/src/main/java/ceui/lisa/download/TaskQueue.java index 4565b2222..b6af156ce 100644 --- a/app/src/main/java/ceui/lisa/download/TaskQueue.java +++ b/app/src/main/java/ceui/lisa/download/TaskQueue.java @@ -46,7 +46,7 @@ public void removeTask(IllustTask downloadTask) { //通知FragmentNowDownload 删除已经下载完成的这一项 Channel deleteChannel = new Channel(); - deleteChannel.setReceiver("FragmentNowDownload"); + deleteChannel.setReceiver("FragmentND"); deleteChannel.setObject(i); EventBus.getDefault().post(deleteChannel); @@ -55,15 +55,14 @@ public void removeTask(IllustTask downloadTask) { DownloadEntity downloadEntity = new DownloadEntity(); downloadEntity.setFileName(tempTask.getDownloadTask().getFilename()); - Gson gson = new Gson(); - downloadEntity.setIllustGson(gson.toJson(tempTask.getIllustsBean())); + downloadEntity.setIllustGson(Shaft.sGson.toJson(tempTask.getIllustsBean())); downloadEntity.setDownloadTime(System.currentTimeMillis()); downloadEntity.setFilePath(tempTask.getDownloadTask().getFile().getPath()); AppDatabase.getAppDatabase(Shaft.getContext()).downloadDao().insert(downloadEntity); //通知FragmentHasDownload 添加这一项 Channel addChannel = new Channel(); - addChannel.setReceiver("FragmentDownloadFinish"); + addChannel.setReceiver("FragmentDF"); addChannel.setObject(downloadEntity); EventBus.getDefault().post(addChannel); diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentAbout.kt b/app/src/main/java/ceui/lisa/fragments/FragmentAboutApp.kt similarity index 97% rename from app/src/main/java/ceui/lisa/fragments/FragmentAbout.kt rename to app/src/main/java/ceui/lisa/fragments/FragmentAboutApp.kt index 62b66c92d..1b4135b29 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentAbout.kt +++ b/app/src/main/java/ceui/lisa/fragments/FragmentAboutApp.kt @@ -7,7 +7,7 @@ import ceui.lisa.databinding.FragmentAboutBinding import ceui.lisa.utils.Common import ceui.lisa.utils.Params -class FragmentAbout : BaseBindFragment() { +class FragmentAboutApp : BaseBindFragment() { override fun initLayout() { mLayoutID = R.layout.fragment_about diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentBookTag.java b/app/src/main/java/ceui/lisa/fragments/FragmentBookedTag.java similarity index 87% rename from app/src/main/java/ceui/lisa/fragments/FragmentBookTag.java rename to app/src/main/java/ceui/lisa/fragments/FragmentBookedTag.java index 6c0132647..66a6e00cd 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentBookTag.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentBookedTag.java @@ -7,7 +7,7 @@ import org.greenrobot.eventbus.EventBus; import ceui.lisa.activities.Shaft; -import ceui.lisa.adapters.BAdapter; +import ceui.lisa.adapters.BookedTagAdapter; import ceui.lisa.adapters.BaseAdapter; import ceui.lisa.core.NetControl; import ceui.lisa.databinding.FragmentBaseListBinding; @@ -21,13 +21,13 @@ import ceui.lisa.view.LinearItemDecoration; import io.reactivex.Observable; -public class FragmentBookTag extends NetListFragment { private String bookType = ""; - public static FragmentBookTag newInstance(String bookType) { - FragmentBookTag fragment = new FragmentBookTag(); + public static FragmentBookedTag newInstance(String bookType) { + FragmentBookedTag fragment = new FragmentBookedTag(); fragment.bookType = bookType; return fragment; } @@ -50,7 +50,7 @@ public Observable initNextApi() { @Override public BaseAdapter adapter() { - return new BAdapter(allItems, mContext, false).setOnItemClickListener(new OnItemClickListener() { + return new BookedTagAdapter(allItems, mContext, false).setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(View v, int position, int viewType) { Channel channel = new Channel(); diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentCardIllust.java b/app/src/main/java/ceui/lisa/fragments/FragmentCardIllust.java index 274717892..a084f7f45 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentCardIllust.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentCardIllust.java @@ -150,7 +150,6 @@ public void onExecuteFail(Exception e) { } }); baseBind.toolbar.setTitle(illust.getTitle() + " "); - baseBind.toolbar.setTitleTextAppearance(mContext, R.style.shadowText); baseBind.toolbar.setNavigationOnClickListener(view -> getActivity().finish()); baseBind.download.setOnClickListener(new View.OnClickListener() { @Override @@ -406,8 +405,7 @@ public void setUserVisibleHint(boolean isVisibleToUser) { private void insertViewHistory() { IllustHistoryEntity illustHistoryEntity = new IllustHistoryEntity(); illustHistoryEntity.setIllustID(illust.getId()); - Gson gson = new Gson(); - illustHistoryEntity.setIllustJson(gson.toJson(illust)); + illustHistoryEntity.setIllustJson(Shaft.sGson.toJson(illust)); illustHistoryEntity.setTime(System.currentTimeMillis()); AppDatabase.getAppDatabase(Shaft.getContext()).downloadDao().insert(illustHistoryEntity); } diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentC.java b/app/src/main/java/ceui/lisa/fragments/FragmentComment.java similarity index 96% rename from app/src/main/java/ceui/lisa/fragments/FragmentC.java rename to app/src/main/java/ceui/lisa/fragments/FragmentComment.java index 761ae3af4..817e112e1 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentC.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentComment.java @@ -12,7 +12,7 @@ import ceui.lisa.activities.TemplateActivity; import ceui.lisa.activities.UActivity; import ceui.lisa.adapters.BaseAdapter; -import ceui.lisa.adapters.CAdapter; +import ceui.lisa.adapters.CommentAdapter; import ceui.lisa.core.NetControl; import ceui.lisa.databinding.FragmentCommentBinding; import ceui.lisa.databinding.RecyCommentListBinding; @@ -30,7 +30,7 @@ import static ceui.lisa.activities.Shaft.sUserModel; -public class FragmentC extends NetListFragment { private static final String[] OPTIONS = new String[]{"回复评论", "复制评论"}; @@ -39,11 +39,11 @@ public class FragmentC extends NetListFragment initNextApi() { @Override public BaseAdapter adapter() { - return new CAdapter(allItems, mContext).setOnItemClickListener((v, position, viewType) -> { + return new CommentAdapter(allItems, mContext).setOnItemClickListener((v, position, viewType) -> { if (viewType == 0) { AlertDialog.Builder builder = new AlertDialog.Builder(mContext); builder.setItems(OPTIONS, (dialog, which) -> { diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentDF.java b/app/src/main/java/ceui/lisa/fragments/FragmentDF.java new file mode 100644 index 000000000..9bb12902f --- /dev/null +++ b/app/src/main/java/ceui/lisa/fragments/FragmentDF.java @@ -0,0 +1,121 @@ +package ceui.lisa.fragments; + +import android.content.Intent; +import android.view.View; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import ceui.lisa.activities.ImageDetailActivity; +import ceui.lisa.activities.Shaft; +import ceui.lisa.activities.UActivity; +import ceui.lisa.activities.ViewPagerActivity; +import ceui.lisa.adapters.BaseAdapter; +import ceui.lisa.adapters.DownloadedAdapter; +import ceui.lisa.database.AppDatabase; +import ceui.lisa.database.DownloadEntity; +import ceui.lisa.database.IllustHistoryEntity; +import ceui.lisa.databinding.FragmentBaseListBinding; +import ceui.lisa.databinding.RecyViewHistoryBinding; +import ceui.lisa.interfaces.BaseCtrl; +import ceui.lisa.interfaces.DataControl; +import ceui.lisa.interfaces.OnItemClickListener; +import ceui.lisa.models.IllustsBean; +import ceui.lisa.utils.Channel; +import ceui.lisa.utils.Common; +import ceui.lisa.utils.DataChannel; +import ceui.lisa.utils.Params; + +public class FragmentDF extends LocalListFragment { + + private List all = new ArrayList<>(); + private List filePaths = new ArrayList<>(); + + @Override + public BaseAdapter adapter() { + return new DownloadedAdapter(allItems, mContext).setOnItemClickListener(new OnItemClickListener() { + @Override + public void onItemClick(View v, int position, int viewType) { + Common.showLog(className + position + " " + allItems.size()); + if (viewType == 0) { + Intent intent = new Intent(mContext, ImageDetailActivity.class); + intent.putExtra("illust", (Serializable) filePaths); + intent.putExtra("dataType", "下载详情"); + intent.putExtra("index", position); + startActivity(intent); + } else if (viewType == 1) { + Intent intent = new Intent(mContext, UActivity.class); + intent.putExtra(Params.USER_ID, all.get(position).getUser().getId()); + startActivity(intent); + } + } + }); + } + + @Override + public BaseCtrl present() { + return new DataControl>() { + @Override + public List first() { + return AppDatabase.getAppDatabase(mContext).downloadDao().getAll(PAGE_SIZE, 0); + } + + @Override + public List next() { + return AppDatabase.getAppDatabase(mContext) + .downloadDao().getAll(PAGE_SIZE, allItems.size()); + } + + @Override + public boolean hasNext() { + return true; + } + }; + } + + @Override + public void onFirstLoaded(List illustHistoryEntities) { + for (int i = 0; i < illustHistoryEntities.size(); i++) { + IllustsBean illustsBean = Shaft.sGson.fromJson( + illustHistoryEntities.get(i).getIllustGson(), IllustsBean.class); + all.add(illustsBean); + filePaths.add(illustHistoryEntities.get(i).getFilePath()); + } + } + + @Override + public void onNextLoaded(List illustHistoryEntities) { + for (int i = 0; i < illustHistoryEntities.size(); i++) { + IllustsBean illustsBean = Shaft.sGson.fromJson( + illustHistoryEntities.get(i).getIllustGson(), IllustsBean.class); + Common.showLog(className + "add " + i + illustsBean.getTitle()); + all.add(illustsBean); + filePaths.add(illustHistoryEntities.get(i).getFilePath()); + } + } + + @Override + public boolean showToolbar() { + return false; + } + + @Override + public boolean eventBusEnable() { + return true; + } + + @Override + public void handleEvent(Channel channel) { + mRecyclerView.setVisibility(View.VISIBLE); + noData.setVisibility(View.INVISIBLE); + DownloadEntity entity = (DownloadEntity) channel.getObject(); + allItems.add(0, entity); + all.add(Shaft.sGson.fromJson(entity.getIllustGson(), IllustsBean.class)); + filePaths.add(0, entity.getFilePath()); + mAdapter.notifyItemInserted(0); + mRecyclerView.scrollToPosition(0); + mAdapter.notifyItemRangeChanged(0, allItems.size()); + } +} diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentD.java b/app/src/main/java/ceui/lisa/fragments/FragmentDownload.java similarity index 92% rename from app/src/main/java/ceui/lisa/fragments/FragmentD.java rename to app/src/main/java/ceui/lisa/fragments/FragmentDownload.java index 37ea5569a..7aa999690 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentD.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentDownload.java @@ -22,13 +22,13 @@ /** * 下载管理 */ -public class FragmentD extends BaseBindFragment { +public class FragmentDownload extends BaseBindFragment { private static final String[] CHINESE_TITLES = new String[]{ Shaft.getContext().getString(R.string.now_downloading), Shaft.getContext().getString(R.string.has_download) }; - private Fragment[] allPages = new Fragment[]{new FragmentNowDownload(), new FragmentDownloadFinish()}; + private Fragment[] allPages = new Fragment[]{new FragmentND(), new FragmentDF()}; @Override void initLayout() { @@ -50,8 +50,8 @@ public boolean onMenuItemClick(MenuItem item) { @Override public void onClick(DialogInterface dialog, int which) { AppDatabase.getAppDatabase(mContext).downloadDao().deleteAllDownload(); - if (allPages[1] instanceof FragmentDownloadFinish) { - ((FragmentDownloadFinish) allPages[1]).getFirstData(); + if (allPages[1] instanceof FragmentDF) { + ((FragmentDF) allPages[1]).clear(); } Common.showToast("下载记录清除成功"); } diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentDownloadFinish.java b/app/src/main/java/ceui/lisa/fragments/FragmentDownloadFinish.java index 5416fe1fc..7d66058b0 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentDownloadFinish.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentDownloadFinish.java @@ -15,6 +15,7 @@ import java.util.List; import ceui.lisa.activities.ImageDetailActivity; +import ceui.lisa.activities.Shaft; import ceui.lisa.activities.UActivity; import ceui.lisa.adapters.DownlistAdapter; import ceui.lisa.database.AppDatabase; @@ -46,11 +47,10 @@ public void getFirstData() { nowIndex += temp.size(); allItems.addAll(temp); Thread.sleep(500); - Gson gson = new Gson(); allIllusts = new ArrayList<>(); filePaths = new ArrayList<>(); for (int i = 0; i < allItems.size(); i++) { - allIllusts.add(gson.fromJson(allItems.get(i).getIllustGson(), IllustsBean.class)); + allIllusts.add(Shaft.sGson.fromJson(allItems.get(i).getIllustGson(), IllustsBean.class)); filePaths.add(allItems.get(i).getFilePath()); } emitter.onComplete(); @@ -116,9 +116,8 @@ public void getNextData() { allItems.addAll(temp); emitter.onNext("开始转换数据类型"); Thread.sleep(500); - Gson gson = new Gson(); for (int i = lastSize; i < allItems.size(); i++) { - allIllusts.add(gson.fromJson(allItems.get(i).getIllustGson(), IllustsBean.class)); + allIllusts.add(Shaft.sGson.fromJson(allItems.get(i).getIllustGson(), IllustsBean.class)); filePaths.add(allItems.get(i).getFilePath()); } mAdapter.notifyItemRangeChanged(lastSize, nowIndex); @@ -158,16 +157,7 @@ boolean showToolbar() { @Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(Channel event) { if (className.contains(event.getReceiver())) { - nowIndex++; - mRecyclerView.setVisibility(View.VISIBLE); - noData.setVisibility(View.INVISIBLE); - DownloadEntity entity = (DownloadEntity) event.getObject(); - allItems.add(0, entity); - allIllusts.add(new Gson().fromJson(entity.getIllustGson(), IllustsBean.class)); - filePaths.add(0, entity.getFilePath()); - mAdapter.notifyItemInserted(0); - mRecyclerView.scrollToPosition(0); - mAdapter.notifyItemRangeChanged(0, allItems.size()); + } } diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentFilter.java b/app/src/main/java/ceui/lisa/fragments/FragmentFilter.java index defaceea1..bd70a699a 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentFilter.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentFilter.java @@ -3,11 +3,7 @@ import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; -import android.widget.Button; import android.widget.CompoundButton; -import android.widget.Switch; - -import androidx.appcompat.widget.AppCompatSpinner; import ceui.lisa.R; import ceui.lisa.activities.Shaft; @@ -123,7 +119,19 @@ public void onNothingSelected(AdapterView parent) { baseBind.popSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - mSearchFilter.onPopularChanged(isChecked); + if (isChecked) { + baseBind.r18Rela.setVisibility(View.VISIBLE); + mSearchFilter.onPopularChanged(true, baseBind.r18Switch.isChecked()); + } else { + baseBind.r18Rela.setVisibility(View.GONE); + mSearchFilter.onPopularChanged(false, false); + } + } + }); + baseBind.r18Switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + mSearchFilter.onPopularChanged(true, isChecked); } }); } @@ -136,7 +144,7 @@ static abstract class SearchFilter { abstract void onStarSizeChanged(String starSize); - abstract void onPopularChanged(boolean isPopular); + abstract void onPopularChanged(boolean isPopular, boolean hasR18); abstract void startSearch(); diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentHotTag.java b/app/src/main/java/ceui/lisa/fragments/FragmentHotTag.java index f814c1c74..363b49641 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentHotTag.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentHotTag.java @@ -7,7 +7,7 @@ import ceui.lisa.activities.TemplateActivity; import ceui.lisa.adapters.BaseAdapter; -import ceui.lisa.adapters.HAdapter; +import ceui.lisa.adapters.TagAdapter; import ceui.lisa.core.NetControl; import ceui.lisa.databinding.FragmentBaseListBinding; import ceui.lisa.databinding.RecyTagGridBinding; @@ -63,7 +63,7 @@ public Observable initNextApi() { @Override public BaseAdapter adapter() { - return new HAdapter(allItems, mContext).setOnItemClickListener(new OnItemClickListener() { + return new TagAdapter(allItems, mContext).setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(View v, int position, int viewType) { Intent intent = new Intent(mContext, TemplateActivity.class); diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentLocalImageDetail.java b/app/src/main/java/ceui/lisa/fragments/FragmentLocalImageDetail.java index d865df753..ef6978ece 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentLocalImageDetail.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentLocalImageDetail.java @@ -40,5 +40,6 @@ public void initView(View view) { .load(filePath) .transition(withCrossFade()) .into(baseBind.illustImage); + baseBind.progress.setVisibility(View.INVISIBLE); } } diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentLocalUsers.java b/app/src/main/java/ceui/lisa/fragments/FragmentLocalUsers.java index bb9fafb94..7dd63ede2 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentLocalUsers.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentLocalUsers.java @@ -18,6 +18,7 @@ import java.util.List; import ceui.lisa.R; +import ceui.lisa.activities.Shaft; import ceui.lisa.activities.TemplateActivity; import ceui.lisa.database.AppDatabase; import ceui.lisa.database.UserEntity; @@ -88,10 +89,9 @@ void initData() { .map(new Function, List>() { @Override public List apply(List userEntities) throws Exception { - Gson gson = new Gson(); allItems = new ArrayList<>(); for (int i = 0; i < userEntities.size(); i++) { - allItems.add(gson.fromJson(userEntities.get(i).getUserGson(), UserModel.class)); + allItems.add(Shaft.sGson.fromJson(userEntities.get(i).getUserGson(), UserModel.class)); } return allItems; } diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentM.java b/app/src/main/java/ceui/lisa/fragments/FragmentM.java index 8a1caeb65..8bff4b1c9 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentM.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentM.java @@ -9,7 +9,7 @@ import java.util.List; import ceui.lisa.R; -import ceui.lisa.adapters.BAdapter; +import ceui.lisa.adapters.BookedTagAdapter; import ceui.lisa.adapters.BaseAdapter; import ceui.lisa.core.TagFilter; import ceui.lisa.database.AppDatabase; @@ -38,7 +38,7 @@ public List next() { @Override public BaseAdapter adapter() { - return new BAdapter(allItems, mContext, true); + return new BookedTagAdapter(allItems, mContext, true); } @Override diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentND.java b/app/src/main/java/ceui/lisa/fragments/FragmentND.java new file mode 100644 index 000000000..77307c462 --- /dev/null +++ b/app/src/main/java/ceui/lisa/fragments/FragmentND.java @@ -0,0 +1,61 @@ +package ceui.lisa.fragments; + +import java.util.List; + +import ceui.lisa.adapters.BaseAdapter; +import ceui.lisa.adapters.DownloadingAdapter; +import ceui.lisa.database.IllustTask; +import ceui.lisa.databinding.FragmentBaseListBinding; +import ceui.lisa.databinding.RecyDownloadTaskBinding; +import ceui.lisa.download.TaskQueue; +import ceui.lisa.interfaces.BaseCtrl; +import ceui.lisa.interfaces.DataControl; +import ceui.lisa.utils.Channel; +import ceui.lisa.utils.Common; + +public class FragmentND extends LocalListFragment { + + @Override + public BaseAdapter adapter() { + return new DownloadingAdapter(allItems, mContext); + } + + @Override + public BaseCtrl present() { + return new DataControl>() { + @Override + public List first() { + return TaskQueue.get().getTasks(); + } + + @Override + public List next() { + return null; + } + }; + } + + @Override + public boolean showToolbar() { + return false; + } + + @Override + public boolean eventBusEnable() { + return true; + } + + @Override + public void handleEvent(Channel channel) { + int position = (int) channel.getObject(); + Common.showLog(className + "删除第 " + position + "个"); + allItems.remove(position); + mAdapter.notifyItemRemoved(position); + mAdapter.notifyItemRangeChanged(position, allItems.size() - position); + + if (TaskQueue.get().getTasks().size() == 0) { + autoRefresh(); + } + } +} diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentNowDownload.java b/app/src/main/java/ceui/lisa/fragments/FragmentNowDownload.java deleted file mode 100644 index 9e6c7b04e..000000000 --- a/app/src/main/java/ceui/lisa/fragments/FragmentNowDownload.java +++ /dev/null @@ -1,77 +0,0 @@ -package ceui.lisa.fragments; - -import android.os.Bundle; -import android.view.View; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import ceui.lisa.adapters.DownloadTaskAdapter; -import ceui.lisa.database.IllustTask; -import ceui.lisa.download.TaskQueue; -import ceui.lisa.interfaces.OnItemClickListener; -import ceui.lisa.utils.Channel; -import ceui.lisa.utils.Common; - -public class FragmentNowDownload extends BaseAsyncFragment { - - @Override - public void getFirstData() { - allItems = TaskQueue.get().getTasks(); - showFirstData(); - } - - @Override - boolean showToolbar() { - return false; - } - - @Override - View initView(View v) { - super.initView(v); - //正在下载页面。不允许刷新,不允许加载更多 - mRefreshLayout.setEnableLoadMore(false); - mRefreshLayout.setEnableRefresh(false); - return v; - } - - @Override - public void initAdapter() { - mAdapter = new DownloadTaskAdapter(allItems, mContext); - mAdapter.setOnItemClickListener(new OnItemClickListener() { - @Override - public void onItemClick(View v, int position, int viewType) { - Common.showLog(className + position); - } - }); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onMessageEvent(Channel event) { - if (className.contains(event.getReceiver())) { - int position = (int) event.getObject(); - mAdapter.notifyItemRemoved(position); - mAdapter.notifyItemRangeChanged(position, allItems.size() - position); - - Common.showLog(className + "删除一个 还剩 " + TaskQueue.get().getTasks().size()); - if (position == 0) { - getFirstData(); - } - } - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - EventBus.getDefault().register(this); - Common.showLog(className + "EVENTBUS 注册了"); - } - - @Override - public void onDestroy() { - EventBus.getDefault().unregister(this); - super.onDestroy(); - Common.showLog(className + "EVENTBUS 取消注册了"); - } -} diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentPivision.java b/app/src/main/java/ceui/lisa/fragments/FragmentPivision.java index caaf641c3..f92b2f00a 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentPivision.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentPivision.java @@ -8,7 +8,7 @@ import ceui.lisa.R; import ceui.lisa.activities.TemplateActivity; -import ceui.lisa.adapters.AAdapter; +import ceui.lisa.adapters.ArticleAdapter; import ceui.lisa.adapters.BaseAdapter; import ceui.lisa.core.NetControl; import ceui.lisa.databinding.FragmentBaseListBinding; @@ -64,7 +64,7 @@ public Observable initNextApi() { @Override public BaseAdapter adapter() { - return new AAdapter(allItems, mContext).setOnItemClickListener(new OnItemClickListener() { + return new ArticleAdapter(allItems, mContext).setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(View v, int position, int viewType) { Intent intent = new Intent(mContext, TemplateActivity.class); diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentRecmdManga.java b/app/src/main/java/ceui/lisa/fragments/FragmentRecmdManga.java index 33e3417b1..2090c5a4d 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentRecmdManga.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentRecmdManga.java @@ -137,8 +137,7 @@ public void success(String s) { private void insertViewHistory(IllustsBean illustsBean) { IllustRecmdEntity illustRecmdEntity = new IllustRecmdEntity(); illustRecmdEntity.setIllustID(illustsBean.getId()); - Gson gson = new Gson(); - illustRecmdEntity.setIllustJson(gson.toJson(illustsBean)); + illustRecmdEntity.setIllustJson(Shaft.sGson.toJson(illustsBean)); illustRecmdEntity.setTime(System.currentTimeMillis()); AppDatabase.getAppDatabase(Shaft.getContext()).recmdDao().insert(illustRecmdEntity); } diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentSearchResult.java b/app/src/main/java/ceui/lisa/fragments/FragmentSearchResult.java index 1bafd3a7e..93f6c5f17 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentSearchResult.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentSearchResult.java @@ -48,6 +48,7 @@ public class FragmentSearchResult extends NetListFragment getActivity().finish()); baseBind.download.setOnClickListener(new View.OnClickListener() { @Override @@ -280,7 +279,7 @@ public boolean onLongClick(View v) { } else if (ori == Configuration.ORIENTATION_PORTRAIT) { //竖屏 ViewGroup.LayoutParams headParams = baseBind.head.getLayoutParams(); - headParams.height = Shaft.statusHeight + Shaft.toolbarHeight; + headParams.height = Shaft.statusHeight + Shaft.toolbarHeight - DensityUtil.dp2px(3.0f); baseBind.head.setLayoutParams(headParams); baseBind.toolbar.setPadding(0, Shaft.statusHeight, 0, 0); diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentAboutUser.java b/app/src/main/java/ceui/lisa/fragments/FragmentUserInfo.java similarity index 95% rename from app/src/main/java/ceui/lisa/fragments/FragmentAboutUser.java rename to app/src/main/java/ceui/lisa/fragments/FragmentUserInfo.java index 4f0a05660..6f3d66835 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentAboutUser.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentUserInfo.java @@ -7,7 +7,7 @@ import ceui.lisa.models.UserDetailResponse; import ceui.lisa.utils.Common; -public class FragmentAboutUser extends BaseBindFragment implements +public class FragmentUserInfo extends BaseBindFragment implements Display { @Override diff --git a/app/src/main/java/ceui/lisa/fragments/ListFragment.java b/app/src/main/java/ceui/lisa/fragments/ListFragment.java index f9a0b7f34..5d9558570 100644 --- a/app/src/main/java/ceui/lisa/fragments/ListFragment.java +++ b/app/src/main/java/ceui/lisa/fragments/ListFragment.java @@ -161,4 +161,13 @@ public void onFirstLoaded(List items) { public void onNextLoaded(List items) { } + + public void clear() { + if (mAdapter != null) { + mAdapter.clear(); + //mRecyclerView.setVisibility(View.VISIBLE); + //noData.setVisibility(View.INVISIBLE); + mRefreshLayout.autoRefresh(); + } + } } diff --git a/app/src/main/java/ceui/lisa/http/ErrorCtrl.java b/app/src/main/java/ceui/lisa/http/ErrorCtrl.java index 8f853f100..c9dcffb52 100644 --- a/app/src/main/java/ceui/lisa/http/ErrorCtrl.java +++ b/app/src/main/java/ceui/lisa/http/ErrorCtrl.java @@ -34,10 +34,9 @@ public void onError(Throwable e) { responseString.contains("{") && responseString.contains("}") && responseString.contains(":")) { - Gson gson = new Gson(); if (responseString.contains("validation_errors") || httpException.code() == 500) { if (responseString.contains("body\":{")) { - Error500Obj response = gson.fromJson(responseString, Error500Obj.class); + Error500Obj response = Shaft.sGson.fromJson(responseString, Error500Obj.class); if (response != null && response.getBody() != null) { if (!TextUtils.isEmpty(response.getBody().getValidation_errors().getMail_address())) { Common.showToast(response.getBody().getValidation_errors().getMail_address()); @@ -46,7 +45,7 @@ public void onError(Throwable e) { Common.showToast(e.toString()); } } else { - Error500 response = gson.fromJson(responseString, Error500.class); + Error500 response = Shaft.sGson.fromJson(responseString, Error500.class); if (response != null) { if (!TextUtils.isEmpty(response.getMessage())) { Common.showToast(response.getMessage()); @@ -56,7 +55,7 @@ public void onError(Throwable e) { } } } else { - ErrorResponse response = gson.fromJson(responseString, ErrorResponse.class); + ErrorResponse response = Shaft.sGson.fromJson(responseString, ErrorResponse.class); if (response != null) { if (response.getBody() != null && response.getBody().getValidation_errors() != null && diff --git a/app/src/main/java/ceui/lisa/http/Retro.java b/app/src/main/java/ceui/lisa/http/Retro.java index a8b5daaca..98918d721 100644 --- a/app/src/main/java/ceui/lisa/http/Retro.java +++ b/app/src/main/java/ceui/lisa/http/Retro.java @@ -4,6 +4,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.safframework.http.interceptor.LoggingInterceptor; import java.security.cert.X509Certificate; import java.util.Collections; @@ -49,14 +50,10 @@ private static Request.Builder addHeader(Request.Builder before) { } private static Retrofit buildRetrofit(String baseUrl) { - HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor( - message -> Log.i("retrofit", message)); - loggingInterceptor.level(HttpLoggingInterceptor.Level.BODY); - Common.showLog(baseUrl + "生成了一个实例"); OkHttpClient.Builder builder = new OkHttpClient.Builder(); try { - builder.addInterceptor(loggingInterceptor) + builder.addInterceptor(getLogger()) .protocols(Collections.singletonList(Protocol.HTTP_1_1)) .addInterceptor(chain -> chain.proceed( addHeader(chain.request().newBuilder()).build()) @@ -83,14 +80,10 @@ private static Retrofit buildRetrofit(String baseUrl) { } public static RankTokenApi getRankApi() { - HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor( - message -> Log.i("RetrofitLog", "retrofitBack = " + message)); - loggingInterceptor.level(HttpLoggingInterceptor.Level.BODY); OkHttpClient okHttpClient = new OkHttpClient .Builder() - .addInterceptor(loggingInterceptor) + .addInterceptor(getLogger()) .protocols(Collections.singletonList(Protocol.HTTP_1_1)) - .addInterceptor(chain -> chain.proceed(addHeader(chain.request().newBuilder()).build())) .build(); Gson gson = new GsonBuilder().setLenient().create(); Retrofit retrofit = new Retrofit.Builder() @@ -103,12 +96,9 @@ public static RankTokenApi getRankApi() { } public static HitoApi getHitoApi() { - HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor( - message -> Log.i("RetrofitLog", "retrofitBack = " + message)); - loggingInterceptor.level(HttpLoggingInterceptor.Level.BODY); OkHttpClient okHttpClient = new OkHttpClient .Builder() - .addInterceptor(loggingInterceptor) + .addInterceptor(getLogger()) .protocols(Collections.singletonList(Protocol.HTTP_1_1)) .build(); Gson gson = new GsonBuilder().setLenient().create(); @@ -122,12 +112,9 @@ public static HitoApi getHitoApi() { } public static T create(String baseUrl, final Class service) { - HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor( - message -> Log.i("RetrofitLog", "retrofitBack = " + message)); - loggingInterceptor.level(HttpLoggingInterceptor.Level.BODY); OkHttpClient okHttpClient = new OkHttpClient .Builder() - .addInterceptor(loggingInterceptor) + .addInterceptor(getLogger()) .protocols(Collections.singletonList(Protocol.HTTP_1_1)) .addInterceptor(chain -> { Request localRequest = chain.request().newBuilder() @@ -168,4 +155,14 @@ private static class Holder { public static Retrofit get() { return Holder.appRetrofit; } + + private static LoggingInterceptor getLogger() { + return new LoggingInterceptor.Builder() + .loggable(true) + .request() + .requestTag("Request") + .response() + .responseTag("Response") + .build(); + } } \ No newline at end of file diff --git a/app/src/main/java/ceui/lisa/http/TokenInterceptor.java b/app/src/main/java/ceui/lisa/http/TokenInterceptor.java index 0ad5d669e..f10e8c703 100644 --- a/app/src/main/java/ceui/lisa/http/TokenInterceptor.java +++ b/app/src/main/java/ceui/lisa/http/TokenInterceptor.java @@ -2,6 +2,8 @@ import android.util.Log; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import ceui.lisa.activities.Shaft; @@ -19,10 +21,9 @@ */ public class TokenInterceptor implements Interceptor { - - public static boolean isTokenNew = true; private static final String TOKEN_ERROR = "Error occurred at the OAuth process"; + @NotNull @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); @@ -48,14 +49,8 @@ public Response intercept(Chain chain) throws IOException { * @return */ private boolean isTokenExpired(Response response) { - if (response.code() == 400 && - Common.getResponseBody(response).contains(TOKEN_ERROR)) { - isTokenNew = false; - return true; - } else { - isTokenNew = true; - return false; - } + return response.code() == 400 && + Common.getResponseBody(response).contains(TOKEN_ERROR); } /** @@ -81,7 +76,6 @@ private String getNewToken() throws IOException { newUser.getResponse().getUser().setIs_login(true); } Local.saveUser(newUser); - isTokenNew = true; if (newUser != null && newUser.getResponse() != null) { return newUser.getResponse().getAccess_token(); } else { diff --git a/app/src/main/java/ceui/lisa/interfaces/DataControl.java b/app/src/main/java/ceui/lisa/interfaces/DataControl.java index e29eafd87..030c6fb08 100644 --- a/app/src/main/java/ceui/lisa/interfaces/DataControl.java +++ b/app/src/main/java/ceui/lisa/interfaces/DataControl.java @@ -2,6 +2,7 @@ import android.content.Context; +import com.scwang.smartrefresh.header.DeliveryHeader; import com.scwang.smartrefresh.layout.api.RefreshHeader; import com.scwang.smartrefresh.layout.header.ClassicsHeader; @@ -22,6 +23,6 @@ public boolean enableRefresh() { @Override public RefreshHeader getHeader(Context context) { - return new ClassicsHeader(context); + return new DeliveryHeader(context); } } diff --git a/app/src/main/java/ceui/lisa/utils/Local.java b/app/src/main/java/ceui/lisa/utils/Local.java index c9db784ce..0a34e0b4e 100644 --- a/app/src/main/java/ceui/lisa/utils/Local.java +++ b/app/src/main/java/ceui/lisa/utils/Local.java @@ -20,8 +20,7 @@ public static void saveUser(UserModel userModel) { userModel.getResponse().setAccess_token("Bearer " + token); } String userString = Shaft.sGson.toJson(userModel, UserModel.class); - SharedPreferences localData = Shaft.getContext().getSharedPreferences(LOCAL_DATA, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = localData.edit(); + SharedPreferences.Editor editor = Shaft.sPreferences.edit(); editor.putString(USER, userString); if (editor.commit()) { Shaft.sUserModel = userModel; @@ -31,39 +30,32 @@ public static void saveUser(UserModel userModel) { public static UserModel getUser() { return Shaft.sGson.fromJson( - Shaft.getContext() - .getSharedPreferences(LOCAL_DATA, Context.MODE_PRIVATE) + Shaft.sPreferences .getString(USER, ""), UserModel.class); } public static Settings getSettings() { - SharedPreferences localData = Shaft.getContext().getSharedPreferences(LOCAL_DATA, Context.MODE_PRIVATE); - String settingsString = localData.getString("settings", ""); - Settings settings = new Gson().fromJson(settingsString, Settings.class); + String settingsString = Shaft.sPreferences.getString("settings", ""); + Settings settings = Shaft.sGson.fromJson(settingsString, Settings.class); return settings == null ? new Settings() : settings; } public static void setSettings(Settings settings) { - SharedPreferences localData = Shaft.getContext().getSharedPreferences(LOCAL_DATA, Context.MODE_PRIVATE); - Gson gson = new Gson(); - String settingsGson = gson.toJson(settings); - SharedPreferences.Editor editor = localData.edit(); + String settingsGson = Shaft.sGson.toJson(settings); + SharedPreferences.Editor editor = Shaft.sPreferences.edit(); editor.putString("settings", settingsGson); - editor.commit(); + editor.apply(); Shaft.sSettings = settings; } public static boolean getBoolean(String key, boolean defValue) { - SharedPreferences localData = Shaft.getContext().getSharedPreferences(LOCAL_DATA, Context.MODE_PRIVATE); - Common.showLog("getBoolean " + key + " " + localData.getBoolean(key, defValue)); - return localData.getBoolean(key, defValue); + return Shaft.sPreferences.getBoolean(key, defValue); } public static void setBoolean(String key, boolean value) { - SharedPreferences localData = Shaft.getContext().getSharedPreferences(LOCAL_DATA, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = localData.edit(); + SharedPreferences.Editor editor = Shaft.sPreferences.edit(); editor.putBoolean(key, value); - editor.commit(); + editor.apply(); } } diff --git a/app/src/main/java/ceui/lisa/utils/PixivOperate.java b/app/src/main/java/ceui/lisa/utils/PixivOperate.java index e5c6b1bb5..a4fa7880c 100644 --- a/app/src/main/java/ceui/lisa/utils/PixivOperate.java +++ b/app/src/main/java/ceui/lisa/utils/PixivOperate.java @@ -246,8 +246,7 @@ public static void unMuteTag(TagsBean tagsBean) { public static void insertViewHistory(IllustsBean illust) { IllustHistoryEntity illustHistoryEntity = new IllustHistoryEntity(); illustHistoryEntity.setIllustID(illust.getId()); - Gson gson = new Gson(); - illustHistoryEntity.setIllustJson(gson.toJson(illust)); + illustHistoryEntity.setIllustJson(Shaft.sGson.toJson(illust)); illustHistoryEntity.setTime(System.currentTimeMillis()); Common.showLog("插入了 " + illustHistoryEntity.getIllustID() + " time " + illustHistoryEntity.getTime()); AppDatabase.getAppDatabase(Shaft.getContext()).downloadDao().insert(illustHistoryEntity); diff --git a/app/src/main/res/drawable/ic_chevron_left_black_24dp.xml b/app/src/main/res/drawable/ic_chevron_left_black_24dp.xml index ee3ff4be8..0459aa439 100644 --- a/app/src/main/res/drawable/ic_chevron_left_black_24dp.xml +++ b/app/src/main/res/drawable/ic_chevron_left_black_24dp.xml @@ -1,5 +1,7 @@ - - + android:width="24dp" + xmlns:android="http://schemas.android.com/apk/res/android"> + diff --git a/app/src/main/res/drawable/ic_chevron_right_black_24dp.xml b/app/src/main/res/drawable/ic_chevron_right_black_24dp.xml index a6d734973..4a4f8e884 100644 --- a/app/src/main/res/drawable/ic_chevron_right_black_24dp.xml +++ b/app/src/main/res/drawable/ic_chevron_right_black_24dp.xml @@ -1,4 +1,4 @@ - diff --git a/app/src/main/res/layout/activity_image_detail.xml b/app/src/main/res/layout/activity_image_detail.xml index a22d89d3d..331b71a28 100644 --- a/app/src/main/res/layout/activity_image_detail.xml +++ b/app/src/main/res/layout/activity_image_detail.xml @@ -1,5 +1,6 @@ - + @@ -19,55 +20,61 @@ - - + android:layout_height="wrap_content"> - - - - - - - - - - + android:layout_height="wrap_content"> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_mute_tag.xml b/app/src/main/res/layout/dialog_mute_tag.xml index 648eb985c..089847e1f 100644 --- a/app/src/main/res/layout/dialog_mute_tag.xml +++ b/app/src/main/res/layout/dialog_mute_tag.xml @@ -32,11 +32,20 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + @@ -138,7 +138,7 @@ android:textStyle="bold" android:layout_height="wrap_content" android:layout_centerHorizontal="true" - android:textColor="@color/white"> + android:textColor="@color/always_white"> @@ -152,7 +152,7 @@ android:gravity="center_vertical" android:layout_marginEnd="@dimen/six_dp" android:text="下一章节" - android:textColor="@color/white"> + android:textColor="@color/white_to_gray"> diff --git a/app/src/main/res/layout/fragment_single_illust.xml b/app/src/main/res/layout/fragment_single_illust.xml index 7e21ce52d..5bb234ce7 100644 --- a/app/src/main/res/layout/fragment_single_illust.xml +++ b/app/src/main/res/layout/fragment_single_illust.xml @@ -352,19 +352,28 @@ - - - + app:sl_shadow_radius="1.5dp" + app:sl_shadow_distance="1.5dp" + android:layout_height="wrap_content"> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/recy_download_task.xml b/app/src/main/res/layout/recy_download_task.xml index bc63ccceb..f7459958b 100644 --- a/app/src/main/res/layout/recy_download_task.xml +++ b/app/src/main/res/layout/recy_download_task.xml @@ -1,60 +1,65 @@ - + - + + - - - - - - - - - - \ No newline at end of file + app:cardCornerRadius="@dimen/four_dp" + app:cardElevation="@dimen/four_dp" + android:layout_height="wrap_content"> + + + + + + + + + + + + + + + + + + diff --git a/build.gradle b/build.gradle index 50fdb113e..d942f9f38 100644 --- a/build.gradle +++ b/build.gradle @@ -24,6 +24,7 @@ allprojects { maven { url 'https://jitpack.io' } maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "http://dl.bintray.com/waynejo/maven" } + maven { url "http://dl.bintray.com/gigamole/maven/" } mavenCentral() }