use of de.baumann.browser.database.Record in project browser by scoute-dich.
the class BrowserActivity method updateAutoComplete.
@Override
public void updateAutoComplete() {
RecordAction action = new RecordAction(this);
action.open(false);
List<Record> list = action.listBookmarks();
list.addAll(action.listHistory());
action.close();
CompleteAdapter adapter = new CompleteAdapter(this, list);
inputBox.setAdapter(adapter);
adapter.notifyDataSetChanged();
inputBox.setDropDownWidth(ViewUnit.getWindowWidth(this));
inputBox.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String url = ((TextView) view.findViewById(R.id.record_item_url)).getText().toString();
inputBox.setText(url);
inputBox.setSelection(url.length());
updateAlbum(url);
hideSoftInput(inputBox);
}
});
}
use of de.baumann.browser.database.Record 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.database.Record in project browser by scoute-dich.
the class BrowserActivity method showEditDialog.
private void showEditDialog(final Adapter_Record adapterRecord, List<Record> recordList, int location) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
View dialogView = View.inflate(BrowserActivity.this, R.layout.dialog_edit, null);
final Record record = recordList.get(location);
final EditText editText = dialogView.findViewById(R.id.dialog_edit);
editText.setHint(R.string.dialog_title_hint);
editText.setText(record.getTitle());
editText.setSelection(record.getTitle().length());
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 text = editText.getText().toString().trim();
if (text.isEmpty()) {
NinjaToast.show(BrowserActivity.this, getString(R.string.toast_input_empty));
}
RecordAction action = new RecordAction(BrowserActivity.this);
action.open(true);
record.setTitle(text);
action.updateBookmark(record);
action.close();
adapterRecord.notifyDataSetChanged();
hideSoftInput(editText);
}
});
builder.setNegativeButton(R.string.app_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
hideSoftInput(editText);
}
});
AlertDialog dialog = builder.create();
dialog.show();
showSoftInput(editText);
}
use of de.baumann.browser.database.Record in project browser by scoute-dich.
the class NinjaWebViewClient method onPageFinished.
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (!ninjaWebView.getSettings().getLoadsImagesAutomatically()) {
ninjaWebView.getSettings().setLoadsImagesAutomatically(true);
}
if (view.getTitle() == null || view.getTitle().isEmpty()) {
ninjaWebView.update(context.getString(R.string.album_untitled), url);
} else {
ninjaWebView.update(view.getTitle(), url);
}
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
if (sp.getBoolean("saveHistory", true)) {
RecordAction action = new RecordAction(context);
action.open(true);
if (action.checkHistory(url)) {
action.deleteHistoryOld(url);
action.addHistory(new Record(ninjaWebView.getTitle(), ninjaWebView.getUrl(), System.currentTimeMillis()));
} else {
action.addHistory(new Record(ninjaWebView.getTitle(), ninjaWebView.getUrl(), System.currentTimeMillis()));
}
action.close();
}
if (ninjaWebView.isForeground()) {
ninjaWebView.invalidate();
} else {
ninjaWebView.postInvalidate();
}
}
use of de.baumann.browser.database.Record in project browser by scoute-dich.
the class BrowserUnit method importBookmarks.
public static int importBookmarks(Context context) {
String filename = context.getString(R.string.export_bookmarks);
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "browser_backup//" + filename + SUFFIX_HTML);
List<Record> list = new ArrayList<>();
try {
RecordAction action = new RecordAction(context);
action.open(true);
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
line = line.trim();
if (!((line.startsWith("<dt><a ") && line.endsWith("</a>")) || (line.startsWith("<DT><A ") && line.endsWith("</A>")))) {
continue;
}
String title = getBookmarkTitle(line);
String url = getBookmarkURL(line);
if (title.trim().isEmpty() || url.trim().isEmpty()) {
continue;
}
Record record = new Record();
record.setTitle(title);
record.setURL(url);
record.setTime(System.currentTimeMillis());
if (!action.checkBookmark(record)) {
list.add(record);
}
}
reader.close();
Collections.sort(list, new Comparator<Record>() {
@Override
public int compare(Record first, Record second) {
return first.getTitle().compareTo(second.getTitle());
}
});
for (Record record : list) {
action.addBookmark(record);
}
action.close();
} catch (Exception e) {
Log.w("Browser", "Error adding record", e);
}
return list.size();
}
Aggregations