Change dialog UI to be list based instead of button based to allow for more options
This commit is contained in:
parent
4a8df255bd
commit
b3ee8ca155
@ -40,6 +40,7 @@ import android.support.v7.app.ActionBar;
|
|||||||
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AlertDialog;
|
||||||
import android.support.v7.graphics.Palette;
|
import android.support.v7.graphics.Palette;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
@ -108,6 +109,7 @@ import acr.browser.lightning.controller.UIController;
|
|||||||
import acr.browser.lightning.database.BookmarkManager;
|
import acr.browser.lightning.database.BookmarkManager;
|
||||||
import acr.browser.lightning.database.HistoryDatabase;
|
import acr.browser.lightning.database.HistoryDatabase;
|
||||||
import acr.browser.lightning.database.HistoryItem;
|
import acr.browser.lightning.database.HistoryItem;
|
||||||
|
import acr.browser.lightning.dialog.BrowserDialog;
|
||||||
import acr.browser.lightning.dialog.LightningDialogBuilder;
|
import acr.browser.lightning.dialog.LightningDialogBuilder;
|
||||||
import acr.browser.lightning.fragment.BookmarksFragment;
|
import acr.browser.lightning.fragment.BookmarksFragment;
|
||||||
import acr.browser.lightning.fragment.TabsFragment;
|
import acr.browser.lightning.fragment.TabsFragment;
|
||||||
@ -815,22 +817,17 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
|||||||
* for. It highlights the text entered.
|
* for. It highlights the text entered.
|
||||||
*/
|
*/
|
||||||
private void findInPage() {
|
private void findInPage() {
|
||||||
final AlertDialog.Builder finder = new AlertDialog.Builder(this);
|
BrowserDialog.showEditText(this,
|
||||||
finder.setTitle(getResources().getString(R.string.action_find));
|
R.string.action_find,
|
||||||
final EditText getHome = new EditText(this);
|
R.string.search_hint,
|
||||||
getHome.setHint(getResources().getString(R.string.search_hint));
|
R.string.search_hint, new BrowserDialog.EditorListener() {
|
||||||
finder.setView(getHome);
|
|
||||||
finder.setPositiveButton(getResources().getString(R.string.search_hint),
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(String text) {
|
||||||
String query = getHome.getText().toString();
|
if (!TextUtils.isEmpty(text)) {
|
||||||
if (!query.isEmpty())
|
showSearchInterfaceBar(text);
|
||||||
showSearchInterfaceBar(query);
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
finder.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showSearchInterfaceBar(String text) {
|
private void showSearchInterfaceBar(String text) {
|
||||||
@ -863,32 +860,25 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
|||||||
if (position < 0) {
|
if (position < 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
BrowserDialog.show(this,
|
||||||
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
|
new BrowserDialog.Item(R.string.close_all_tabs) {
|
||||||
android.R.layout.simple_list_item_1);
|
@Override
|
||||||
adapter.add(this.getString(R.string.close_all_tabs));
|
public void onClick() {
|
||||||
adapter.add(this.getString(R.string.close_other_tabs));
|
closeBrowser();
|
||||||
adapter.add(this.getString(R.string.close_tab));
|
|
||||||
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
switch (which) {
|
|
||||||
case 0:
|
|
||||||
closeBrowser();
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
mPresenter.closeAllOtherTabs();
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
deleteTab(position);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
});
|
new BrowserDialog.Item(R.string.close_other_tabs) {
|
||||||
builder.show();
|
@Override
|
||||||
|
public void onClick() {
|
||||||
|
mPresenter.closeAllOtherTabs();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new BrowserDialog.Item(R.string.close_tab) {
|
||||||
|
@Override
|
||||||
|
public void onClick() {
|
||||||
|
deleteTab(position);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,138 @@
|
|||||||
|
package acr.browser.lightning.dialog;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
import android.support.annotation.StringRes;
|
||||||
|
import android.support.v7.app.AlertDialog;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import acr.browser.lightning.R;
|
||||||
|
import acr.browser.lightning.bus.BookmarkEvents;
|
||||||
|
import acr.browser.lightning.constant.Constants;
|
||||||
|
import acr.browser.lightning.database.HistoryItem;
|
||||||
|
import acr.browser.lightning.utils.Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright 7/31/2016 Anthony Restaino
|
||||||
|
* <p/>
|
||||||
|
* 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
|
||||||
|
* <p/>
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* <p/>
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
public class BrowserDialog {
|
||||||
|
|
||||||
|
public interface Listener {
|
||||||
|
void onClick();
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface EditorListener {
|
||||||
|
void onClick(String text);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static abstract class Item {
|
||||||
|
|
||||||
|
private int mTitle;
|
||||||
|
|
||||||
|
public Item(@StringRes int title) {
|
||||||
|
mTitle = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
@StringRes
|
||||||
|
private int getTitle() {
|
||||||
|
return mTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void onClick();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void show(@NonNull Activity activity, @NonNull Item item, @Nullable Item... items) {
|
||||||
|
show(activity, null, item, items);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void show(@NonNull Activity activity, @StringRes int title, @NonNull Item item, @Nullable Item... items) {
|
||||||
|
show(activity, activity.getString(title), item, items);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void show(@NonNull Activity activity, @Nullable String title, @NonNull Item item, @Nullable Item... items) {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||||
|
ArrayAdapter<String> adapter = new ArrayAdapter<>(activity,
|
||||||
|
android.R.layout.simple_list_item_1);
|
||||||
|
|
||||||
|
final List<Item> itemList = new ArrayList<>(1);
|
||||||
|
itemList.add(item);
|
||||||
|
if (items != null) {
|
||||||
|
itemList.addAll(Arrays.asList(items));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Item it : itemList) {
|
||||||
|
adapter.add(activity.getString(it.getTitle()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TextUtils.isEmpty(title)) {
|
||||||
|
builder.setTitle(title);
|
||||||
|
}
|
||||||
|
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
itemList.get(which).onClick();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void showEditText(@NonNull Activity activity, @StringRes int title,
|
||||||
|
@StringRes int hint, @StringRes int action,
|
||||||
|
@NonNull final EditorListener listener) {
|
||||||
|
showEditText(activity, title, hint, null, action, listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void showEditText(@NonNull Activity activity, @StringRes int title,
|
||||||
|
@StringRes int hint, @Nullable String currentText,
|
||||||
|
@StringRes int action, @NonNull final EditorListener listener) {
|
||||||
|
final AlertDialog.Builder editorDialog = new AlertDialog.Builder(activity);
|
||||||
|
editorDialog.setTitle(title);
|
||||||
|
final EditText editText = new EditText(activity);
|
||||||
|
editText.setHint(hint);
|
||||||
|
if (currentText != null) {
|
||||||
|
editText.setText(currentText);
|
||||||
|
}
|
||||||
|
editText.setSingleLine();
|
||||||
|
LinearLayout layout = new LinearLayout(activity);
|
||||||
|
layout.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
int padding = Utils.dpToPx(10);
|
||||||
|
layout.setPadding(padding, padding, padding, padding);
|
||||||
|
layout.addView(editText);
|
||||||
|
editorDialog.setView(layout);
|
||||||
|
editorDialog.setPositiveButton(action,
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
listener.onClick(editText.getText().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
editorDialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -8,6 +8,7 @@ import android.content.DialogInterface;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AlertDialog;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.AutoCompleteTextView;
|
import android.widget.AutoCompleteTextView;
|
||||||
@ -56,7 +57,7 @@ public class LightningDialogBuilder {
|
|||||||
* @param context used to show the dialog
|
* @param context used to show the dialog
|
||||||
* @param url the long pressed url
|
* @param url the long pressed url
|
||||||
*/
|
*/
|
||||||
public void showLongPressedDialogForBookmarkUrl(@NonNull final Context context, @NonNull final String url) {
|
public void showLongPressedDialogForBookmarkUrl(@NonNull final Activity context, @NonNull final String url) {
|
||||||
final HistoryItem item;
|
final HistoryItem item;
|
||||||
if (url.startsWith(Constants.FILE) && url.endsWith(BookmarkPage.FILENAME)) {
|
if (url.startsWith(Constants.FILE) && url.endsWith(BookmarkPage.FILENAME)) {
|
||||||
// TODO hacky, make a better bookmark mechanism in the future
|
// TODO hacky, make a better bookmark mechanism in the future
|
||||||
@ -80,35 +81,28 @@ public class LightningDialogBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showLongPressedDialogForBookmarkUrl(@NonNull final Context context, @NonNull final HistoryItem item) {
|
public void showLongPressedDialogForBookmarkUrl(@NonNull final Activity context, @NonNull final HistoryItem item) {
|
||||||
final DialogInterface.OnClickListener dialogClickListener =
|
BrowserDialog.show(context, R.string.action_bookmarks,
|
||||||
new DialogInterface.OnClickListener() {
|
new BrowserDialog.Item(R.string.action_new_tab) {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick() {
|
||||||
switch (which) {
|
mEventBus.post(new BrowserEvents.OpenUrlInNewTab(item.getUrl()));
|
||||||
case DialogInterface.BUTTON_POSITIVE:
|
}
|
||||||
mEventBus.post(new BrowserEvents.OpenUrlInNewTab(item.getUrl()));
|
},
|
||||||
break;
|
new BrowserDialog.Item(R.string.action_delete) {
|
||||||
case DialogInterface.BUTTON_NEGATIVE:
|
@Override
|
||||||
if (mBookmarkManager.deleteBookmark(item)) {
|
public void onClick() {
|
||||||
mEventBus.post(new BookmarkEvents.Deleted(item));
|
if (mBookmarkManager.deleteBookmark(item)) {
|
||||||
}
|
mEventBus.post(new BookmarkEvents.Deleted(item));
|
||||||
break;
|
|
||||||
case DialogInterface.BUTTON_NEUTRAL:
|
|
||||||
showEditBookmarkDialog(context, item);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
},
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
new BrowserDialog.Item(R.string.action_edit) {
|
||||||
builder.setTitle(R.string.action_bookmarks)
|
@Override
|
||||||
.setMessage(R.string.dialog_bookmark)
|
public void onClick() {
|
||||||
.setCancelable(true)
|
showEditBookmarkDialog(context, item);
|
||||||
.setPositiveButton(R.string.action_new_tab, dialogClickListener)
|
}
|
||||||
.setNegativeButton(R.string.action_delete, dialogClickListener)
|
});
|
||||||
.setNeutralButton(R.string.action_edit, dialogClickListener)
|
|
||||||
.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showEditBookmarkDialog(@NonNull final Context context, @NonNull final HistoryItem item) {
|
private void showEditBookmarkDialog(@NonNull final Context context, @NonNull final HistoryItem item) {
|
||||||
@ -120,191 +114,145 @@ public class LightningDialogBuilder {
|
|||||||
final EditText getUrl = (EditText) dialogLayout.findViewById(R.id.bookmark_url);
|
final EditText getUrl = (EditText) dialogLayout.findViewById(R.id.bookmark_url);
|
||||||
getUrl.setText(item.getUrl());
|
getUrl.setText(item.getUrl());
|
||||||
final AutoCompleteTextView getFolder =
|
final AutoCompleteTextView getFolder =
|
||||||
(AutoCompleteTextView) dialogLayout.findViewById(R.id.bookmark_folder);
|
(AutoCompleteTextView) dialogLayout.findViewById(R.id.bookmark_folder);
|
||||||
getFolder.setHint(R.string.folder);
|
getFolder.setHint(R.string.folder);
|
||||||
getFolder.setText(item.getFolder());
|
getFolder.setText(item.getFolder());
|
||||||
final List<String> folders = mBookmarkManager.getFolderTitles();
|
final List<String> folders = mBookmarkManager.getFolderTitles();
|
||||||
final ArrayAdapter<String> suggestionsAdapter = new ArrayAdapter<>(context,
|
final ArrayAdapter<String> suggestionsAdapter = new ArrayAdapter<>(context,
|
||||||
android.R.layout.simple_dropdown_item_1line, folders);
|
android.R.layout.simple_dropdown_item_1line, folders);
|
||||||
getFolder.setThreshold(1);
|
getFolder.setThreshold(1);
|
||||||
getFolder.setAdapter(suggestionsAdapter);
|
getFolder.setAdapter(suggestionsAdapter);
|
||||||
editBookmarkDialog.setView(dialogLayout);
|
editBookmarkDialog.setView(dialogLayout);
|
||||||
editBookmarkDialog.setPositiveButton(context.getString(R.string.action_ok),
|
editBookmarkDialog.setPositiveButton(context.getString(R.string.action_ok),
|
||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
HistoryItem editedItem = new HistoryItem();
|
HistoryItem editedItem = new HistoryItem();
|
||||||
editedItem.setTitle(getTitle.getText().toString());
|
editedItem.setTitle(getTitle.getText().toString());
|
||||||
editedItem.setUrl(getUrl.getText().toString());
|
editedItem.setUrl(getUrl.getText().toString());
|
||||||
editedItem.setUrl(getUrl.getText().toString());
|
editedItem.setUrl(getUrl.getText().toString());
|
||||||
editedItem.setFolder(getFolder.getText().toString());
|
editedItem.setFolder(getFolder.getText().toString());
|
||||||
mBookmarkManager.editBookmark(item, editedItem);
|
mBookmarkManager.editBookmark(item, editedItem);
|
||||||
mEventBus.post(new BookmarkEvents.BookmarkChanged(item, editedItem));
|
mEventBus.post(new BookmarkEvents.BookmarkChanged(item, editedItem));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
editBookmarkDialog.show();
|
editBookmarkDialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showBookmarkFolderLongPressedDialog(@NonNull final Context context, @NonNull final HistoryItem item) {
|
public void showBookmarkFolderLongPressedDialog(@NonNull final Activity context, @NonNull final HistoryItem item) {
|
||||||
// assert item.isFolder();
|
|
||||||
final DialogInterface.OnClickListener dialogClickListener =
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
switch (which) {
|
|
||||||
case DialogInterface.BUTTON_POSITIVE:
|
|
||||||
showRenameFolderDialog(context, item);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DialogInterface.BUTTON_NEGATIVE:
|
BrowserDialog.show(context, R.string.action_folder,
|
||||||
mBookmarkManager.deleteFolder(item.getTitle());
|
new BrowserDialog.Item(R.string.action_rename) {
|
||||||
// setBookmarkDataSet(mBookmarkManager.getBookmarksFromFolder(null, true), false);
|
@Override
|
||||||
mEventBus.post(new BookmarkEvents.Deleted(item));
|
public void onClick() {
|
||||||
break;
|
showRenameFolderDialog(context, item);
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
};
|
new BrowserDialog.Item(R.string.action_delete) {
|
||||||
|
@Override
|
||||||
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
public void onClick() {
|
||||||
builder.setTitle(R.string.action_folder)
|
mBookmarkManager.deleteFolder(item.getTitle());
|
||||||
.setMessage(R.string.dialog_folder)
|
mEventBus.post(new BookmarkEvents.Deleted(item));
|
||||||
.setCancelable(true)
|
}
|
||||||
.setPositiveButton(R.string.action_rename, dialogClickListener)
|
});
|
||||||
.setNegativeButton(R.string.action_delete, dialogClickListener)
|
|
||||||
.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showRenameFolderDialog(@NonNull final Context context, @NonNull final HistoryItem item) {
|
private void showRenameFolderDialog(@NonNull final Activity context, @NonNull final HistoryItem item) {
|
||||||
// assert item.isFolder();
|
BrowserDialog.showEditText(context, R.string.title_rename_folder,
|
||||||
final AlertDialog.Builder editFolderDialog = new AlertDialog.Builder(context);
|
R.string.hint_title, item.getTitle(),
|
||||||
editFolderDialog.setTitle(R.string.title_rename_folder);
|
R.string.action_ok, new BrowserDialog.EditorListener() {
|
||||||
final EditText getTitle = new EditText(context);
|
@Override
|
||||||
getTitle.setHint(R.string.hint_title);
|
public void onClick(String text) {
|
||||||
getTitle.setText(item.getTitle());
|
if (!TextUtils.isEmpty(text)) {
|
||||||
getTitle.setSingleLine();
|
|
||||||
LinearLayout layout = new LinearLayout(context);
|
|
||||||
layout.setOrientation(LinearLayout.VERTICAL);
|
|
||||||
int padding = Utils.dpToPx(10);
|
|
||||||
layout.setPadding(padding, padding, padding, padding);
|
|
||||||
layout.addView(getTitle);
|
|
||||||
editFolderDialog.setView(layout);
|
|
||||||
editFolderDialog.setPositiveButton(context.getString(R.string.action_ok),
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
final String oldTitle = item.getTitle();
|
final String oldTitle = item.getTitle();
|
||||||
final String newTitle = getTitle.getText().toString();
|
|
||||||
final HistoryItem editedItem = new HistoryItem();
|
final HistoryItem editedItem = new HistoryItem();
|
||||||
editedItem.setTitle(newTitle);
|
editedItem.setTitle(text);
|
||||||
editedItem.setUrl(Constants.FOLDER + newTitle);
|
editedItem.setUrl(Constants.FOLDER + text);
|
||||||
editedItem.setFolder(item.getFolder());
|
editedItem.setFolder(item.getFolder());
|
||||||
editedItem.setIsFolder(true);
|
editedItem.setIsFolder(true);
|
||||||
mBookmarkManager.renameFolder(oldTitle, newTitle);
|
mBookmarkManager.renameFolder(oldTitle, text);
|
||||||
mEventBus.post(new BookmarkEvents.BookmarkChanged(item, editedItem));
|
mEventBus.post(new BookmarkEvents.BookmarkChanged(item, editedItem));
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
editFolderDialog.show();
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showLongPressedHistoryLinkDialog(final Context context, @NonNull final String url) {
|
public void showLongPressedHistoryLinkDialog(final Activity context, @NonNull final String url) {
|
||||||
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
|
BrowserDialog.show(context, R.string.action_history,
|
||||||
@Override
|
new BrowserDialog.Item(R.string.action_new_tab) {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
@Override
|
||||||
switch (which) {
|
public void onClick() {
|
||||||
case DialogInterface.BUTTON_POSITIVE:
|
mEventBus.post(new BrowserEvents.OpenUrlInNewTab(url));
|
||||||
mEventBus.post(new BrowserEvents.OpenUrlInNewTab(url));
|
|
||||||
break;
|
|
||||||
case DialogInterface.BUTTON_NEGATIVE:
|
|
||||||
BrowserApp.getIOThread().execute(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
mHistoryDatabase.deleteHistoryItem(url);
|
|
||||||
// openHistory();
|
|
||||||
mEventBus.post(new BrowserEvents.OpenHistoryInCurrentTab());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case DialogInterface.BUTTON_NEUTRAL:
|
|
||||||
mEventBus.post(new BrowserEvents.OpenUrlInCurrentTab(url));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
};
|
new BrowserDialog.Item(R.string.action_delete) {
|
||||||
|
@Override
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
public void onClick() {
|
||||||
builder.setTitle(R.string.action_history)
|
BrowserApp.getIOThread().execute(new Runnable() {
|
||||||
.setMessage(R.string.dialog_history_long_press)
|
@Override
|
||||||
.setCancelable(true)
|
public void run() {
|
||||||
.setPositiveButton(R.string.action_new_tab, dialogClickListener)
|
mHistoryDatabase.deleteHistoryItem(url);
|
||||||
.setNegativeButton(R.string.action_delete, dialogClickListener)
|
// openHistory();
|
||||||
.setNeutralButton(R.string.action_open, dialogClickListener)
|
mEventBus.post(new BrowserEvents.OpenHistoryInCurrentTab());
|
||||||
.show();
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new BrowserDialog.Item(R.string.action_open) {
|
||||||
|
@Override
|
||||||
|
public void onClick() {
|
||||||
|
mEventBus.post(new BrowserEvents.OpenUrlInCurrentTab(url));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO There should be a way in which we do not need an activity reference to dowload a file
|
// TODO There should be a way in which we do not need an activity reference to dowload a file
|
||||||
public void showLongPressImageDialog(@NonNull final Activity activity, @NonNull final String url,
|
public void showLongPressImageDialog(@NonNull final Activity activity, @NonNull final String url,
|
||||||
@NonNull final String userAgent) {
|
@NonNull final String userAgent) {
|
||||||
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
|
BrowserDialog.show(activity, url.replace(Constants.HTTP, ""),
|
||||||
@Override
|
new BrowserDialog.Item(R.string.action_new_tab) {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
@Override
|
||||||
switch (which) {
|
public void onClick() {
|
||||||
case DialogInterface.BUTTON_POSITIVE:
|
mEventBus.post(new BrowserEvents.OpenUrlInNewTab(url));
|
||||||
mEventBus.post(new BrowserEvents.OpenUrlInNewTab(url));
|
|
||||||
break;
|
|
||||||
case DialogInterface.BUTTON_NEGATIVE:
|
|
||||||
mEventBus.post(new BrowserEvents.OpenUrlInCurrentTab(url));
|
|
||||||
break;
|
|
||||||
case DialogInterface.BUTTON_NEUTRAL:
|
|
||||||
Utils.downloadFile(activity, mPreferenceManager, url, userAgent, "attachment");
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
};
|
new BrowserDialog.Item(R.string.action_open) {
|
||||||
|
@Override
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
public void onClick() {
|
||||||
builder.setTitle(url.replace(Constants.HTTP, ""))
|
mEventBus.post(new BrowserEvents.OpenUrlInCurrentTab(url));
|
||||||
.setCancelable(true)
|
}
|
||||||
.setMessage(R.string.dialog_image)
|
},
|
||||||
.setPositiveButton(R.string.action_new_tab, dialogClickListener)
|
new BrowserDialog.Item(R.string.action_download) {
|
||||||
.setNegativeButton(R.string.action_open, dialogClickListener)
|
@Override
|
||||||
.setNeutralButton(R.string.action_download, dialogClickListener)
|
public void onClick() {
|
||||||
.show();
|
Utils.downloadFile(activity, mPreferenceManager, url, userAgent, "attachment");
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showLongPressLinkDialog(@NonNull final Context context, final String url) {
|
public void showLongPressLinkDialog(@NonNull final Activity context, final String url) {
|
||||||
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
|
BrowserDialog.show(context, url,
|
||||||
@Override
|
new BrowserDialog.Item(R.string.action_new_tab) {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
@Override
|
||||||
switch (which) {
|
public void onClick() {
|
||||||
case DialogInterface.BUTTON_POSITIVE:
|
mEventBus.post(new BrowserEvents.OpenUrlInNewTab(url));
|
||||||
mEventBus.post(new BrowserEvents.OpenUrlInNewTab(url));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DialogInterface.BUTTON_NEGATIVE:
|
|
||||||
mEventBus.post(new BrowserEvents.OpenUrlInCurrentTab(url));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DialogInterface.BUTTON_NEUTRAL:
|
|
||||||
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
|
||||||
ClipData clip = ClipData.newPlainText("label", url);
|
|
||||||
clipboard.setPrimaryClip(clip);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
};
|
new BrowserDialog.Item(R.string.action_open) {
|
||||||
|
@Override
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(context); // dialog
|
public void onClick() {
|
||||||
builder.setTitle(url)
|
mEventBus.post(new BrowserEvents.OpenUrlInCurrentTab(url));
|
||||||
.setCancelable(true)
|
}
|
||||||
.setMessage(R.string.dialog_link)
|
},
|
||||||
.setPositiveButton(R.string.action_new_tab, dialogClickListener)
|
new BrowserDialog.Item(R.string.action_copy) {
|
||||||
.setNegativeButton(R.string.action_open, dialogClickListener)
|
@Override
|
||||||
.setNeutralButton(R.string.action_copy, dialogClickListener)
|
public void onClick() {
|
||||||
.show();
|
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
|
ClipData clip = ClipData.newPlainText("label", url);
|
||||||
|
clipboard.setPrimaryClip(clip);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -49,11 +49,13 @@ import acr.browser.lightning.database.HistoryItem;
|
|||||||
import acr.browser.lightning.dialog.LightningDialogBuilder;
|
import acr.browser.lightning.dialog.LightningDialogBuilder;
|
||||||
import acr.browser.lightning.preference.PreferenceManager;
|
import acr.browser.lightning.preference.PreferenceManager;
|
||||||
import acr.browser.lightning.async.ImageDownloadTask;
|
import acr.browser.lightning.async.ImageDownloadTask;
|
||||||
|
|
||||||
import com.anthonycr.bonsai.Action;
|
import com.anthonycr.bonsai.Action;
|
||||||
import com.anthonycr.bonsai.Observable;
|
import com.anthonycr.bonsai.Observable;
|
||||||
import com.anthonycr.bonsai.OnSubscribe;
|
import com.anthonycr.bonsai.OnSubscribe;
|
||||||
import com.anthonycr.bonsai.Schedulers;
|
import com.anthonycr.bonsai.Schedulers;
|
||||||
import com.anthonycr.bonsai.Subscriber;
|
import com.anthonycr.bonsai.Subscriber;
|
||||||
|
|
||||||
import acr.browser.lightning.utils.ThemeUtils;
|
import acr.browser.lightning.utils.ThemeUtils;
|
||||||
import acr.browser.lightning.view.LightningView;
|
import acr.browser.lightning.view.LightningView;
|
||||||
|
|
||||||
@ -121,7 +123,7 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener,
|
|||||||
mWebpageBitmap = ThemeUtils.getThemedBitmap(context, R.drawable.ic_webpage, darkTheme);
|
mWebpageBitmap = ThemeUtils.getThemedBitmap(context, R.drawable.ic_webpage, darkTheme);
|
||||||
mFolderBitmap = ThemeUtils.getThemedBitmap(context, R.drawable.ic_folder, darkTheme);
|
mFolderBitmap = ThemeUtils.getThemedBitmap(context, R.drawable.ic_folder, darkTheme);
|
||||||
mIconColor = darkTheme ? ThemeUtils.getIconDarkThemeColor(context) :
|
mIconColor = darkTheme ? ThemeUtils.getIconDarkThemeColor(context) :
|
||||||
ThemeUtils.getIconLightThemeColor(context);
|
ThemeUtils.getIconLightThemeColor(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle bookmark click
|
// Handle bookmark click
|
||||||
@ -181,13 +183,13 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener,
|
|||||||
setupNavigationButton(view, R.id.action_toggle_desktop, R.id.icon_desktop);
|
setupNavigationButton(view, R.id.action_toggle_desktop, R.id.icon_desktop);
|
||||||
|
|
||||||
initBookmarkManager().subscribeOn(Schedulers.io())
|
initBookmarkManager().subscribeOn(Schedulers.io())
|
||||||
.observeOn(Schedulers.main())
|
.observeOn(Schedulers.main())
|
||||||
.subscribe(new OnSubscribe<BookmarkViewAdapter>() {
|
.subscribe(new OnSubscribe<BookmarkViewAdapter>() {
|
||||||
@Override
|
@Override
|
||||||
public void onNext(@Nullable BookmarkViewAdapter item) {
|
public void onNext(@Nullable BookmarkViewAdapter item) {
|
||||||
mBookmarksListView.setAdapter(mBookmarkAdapter);
|
mBookmarksListView.setAdapter(mBookmarkAdapter);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,7 +214,7 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener,
|
|||||||
mWebpageBitmap = ThemeUtils.getThemedBitmap(activity, R.drawable.ic_webpage, darkTheme);
|
mWebpageBitmap = ThemeUtils.getThemedBitmap(activity, R.drawable.ic_webpage, darkTheme);
|
||||||
mFolderBitmap = ThemeUtils.getThemedBitmap(activity, R.drawable.ic_folder, darkTheme);
|
mFolderBitmap = ThemeUtils.getThemedBitmap(activity, R.drawable.ic_folder, darkTheme);
|
||||||
mIconColor = darkTheme ? ThemeUtils.getIconDarkThemeColor(activity) :
|
mIconColor = darkTheme ? ThemeUtils.getIconDarkThemeColor(activity) :
|
||||||
ThemeUtils.getIconLightThemeColor(activity);
|
ThemeUtils.getIconLightThemeColor(activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@ -325,9 +327,9 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener,
|
|||||||
|
|
||||||
private void handleLongPress(@NonNull final HistoryItem item) {
|
private void handleLongPress(@NonNull final HistoryItem item) {
|
||||||
if (item.isFolder()) {
|
if (item.isFolder()) {
|
||||||
mBookmarksDialogBuilder.showBookmarkFolderLongPressedDialog(getContext(), item);
|
mBookmarksDialogBuilder.showBookmarkFolderLongPressedDialog(getActivity(), item);
|
||||||
} else {
|
} else {
|
||||||
mBookmarksDialogBuilder.showLongPressedDialogForBookmarkUrl(getContext(), item);
|
mBookmarksDialogBuilder.showLongPressedDialogForBookmarkUrl(getActivity(), item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -398,7 +400,7 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener,
|
|||||||
} else if (web.getBitmap() == null) {
|
} else if (web.getBitmap() == null) {
|
||||||
holder.favicon.setImageBitmap(mWebpageBitmap);
|
holder.favicon.setImageBitmap(mWebpageBitmap);
|
||||||
new ImageDownloadTask(holder.favicon, web, mWebpageBitmap, context)
|
new ImageDownloadTask(holder.favicon, web, mWebpageBitmap, context)
|
||||||
.executeOnExecutor(AsyncExecutor.getInstance());
|
.executeOnExecutor(AsyncExecutor.getInstance());
|
||||||
} else {
|
} else {
|
||||||
holder.favicon.setImageBitmap(web.getBitmap());
|
holder.favicon.setImageBitmap(web.getBitmap());
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user