예제 #1
0
 public void OnNextDirect(ListElementViewModel listElement)
 {
     if (PresentationViewModelProp.IsActive)
     {
         if (PresentationViewModelProp.FrontElement != null && PresentationViewModelProp.BackElement != null)
         {
             if (PresentationViewModelProp.FrontElement.IsActive)
             {
                 PresentationViewModelProp.BackElement = ListBoxItems[ListBoxItems.IndexOf(listElement)];
                 ScrollOffsetNextElmt = PresentationViewModelProp.BackElement.ScrollOffset;
                 //Deckkraft Frontelement Runter Fahren
                 Delay.Start();
             }
             else
             {
                 PresentationViewModelProp.FrontElement = ListBoxItems[ListBoxItems.IndexOf(listElement)];
                 ScrollOffsetNextElmt = PresentationViewModelProp.FrontElement.ScrollOffset;
                 PresentationViewModelProp.FrontElement.IsVisible = true;
                 //Deckraft Frontelement hochfahren
                 Delay.Start();
             }
         }
     }
     else
     {
         OnStart(listElement);
     }
 }
예제 #2
0
        private void AntiblockCardSelected()
        {
            ListBoxItems.Show();
            ButtonUseCard.Show();
            ButtonDiscardCard.Show();

            PlayerSet myPlayer = Game.Players.Where(player => player.Name == Game.Player.Name).First();

            if (myPlayer.Blocks.HasValue)
            {
                if (Game.Player.SelectedCard.BlockType.Value.HasFlag(BlockType.Cart))
                {
                    if (myPlayer.Blocks.Value.HasFlag(BlockType.Cart))
                    {
                        ListBoxItems.Items.Add(BlockType.Cart);
                    }
                }
                if (Game.Player.SelectedCard.BlockType.Value.HasFlag(BlockType.Lantern))
                {
                    if (myPlayer.Blocks.Value.HasFlag(BlockType.Lantern))
                    {
                        ListBoxItems.Items.Add(BlockType.Lantern);
                    }
                }
                if (Game.Player.SelectedCard.BlockType.Value.HasFlag(BlockType.Pickaxe))
                {
                    if (myPlayer.Blocks.Value.HasFlag(BlockType.Pickaxe))
                    {
                        ListBoxItems.Items.Add(BlockType.Pickaxe);
                    }
                }
            }
        }
예제 #3
0
 public void OnNext()
 {
     ChangingElement = true;
     foreach (var element in ListBoxItems)
     {
         if (element.IsActive && ListBoxItems.Count != ListBoxItems.IndexOf(element) + 1)
         {
             if (element.Filename == PresentationViewModelProp.FrontElement.Filename)
             {
                 PresentationViewModelProp.BackElement = ListBoxItems[ListBoxItems.IndexOf(element) + 1];
                 if (PresentationViewModelProp.BackElement.Art == FileArt.Video)
                 {
                     PresentationProp.MediaElementBack.Position = TimeSpan.FromSeconds(0);
                 }
                 ScrollOffsetNextElmt = PresentationViewModelProp.BackElement.ScrollOffset;
                 //Deckkraft Frontelement Runter Fahren
                 Delay.Start();
             }
             else
             {
                 PresentationViewModelProp.FrontElement = ListBoxItems[ListBoxItems.IndexOf(element) + 1];
                 if (PresentationViewModelProp.FrontElement.Art == FileArt.Video)
                 {
                     PresentationProp.MediElementFront.Position = TimeSpan.FromSeconds(0);
                 }
                 ScrollOffsetNextElmt = PresentationViewModelProp.FrontElement.ScrollOffset;
                 PresentationViewModelProp.FrontElement.IsVisible = true;
                 //Deckraft Frontelement hochfahren
                 Delay.Start();
             }
         }
     }
 }
예제 #4
0
 public void RemoveItem()
 {
     if (ListBoxItems.Count > 0)
     {
         ListBoxItems.RemoveAt(ListBoxItems.Count - 1);
     }
 }
