public CombinedListingPresenter(ICombinedListingView view, ICollectionListingModel collectionListingModel, IBeatmapListingModel beatmapListingModel, IWebCollectionProvider webCollectionProvider)
        {
            _view            = view;
            _beatmapsView    = _view.beatmapListingView;
            _collectionsView = _view.CollectionListingView;

            BeatmapListingModel    = beatmapListingModel;
            _webCollectionProvider = webCollectionProvider;
            new BeatmapListingPresenter(_beatmapsView, BeatmapListingModel);
            new CollectionListingPresenter(_collectionsView, collectionListingModel);

            _collectionsView.SelectedCollectionChanged  += CollectionsViewOnSelectedCollectionChanged;
            _collectionsView.SelectedCollectionsChanged += CollectionsViewOnSelectedCollectionsChanged;
        }
        public CombinedListingPresenter(ICombinedListingView view, ICollectionListingModel collectionListingModel, IBeatmapListingModel beatmapListingModel, IWebCollectionProvider webCollectionProvider, IUserDialogs userDialogs)
        {
            _view            = view;
            _beatmapsView    = _view.beatmapListingView;
            _collectionsView = _view.CollectionListingView;

            _collectionListingModel = collectionListingModel;
            BeatmapListingModel     = beatmapListingModel;

            _webCollectionProvider = webCollectionProvider;
            _userDialogs           = userDialogs;
            new BeatmapListingPresenter(_beatmapsView, BeatmapListingModel);
            new CollectionListingPresenter(_collectionsView, collectionListingModel, userDialogs);

            BeatmapListingModel.SelectedBeatmapsChanged += BeatmapListingModelOnSelectedBeatmapsChanged;
            _collectionsView.SelectedCollectionChanged  += CollectionsViewOnSelectedCollectionChanged;
            _collectionsView.SelectedCollectionsChanged += CollectionsViewOnSelectedCollectionsChanged;
        }
        /// <summary>
        /// Fetches this collection data from internet
        /// </summary>
        /// <param name="provider"></param>
        /// <returns></returns>
        public async Task Load(IWebCollectionProvider provider)
        {
            if (Loading || Loaded || !provider.CanFetch())
            {
                return;
            }

            Loading = true;

            var collection = await provider.GetCollection(OnlineId);

            foreach (var b in collection.AllBeatmaps())
            {
                AddBeatmap(b);
            }

            Loaded  = true;
            Loading = false;
        }
        public MainFormPresenter(IMainFormView view, IMainFormModel mainFormModel, IInfoTextModel infoTextModel, IWebCollectionProvider webCollectionProvider)
        {
            _view          = view;
            _mainFormModel = mainFormModel;

            //Combined listing (Collections+Beatmaps)
            BeatmapListingModel = new BeatmapListingModel(null);
            BeatmapListingModel.BeatmapsDropped        += BeatmapListing_BeatmapsDropped;
            BeatmapListingModel.SelectedBeatmapChanged += BeatmapListingViewOnSelectedBeatmapChanged;
            CollectionListingModel = new CollectionListingModel(Initalizer.LoadedCollections, _mainFormModel.GetCollectionEditor());
            CollectionListingModel.CollectionEditing          += CollectionListing_CollectionEditing;
            CollectionListingModel.SelectedCollectionsChanged += CollectionListing_SelectedCollectionsChanged;
            new CombinedListingPresenter(_view.CombinedListingView, CollectionListingModel, BeatmapListingModel, webCollectionProvider, mainFormModel.GetUserDialogs());

            //Beatmap preview stuff (images, beatmap info like ar,cs,stars...)
            _combinedBeatmapPreviewModel = new CombinedBeatmapPreviewModel();
            var presenter = new CombinedBeatmapPreviewPresenter(_view.CombinedBeatmapPreviewView, _combinedBeatmapPreviewModel);

            presenter.MusicControlModel.NextMapRequest += (s, a) => { _view.CombinedListingView.beatmapListingView.SelectNextOrFirst(); };

            _collectionTextModel = new CollectionTextModel();
            new CollectionTextPresenter(_view.CollectionTextView, _collectionTextModel);

            //General information (Collections loaded, update check etc.)
            InfoTextModel = infoTextModel;
            new InfoTextPresenter(_view.InfoTextView, InfoTextModel);
        }
 public async Task <IEnumerable <WebCollection> > Save(IWebCollectionProvider provider)
 {
     return(await provider.SaveCollection(this));
 }