public SearchVideoByMylistViewModel(SearchVideoByMylistModel model) : base(model)
        {
            Source = model;
            Source.AddOnPropertyChanged(this, OnPropertyChanged);

            this.Word              = Source.MylistId;
            this.MylistTitle       = Source.MylistTitle;
            this.MylistCreator     = Source.MylistCreator;
            this.MylistDescription = Source.MylistDescription;
            this.UserId            = Source.UserId;
            this.UserThumbnail     = Source.UserThumbnail;
            this.MylistDate        = Source.MylistDate;

            Items = Source.Videos.ToSyncedSynchronizationContextCollection(
                id => new VideoItemViewModel(id),
                AnonymousSynchronizationContext.Current
                );

            SortItems = ComboSortMylistModel
                        .Instance
                        .Items
                        .ToSyncedSynchronizationContextCollection(m => m, AnonymousSynchronizationContext.Current);
            SelectedSortItem = SettingModel.Instance.SearchVideoByMylistSort;

            OnSearch.Execute(null);
        }
        public SearchVideoByMylistViewModel(SearchVideoByMylistModel source)
        {
            Source = source;

            Sort = ComboVMylistSortModel.Instance;

            Videos = Source.Videos.ToSyncedSynchronizationContextCollection(
                video => new VideoViewModel(video),
                AnonymousSynchronizationContext.Current
                );
            if (!string.IsNullOrEmpty(Source.MylistId))
            {
                Word = Source.MylistId;
            }
            MylistTitle       = Source.MylistTitle;
            MylistCreator     = Source.MylistCreator;
            MylistDescription = Source.MylistDescription;
            UserId            = Source.UserId;
            UserThumbnail     = Source.UserThumbnail;
            MylistDate        = Source.MylistDate;

            // モデル側で変更があったら通知する
            Source.AddOnPropertyChanged(this, (sender, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(Source.MylistId):
                    Word = source.MylistId;
                    break;

                case nameof(MylistTitle):
                    MylistTitle = Source.MylistTitle;
                    break;

                case nameof(MylistCreator):
                    MylistCreator = Source.MylistCreator;
                    break;

                case nameof(MylistDescription):
                    MylistDescription = Source.MylistDescription;
                    break;

                case nameof(UserId):
                    UserId = Source.UserId;
                    break;

                case nameof(UserThumbnail):
                    UserThumbnail = Source.UserThumbnail;
                    break;

                case nameof(MylistDate):
                    MylistDate = Source.MylistDate;
                    break;
                }
            });
        }
Пример #3
0
        private void Initialize(SearchVideoByMylistModel model)
        {
            Source = model;
            Source.AddOnPropertyChanged(this, OnPropertyChanged);

            this.MylistId          = Source.MylistId;
            this.MylistTitle       = Source.MylistTitle;
            this.MylistCreator     = Source.MylistCreator;
            this.MylistDescription = Source.MylistDescription;
            this.UserId            = Source.UserId;
            this.UserThumbnailUrl  = Source.UserThumbnailUrl;
            this.MylistDate        = Source.MylistDate;
            this.UserThumbnail     = Source.UserThumbnail;
        }
Пример #4
0
        public MylistViewModel(SearchVideoByMylistModel source)
        {
            Source = source;
            // 初期値設定
            MylistTitle       = Source.MylistTitle;
            MylistCreator     = Source.MylistCreator;
            MylistDescription = Source.MylistDescription;
            UserId            = Source.UserId;
            UserThumbnail     = Source.UserThumbnail;
            MylistDate        = Source.MylistDate;

            // モデル側で変更があったら通知する
            Source.AddOnPropertyChanged(this, (sender, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(MylistTitle):
                    MylistTitle = Source.MylistTitle;
                    break;

                case nameof(MylistCreator):
                    MylistCreator = Source.MylistCreator;
                    break;

                case nameof(MylistDescription):
                    MylistDescription = Source.MylistDescription;
                    break;

                case nameof(UserId):
                    UserId = Source.UserId;
                    break;

                case nameof(UserThumbnail):
                    UserThumbnail = Source.UserThumbnail;
                    break;

                case nameof(MylistDate):
                    MylistDate = Source.MylistDate;
                    break;
                }
            });
        }
Пример #5
0
        /// <summary>
        /// 共通の追加処理
        /// </summary>
        /// <param name="url">追加するURL</param>
        private async Task AddMylist(string url)
        {
            var mylist = NicoUtil.ToContentId(url);

            if (SearchMylistModel.Instance.Favorites.Any(f => f.Mylist == mylist))
            {
                return;
            }

            var model = new SearchVideoByMylistModel();

            await model.Reload(url);

            if (!model.Videos.Any())
            {
                ServiceFactory.MessageService.Error("データ件数が0件");
            }
            else
            {
                await SearchMylistModel.Instance.AddFavorite(mylist);
            }
        }
Пример #6
0
 public MylistItemViewModel(SearchVideoByMylistModel model) : base(model)
 {
     Initialize(model);
 }