예제 #5
0
    protected void ListBoxItems_SelectedIndexChanged(object sender, EventArgs e)
    {
        ListBox lisender = (sender as ListBox);

        if (lisender.ID == "ListBoxItems")
        {
            lstboxSecindlist.ClearSelection();
        }
        else
        {
            ListBoxItems.ClearSelection();
        }

        if (ListBoxItems.SelectedValue == "nofilter")
        {
            txtFilterFrom.Text = "";
            txtFilterTo.Text   = "";
        }

        if (lstboxSecindlist.SelectedValue == "EqualToToday" || lstboxSecindlist.SelectedValue == "EqualToOrLessThanToday")
        {
            txtFilterFrom.Text = DateTime.Now.ToString("dd/MM/yyyy");
        }
        else if (lstboxSecindlist.SelectedValue == "EqualToTomorrow")
        {
            txtFilterFrom.Text = DateTime.Now.AddDays(1).ToString("dd/MM/yyyy");
        }


        string strjFunClose = String.Format("HideCustomFilterUserControl()");

        ScriptManager.RegisterStartupScript(this, this.GetType(), "close" + this.ID, strjFunClose, true);
        ApplySearch();
    }
        /// <summary>
        /// 获取需修改数据
        /// </summary>
        /// <param name="element"></param>
        /// <param name="buttonContent"></param>
        private void FetchEditData(ListBox element, string buttonContent)
        {
            try
            {
                if (ButtonContent.Equals("编辑"))
                {
                    ButtonContent = "完成";
                    ListBoxItems.Clear();

                    foreach (AlarmClockModel model in MainAlarmClockManager.Instance.AlarmClocks)
                    {
                        AddNewEditReminder(element, model);
                    }
                }
                else if (ButtonContent.Equals("完成"))
                {
                    ButtonContent = "编辑";
                    ListBoxItems.Clear();

                    foreach (AlarmClockModel model in MainAlarmClockManager.Instance.AlarmClocks)
                    {
                        AddNewReminder(element, model);
                    }
                }
            }
            catch (Exception e)
            {
                LogWriter.Instance.Error(e);
            }
        }
예제 #7
0
        public void AddNewListBoxItem(Texture2D texture, string text)
        {
            int index = ListBoxItems.Count();

            int       imageX      = base.Bounds.X + this.ItemPadding;
            int       imageY      = base.Bounds.Y + this.ItemPadding + (index * this.ItemHeight);
            int       imageWidth  = this.ItemHeight - this.ItemPadding;
            Rectangle imageBounds = new Rectangle(imageX, imageY, imageWidth, imageWidth);
            Image     image       = new Image(texture, imageBounds, Color.White);

            int       parentX      = imageX + this.ItemPadding;
            int       parentY      = imageY;
            int       labelWidth   = base.Bounds.Width - imageWidth - (this.ItemPadding * 3);
            int       labelHeight  = this.ItemHeight;
            Rectangle parentBounds = new Rectangle(parentX, parentY, labelWidth, labelHeight);
            Label     label        = new Label(parentBounds, Statics.Arial_8, text, Color.Black);

            int         itemX             = this.Bounds.X;
            int         itemY             = this.Bounds.Y + (this.ItemHeight * index);
            int         itemWidth         = this.Bounds.Width;
            int         itemHeight        = this.ItemHeight;
            Rectangle   listBoxItemBounds = new Rectangle(itemX, itemY, itemWidth, ItemHeight);
            ListBoxItem listBoxItem       = new ListBoxItem(image, label, listBoxItemBounds);

            listBoxItem.leftMouseButtonReleased += listBoxItem_clicked;

            this.ListBoxItems.Add(listBoxItem);
        }
예제 #8
0
        private void ListBoxItemsMouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Right)
            {
                return;
            }
            var loc = ListBoxItems.PointToScreen(new Point(e.X, e.Y));

            for (int i = 0; i < ListBoxItems.Items.Count; i++)
            {
                var rec = ListBoxItems.GetItemRectangle(i);
                if (rec.X <= e.X && (rec.X + rec.Width) >= e.X && rec.Y <= e.Y && (rec.Y + rec.Height) >= e.Y)
                {
                    ItemContextMenu.Items[0].Enabled = true;
                    ItemContextMenu.Items[2].Enabled = true;
                    ItemContextMenu.Items[3].Enabled = true;
                    ItemContextMenu.Items[4].Enabled = true;
                    ListBoxItems.ClearSelected();
                    ListBoxItems.SetSelected(i, true);
                    ItemContextMenu.Show(loc);
                    return;
                }
            }
            ItemContextMenu.Items[0].Enabled = false;
            ItemContextMenu.Items[3].Enabled = false;
            ItemContextMenu.Items[4].Enabled = false;
            ItemContextMenu.Show(loc);
        }
