Exemplo n.º 1
0
        public static ItemViewModel FromId(
            int itemId,
            ILoggingService logging,
            SQLiteConnection database,
            IOfflineTaskService offlineTaskService,
            INavigationService navigation,
            IPlatformSpecific platform)
        {
            logging.WriteLine($"Creating ItemViewModel from item id: {itemId}");

            var item = database.Find <Item>(itemId);

            if (item == null)
            {
                logging.WriteLine($"Failed! Item does not exist in database!", LoggingCategory.Critical);
            }

            if (item != null)
            {
                return(new ItemViewModel(item, offlineTaskService, navigation, logging, platform, database));
            }
            else
            {
                return(null);
            }
        }
        public ItemPageViewModel(
            IOfflineTaskService offlineTaskService,
            ILoggingService loggingService,
            IPlatformSpecific device,
            INavigationService navigationService,
            IWallabagClient client,
            SQLite.Net.SQLiteConnection database)
        {
            _offlineTaskService = offlineTaskService;
            _loggingService     = loggingService;
            _device             = device;
            _navigationService  = navigationService;
            _client             = client;
            _database           = database;

            _loggingService.WriteLine($"Initializing new instance of {nameof(ItemPageViewModel)}.");

            ChangeReadStatusCommand     = new RelayCommand(() => ChangeReadStatus());
            ChangeFavoriteStatusCommand = new RelayCommand(() => ChangeFavoriteStatus());
            EditTagsCommand             = new RelayCommand(() => _navigationService.Navigate(Navigation.Pages.EditTagsPage, Item.Model.Id));
            DeleteCommand = new RelayCommand(() =>
            {
                _loggingService.WriteLine("Deleting the current item.");
                Item.DeleteCommand.Execute();
                _navigationService.GoBack();
            });

            SaveRightClickLinkCommand          = new RelayCommand(() => _offlineTaskService.AddAsync(RightClickUri.ToString(), new List <string>()));
            OpenRightClickLinkInBrowserCommand = new RelayCommand(() => _device.LaunchUri(RightClickUri));
            CopyLinkToClipboardCommand         = new RelayCommand(() => _device.SetClipboardUri(RightClickUri));
        }
        public AddItemViewModel(IOfflineTaskService offlineTaskService, ILoggingService loggingService, SQLiteConnection database, INavigationService navigationService)
        {
            _offlineTaskService = offlineTaskService;
            _loggingService     = loggingService;
            _database           = database;
            _navigationService  = navigationService;

            TagViewModel = new EditTagsViewModel(offlineTaskService, loggingService, database, navigationService);
            NotifyTaskCompletion.Create(() => TagViewModel.ActivateAsync(null, null, NavigationMode.New));

            AddCommand    = new RelayCommand(() => AddingTask = NotifyTaskCompletion.Create(AddAsync));
            CancelCommand = new RelayCommand(() => Cancel());
        }
Exemplo n.º 4
0
        public EditTagsViewModel(IOfflineTaskService offlineTaskService, ILoggingService loggingService, SQLite.Net.SQLiteConnection database, INavigationService navigation)
        {
            _offlineTaskService = offlineTaskService;
            _loggingService     = loggingService;
            _database           = database;
            _navigationService  = navigation;

            _loggingService.WriteLine("Creating new instance of EditTagsViewModel.");

            FinishCommand = new RelayCommand(async() => await FinishAsync());
            CancelCommand = new RelayCommand(() => Cancel());

            TagQueryChangedCommand = new RelayCommand(() =>
            {
                _loggingService.WriteLine($"Tag query changed: {TagQuery}");
                UpdateSuggestions();
            });
            TagSubmittedCommand = new RelayCommand <Tag>(suggestion =>
            {
                _loggingService.WriteLine($"Tag was submitted.");

                if (suggestion != null && !Tags.Contains(suggestion))
                {
                    _loggingService.WriteLine("Tag wasn't in list yet. Added.");
                    Tags.Add(suggestion);

                    UpdateSuggestions();
                }
                else if (!string.IsNullOrEmpty(TagQuery))
                {
                    var tags = TagQuery.Split(',').ToList();
                    _loggingService.WriteLine($"Adding {tags.Count} tags to the list.");

                    foreach (string item in tags)
                    {
                        if (!string.IsNullOrWhiteSpace(item))
                        {
                            var existingTag = _database.FindWithQuery <Tag>("select * from Tag where Label=?", item);
                            Tag newTag      = null;

                            if (existingTag != null)
                            {
                                newTag = existingTag;
                            }
                            else
                            {
                                newTag = new Tag()
                                {
                                    Label = item, Id = Tags.Count + 1
                                }
                            };

                            if (Tags.Contains(newTag) == false)
                            {
                                Tags.Add(newTag);
                            }
                        }
                    }
                }

                TagQuery = string.Empty;
                RaisePropertyChanged(nameof(TagsCountIsZero));
            });
        }
