use of de.baumann.browser.view.NinjaWebView in project browser by scoute-dich.
the class BrowserActivity method prepareRecord.
private boolean prepareRecord() {
if (currentAlbumController == null || !(currentAlbumController instanceof NinjaWebView)) {
return true;
}
NinjaWebView webView = (NinjaWebView) currentAlbumController;
String title = webView.getTitle();
String url = webView.getUrl();
return (title == null || title.isEmpty() || url == null || url.isEmpty() || url.startsWith(BrowserUnit.URL_SCHEME_ABOUT) || url.startsWith(BrowserUnit.URL_SCHEME_MAIL_TO) || url.startsWith(BrowserUnit.URL_SCHEME_INTENT));
}
use of de.baumann.browser.view.NinjaWebView in project browser by scoute-dich.
the class BrowserActivity method onClick.
@Override
public void onClick(View v) {
RecordAction action = new RecordAction(BrowserActivity.this);
if (currentAlbumController != null && currentAlbumController instanceof NinjaRelativeLayout) {
ninjaRelativeLayout = (NinjaRelativeLayout) currentAlbumController;
} else if (currentAlbumController != null && currentAlbumController instanceof NinjaWebView) {
ninjaWebView = (NinjaWebView) currentAlbumController;
try {
title = ninjaWebView.getTitle().trim();
url = ninjaWebView.getUrl().trim();
} catch (Exception e) {
e.printStackTrace();
}
}
switch(v.getId()) {
case R.id.tab_prev:
AlbumController controller = nextAlbumController(false);
showAlbum(controller, false);
viewOverflow();
break;
case R.id.tab_next:
AlbumController controller2 = nextAlbumController(true);
showAlbum(controller2, false);
viewOverflow();
break;
case R.id.web_prev:
if (ninjaWebView.canGoBack()) {
ninjaWebView.goBack();
viewOverflow();
} else {
bottomSheetDialog.cancel();
removeAlbum(currentAlbumController);
}
break;
case R.id.web_next:
if (ninjaWebView.canGoForward()) {
ninjaWebView.goForward();
viewOverflow();
} else {
bottomSheetDialog.cancel();
NinjaToast.show(BrowserActivity.this, R.string.toast_webview_forward);
}
break;
case R.id.tv_new_tabOpen:
bottomSheetDialog.cancel();
addAlbum(start_tab);
break;
case R.id.tv_closeTab:
bottomSheetDialog.cancel();
removeAlbum(currentAlbumController);
break;
case R.id.tv_tabPreview:
bottomSheetDialog.cancel();
showOmnibox();
new Handler().postDelayed(new Runnable() {
public void run() {
switcherPanel.collapsed();
}
}, 500);
break;
case R.id.tv_quit:
bottomSheetDialog.cancel();
doubleTapsQuit();
break;
case R.id.tv_shareScreenshot:
bottomSheetDialog.cancel();
sp.edit().putInt("screenshot", 1).apply();
new ScreenshotTask(BrowserActivity.this, ninjaWebView).execute();
break;
case R.id.tv_shareLink:
bottomSheetDialog.cancel();
if (prepareRecord()) {
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_share_failed));
} else {
IntentUnit.share(BrowserActivity.this, title, url);
}
break;
case R.id.tv_shareClipboard:
bottomSheetDialog.cancel();
BrowserUnit.copyURL(BrowserActivity.this, url);
break;
case R.id.tv_openWith:
bottomSheetDialog.cancel();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
Intent chooser = Intent.createChooser(intent, getString(R.string.menu_open_with));
startActivity(chooser);
break;
case R.id.tv_saveScreenshot:
bottomSheetDialog.cancel();
sp.edit().putInt("screenshot", 0).apply();
new ScreenshotTask(BrowserActivity.this, ninjaWebView).execute();
break;
case R.id.tv_saveBookmark:
bottomSheetDialog.cancel();
action.open(true);
if (action.checkBookmark(url)) {
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_entry_exists));
} else {
action.addBookmark(new Record(title, url, System.currentTimeMillis()));
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_add_bookmark_successful));
}
action.close();
updateBookmarks();
updateAutoComplete();
break;
case R.id.tv_saveStart:
bottomSheetDialog.cancel();
action.open(true);
if (action.checkGridItem(url)) {
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_already_exist_in_home));
} else {
Bitmap bitmap = ViewUnit.capture(ninjaWebView, dimen156dp, dimen117dp, Bitmap.Config.ARGB_8888);
String filename = System.currentTimeMillis() + BrowserUnit.SUFFIX_PNG;
int ordinal = action.listGrid().size();
GridItem itemAlbum = new GridItem(title, url, filename, ordinal);
if (BrowserUnit.bitmap2File(BrowserActivity.this, bitmap, filename) && action.addGridItem(itemAlbum)) {
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_add_to_home_successful));
} else {
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_add_to_home_failed));
}
}
action.close();
break;
case R.id.tv_saveLogin:
bottomSheetDialog.cancel();
AlertDialog.Builder builder = new AlertDialog.Builder(BrowserActivity.this);
View dialogView = View.inflate(BrowserActivity.this, R.layout.dialog_login, null);
final EditText pass_title = dialogView.findViewById(R.id.pass_title);
final EditText pass_userName = dialogView.findViewById(R.id.pass_userName);
final EditText pass_userPW = dialogView.findViewById(R.id.pass_userPW);
new Handler().postDelayed(new Runnable() {
public void run() {
pass_title.setText(ninjaWebView.getTitle());
showSoftInput(pass_title);
}
}, 100);
builder.setView(dialogView);
builder.setTitle(R.string.menu_edit);
builder.setPositiveButton(R.string.app_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String input_pass_title = pass_title.getText().toString().trim();
try {
MAHEncryptor mahEncryptor = MAHEncryptor.newInstance(sp.getString("saved_key", ""));
String encrypted_userName = mahEncryptor.encode(pass_userName.getText().toString().trim());
String encrypted_userPW = mahEncryptor.encode(pass_userPW.getText().toString().trim());
Pass db = new Pass(BrowserActivity.this);
db.open();
if (db.isExist(helper_main.secString(input_pass_title))) {
NinjaToast.show(BrowserActivity.this, R.string.toast_newTitle);
} else {
db.insert(input_pass_title, url, encrypted_userName, helper_main.secString(encrypted_userPW), String.valueOf(System.currentTimeMillis()));
NinjaToast.show(BrowserActivity.this, R.string.toast_edit_successful);
hideSoftInput(pass_title);
}
} catch (Exception e) {
e.printStackTrace();
NinjaToast.show(BrowserActivity.this, R.string.toast_error);
}
}
});
builder.setNegativeButton(R.string.app_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
AlertDialog dialog = builder.create();
dialog.show();
break;
case R.id.tv_relayout:
bottomSheetDialog.cancel();
omnibox.setVisibility(View.GONE);
relayoutOK.setVisibility(View.VISIBLE);
final DynamicGridView gridView = ninjaRelativeLayout.findViewById(R.id.home_grid);
final List<GridItem> gridList = ((GridAdapter) gridView.getAdapter()).getList();
relayoutOK.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
relayoutOK.setTextColor(ContextCompat.getColor(BrowserActivity.this, (R.color.colorAccent)));
return false;
}
});
relayoutOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
gridView.stopEditMode();
relayoutOK.setVisibility(View.GONE);
omnibox.setVisibility(View.VISIBLE);
RecordAction action = new RecordAction(BrowserActivity.this);
action.open(true);
action.clearGrid();
for (GridItem item : gridList) {
action.addGridItem(item);
}
action.close();
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_relayout_successful));
}
});
gridView.setOnDragListener(new DynamicGridView.OnDragListener() {
private GridItem dragItem;
@Override
public void onDragStarted(int position) {
dragItem = gridList.get(position);
}
@Override
public void onDragPositionsChanged(int oldPosition, int newPosition) {
if (oldPosition < newPosition) {
for (int i = newPosition; i > oldPosition; i--) {
GridItem item = gridList.get(i);
item.setOrdinal(i - 1);
}
} else if (oldPosition > newPosition) {
for (int i = newPosition; i < oldPosition; i++) {
GridItem item = gridList.get(i);
item.setOrdinal(i + 1);
}
}
dragItem.setOrdinal(newPosition);
Collections.sort(gridList, new Comparator<GridItem>() {
@Override
public int compare(GridItem first, GridItem second) {
if (first.getOrdinal() < second.getOrdinal()) {
return -1;
} else if (first.getOrdinal() > second.getOrdinal()) {
return 1;
} else {
return 0;
}
}
});
}
});
gridView.startEditMode();
break;
case R.id.tv_searchSite:
bottomSheetDialog.cancel();
hideSoftInput(inputBox);
showSearchPanel();
break;
case R.id.tv_settings:
bottomSheetDialog.cancel();
Intent settings = new Intent(BrowserActivity.this, Settings_Activity.class);
startActivity(settings);
break;
case R.id.tv_help:
bottomSheetDialog.cancel();
showHelpDialog();
break;
case R.id.floatButton_tab:
tv_new_tabOpen.setVisibility(View.VISIBLE);
tv_closeTab.setVisibility(View.VISIBLE);
tv_tabPreview.setVisibility(View.VISIBLE);
tv_quit.setVisibility(View.VISIBLE);
tv_shareScreenshot.setVisibility(View.GONE);
tv_shareLink.setVisibility(View.GONE);
tv_shareClipboard.setVisibility(View.GONE);
tv_openWith.setVisibility(View.GONE);
tv_saveScreenshot.setVisibility(View.GONE);
tv_saveBookmark.setVisibility(View.GONE);
tv_saveStart.setVisibility(View.GONE);
tv_saveLogin.setVisibility(View.GONE);
floatButton_tabView.setVisibility(View.VISIBLE);
floatButton_saveView.setVisibility(View.INVISIBLE);
floatButton_shareView.setVisibility(View.INVISIBLE);
floatButton_moreView.setVisibility(View.INVISIBLE);
tv_relayout.setVisibility(View.GONE);
tv_searchSite.setVisibility(View.GONE);
tv_placeHolder.setVisibility(View.GONE);
tv_placeHolder_2.setVisibility(View.GONE);
tv_settings.setVisibility(View.GONE);
tv_help.setVisibility(View.GONE);
break;
case R.id.floatButton_share:
tv_new_tabOpen.setVisibility(View.GONE);
tv_closeTab.setVisibility(View.GONE);
tv_tabPreview.setVisibility(View.GONE);
tv_quit.setVisibility(View.GONE);
tv_shareScreenshot.setVisibility(View.VISIBLE);
tv_shareLink.setVisibility(View.VISIBLE);
tv_shareClipboard.setVisibility(View.VISIBLE);
tv_openWith.setVisibility(View.VISIBLE);
tv_saveScreenshot.setVisibility(View.GONE);
tv_saveBookmark.setVisibility(View.GONE);
tv_saveStart.setVisibility(View.GONE);
tv_saveLogin.setVisibility(View.GONE);
floatButton_tabView.setVisibility(View.INVISIBLE);
floatButton_saveView.setVisibility(View.INVISIBLE);
floatButton_shareView.setVisibility(View.VISIBLE);
floatButton_moreView.setVisibility(View.INVISIBLE);
tv_relayout.setVisibility(View.GONE);
tv_searchSite.setVisibility(View.GONE);
tv_placeHolder.setVisibility(View.GONE);
tv_placeHolder_2.setVisibility(View.GONE);
tv_settings.setVisibility(View.GONE);
tv_help.setVisibility(View.GONE);
break;
case R.id.floatButton_save:
tv_new_tabOpen.setVisibility(View.GONE);
tv_closeTab.setVisibility(View.GONE);
tv_tabPreview.setVisibility(View.GONE);
tv_quit.setVisibility(View.GONE);
tv_shareScreenshot.setVisibility(View.GONE);
tv_shareLink.setVisibility(View.GONE);
tv_shareClipboard.setVisibility(View.GONE);
tv_openWith.setVisibility(View.GONE);
tv_saveScreenshot.setVisibility(View.VISIBLE);
tv_saveBookmark.setVisibility(View.VISIBLE);
tv_saveStart.setVisibility(View.VISIBLE);
tv_saveLogin.setVisibility(View.VISIBLE);
tv_relayout.setVisibility(View.GONE);
tv_searchSite.setVisibility(View.GONE);
floatButton_tabView.setVisibility(View.INVISIBLE);
floatButton_saveView.setVisibility(View.VISIBLE);
floatButton_shareView.setVisibility(View.INVISIBLE);
floatButton_moreView.setVisibility(View.INVISIBLE);
tv_placeHolder.setVisibility(View.GONE);
tv_placeHolder_2.setVisibility(View.GONE);
tv_settings.setVisibility(View.GONE);
tv_help.setVisibility(View.GONE);
break;
case R.id.floatButton_more:
tv_new_tabOpen.setVisibility(View.GONE);
tv_closeTab.setVisibility(View.GONE);
tv_tabPreview.setVisibility(View.GONE);
tv_quit.setVisibility(View.GONE);
tv_shareScreenshot.setVisibility(View.GONE);
tv_shareLink.setVisibility(View.GONE);
tv_shareClipboard.setVisibility(View.GONE);
tv_openWith.setVisibility(View.GONE);
tv_saveScreenshot.setVisibility(View.GONE);
tv_saveBookmark.setVisibility(View.GONE);
tv_saveStart.setVisibility(View.GONE);
tv_saveLogin.setVisibility(View.GONE);
floatButton_tabView.setVisibility(View.INVISIBLE);
floatButton_saveView.setVisibility(View.INVISIBLE);
floatButton_shareView.setVisibility(View.INVISIBLE);
floatButton_moreView.setVisibility(View.VISIBLE);
tv_placeHolder.setVisibility(View.VISIBLE);
tv_settings.setVisibility(View.VISIBLE);
tv_help.setVisibility(View.VISIBLE);
if (currentAlbumController != null && currentAlbumController instanceof NinjaRelativeLayout) {
tv_searchSite.setVisibility(View.GONE);
if (ninjaRelativeLayout.getFlag() == BrowserUnit.FLAG_HOME) {
tv_relayout.setVisibility(View.VISIBLE);
tv_placeHolder_2.setVisibility(View.GONE);
} else {
tv_relayout.setVisibility(View.GONE);
tv_placeHolder_2.setVisibility(View.VISIBLE);
}
} else if (currentAlbumController != null && currentAlbumController instanceof NinjaWebView) {
tv_searchSite.setVisibility(View.VISIBLE);
tv_relayout.setVisibility(View.GONE);
tv_placeHolder_2.setVisibility(View.GONE);
}
break;
case R.id.fab_imageButtonNav_center:
case R.id.fab_imageButtonNav_left:
case R.id.fab_imageButtonNav_right:
doubleTapsHide();
break;
case R.id.omnibox_refresh:
if (currentAlbumController == null) {
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_refresh_failed));
return;
}
if (currentAlbumController instanceof NinjaWebView) {
ninjaWebView = (NinjaWebView) currentAlbumController;
if (ninjaWebView.isLoadFinish()) {
ninjaWebView.reload();
} else {
ninjaWebView.stopLoading();
}
} else if (currentAlbumController instanceof NinjaRelativeLayout) {
ninjaRelativeLayout = (NinjaRelativeLayout) currentAlbumController;
initHomeGrid(ninjaRelativeLayout);
} else {
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_refresh_failed));
}
break;
case R.id.omnibox_overflow:
showOverflow();
break;
default:
break;
}
}
use of de.baumann.browser.view.NinjaWebView in project browser by scoute-dich.
the class BrowserActivity method onResume.
@Override
public void onResume() {
super.onResume();
IntentUnit.setContext(this);
if (create) {
return;
}
if (IntentUnit.isDBChange()) {
updateBookmarks();
updateAutoComplete();
IntentUnit.setDBChange(false);
}
if (IntentUnit.isSPChange()) {
for (AlbumController controller : BrowserContainer.list()) {
if (controller instanceof NinjaWebView) {
((NinjaWebView) controller).initPreferences();
}
}
IntentUnit.setSPChange(false);
}
if (sp.getInt("restart_changed", 1) == 1) {
sp.edit().putInt("restart_changed", 0).apply();
finish();
}
dispatchIntent(getIntent());
}
use of de.baumann.browser.view.NinjaWebView in project browser by scoute-dich.
the class HolderService method onStartCommand.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
WebView.enableSlowWholeDocumentDraw();
NinjaWebView webView = new NinjaWebView(new NinjaContextWrapper(this));
webView.setBrowserController(this);
webView.setFlag(BrowserUnit.FLAG_NINJA);
webView.setAlbumCover(null);
webView.setAlbumTitle(getString(R.string.album_untitled));
ViewUnit.bound(this, webView);
webView.loadUrl(RecordUnit.getHolder().getURL());
webView.deactivate();
BrowserContainer.add(webView);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
if (sp.getBoolean("sp_background", true)) {
updateNotification();
} else {
Intent toActivity = new Intent(HolderService.this, BrowserActivity.class);
startActivity(toActivity);
}
return START_STICKY;
}
use of de.baumann.browser.view.NinjaWebView in project browser by scoute-dich.
the class BrowserActivity method initOmnibox.
private void initOmnibox() {
omnibox = findViewById(R.id.main_omnibox);
inputBox = findViewById(R.id.main_omnibox_input);
omniboxRefresh = findViewById(R.id.omnibox_refresh);
omniboxOverflow = findViewById(R.id.omnibox_overflow);
omniboxTitle = findViewById(R.id.omnibox_title);
progressBar = findViewById(R.id.main_progress_bar);
int fab_position = Integer.parseInt(sp.getString("nav_position", "0"));
switch(fab_position) {
case 0:
fab_imageButtonNav = findViewById(R.id.fab_imageButtonNav_right);
break;
case 1:
fab_imageButtonNav = findViewById(R.id.fab_imageButtonNav_left);
break;
case 2:
fab_imageButtonNav = findViewById(R.id.fab_imageButtonNav_center);
break;
default:
fab_imageButtonNav = findViewById(R.id.fab_imageButtonNav_right);
break;
}
fab_imageButtonNav.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (currentAlbumController instanceof NinjaWebView) {
showSwitcher();
}
return false;
}
});
fab_imageButtonNav.setOnClickListener(this);
fab_imageButtonNav.setOnTouchListener(new SwipeTouchListener(BrowserActivity.this) {
public void onSwipeTop() {
ninjaWebView = (NinjaWebView) currentAlbumController;
ninjaWebView.pageUp(true);
}
public void onSwipeBottom() {
ninjaWebView = (NinjaWebView) currentAlbumController;
ninjaWebView.pageDown(true);
}
public void onSwipeRight() {
ninjaWebView = (NinjaWebView) currentAlbumController;
if (ninjaWebView.canGoForward()) {
ninjaWebView.goForward();
} else {
NinjaToast.show(BrowserActivity.this, R.string.toast_webview_forward);
}
}
public void onSwipeLeft() {
if (ninjaWebView.canGoBack()) {
ninjaWebView.goBack();
} else {
removeAlbum(currentAlbumController);
}
}
});
inputBox.setOnTouchListener(new SwipeToBoundListener(omnibox, new SwipeToBoundListener.BoundCallback() {
private final KeyListener keyListener = inputBox.getKeyListener();
@Override
public boolean canSwipe() {
boolean ob = sp.getBoolean(getString(R.string.sp_omnibox_control), true);
return switcherPanel.isKeyBoardShowing() && ob;
}
@Override
public void onSwipe() {
inputBox.setKeyListener(null);
inputBox.setFocusable(false);
inputBox.setFocusableInTouchMode(false);
inputBox.clearFocus();
}
@Override
public void onBound(boolean canSwitch, boolean left) {
inputBox.setKeyListener(keyListener);
inputBox.setFocusable(true);
inputBox.setFocusableInTouchMode(true);
inputBox.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
inputBox.clearFocus();
if (canSwitch) {
AlbumController controller = nextAlbumController(left);
showAlbum(controller, false);
}
}
}));
inputBox.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (currentAlbumController == null) {
// || !(actionId == EditorInfo.IME_ACTION_DONE)
return false;
}
String query = inputBox.getText().toString().trim();
if (query.isEmpty()) {
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_input_empty));
return true;
}
updateAlbum(query);
hideSoftInput(inputBox);
return false;
}
});
updateBookmarks();
updateAutoComplete();
omniboxRefresh.setOnClickListener(this);
omniboxOverflow.setOnClickListener(this);
omniboxOverflow.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (currentAlbumController != null && currentAlbumController instanceof NinjaWebView) {
showSwitcher();
}
return false;
}
});
}
Aggregations