예제 #9
0
        /// <summary>
        /// Button click that initiates a search for diffrent locations.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            ListBoxItems.Clear();
            XmlManager.LocationSheetList locationSheetList = new XmlManager.LocationSheetList();

            //Make sure to not block UI
            await Task.Run(() =>
            {
                try
                {
                    locationSheetList = WebServiceAPIContext.ReceiveLocationList(_SearchLocation, _ConnectionString);
                }
                catch (Exception ex)
                {
                    ShowErrorMessageBox(ex.Message);
                }
                if (locationSheetList.Error && locationSheetList.ExMsg != String.Empty)
                {
                    ShowErrorMessageBox(locationSheetList.ExMsg);
                }
            });

            if (locationSheetList.LocationSheets != null)
            {
                foreach (var x in locationSheetList.LocationSheets)
                {
                    Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(x.Name));

                    ListBoxItems.Add(x);
                }
            }
        }
예제 #10
0
 public void AddItem()
 {
     ListBoxItems.Add(new PUListBoxItemModel()
     {
         Header = "Line" + (ListBoxItems.Count + 1),
         Value  = (ListBoxItems.Count + 1),
     });
 }
예제 #11
0
        private void InitCommand(Random random)
        {
            ListBoxItems.Clear();

            var          json       = File.ReadAllText(@"Resources\json\block.json");
            List <Block> blockLists = JsonConvert.DeserializeObject <List <Block> >(json);

            foreach (Block block in blockLists)
            {
                var contentItems = new ContentItems()
                {
                    MetorInfos = new ObservableCollection <MetorInfo>()
                };
                List <MetorInfo> data = block.data;
                foreach (MetorInfo metorInfo in data)
                {
                    //new TransitionEffect().LetterNCircle();
                    var metor = new MetorInfo
                    {
                        Name   = metorInfo.Name,
                        Color  = metorInfo.Color,
                        Width  = metorInfo.Width,
                        Height = metorInfo.Height,
                        View   = metorInfo.View,
                        Effect = new TransitionEffect()
                        {
                            Kind     = kinds[random.Next(0, kinds.Count)],
                            Duration = new TimeSpan(0, 0, 0, 0, 10)
                        }
                    };
                    contentItems.MetorInfos.Add(metor);
                }
                ListBoxItems.Add(contentItems);
            }

            //for (int i = 0; i < 2; i++)
            //{
            //    var contentItems = new ContentItems() { MetorInfos = new ObservableCollection<MetorInfo>() };
            //    for (int j = 0; j < 5; j++)
            //    {
            //        //var metorInfos = new ObservableCollection<MetorInfo>();
            //        var metor = new MetorInfo
            //        {
            //            Name = "应用" + j,
            //            Color = new SolidColorBrush((Color)ColorConverter.ConvertFromString(colors[random.Next(0, colors.Count)])),
            //            Width = random.Next(0, 8) < 4 ? 314 : 150,
            //            Height = 150,
            //            Effect = new TransitionEffect()
            //            {
            //                Kind = kinds[random.Next(0, kinds.Count)],
            //                Duration = new TimeSpan(0, 0, 0, 0, 900)
            //            }
            //        };
            //        contentItems.MetorInfos.Add(metor);
            //    }
            //    ListBoxItems.Add(contentItems);
            //}
        }
예제 #12
0
 private void PopulateList()
 {
     foreach (ITableRow row in _dataTbleResults)
     {
         ListBoxItems.Items.Add(RowToString(row));
     }
     ListBoxItems.SelectedIndex = 0;
     ListBoxItems.Focus();
 }
예제 #13
0
        public void LoadPlayListFromFile()
        {
            var serializer = new Serializer();
            var pathList   = serializer.DeserializeFromFile();

            foreach (var item in pathList)
            {
                var songItem = GetSongInfo(item);
                ListBoxItems.Add(songItem);
            }
        }
