Exemple #1
0
        /// <summary>
        /// This thread is responsible for figuring out what days screenshots were taken.
        /// </summary>
        /// <param name="e"></param>
        private void RunDateSearch(DoWorkEventArgs e)
        {
            if (monthCalendar.InvokeRequired)
            {
                monthCalendar.Invoke(new RunDateSearchDelegate(RunDateSearch), new object[] { e });
            }
            else
            {
                if (_screenshotCollection != null)
                {
                    List <string> dates = new List <string>();
                    dates = _screenshotCollection.GetDatesByFilter(comboBoxFilterType.Text, comboBoxFilterValue.Text);

                    if (dates != null)
                    {
                        DateTime[] boldedDates = new DateTime[dates.Count];

                        for (int i = 0; i < dates.Count; i++)
                        {
                            boldedDates.SetValue(ConvertDateStringToDateTime(dates[i].ToString()), i);
                        }

                        monthCalendar.BoldedDates = boldedDates;
                    }
                }
            }
        }
        /// <summary>
        /// The method executed by the thread that loads screenshots into the data grid view.
        /// </summary>
        private void RunScreenshotLoad()
        {
            if (dataGridViewScreenshots.InvokeRequired)
            {
                dataGridViewScreenshots.Invoke(new RunScreenshotLoadDelegate(RunScreenshotLoad));
            }
            else
            {
                foreach (string dateStr in _screenshotCollection.GetDatesByFilter(comboBoxFilterType.Text, comboBoxFilterValue.Text))
                {
                    if (DateTime.Parse(dateStr) >= dateTimePickerScreenshotsStartDateRange.Value &&
                        DateTime.Parse(dateStr) <= dateTimePickerScreenshotsEndDateRange.Value)
                    {
                        _screenshotCollection.LoadXmlFileAndAddScreenshots(dateStr, _screenshotsLoadLimit, out int nodeLoadCount, out int errorCode);

                        _totalNodeLoadCount += nodeLoadCount;

                        if (_totalNodeLoadCount >= _screenshotsLoadLimit)
                        {
                            return;
                        }

                        if (errorCode == 2)
                        {
                            return;
                        }
                    }
                }

                if (_screenshotCollection.Count == 0)
                {
                    return;
                }

                dataGridViewScreenshots.DataSource = _screenshotCollection.GetScreenshots(dateTimePickerScreenshotsStartDateRange.Value,
                                                                                          dateTimePickerScreenshotsEndDateRange.Value,
                                                                                          dateTimePickerScreenshotsStartTimeRange.Value,
                                                                                          dateTimePickerScreenshotsEndTimeRange.Value,
                                                                                          comboBoxFilterType.Text, comboBoxFilterValue.Text);

                for (int i = 0; i < dataGridViewScreenshots.Columns.Count; i++)
                {
                    dataGridViewScreenshots.Columns[i].Visible = false;
                }

                dataGridViewScreenshots.Columns["Date"].AutoSizeMode      = DataGridViewAutoSizeColumnMode.AllCells;
                dataGridViewScreenshots.Columns["Time"].AutoSizeMode      = DataGridViewAutoSizeColumnMode.AllCells;
                dataGridViewScreenshots.Columns["FilePath"].AutoSizeMode  = DataGridViewAutoSizeColumnMode.AllCells;
                dataGridViewScreenshots.Columns["Encrypted"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

                dataGridViewScreenshots.Columns["Key"].Visible         = true;
                dataGridViewScreenshots.Columns["Date"].Visible        = true;
                dataGridViewScreenshots.Columns["Time"].Visible        = true;
                dataGridViewScreenshots.Columns["FilePath"].Visible    = true;
                dataGridViewScreenshots.Columns["Label"].Visible       = true;
                dataGridViewScreenshots.Columns["Encrypted"].Visible   = true;
                dataGridViewScreenshots.Columns["WindowTitle"].Visible = true;
                dataGridViewScreenshots.Columns["ProcessName"].Visible = true;

                dataGridViewScreenshots.Columns["Date"].DisplayIndex        = 0;
                dataGridViewScreenshots.Columns["Time"].DisplayIndex        = 1;
                dataGridViewScreenshots.Columns["Encrypted"].DisplayIndex   = 2;
                dataGridViewScreenshots.Columns["Key"].DisplayIndex         = 3;
                dataGridViewScreenshots.Columns["FilePath"].DisplayIndex    = 4;
                dataGridViewScreenshots.Columns["ProcessName"].DisplayIndex = 5;
                dataGridViewScreenshots.Columns["WindowTitle"].DisplayIndex = 6;
                dataGridViewScreenshots.Columns["Label"].DisplayIndex       = 8; // This needs to be 8 so it appears after "Window Title". I tried 7 but it's doesn't work. I'm not sure why.

                dataGridViewScreenshots.Columns["ProcessName"].HeaderText = "Process Name";
                dataGridViewScreenshots.Columns["WindowTitle"].HeaderText = "Window Title";
            }
        }