private void ActionMarkRows()
        {
            DataGridView dataGridView = DataGridViewLocationHistory;

            dataGridView.ClearSelection();

            HashSet <FileEntry> files = DataGridViewHandler.GetSelectFileEntries(ActiveDataGridView, ActiveDataGridViewSelectedFilesMode);

            for (int columnIndex = 0; columnIndex < DataGridViewHandler.GetColumnCount(DataGridViewDateTime); columnIndex++)
            {
                DataGridViewGenericColumn dataGridViewGenericColumn = DataGridViewHandler.GetColumnDataGridViewGenericColumn(DataGridViewDateTime, columnIndex);
                if (dataGridViewGenericColumn != null)
                {
                    if (files.Contains(dataGridViewGenericColumn.FileEntryAttribute.FileEntry))
                    {
                        DateTime?dataTimeTaken       = DataGridViewHandlerDate.GetUserInputDateTaken(DataGridViewDateTime, columnIndex, null);
                        DateTime?dataTimeLocationUtc = DataGridViewHandlerDate.GetUserInputLocationDate(DataGridViewDateTime, columnIndex, null);
                        DateTime?dateTimeSuggestionFromGPSDateTime = DataGridViewHandlerDate.GetSuggestionFromGPSDate(DataGridViewDateTime, columnIndex, null);
                        FindAndSelect(dataTimeTaken, dataTimeLocationUtc, dateTimeSuggestionFromGPSDateTime);
                    }
                }
            }


            if (dataGridView.SelectedRows.Count > 0)
            {
                selectedRowsSorted.Clear();
                foreach (DataGridViewRow dataGridViewRow in dataGridView.SelectedRows)
                {
                    selectedRowsSorted.Add(dataGridViewRow.Index);
                }
                selectedRowsSorted.Sort();

                SetRowVisbible(visibleRowIndex);
                SetButtonStatus(enabledPreviousNext: selectedRowsSorted.Count > 0);
            }
            else
            {
                selectedRowsSorted.Clear();
                SetButtonStatus(enabledPreviousNext: selectedRowsSorted.Count > 0);
            }
            Properties.Settings.Default.LocationAnalyticsZoomLevel = (byte)comboBoxMapZoomLevel.SelectedIndex;
            GetLocationAndShow(MapProvider.OpenStreetMap);
            selectionChanged = false;
        }
