Gallerydetail refactor

This commit is contained in:
tarsin committed 2022-06-02 18:58:30 +08:00
1 parent df0dee36c2
commit 746abe91ec
2 files changed
+110 -120

No files matched your search

@@ -36,15 +36,14 @@ import android.os.Bundle;
import android.os.Environment;
import android.text.TextUtils;
import android.util.Pair;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RatingBar;
@@ -59,7 +58,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.core.content.ContextCompat;
import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment;
@@ -137,7 +135,7 @@ import java.util.List;
import okhttp3.HttpUrl;
import rikka.core.res.ResourcesKt;
public class GalleryDetailScene extends BaseScene implements View.OnClickListener,
public class GalleryDetailScene extends ToolbarScene implements View.OnClickListener,
com.hippo.ehviewer.download.DownloadManager.DownloadInfoListener,
View.OnLongClickListener {
@@ -178,8 +176,6 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
@Nullable
private TextView mCategory;
@Nullable
private ImageView mOtherActions;
@Nullable
private ViewGroup mActionGroup;
@Nullable
private TextView mDownload;
@@ -250,8 +246,6 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
private View mProgress;
@Nullable
private ViewTransition mViewTransition2;
@Nullable
private PopupMenu mPopupMenu;
@WholeLifeCircle
private int mDownloadState;
@Nullable
@@ -499,10 +493,62 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
outState.putInt(KEY_REQUEST_ID, mRequestId);
}
@Override
public int getMenuResId() {
return R.menu.scene_gallery_detail;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setNavigationIcon(R.drawable.v_arrow_left_dark_x24);
}
@Override
public void onNavigationClick() {
onBackPressed();
super.onNavigationClick();
}
@Override
public boolean onMenuItemClick(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.action_open_in_other_app) {
String url = getGalleryDetailUrl(false);
Activity activity = getMainActivity();
if (null != url && null != activity) {
UrlOpener.openUrl(activity, url, false);
}
} else if (itemId == R.id.action_refresh) {
if (mState != STATE_REFRESH && mState != STATE_REFRESH_HEADER) {
adjustViewVisibility(STATE_REFRESH, true);
request();
}
} else if (itemId == R.id.action_add_tag) {
if (mGalleryDetail == null) {
return false;
}
if (mGalleryDetail.apiUid < 0) {
showTip(R.string.sign_in_first, LENGTH_LONG);
return false;
}
EditTextDialogBuilder builder = new EditTextDialogBuilder(requireContext(), "", getString(R.string.action_add_tag_tip));
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.setTitle(R.string.action_add_tag)
.show();
dialog.getButton(DialogInterface.BUTTON_POSITIVE)
.setOnClickListener(v -> {
voteTag(builder.getText().trim(), 1);
dialog.dismiss();
});
}
return true;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
public View onCreateViewWithToolbar(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
// Get download state
long gid = getGid();
if (gid != -1) {
@@ -541,14 +587,12 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
mTitle = (TextView) ViewUtils.$$(mHeader, R.id.title);
mUploader = (TextView) ViewUtils.$$(mHeader, R.id.uploader);
mCategory = (TextView) ViewUtils.$$(mHeader, R.id.category);
mOtherActions = (ImageView) ViewUtils.$$(mHeader, R.id.other_actions);
mActionGroup = (ViewGroup) ViewUtils.$$(mHeader, R.id.action_card);
mDownload = (TextView) ViewUtils.$$(mActionGroup, R.id.download);
mRead = (TextView) ViewUtils.$$(mActionGroup, R.id.read);
mUploader.setOnClickListener(this);
mCategory.setOnClickListener(this);
mOtherActions.setOnClickListener(this);
mDownload.setOnClickListener(this);
mDownload.setOnLongClickListener(this);
mRead.setOnClickListener(this);
@@ -650,7 +694,6 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
mTitle = null;
mUploader = null;
mCategory = null;
mOtherActions = null;
mActionGroup = null;
mDownload = null;
mRead = null;
@@ -690,8 +733,6 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
mProgress = null;
mViewTransition2 = null;
mPopupMenu = null;
}
private boolean prepareData() {
@@ -1084,51 +1125,6 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
}
}
private void ensurePopMenu() {
if (mPopupMenu != null) {
return;
}
Context context = getContext();
AssertUtils.assertNotNull(context);
PopupMenu popup = new PopupMenu(context, mOtherActions, Gravity.TOP);
mPopupMenu = popup;
popup.getMenuInflater().inflate(R.menu.scene_gallery_detail, popup.getMenu());
popup.setOnMenuItemClickListener(item -> {
int itemId = item.getItemId();
if (itemId == R.id.action_open_in_other_app) {
String url = getGalleryDetailUrl(false);
Activity activity = getMainActivity();
if (null != url && null != activity) {
UrlOpener.openUrl(activity, url, false);
}
} else if (itemId == R.id.action_refresh) {
if (mState != STATE_REFRESH && mState != STATE_REFRESH_HEADER) {
adjustViewVisibility(STATE_REFRESH, true);
request();
}
} else if (itemId == R.id.action_add_tag) {
if (mGalleryDetail == null) {
return false;
}
if (mGalleryDetail.apiUid < 0) {
showTip(R.string.sign_in_first, LENGTH_LONG);
return false;
}
EditTextDialogBuilder builder = new EditTextDialogBuilder(context, "", getString(R.string.action_add_tag_tip));
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.setTitle(R.string.action_add_tag)
.show();
dialog.getButton(DialogInterface.BUTTON_POSITIVE)
.setOnClickListener(v -> {
voteTag(builder.getText().trim(), 1);
dialog.dismiss();
});
}
return true;
});
}
private void showSimilarGalleryList() {
GalleryDetail gd = mGalleryDetail;
if (null == gd) {
@@ -1203,11 +1199,6 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
if (request()) {
adjustViewVisibility(STATE_REFRESH, true);
}
} else if (mOtherActions == v) {
ensurePopMenu();
if (mPopupMenu != null) {
mPopupMenu.show();
}
} else if (mUploader == v) {
String uploader = getUploader();
if (TextUtils.isEmpty(uploader)) {