예제 #14
0
 private void HideControls()
 {
     PictureBoxPathPos1.Hide();
     PictureBoxPathPos2.Hide();
     ListBoxItems.Items.Clear();
     ListBoxItems.Hide();
     ButtonUseCard.Hide();
     ButtonDiscardCard.Hide();
     ButtonEndTurn.Hide();
     LabelGoalCard.Text = "";
 }
        /// <summary>
        /// Adds a new element to the combo
        /// </summary>
        /// <param name="item">item to add</param>
        /// <param name="index">position to adding</param>
        public int AddItem(object item, int index = -1)
        {
            var newItem = CreateItem(item);

            if (index == -1 || index == ListBoxItems.Count)
            {
                ListBoxItems.Add(newItem);
                return(ListBoxItems.Count - 1);
            }
            ListBoxItems.Insert(index, newItem);
            return(index);
        }
예제 #16
0
        private void BlockCardSelected()
        {
            ListBoxItems.Show();
            ButtonUseCard.Show();
            ButtonDiscardCard.Show();

            PlayerSet[] players = Game.Players.Where(player => player.Name != "Field" &&
                                                     player.Name != "Deck" &&
                                                     player.Name != "Graveyard" &&
                                                     player.Name != Game.Player.Name &&
                                                     !player.Blocks.Value.HasFlag(Game.Player.SelectedCard.BlockType)).ToArray();
            ListBoxItems.Items.AddRange(players);
        }
예제 #17
0
 private void RefreshListView()
 {
     ListBoxItems.BeginUpdate();
     ListBoxItems.Items.Clear();
     foreach (var item in Items)
     {
         ListBoxItems.Items.Add($"[{item.ItemId}] {item.Name}");
     }
     ListBoxItems.EndUpdate();
     RefreshSelectedIndex();
     RefreshButtons();
     RenderEditItem();
 }
예제 #18
0
        public MainForm(DataManager manager)
        {
            this.manager = manager;

            InitializeComponent();
            ResetLanguage();

            ReloadList();

            if (ListBoxItems.Items.Count > 0)
            {
                ListBoxItems.SetSelected(0, true);
            }
        }
 /// <summary>
 /// 获取初始数据
 /// </summary>
 /// <param name="element"></param>
 private void FetchData(ListBox element)
 {
     try
     {
         ListBoxItems.Clear();
         foreach (var item in MainAlarmClockManager.Instance.AlarmClocks)
         {
             AddNewReminder(element, item);
         }
     }
     catch (Exception e)
     {
         LogWriter.Instance.Error(e);
     }
 }
 /// <summary>
 /// 返回闹钟主页面回调
 /// </summary>
 /// <param name="target"></param>
 private void BackToMainView(string target)
 {
     try
     {
         ListBoxItems.Clear();
         foreach (AlarmClockModel model in MainAlarmClockManager.Instance.AlarmClocks)
         {
             AddNewReminder(_mainListBox, model);
         }
         ButtonContent     = "编辑";
         _mainBorder.Child = _lastUIElement;
     }
     catch (Exception e)
     {
         LogWriter.Instance.Error(e);
     }
 }
 /// <summary>
 /// 删除闹钟回调
 /// </summary>
 /// <param name="target"></param>
 private void DeleteFormListBox(ListBoxItem target)
 {
     try
     {
         ListBoxItems.Remove(target);
         if (target.Content is AlarmClockView)
         {
             ((target.Content as AlarmClockView).DataContext as AlarmClockViewModel).DeleteData();
         }
         else if (target.Content is AlarmClockEditView)
         {
             ((target.Content as AlarmClockEditView).DataContext as AlarmClockViewModel).DeleteData();
         }
     }
     catch (Exception e)
     {
         LogWriter.Instance.Error(e);
     }
 }
예제 #22
0
        public void SetSelectByName(string name)
        {
            var i = ListBoxItems.FindStringExact(name);

            if (i < 0)
            {
                if (ListBoxItems.SelectedIndex < 0 && ListBoxItems.Items.Count > 0)
                {
                    ListBoxItems.SetSelected(0, true);
                }
            }
            else
            {
                if (!(ListBoxItems.SelectedIndex < 0))
                {
                    ListBoxItems.SetSelected(ListBoxItems.SelectedIndex, false);
                }
                ListBoxItems.SetSelected(i, true);
            }
        }