示例#2
0
        public static void PopulateGoogleHistoryCoordinateAndNearby(DataGridView dataGridViewMap, DataGridView dataGridViewDate, int columnIndexMap, int timeZoneShift, int accepedIntervalSecound)
        {
            #region Check if Aggegated
            DataGridViewGenericColumn dataGridViewGenericColumn = DataGridViewHandler.GetColumnDataGridViewGenericColumn(dataGridViewMap, columnIndexMap);
            if (dataGridViewGenericColumn == null)
            {
                return;
            }
            #endregion

            #region Get Metadata
            Metadata metadata = dataGridViewGenericColumn.Metadata;
            if (metadata == null)
            {
                DataGridViewHandler.SetCellValue(dataGridViewMap, columnIndexMap, headerGoogleLocations, tagGoogleCoordinateUTC, "No metadata loaded");
                return;
            }
            #endregion

            DateTime?dateTaken    = DataGridViewHandlerDate.GetUserInputDateTaken(dataGridViewDate, null, dataGridViewGenericColumn.FileEntryAttribute);
            DateTime?locationDate = DataGridViewHandlerDate.GetUserInputLocationDate(dataGridViewDate, null, dataGridViewGenericColumn.FileEntryAttribute);
            if (dateTaken == null)
            {
                dateTaken = metadata.MediaDateTaken;
            }
            if (locationDate == null)
            {
                locationDate = metadata.LocationDateTime;
            }

            PopulateGoogleHistoryCoordinate(
                dataGridViewMap, columnIndexMap, timeZoneShift, accepedIntervalSecound, dateTaken, locationDate, metadata);

            PopulateNearbyCoordinate(
                dataGridViewMap, columnIndexMap, timeZoneShift, accepedIntervalSecound, (DateTime)metadata.FileDate, dateTaken, locationDate);
        }
        private void ShowFormLocationHistoryAnalytics(DataGridView dataGridViewLocationHistory, DataGridView dataGridViewDate, DataGridView dataGridViewActive)
        {
            using (new WaitCursor())
            {
                SetButtonStatus(false);

                List <DateTime> datesFound   = new List <DateTime>();
                DateTime?       dateTimeFrom = null;
                DateTime?       dateTimeTo   = null;

                if (DataGridViewHandler.GetIsAgregated(dataGridViewActive))
                {
                    //ShowFormLocationHistoryAnalyticsInit();
                    PopulateMetadataLocationsClear(dataGridViewLocationHistory);

                    foreach (int columnIndex in DataGridViewHandler.GetColumnSelected(dataGridViewActive))
                    {
                        DataGridViewGenericColumn dataGridViewGenericColumn = DataGridViewHandler.GetColumnDataGridViewGenericColumn(dataGridViewActive, columnIndex);

                        if (dataGridViewGenericColumn != null)
                        {
                            DateTime?date = DataGridViewHandlerDate.GetUserInputDateTaken(dataGridViewDate, null, dataGridViewGenericColumn.FileEntryAttribute);
                            if (date != null)
                            {
                                AddDatesFound((DateTime)date, ref datesFound);
                                if (dateTimeFrom == null || date < dateTimeFrom)
                                {
                                    dateTimeFrom = date;
                                }
                                if (dateTimeTo == null || date > dateTimeTo)
                                {
                                    dateTimeTo = date;
                                }
                            }

                            date = DataGridViewHandlerDate.GetUserInputLocationDate(dataGridViewDate, null, dataGridViewGenericColumn.FileEntryAttribute);
                            if (date != null)
                            {
                                AddDatesFound((DateTime)date, ref datesFound);
                                if (dateTimeFrom == null || date < dateTimeFrom)
                                {
                                    dateTimeFrom = date;
                                }
                                if (dateTimeTo == null || date > dateTimeTo)
                                {
                                    dateTimeTo = date;
                                }
                            }

                            if (dataGridViewGenericColumn != null && dataGridViewGenericColumn.Metadata != null)
                            {
                                date = dataGridViewGenericColumn.Metadata.MediaDateTaken;
                                if (date != null)
                                {
                                    AddDatesFound((DateTime)date, ref datesFound);
                                    if (dateTimeFrom == null || date < dateTimeFrom)
                                    {
                                        dateTimeFrom = date;
                                    }
                                    if (dateTimeTo == null || date > dateTimeTo)
                                    {
                                        dateTimeTo = date;
                                    }
                                }

                                date = dataGridViewGenericColumn.Metadata.LocationDateTime;
                                if (date != null)
                                {
                                    AddDatesFound((DateTime)date, ref datesFound);
                                    if (dateTimeFrom == null || date < dateTimeFrom)
                                    {
                                        dateTimeFrom = date;
                                    }
                                    if (dateTimeTo == null || date > dateTimeTo)
                                    {
                                        dateTimeTo = date;
                                    }
                                }

                                //date = dataGridViewGenericColumn.Metadata.FileDateCreated;
                                //if (date != null)
                                //{
                                //    if (dateTimeFrom == null || date < dateTimeFrom) dateTimeFrom = date;
                                //    if (dateTimeTo == null || date > dateTimeTo) dateTimeTo = date;
                                //}

                                //date = dataGridViewGenericColumn.Metadata.FileDateModified;
                                //if (date != null)
                                //{
                                //    if (dateTimeFrom == null || date < dateTimeFrom) dateTimeFrom = date;
                                //    if (dateTimeTo == null || date > dateTimeTo) dateTimeTo = date;
                                //}

                                if (dataGridViewGenericColumn.Metadata.FileDateCreated != null && dataGridViewGenericColumn.Metadata.FileDateModified != null)
                                {
                                    date = (dataGridViewGenericColumn.Metadata.FileDateCreated < dataGridViewGenericColumn.Metadata.FileDateModified ? dataGridViewGenericColumn.Metadata.FileDateCreated : dataGridViewGenericColumn.Metadata.FileDateModified);
                                    AddDatesFound((DateTime)date, ref datesFound);
                                }
                            }
                        }
                    }

                    DateTime?dateTimeFoundFrom = null;
                    DateTime?dateTimeFoundTo   = null;
                    for (int index = 0; index < datesFound.Count - 1; index++)
                    {
                        if (index == 0)
                        {
                            dateTimeFoundFrom = datesFound[index];
                        }
                        if (datesFound[index].AddDays(1) != datesFound[index + 1])
                        {
                            dateTimeFoundTo = datesFound[index];
                        }
                        if (index == datesFound.Count - 2)
                        {
                            dateTimeFoundTo = datesFound[index + 1];
                        }
                        if (dateTimeFoundFrom != null && dateTimeFoundTo == null)
                        {
                            dateTimeFoundTo = ((DateTime)dateTimeFoundFrom).AddDays(1);
                        }
                        if (dateTimeFoundFrom == null && dateTimeFoundTo != null)
                        {
                            dateTimeFoundFrom = ((DateTime)dateTimeFoundTo).AddDays(-1);
                        }

                        if (dateTimeFoundFrom != null && dateTimeFoundTo != null)
                        {
                            PopulateMetadataLocationsAdd(dataGridViewLocationHistory, (DateTime)dateTimeFoundFrom, ((DateTime)dateTimeFoundTo).AddDays(1).AddMilliseconds(-1), Properties.Settings.Default.LocationAnalyticsMinimumTimeInterval * 60, (float)Properties.Settings.Default.LocationAnalyticsMinimumDistance);
                            dateTimeFoundFrom = datesFound[index + 1];
                            dateTimeFoundTo   = null;
                        }
                    }
                }

                if (dateTimeFrom != null)
                {
                    DefaultDateTimeFrom = new DateTime(((DateTime)dateTimeFrom).Year, ((DateTime)dateTimeFrom).Month, ((DateTime)dateTimeFrom).Day, 0, 0, 0, DateTimeKind.Utc);
                }
                if (dateTimeTo != null)
                {
                    DefaultDateTimeTo = new DateTime(((DateTime)dateTimeTo).Year, ((DateTime)dateTimeTo).Month, ((DateTime)dateTimeTo).Day, 0, 0, 0, DateTimeKind.Utc).AddDays(1);
                }
            }
        }