Change dialog UI to be list based instead of button based to allow for more options

This commit is contained in:
Anthony Restaino 2016-07-31 17:09:32 -04:00
parent 4a8df255bd
commit b3ee8ca155
4 changed files with 309 additions and 231 deletions

View File

@ -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

View File

@ -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();
}
}

View File

@ -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);
}
});
} }
} }

View File

@ -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());
} }