Beispiel #1
0
        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);
         });
     }));
 }
Beispiel #3
0
        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));
 }