예제 #23
0
 /// <summary>
 /// 返回提醒主页面回调
 /// </summary>
 /// <param name="target"></param>
 private void BackToMainView(string target)
 {
     try
     {
         ListBoxItems.Clear();
         if (_isReminderRemote || TitleContent.Equals("远程提醒"))
         {
             foreach (ReminderModel model in ReminderManager.Instance.Reminders.ToArray())
             {
                 if (!string.IsNullOrEmpty(model.Contact))
                 {
                     AddNewReminder(_mainListBox, model);
                 }
             }
         }
         else
         {
             foreach (ReminderModel model in ReminderManager.Instance.Reminders.ToArray())
             {
                 if (string.IsNullOrEmpty(model.Contact))
                 {
                     AddNewReminder(_mainListBox, model);
                 }
             }
         }
         //ButtonContent = "编辑";
         //if (target.Equals("Cancel"))
         //{
         //    _mainBorder.Child = _lastUIElement;
         //}
         if (!string.IsNullOrEmpty(target))
         {
             _mainBorder.Child = _lastUIElement;
         }
     }
     catch (Exception e)
     {
         LogWriter.Instance.Error(e);
     }
 }
예제 #24
0
        /// <summary>
        /// 获取初始数据
        /// </summary>
        /// <param name="element"></param>
        private void AddRing(string ring)
        {
            try
            {
                ListBoxItem item = new ListBoxItem();
                //加载资源字典
                string             packUri = @"/LifeService;component/WindowDictionary.xaml";
                ResourceDictionary myResourceDictionary = Application.LoadComponent(new Uri(packUri, UriKind.Relative)) as ResourceDictionary;
                item.SetValue(ListBoxItem.StyleProperty, myResourceDictionary["OnlyBackgroundListBoxItemStyle"]);

                AlarmClockRingItemView      clockView      = new AlarmClockRingItemView();
                AlarmClockRingItemViewModel clockViewModel = new AlarmClockRingItemViewModel(ring);
                clockViewModel.BackToMainView = ArrivedAtMainView;
                clockView.DataContext         = clockViewModel;
                item.Content = clockView;
                ListBoxItems.Add(item);
            }
            catch (Exception e)
            {
                LogWriter.Instance.Error(e);
            }
        }
        /// <summary>
        /// 添加闹钟
        /// </summary>
        /// <param name="element"></param>
        /// <param name="model"></param>
        private void AddNewReminder(ListBox element, AlarmClockModel model)
        {
            try
            {
                ListBoxItem item = new ListBoxItem();
                //加载资源字典
                string             packUri = @"/LifeService;component/WindowDictionary.xaml";
                ResourceDictionary myResourceDictionary = Application.LoadComponent(new Uri(packUri, UriKind.Relative)) as ResourceDictionary;
                item.SetValue(ListBoxItem.StyleProperty, myResourceDictionary["NoBackgroundListBoxItemStyle"]);

                AlarmClockView      clockView      = new AlarmClockView(element);
                AlarmClockViewModel clockViewModel = new AlarmClockViewModel();
                clockViewModel.DeleteFromListBox = DeleteFormListBox;
                clockViewModel.FetchData(model);
                clockView.DataContext = clockViewModel;
                item.Content          = clockView;
                ListBoxItems.Add(item);
            }
            catch (Exception e)
            {
                LogWriter.Instance.Error(e);
            }
        }
예제 #26
0
        private void DelayLoadBackground_Tick(object sender, EventArgs e)
        {
            DelayLoadBackground.Stop();
            ListElementViewModel nextElm = null;


            if (PresentationViewModelProp.FrontElement.IsActive)
            {
                if (ListBoxItems[ListBoxItems.Count - 1].Filename != PresentationViewModelProp.FrontElement.Filename)
                {
                    foreach (var item in ListBoxItems)
                    {
                        if (item.IsActive)
                        {
                            nextElm = ListBoxItems[ListBoxItems.IndexOf(item) + 1];
                        }
                    }
                    PresentationViewModelProp.BackElement = nextElm;
                }
            }
            else
            {
                if (ListBoxItems[ListBoxItems.Count - 1].Filename != PresentationViewModelProp.BackElement.Filename)
                {
                    foreach (var item in ListBoxItems)
                    {
                        if (item.IsActive)
                        {
                            nextElm           = ListBoxItems[ListBoxItems.IndexOf(item) + 1];
                            nextElm.IsVisible = false;
                        }
                    }
                    PresentationViewModelProp.FrontElement = nextElm;
                }
            }
        }
