diff --git a/app/src/main/java/org/mozilla/fenix/library/LibrarySiteItemView.kt b/app/src/main/java/org/mozilla/fenix/library/LibrarySiteItemView.kt index c444c0489..67ade043d 100644 --- a/app/src/main/java/org/mozilla/fenix/library/LibrarySiteItemView.kt +++ b/app/src/main/java/org/mozilla/fenix/library/LibrarySiteItemView.kt @@ -19,34 +19,8 @@ import org.mozilla.fenix.R import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.increaseTapArea import org.mozilla.fenix.ext.loadIntoView - -/** - * Interactor for items that can be selected on the bookmarks and history screens. - */ -interface SelectionInteractor { - /** - * Called when an item is tapped to open it. - * @param item the tapped item to open. - */ - fun open(item: T) - - /** - * Called when an item is long pressed and selection mode is started, - * or when selection mode has already started an an item is tapped. - * @param item the item to select. - */ - fun select(item: T) - - /** - * Called when a selected item is tapped in selection mode and should no longer be selected. - * @param item the item to deselect. - */ - fun deselect(item: T) -} - -interface SelectionHolder { - val selectedItems: Set -} +import org.mozilla.fenix.selection.SelectionHolder +import org.mozilla.fenix.selection.SelectionInteractor class LibrarySiteItemView @JvmOverloads constructor( context: Context, diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkFragmentStore.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkFragmentStore.kt index da5a14ae2..26901ddeb 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkFragmentStore.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkFragmentStore.kt @@ -9,7 +9,7 @@ import mozilla.components.concept.storage.BookmarkNode import mozilla.components.lib.state.Action import mozilla.components.lib.state.State import mozilla.components.lib.state.Store -import org.mozilla.fenix.library.SelectionHolder +import org.mozilla.fenix.selection.SelectionHolder class BookmarkFragmentStore( initialState: BookmarkFragmentState diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt index 5887a871d..6c581a8f8 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt @@ -16,7 +16,7 @@ import mozilla.components.support.base.feature.UserInteractionHandler import org.mozilla.fenix.NavGraphDirections import org.mozilla.fenix.R import org.mozilla.fenix.library.LibraryPageView -import org.mozilla.fenix.library.SelectionInteractor +import org.mozilla.fenix.selection.SelectionInteractor /** * Interface for the Bookmarks view. diff --git a/app/src/main/java/org/mozilla/fenix/library/downloads/DownloadAdapter.kt b/app/src/main/java/org/mozilla/fenix/library/downloads/DownloadAdapter.kt index 043053049..a24ccef52 100644 --- a/app/src/main/java/org/mozilla/fenix/library/downloads/DownloadAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/library/downloads/DownloadAdapter.kt @@ -8,7 +8,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView -import org.mozilla.fenix.library.SelectionHolder +import org.mozilla.fenix.selection.SelectionHolder import org.mozilla.fenix.library.downloads.viewholders.DownloadsListItemViewHolder class DownloadAdapter( diff --git a/app/src/main/java/org/mozilla/fenix/library/downloads/DownloadView.kt b/app/src/main/java/org/mozilla/fenix/library/downloads/DownloadView.kt index 82ad310b1..b122ef8f0 100644 --- a/app/src/main/java/org/mozilla/fenix/library/downloads/DownloadView.kt +++ b/app/src/main/java/org/mozilla/fenix/library/downloads/DownloadView.kt @@ -17,7 +17,7 @@ import kotlinx.android.synthetic.main.component_history.view.swipe_refresh import mozilla.components.support.base.feature.UserInteractionHandler import org.mozilla.fenix.R import org.mozilla.fenix.library.LibraryPageView -import org.mozilla.fenix.library.SelectionInteractor +import org.mozilla.fenix.selection.SelectionInteractor /** * Interface for the DownloadViewInteractor. This interface is implemented by objects that want diff --git a/app/src/main/java/org/mozilla/fenix/library/downloads/viewholders/DownloadsListItemViewHolder.kt b/app/src/main/java/org/mozilla/fenix/library/downloads/viewholders/DownloadsListItemViewHolder.kt index 46e76067d..5a80e3719 100644 --- a/app/src/main/java/org/mozilla/fenix/library/downloads/viewholders/DownloadsListItemViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/library/downloads/viewholders/DownloadsListItemViewHolder.kt @@ -11,7 +11,7 @@ import kotlinx.android.synthetic.main.download_list_item.view.* import kotlinx.android.synthetic.main.library_site_item.view.* import mozilla.components.feature.downloads.toMegabyteOrKilobyteString import org.mozilla.fenix.R -import org.mozilla.fenix.library.SelectionHolder +import org.mozilla.fenix.selection.SelectionHolder import org.mozilla.fenix.library.downloads.DownloadInteractor import org.mozilla.fenix.library.downloads.DownloadItem import org.mozilla.fenix.ext.getIcon diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryAdapter.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryAdapter.kt index e82bac914..32b43b221 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryAdapter.kt @@ -11,7 +11,7 @@ import android.view.ViewGroup import androidx.paging.PagedListAdapter import androidx.recyclerview.widget.DiffUtil import org.mozilla.fenix.R -import org.mozilla.fenix.library.SelectionHolder +import org.mozilla.fenix.selection.SelectionHolder import org.mozilla.fenix.library.history.viewholders.HistoryListItemViewHolder import java.util.Calendar import java.util.Date diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt index 3bfb5076a..5afbdc3d6 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt @@ -17,7 +17,7 @@ import mozilla.components.support.base.feature.UserInteractionHandler import org.mozilla.fenix.R import org.mozilla.fenix.ext.components import org.mozilla.fenix.library.LibraryPageView -import org.mozilla.fenix.library.SelectionInteractor +import org.mozilla.fenix.selection.SelectionInteractor import org.mozilla.fenix.theme.ThemeManager /** diff --git a/app/src/main/java/org/mozilla/fenix/library/history/viewholders/HistoryListItemViewHolder.kt b/app/src/main/java/org/mozilla/fenix/library/history/viewholders/HistoryListItemViewHolder.kt index 82a6e0eaa..2198713a9 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/viewholders/HistoryListItemViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/viewholders/HistoryListItemViewHolder.kt @@ -15,7 +15,7 @@ import org.mozilla.fenix.R import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.hideAndDisable import org.mozilla.fenix.ext.showAndEnable -import org.mozilla.fenix.library.SelectionHolder +import org.mozilla.fenix.selection.SelectionHolder import org.mozilla.fenix.library.history.HistoryFragmentState import org.mozilla.fenix.library.history.HistoryInteractor import org.mozilla.fenix.library.history.HistoryItem diff --git a/app/src/main/java/org/mozilla/fenix/selection/SelectionHolder.kt b/app/src/main/java/org/mozilla/fenix/selection/SelectionHolder.kt new file mode 100644 index 000000000..fe2b40d73 --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/selection/SelectionHolder.kt @@ -0,0 +1,12 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.fenix.selection + +/** + * Contains the selection of items added or removed using the [SelectionInteractor]. + */ +interface SelectionHolder { + val selectedItems: Set +} diff --git a/app/src/main/java/org/mozilla/fenix/selection/SelectionInteractor.kt b/app/src/main/java/org/mozilla/fenix/selection/SelectionInteractor.kt new file mode 100644 index 000000000..320bf1e04 --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/selection/SelectionInteractor.kt @@ -0,0 +1,29 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.fenix.selection + +/** + * Interactor for items that can be selected on the bookmarks and history screens. + */ +interface SelectionInteractor { + /** + * Called when an item is tapped to open it. + * @param item the tapped item to open. + */ + fun open(item: T) + + /** + * Called when an item is long pressed and selection mode is started, + * or when selection mode has already started an an item is tapped. + * @param item the item to select. + */ + fun select(item: T) + + /** + * Called when a selected item is tapped in selection mode and should no longer be selected. + * @param item the item to deselect. + */ + fun deselect(item: T) +}