public PackageMenuItem(UserPackageSelectionStore store, PackageKey key, IWindowsExecutable payload, string name, string version) { _store = store; Key = key; Name = name; Version = version; Payload = payload; _store.Observe() .SubscribeOn(PahkatApp.Current.Dispatcher) .Subscribe(state => { PahkatApp.Current.Dispatcher.InvokeAsync(async() => { var lastActionInfo = _actionInfo; if (state.SelectedPackages.TryGetValue(key, out var value)) { _actionInfo = value; } else { _actionInfo = null; } // Log.Verbose("Updating item state"); _status = await PahkatApp.Current.PackageStore.Status(Key); if (PropertyChanged != null) { PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Status")); PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsSelected")); } }); }).DisposedBy(_bag); }
private IDisposable BindPackageToggled(IMainPageView view, UserPackageSelectionStore store) { return(view.OnPackageToggled().Subscribe(item => { PahkatApp.Current.Dispatcher.InvokeAsync(async() => { Log.Verbose("Toggle package"); await store.TogglePackageWithDefaultAction(item.Key, !item.IsSelected); }); })); }
protected override void OnStartup(StartupEventArgs e) { UserSelection = new UserPackageSelectionStore(); var args = Environment.GetCommandLineArgs(); CreateNotifyIcon(); base.OnStartup(e); OnActivate(args); }
public PackageCategoryTreeItem(UserPackageSelectionStore store, string name, ObservableCollection <PackageMenuItem> items) { _store = store; Name = name; Items = items; _bag.Add(_store.SelectedPackages() .Map(pkgs => Items.All(x => pkgs.ContainsKey(x.Key))) .DistinctUntilChanged() .SubscribeOn(PahkatApp.Current.Dispatcher) .Subscribe(x => { _isGroupSelected = x; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IsGroupSelected")); })); }
private IDisposable BindGroupToggled(IMainPageView view, UserPackageSelectionStore store) { return(view.OnGroupToggled() .Subscribe(tree => { PahkatApp.Current.Dispatcher.InvokeAsync(async() => { Log.Verbose("Toggle group"); var list = new List <PackageKey>(); foreach (var task in tree.Items.Map(x => x.Key.DefaultPackageAction())) { var v = await task; list.Add(v.PackageKey); } await store.ToggleGroupWithDefaultAction(Iter.ToArray(list), !tree.IsGroupSelected); }); })); }
public MainPagePresenter(IMainPageView view, UserPackageSelectionStore store) { _view = view; _store = store; }
private IDisposable BindPrimaryButtonLabel(IMainPageView view, UserPackageSelectionStore store) { // Can't use distinct until changed here because HashSet is never reset return(store.SelectedPackages() .Subscribe(GeneratePrimaryButtonLabel)); }