Exemplo n.º 5
0
        public ItemViewModel(Item item,
                             IOfflineTaskService offlineTaskService,
                             INavigationService navigation,
                             ILoggingService logging,
                             IPlatformSpecific device,
                             SQLiteConnection database)
        {
            Model = item;
            _offlineTaskService = offlineTaskService;
            _navigationService  = navigation;
            _loggingService     = logging;
            _device             = device;
            _database           = database;

            (item as INotifyPropertyChanged).PropertyChanged += (s, e) =>
            {
                _loggingService.WriteLine($"Model with ID {item.Id} was updated.");
                RaisePropertyChanged(nameof(item));
            };

            MarkAsReadCommand = new RelayCommand(async() =>
            {
                _loggingService.WriteLine($"Marking item {item.Id} as read.");
                item.IsRead = true;
                UpdateItem();
                await _offlineTaskService.AddAsync(item.Id, OfflineTask.OfflineTaskAction.MarkAsRead);
            });
            UnmarkAsReadCommand = new RelayCommand(async() =>
            {
                _loggingService.WriteLine($"Marking item {item.Id} as unread.");
                item.IsRead = false;
                UpdateItem();
                await _offlineTaskService.AddAsync(item.Id, OfflineTask.OfflineTaskAction.UnmarkAsRead);
            });
            MarkAsStarredCommand = new RelayCommand(async() =>
            {
                _loggingService.WriteLine($"Marking item {item.Id} as favorite.");
                item.IsStarred = true;
                UpdateItem();
                await _offlineTaskService.AddAsync(item.Id, OfflineTask.OfflineTaskAction.MarkAsStarred);
            });
            UnmarkAsStarredCommand = new RelayCommand(async() =>
            {
                _loggingService.WriteLine($"Marking item {item.Id} as unfavorite.");
                item.IsStarred = false;
                UpdateItem();
                await _offlineTaskService.AddAsync(item.Id, OfflineTask.OfflineTaskAction.UnmarkAsStarred);
            });
            DeleteCommand = new RelayCommand(async() =>
            {
                _loggingService.WriteLine($"Deleting item {item.Id}.");
                _database.Delete(item);
                await _offlineTaskService.AddAsync(item.Id, OfflineTask.OfflineTaskAction.Delete);
            });
            ShareCommand = new RelayCommand(() =>
            {
                _loggingService.WriteLine($"Sharing item {item.Id}.");
                _device.ShareItem(item);
            });
            EditTagsCommand = new RelayCommand(() =>
            {
                _loggingService.WriteLine($"Editing tags of item {item.Id}.");
                _navigationService.Navigate(Pages.EditTagsPage, Model.Id);
            });
            OpenInBrowserCommand = new RelayCommand(() =>
            {
                _loggingService.WriteLine($"Opening item {item.Id} in browser.");
                _device.LaunchUri(new Uri(item.Url));
            });
        }
        public MultipleSelectionViewModel(
            ILoggingService logging,
            IOfflineTaskService offlineTaskService,
            INavigationService navigationService,
            SQLiteConnection database)
        {
            _loggingService     = logging;
            _offlineTaskService = offlineTaskService;
            _navigationService  = navigationService;
            _database           = database;

            _loggingService.WriteLine("Creating new instance of MultipleSelectionViewModel.");
            Items = new List <ItemViewModel>();

            MarkAsReadCommand = new RelayCommand(() => ExecuteMultipleSelectionAction(() =>
            {
                _loggingService.WriteLine($"Marking {Items.Count} items as read...");
                _database.RunInTransaction(() =>
                {
                    foreach (var item in Items)
                    {
                        item.MarkAsReadCommand.Execute();
                    }
                });
            }));
            UnmarkAsReadCommand = new RelayCommand(() => ExecuteMultipleSelectionAction(() =>
            {
                _loggingService.WriteLine($"Marking {Items.Count} items as unread...");
                _database.RunInTransaction(() =>
                {
                    foreach (var item in Items)
                    {
                        item.UnmarkAsReadCommand.Execute();
                    }
                });
            }));
            MarkAsFavoriteCommand = new RelayCommand(() => ExecuteMultipleSelectionAction(() =>
            {
                _loggingService.WriteLine($"Marking {Items.Count} items as favorite...");
                _database.RunInTransaction(() =>
                {
                    foreach (var item in Items)
                    {
                        item.MarkAsStarredCommand.Execute();
                    }
                });
            }));
            UnmarkAsFavoriteCommand = new RelayCommand(() => ExecuteMultipleSelectionAction(() =>
            {
                _loggingService.WriteLine($"Marking {Items.Count} items as unfavorited...");
                _database.RunInTransaction(() =>
                {
                    foreach (var item in Items)
                    {
                        item.UnmarkAsStarredCommand.Execute();
                    }
                });
            }));
            EditTagsCommand = new RelayCommand(() => ExecuteMultipleSelectionAction(() =>
            {
                _loggingService.WriteLine($"Editing tags of {Items.Count} items...");

                var itemList = new List <Models.Item>();
                foreach (var item in Items)
                {
                    itemList.Add(item.Model);
                }

                _navigationService.Navigate(Navigation.Pages.EditTagsPage, itemList);
            }));
            OpenInBrowserCommand = new RelayCommand(() => ExecuteMultipleSelectionAction(() =>
            {
                _loggingService.WriteLine($"Opening {Items.Count} items in the browser...");

                foreach (var item in Items)
                {
                    item.OpenInBrowserCommand.Execute();
                }
            }));
            DeleteCommand = new RelayCommand(() => ExecuteMultipleSelectionAction(() =>
            {
                _loggingService.WriteLine($"Deleting {Items.Count} items...");

                _database.RunInTransaction(() =>
                {
                    foreach (var item in Items)
                    {
                        item.DeleteCommand.Execute();
                    }
                });
            }));
        }