예제 #27
0
 public ResultPanel()
 {
     InitializeComponent();
     _results = new ListBoxItems();
     lbResults.ItemsSource = _results;
 }
예제 #28
0
 /// <summary>
 /// Method to invoke when the DeleteListBoxItem command is executed.
 /// </summary>
 private void DeleteListBoxItem()
 {
     ListBoxItems.Remove(SelectedItem);
 }
예제 #29
0
 private void OnAddItemCommandExecute()
 {
     ListBoxItems.Insert(0, CreateUser());
 }
예제 #30
0
        private void InitializeComponent()
        {
            AvaloniaXamlLoader.Load(this);

            #region Designer

            PEM20_Button       = this.FindControl <Button>("PEM20_Button");
            PEM21_Button       = this.FindControl <Button>("PEM21_Button");
            PEM22_Button       = this.FindControl <Button>("PEM22_Button");
            PEM20_Path         = this.FindControl <TextBlock>("PEM20_Path");
            PEM21_Path         = this.FindControl <TextBlock>("PEM21_Path");
            PEM22_Path         = this.FindControl <TextBlock>("PEM22_Path");
            PEM20_ListBox      = this.FindControl <ListBox>("PEM20_ListBox");
            PEM21_ListBox      = this.FindControl <ListBox>("PEM21_ListBox");
            PEM22_ListBox      = this.FindControl <ListBox>("PEM22_ListBox");
            TimestampPicker    = this.FindControl <DatePicker>("TimestampPicker");
            UploadNotification = this.FindControl <TextBlock>("UploadNotification");
            UploadDatabases    = this.FindControl <Button>("UploadDatabases");
            LoadAll            = this.FindControl <Button>("LoadAll");
            Analyse            = this.FindControl <Button>("Analyse");

            #endregion Designer

            PEM20_Button.Click += async(sender, e) =>
            {
                OpenFileDialog openFileDialog = new OpenFileDialog
                {
                    Title = "Open PEM 20 database"
                };
                string[] files = await openFileDialog.ShowAsync(this);

                if (files.Any())
                {
                    PEM20_Path.Text = string.Join("; ", files).Replace("%20", " ");
                }
            };
            PEM21_Button.Click += async(sender, e) =>
            {
                OpenFileDialog openFileDialog = new OpenFileDialog
                {
                    Title = "Open PEM 21 database"
                };
                string[] files = await openFileDialog.ShowAsync(this);

                if (files.Any())
                {
                    PEM21_Path.Text = string.Join("; ", files).Replace("%20", " ");
                }
            };
            PEM22_Button.Click += async(sender, e) =>
            {
                OpenFileDialog openFileDialog = new OpenFileDialog
                {
                    Title = "Open PEM 22 database"
                };
                string[] files = await openFileDialog.ShowAsync(this);

                if (files.Any())
                {
                    PEM22_Path.Text = string.Join("; ", files).Replace("%20", " ");
                }
            };
            UploadDatabases.Click += async(sender, e) =>
            {
                Task t = new Task(async() =>
                {
                    string pickerTime     = (TimestampPicker.SelectedDate ?? DateTime.Now).ToString("yyyyMMddhhmm");
                    TextWriter textWriter = new StreamWriter(File.OpenWrite("ssh.log"));
                    using (SshClient ssh = new SshClient(ConfigurationManager.AppSettings["Host"], ConfigurationManager.AppSettings["Username"], ConfigurationManager.AppSettings["Password"]))
                    {
                        ssh.Connect();

                        void RunCommand(string command)
                        {
                            textWriter.WriteLine(command);
                            SshCommand cmd = ssh.RunCommand(command);
                            if (string.IsNullOrWhiteSpace(cmd.Error))
                            {
                                textWriter.WriteLine(cmd.Result);
                            }
                            else
                            {
                                textWriter.WriteLine(cmd.Error);
                            }
                        }

                        RunCommand($"mkdir { pickerTime }");
                        RunCommand($"mkdir -p { pickerTime }/PEM\\ 20");
                        RunCommand($"mkdir -p { pickerTime }/PEM\\ 21");
                        RunCommand($"mkdir -p { pickerTime }/PEM\\ 22");
                        ssh.Disconnect();
                    }

                    await textWriter.FlushAsync();

                    using (SftpClient sftp = new SftpClient(ConfigurationManager.AppSettings["Host"], ConfigurationManager.AppSettings["Username"], ConfigurationManager.AppSettings["Password"]))
                    {
                        sftp.Connect();

                        void UploadFileAsync(TextBlock databasePath, string remotePath)
                        {
                            foreach (FileInfo file in databasePath.Text.Split(separator: ";".ToCharArray(), options: StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).Where(x => File.Exists(x)).Select(x => new FileInfo(x)))
                            {
                                string remoteFile = $"{ pickerTime }/{ remotePath }/{ file.Name }";
                                textWriter.WriteLine($"sftp { file.FullName } {remoteFile}");
                                try
                                {
                                    sftp.UploadFile(file.OpenRead(), remoteFile);
                                }
                                catch (Exception ex)
                                {
                                    textWriter.WriteLine(ex.Message);
                                }
                            }
                        }
                        UploadFileAsync(PEM20_Path, "PEM 20");
                        UploadFileAsync(PEM21_Path, "PEM 21");
                        UploadFileAsync(PEM22_Path, "PEM 22");
                        sftp.Disconnect();
                    }

                    await textWriter.FlushAsync();
                    textWriter.Close();
                });
                t.Start();
                await t;

                UploadNotification.Text = "Uploaded";
            };
            LoadAll.Click += async(sender, e) =>
            {
                OpenFolderDialog openFolderDialog = new OpenFolderDialog
                {
                    Title = "Open databases folder"
                };
                string directory = await openFolderDialog.ShowAsync(this);

                if (Directory.Exists(directory))
                {
                    var files = Directory.EnumerateDirectories(directory).Select(x => new { PEM_No = Regex.Match(x, "PEM\\s\\d{2}").Value, Files = Directory.EnumerateFiles(x).Where(y => !y.Contains("_database") && !y.Contains("database-shm") && !y.Contains("database-wal")) });
                    foreach (var folder in files)
                    {
                        if (folder.Files.Any())
                        {
                            switch (folder.PEM_No)
                            {
                            case "PEM 20":
                                PEM20_Path.Text = string.Join("; ", folder.Files);
                                break;

                            case "PEM 21":
                                PEM21_Path.Text = string.Join("; ", folder.Files);
                                break;

                            case "PEM 22":
                                PEM22_Path.Text = string.Join("; ", folder.Files);
                                break;
                            }
                        }
                    }
                }
            };
            Analyse.Click += (sender, e) =>
            {
                LoadDatabase(PEM20_Path, PEM20_ListBox);
                LoadDatabase(PEM21_Path, PEM21_ListBox);
                LoadDatabase(PEM22_Path, PEM22_ListBox);

                void LoadDatabase(TextBlock path, ListBox list)
                {
                    IEnumerable <string> databases = path.Text.Split(separator: ";".ToCharArray(), options: StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).Where(x => File.Exists(x));

                    foreach (string pathT in databases)
                    {
                        SQLiteConnection connection = new SQLiteConnection($"Data Source={ pathT }");
                        connection.Open();

                        GetData(connection, list.Items as IList);
                    }
                }

                void GetData(SQLiteConnection connection, IList ListBoxItems)
                {
                    try
                    {
                        SQLiteCommand command = connection.CreateCommand();
                        command.CommandText = "SELECT id, key as \"Activity ID\", userId as \"User\", time(totalTime/1000, \"unixepoch\") AS \"Time\" FROM activity WHERE totalTime IS NOT NULL ORDER BY userId, id";
                        Activity[] data = command.ExecuteReader().OfType <IDataRecord>().Select(x => new Activity {
                            ID = int.Parse(x["id"].ToString()), ActivityID = x["Activity ID"].ToString(), User = x["User"].ToString(), Time = x["Time"].ToString()
                        }).ToArray();
                        IEnumerable <CombinedActivity> combined = data.FullJoin(second: Activities,
                                                                                firstKeySelector: x => x.ActivityID,
                                                                                secondKeySelector: x => x.Key,
                                                                                firstSelector: x => new CombinedActivity {
                            ID = x.ID, ActivityID = x.ActivityID, Time = TimeSpan.Parse(x.Time), User = x.User, ProperTime = TimeSpan.FromSeconds(0)
                        },
                                                                                secondSelector: x => new CombinedActivity {
                            ID = -1, ActivityID = x.Key, Time = TimeSpan.FromSeconds(0), User = "******", ProperTime = x.Value
                        },
                                                                                bothSelector: (x, y) => new CombinedActivity {
                            ID = x.ID, ActivityID = x.ActivityID, Time = TimeSpan.Parse(x.Time), User = x.User, ProperTime = y.Value
                        });

                        #region Label

                        {
                            ListBoxItem lbi = new ListBoxItem();

                            ListBoxItems.Add(lbi);

                            Grid grid = new Grid();

                            lbi.Content = grid;

                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(30, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(60, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(40, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(80, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(1, GridUnitType.Auto));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));

                            grid.RowDefinitions.Add(new RowDefinition(12, GridUnitType.Pixel));
                            grid.RowDefinitions.Add(new RowDefinition(1, GridUnitType.Auto));
                            grid.RowDefinitions.Add(new RowDefinition(12, GridUnitType.Pixel));

                            TextBlock id = new TextBlock
                            {
                                Text = "ID"
                            };
                            Grid.SetColumn(id, 1);
                            Grid.SetRow(id, 1);

                            grid.Children.Add(id);

                            TextBlock aid = new TextBlock
                            {
                                Text = "Activity ID"
                            };
                            Grid.SetColumn(aid, 3);
                            Grid.SetRow(aid, 1);

                            grid.Children.Add(aid);

                            TextBlock usr = new TextBlock
                            {
                                Text = "User"
                            };
                            Grid.SetColumn(usr, 5);
                            Grid.SetRow(usr, 1);

                            grid.Children.Add(usr);

                            TextBlock time = new TextBlock
                            {
                                Text = "Time"
                            };
                            Grid.SetColumn(time, 7);
                            Grid.SetRow(time, 1);

                            grid.Children.Add(time);

                            TextBlock proper = new TextBlock
                            {
                                Text = "ProperTime"
                            };
                            Grid.SetColumn(proper, 9);
                            Grid.SetRow(proper, 1);

                            grid.Children.Add(proper);

                            lbi.IsEnabled = false;
                        }

                        #endregion Label

                        foreach (CombinedActivity record in combined)
                        {
                            ListBoxItem lbi = new ListBoxItem();

                            ListBoxItems.Add(lbi);

                            Grid grid = new Grid();

                            lbi.Content = grid;

                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(30, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(60, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(40, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(80, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(1, GridUnitType.Auto));
                            grid.ColumnDefinitions.Add(new ColumnDefinition(12, GridUnitType.Pixel));

                            grid.RowDefinitions.Add(new RowDefinition(12, GridUnitType.Pixel));
                            grid.RowDefinitions.Add(new RowDefinition(1, GridUnitType.Auto));
                            grid.RowDefinitions.Add(new RowDefinition(12, GridUnitType.Pixel));

                            TextBlock id = new TextBlock
                            {
                                Text = record.ID.ToString()
                            };
                            Grid.SetColumn(id, 1);
                            Grid.SetRow(id, 1);

                            grid.Children.Add(id);

                            TextBlock aid = new TextBlock
                            {
                                Text = record.ActivityID
                            };
                            Grid.SetColumn(aid, 3);
                            Grid.SetRow(aid, 1);

                            grid.Children.Add(aid);

                            TextBlock usr = new TextBlock
                            {
                                Text = record.User
                            };
                            Grid.SetColumn(usr, 5);
                            Grid.SetRow(usr, 1);

                            grid.Children.Add(usr);

                            TextBlock time = new TextBlock
                            {
                                Text = record.Time.ToString()
                            };
                            Grid.SetColumn(time, 7);
                            Grid.SetRow(time, 1);

                            grid.Children.Add(time);

                            TextBlock proper = new TextBlock
                            {
                                Text = record.ProperTime.ToString()
                            };
                            Grid.SetColumn(proper, 9);
                            Grid.SetRow(proper, 1);

                            grid.Children.Add(proper);

                            lbi.Tapped += (tapped, ev) =>
                            {
                                JoinCheck joinCheck = new JoinCheck(connection, record);
                                joinCheck.Show();
                            };
                        }
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            };

            TimestampPicker.SelectedDate = DateTime.Now;
        }