Close #312, read gallery link from clipboard
This commit is contained in:
1 parent
c397bd0211
commit
d121e839c9
7 files changed
+89
-8
No files matched your search
@@ -17,6 +17,9 @@
|
||||
package com.hippo.ehviewer.ui;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -33,19 +36,19 @@ import android.support.design.widget.NavigationView;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.view.Gravity;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.hippo.drawerlayout.DrawerLayout;
|
||||
import com.hippo.ehviewer.AppConfig;
|
||||
import com.hippo.ehviewer.Crash;
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.Settings;
|
||||
import com.hippo.ehviewer.client.EhUrl;
|
||||
import com.hippo.ehviewer.client.EhUrlOpener;
|
||||
import com.hippo.ehviewer.client.EhUtils;
|
||||
import com.hippo.ehviewer.client.data.ListUrlBuilder;
|
||||
@@ -83,7 +86,6 @@ import com.hippo.widget.LoadImageView;
|
||||
import com.hippo.yorozuya.IOUtils;
|
||||
import com.hippo.yorozuya.ResourcesUtils;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
@@ -97,6 +99,7 @@ public final class MainActivity extends StageActivity
|
||||
private static final int REQUEST_CODE_SETTINGS = 0;
|
||||
|
||||
private static final String KEY_NAV_CHECKED_ITEM = "nav_checked_item";
|
||||
private static final String KEY_CLIP_TEXT = "clip_text";
|
||||
|
||||
/*---------------
|
||||
Whole life cycle
|
||||
@@ -114,6 +117,8 @@ public final class MainActivity extends StageActivity
|
||||
|
||||
private int mNavCheckedItem = 0;
|
||||
|
||||
private String mClipText = null;
|
||||
|
||||
static {
|
||||
registerLaunchMode(SecurityScene.class, SceneFragment.LAUNCH_MODE_SINGLE_TASK);
|
||||
registerLaunchMode(WarningScene.class, SceneFragment.LAUNCH_MODE_SINGLE_TASK);
|
||||
@@ -367,16 +372,20 @@ public final class MainActivity extends StageActivity
|
||||
// Check permission
|
||||
PermissionRequester.request(this, Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
getString(R.string.write_rationale), PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE);
|
||||
|
||||
mClipText = Settings.getClipboardText();
|
||||
}
|
||||
|
||||
private void onRestore(Bundle savedInstanceState) {
|
||||
mNavCheckedItem = savedInstanceState.getInt(KEY_NAV_CHECKED_ITEM);
|
||||
mClipText = savedInstanceState.getString(KEY_CLIP_TEXT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
|
||||
super.onSaveInstanceState(outState, outPersistentState);
|
||||
outState.putInt(KEY_NAV_CHECKED_ITEM, mNavCheckedItem);
|
||||
outState.putString(KEY_CLIP_TEXT, mClipText);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -395,6 +404,46 @@ public final class MainActivity extends StageActivity
|
||||
super.onResume();
|
||||
|
||||
setNavCheckedItem(mNavCheckedItem);
|
||||
|
||||
checkClipboardUrl();
|
||||
}
|
||||
|
||||
private String getTextFromClipboard() {
|
||||
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
if (clipboard != null) {
|
||||
ClipData clip = clipboard.getPrimaryClip();
|
||||
if (clip.getItemCount() > 0) {
|
||||
return clip.getItemAt(0).getText().toString();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void checkClipboardUrl() {
|
||||
String text = getTextFromClipboard();
|
||||
|
||||
if (text != null && !text.equals(mClipText)) {
|
||||
Pair<Long, String> pair = EhUrl.parseGalleryDetailUrl(text);
|
||||
if (pair != null) {
|
||||
long gid = pair.first;
|
||||
String token = pair.second;
|
||||
new AlertDialog.Builder(this)
|
||||
.setTitle(R.string.clipboard_gallery_url_dialog_title)
|
||||
.setMessage(R.string.clipboard_gallery_url_dialog_message)
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
|
||||
Bundle args = new Bundle();
|
||||
args.putString(GalleryDetailScene.KEY_ACTION, GalleryDetailScene.ACTION_GID_TOKEN);
|
||||
args.putLong(GalleryDetailScene.KEY_GID, gid);
|
||||
args.putString(GalleryDetailScene.KEY_TOKEN, token);
|
||||
startScene(new Announcer(GalleryDetailScene.class).setArgs(args));
|
||||
})
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
||||
mClipText = text;
|
||||
Settings.putClipboardText(text);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -413,8 +462,6 @@ public final class MainActivity extends StageActivity
|
||||
public void onSceneViewCreated(SceneFragment scene, Bundle savedInstanceState) {
|
||||
super.onSceneViewCreated(scene, savedInstanceState);
|
||||
|
||||
Log.d("TAG", "onSceneViewCreated");
|
||||
|
||||
if (scene instanceof BaseScene && mRightDrawer != null && mDrawerLayout != null) {
|
||||
BaseScene baseScene = (BaseScene) scene;
|
||||
mRightDrawer.removeAllViews();
|
||||
|
||||
Reference in new issue
Block a user