Browse Source

Better handling of bookmarks, some responsability moved back to BrowserActivity

master
Stefano Pacifici 9 years ago
parent
commit
6f914e9e17
  1. 67
      app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java
  2. 15
      app/src/main/java/acr/browser/lightning/bus/BookmarkEvents.java
  3. 9
      app/src/main/java/acr/browser/lightning/bus/BrowserEvents.java
  4. 21
      app/src/main/java/acr/browser/lightning/fragment/BookmarksFragment.java

67
app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java

@ -100,6 +100,7 @@ import acr.browser.lightning.constant.HistoryPage; @@ -100,6 +100,7 @@ import acr.browser.lightning.constant.HistoryPage;
import acr.browser.lightning.controller.UIController;
import acr.browser.lightning.database.BookmarkManager;
import acr.browser.lightning.database.HistoryDatabase;
import acr.browser.lightning.database.HistoryItem;
import acr.browser.lightning.dialog.LightningDialogBuilder;
import acr.browser.lightning.fragment.BookmarksFragment;
import acr.browser.lightning.fragment.TabsFragment;
@ -666,6 +667,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements @@ -666,6 +667,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
@Override
public boolean onOptionsItemSelected(MenuItem item) {
final LightningView currentView = mTabsManager.getCurrentTab();
final String currentUrl = currentView != null ? currentView.getUrl() : null;
// Handle action buttons
switch (item.getItemId()) {
case android.R.id.home:
@ -691,11 +693,11 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements @@ -691,11 +693,11 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
overridePendingTransition(R.anim.slide_up_in, R.anim.fade_out_scale);
return true;
case R.id.action_share:
if (currentView != null && !UrlUtils.isSpecialUrl(currentView.getUrl())) {
if (currentUrl != null && !UrlUtils.isSpecialUrl(currentUrl)) {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_SUBJECT, currentView.getTitle());
shareIntent.putExtra(Intent.EXTRA_TEXT, currentView.getUrl());
shareIntent.putExtra(Intent.EXTRA_TEXT, currentUrl);
startActivity(Intent.createChooser(shareIntent, getResources().getString(R.string.dialog_title_share)));
}
return true;
@ -703,9 +705,9 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements @@ -703,9 +705,9 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
openBookmarks();
return true;
case R.id.action_copy:
if (currentView != null && !UrlUtils.isSpecialUrl(currentView.getUrl())) {
if (currentUrl != null && !UrlUtils.isSpecialUrl(currentUrl)) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", currentView.getUrl());
ClipData clip = ClipData.newPlainText("label", currentUrl);
clipboard.setPrimaryClip(clip);
Utils.showSnackbar(this, R.string.message_link_copied);
}
@ -717,18 +719,17 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements @@ -717,18 +719,17 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
openHistory();
return true;
case R.id.action_add_bookmark:
if (currentView != null && !UrlUtils.isSpecialUrl(currentView.getUrl())) {
mEventBus.post(new BrowserEvents.AddBookmark(currentView.getTitle(),
currentView.getUrl()));
if (currentUrl != null && !UrlUtils.isSpecialUrl(currentUrl)) {
addBookmark(currentView.getTitle(), currentUrl);
}
return true;
case R.id.action_find:
findInPage();
return true;
case R.id.action_reading_mode:
if (currentView != null) {
if (currentUrl != null) {
Intent read = new Intent(this, ReadingActivity.class);
read.putExtra(Constants.LOAD_READING_URL, currentView.getUrl());
read.putExtra(Constants.LOAD_READING_URL, currentUrl);
startActivity(read);
}
return true;
@ -737,6 +738,27 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements @@ -737,6 +738,27 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
}
}
// By using a manager, adds a bookmark and notifies third parties about that
private void addBookmark(final String title, final String url) {
final HistoryItem item = !mBookmarkManager.isBookmark(url)
? new HistoryItem(url, title)
: null;
if (item != null && mBookmarkManager.addBookmark(item)) {
mSearchAdapter.refreshBookmarks();
mEventBus.post(new BrowserEvents.BookmarkAdded(title, url));
}
}
private void deleteBookmark(final String title, final String url) {
final HistoryItem item = mBookmarkManager.isBookmark(url)
? new HistoryItem(url, title)
: null;
if (item != null && mBookmarkManager.deleteBookmark(item)) {
mSearchAdapter.refreshBookmarks();
mEventBus.post(new BrowserEvents.CurrentPageUrl(url));
}
}
/**
* method that shows a dialog asking what string the user wishes to search
* for. It highlights the text entered.
@ -1994,29 +2016,26 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements @@ -1994,29 +2016,26 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
}
/**
* When receive a {@link acr.browser.lightning.bus.BookmarkEvents.WantToBookmarkCurrentPage}
* When receive a {@link BookmarkEvents.ToggleBookmarkForCurrentPage}
* message this receiver answer firing the
* {@link acr.browser.lightning.bus.BrowserEvents.AddBookmark} message
* {@link BrowserEvents.BookmarkAdded} message
*
* @param event an event that the user wishes to bookmark the current page
*/
@Subscribe
public void bookmarkCurrentPage(final BookmarkEvents.WantToBookmarkCurrentPage event) {
public void bookmarkCurrentPage(final BookmarkEvents.ToggleBookmarkForCurrentPage event) {
final LightningView currentTab = mTabsManager.getCurrentTab();
if (currentTab != null) {
mEventBus.post(new BrowserEvents.AddBookmark(currentTab.getTitle(), currentTab.getUrl()));
final String url = currentTab != null ? currentTab.getUrl() : null;
final String title = currentTab != null ? currentTab.getTitle() : null;
if (url == null) {
return;
}
}
/**
* This message is received when a bookmark was added by the
* {@link acr.browser.lightning.fragment.BookmarksFragment}
*
* @param event the event that a bookmark has been added
*/
@Subscribe
public void bookmarkAdded(final BookmarkEvents.Added event) {
mSearchAdapter.refreshBookmarks();
if (!mBookmarkManager.isBookmark(url)) {
addBookmark(title, url);
} else {
deleteBookmark(title, url);
}
}
/**

15
app/src/main/java/acr/browser/lightning/bus/BookmarkEvents.java

@ -23,20 +23,9 @@ public final class BookmarkEvents { @@ -23,20 +23,9 @@ public final class BookmarkEvents {
}
/**
* The user ask to bookmark the currently displayed page
* The user ask to add/del a bookmark to the currently displayed page
*/
public static class WantToBookmarkCurrentPage {
}
/**
* The bookmark was added
*/
public static class Added {
public final HistoryItem item;
public Added(final HistoryItem item) {
this.item = item;
}
public static class ToggleBookmarkForCurrentPage {
}
/**

9
app/src/main/java/acr/browser/lightning/bus/BrowserEvents.java

@ -12,14 +12,13 @@ public final class BrowserEvents { @@ -12,14 +12,13 @@ public final class BrowserEvents {
}
/**
* Used to reply to the {@link acr.browser.lightning.fragment.BookmarksFragment} message
* {@link acr.browser.lightning.bus.BookmarkEvents.WantToBookmarkCurrentPage}. The interaction
* result is a new bookmark added.
* The {@link acr.browser.lightning.activity.BrowserActivity} signal a new bookmark was added
* (mainly to the {@link acr.browser.lightning.fragment.BookmarksFragment}).
*/
public static class AddBookmark {
public static class BookmarkAdded {
public final String title, url;
public AddBookmark(final String title, final String url) {
public BookmarkAdded(final String title, final String url) {
this.title = title;
this.url = url;
}

21
app/src/main/java/acr/browser/lightning/fragment/BookmarksFragment.java

@ -30,7 +30,6 @@ import com.squareup.otto.Bus; @@ -30,7 +30,6 @@ import com.squareup.otto.Bus;
import com.squareup.otto.Subscribe;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
@ -49,7 +48,6 @@ import acr.browser.lightning.dialog.LightningDialogBuilder; @@ -49,7 +48,6 @@ import acr.browser.lightning.dialog.LightningDialogBuilder;
import acr.browser.lightning.preference.PreferenceManager;
import acr.browser.lightning.async.ImageDownloadTask;
import acr.browser.lightning.utils.ThemeUtils;
import acr.browser.lightning.utils.UrlUtils;
import acr.browser.lightning.view.LightningView;
/**
@ -192,22 +190,17 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener, @@ -192,22 +190,17 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener,
}
@Subscribe
public void addBookmark(final BrowserEvents.AddBookmark event) {
final HistoryItem item = new HistoryItem(event.url, event.title);
if (!UrlUtils.isSpecialUrl(item.getUrl())) {
if (mBookmarkManager.addBookmark(item)) {
mBookmarks.add(item);
Collections.sort(mBookmarks, new BookmarkManager.SortIgnoreCase());
mBookmarkAdapter.notifyDataSetChanged();
mEventBus.post(new BookmarkEvents.Added(item));
updateBookmarkIndicator(event.url);
}
}
public void addBookmark(final BrowserEvents.BookmarkAdded event) {
updateBookmarkIndicator(event.url);
String folder = mBookmarkManager.getCurrentFolder();
setBookmarkDataSet(mBookmarkManager.getBookmarksFromFolder(folder, true), false);
}
@Subscribe
public void currentPageInfo(final BrowserEvents.CurrentPageUrl event) {
updateBookmarkIndicator(event.url);
String folder = mBookmarkManager.getCurrentFolder();
setBookmarkDataSet(mBookmarkManager.getBookmarksFromFolder(folder, true), false);
}
@Subscribe
@ -316,7 +309,7 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener, @@ -316,7 +309,7 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener,
public void onClick(View v) {
switch (v.getId()) {
case R.id.action_add_bookmark:
mEventBus.post(new BookmarkEvents.WantToBookmarkCurrentPage());
mEventBus.post(new BookmarkEvents.ToggleBookmarkForCurrentPage());
break;
case R.id.action_reading:
LightningView currentTab = mTabsManager.getCurrentTab();

Loading…
Cancel
Save