event for downloading collections

pull/53/head
Zlatin Balevsky 2020-11-01 15:58:21 +00:00
parent 65e96eacc2
commit 00c1f9590a
No known key found for this signature in database
GPG Key ID: A72832072D525E41
2 changed files with 47 additions and 1 deletions

View File

@ -0,0 +1,12 @@
package com.muwire.core.collections
import com.muwire.core.Event
import com.muwire.core.Persona
class UIDownloadCollectionEvent extends Event {
FileCollection collection
Set<FileCollectionItem> items
boolean full
Persona host
}

View File

@ -6,7 +6,9 @@ import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor import griffon.metadata.ArtifactProviderFor
import javax.annotation.Nonnull import javax.annotation.Nonnull
import com.muwire.core.collections.FileCollection
import com.muwire.core.collections.FileCollectionItem import com.muwire.core.collections.FileCollectionItem
import com.muwire.core.collections.UIDownloadCollectionEvent
@ArtifactProviderFor(GriffonController) @ArtifactProviderFor(GriffonController)
class CollectionTabController { class CollectionTabController {
@ -15,14 +17,46 @@ class CollectionTabController {
@MVCMember @Nonnull @MVCMember @Nonnull
CollectionTabView view CollectionTabView view
private FileCollection selectedCollection() {
int row = view.selectedCollection()
if (row < 0)
return null
return model.collections.get(row)
}
@ControllerAction @ControllerAction
void downloadCollection() { void downloadCollection() {
FileCollection collection = selectedCollection()
if (collection == null)
return
UIDownloadCollectionEvent e = new UIDownloadCollectionEvent(
collection : collection,
items : collection.getFiles(),
full : true,
host : model.host
)
model.eventBus.publish(e)
} }
@ControllerAction @ControllerAction
void download() { void download() {
FileCollection collection = selectedCollection()
if (collection == null)
return
List<FileCollectionItem> items = view.selectedItems()
if (items.isEmpty())
return
UIDownloadCollectionEvent e = new UIDownloadCollectionEvent(
collection : collection,
items : new HashSet<>(items),
full : false,
host : model.host
)
model.eventBus.publish(e)
} }
@ControllerAction @ControllerAction