Exemple #1
0
        public async Task <bool> UpdateFiles()
        {
            QueryResults = null;
            HitItems.Clear();
            FileItems.Clear();
            if (Group != null)
            {
                var api     = IndexApiClient.Create(cts.Token);
                var results = await api.GetFiles(Group);

                if (results is FileInfo[] entries)
                {
                    foreach (var entry in entries.OrderBy(x => x.Path.ToUpperInvariant()))
                    {
                        FileItems.Add(new FileItem(entry.Fid, entry.Path, entry.Size, !Unchecked.Contains(entry.Fid)));
                    }
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(true);
            }
        }
        public virtual void OnMessage(MessageEventArgs e)
        {
            switch (e.Name)
            {
            case Messages.StartLiveView:
                _frames    = 0;
                _startTime = DateTime.Now;
                _liveViewTimer.Start();
                break;

            case Messages.StopLiveView:
                _liveViewTimer.Stop();
                break;

            case Messages.ShowMessage:
                MessageBox.Show(e.Param.ToString());
                break;

            case Messages.SaveVariables:
            case Messages.SessionFinished:
                SaveVariables(e.Context.WorkFlow);
                break;

            case Messages.ThumbCreate:
                UpdateThumbAsync();
                break;

            case Messages.NextPhoto:
                if (SelectedItem != null)
                {
                    var i = FileItems.IndexOf(SelectedItem);
                    i++;
                    if (i < FileItems.Count)
                    {
                        SelectedItem = FileItems[i];
                    }
                }
                UpdateThumbAsync();
                break;

            case Messages.PrevPhoto:
                if (SelectedItem != null)
                {
                    var i = FileItems.IndexOf(SelectedItem);
                    i--;
                    if (i > -1)
                    {
                        SelectedItem = FileItems[i];
                    }
                }
                UpdateThumbAsync();
                break;

            case Messages.DeletePhoto:
            {
                if (SelectedItem == null || FileItems.Count == 0)
                {
                    return;
                }
                var i = FileItems.IndexOf(SelectedItem);
                SelectedItem.Clear();
                FileItems.Remove(SelectedItem);

                if (i >= FileItems.Count)
                {
                    i--;
                }
                if (i >= 0 && FileItems.Count > 0)
                {
                    SelectedItem = FileItems[i];
                }
                UpdateThumbAsync();
            }
            break;

            case Messages.ClearPhotos:
            {
                foreach (var item in FileItems)
                {
                    item.Clear();
                }
                FileItems.Clear();
                SelectedItem = null;
                UpdateThumbAsync();
                break;
            }
            }
            Message?.Invoke(this, e);
        }