コード例 #1
0
 private async void QueryResult_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     if (!isLibraryLoading)
     {
         await PerformWatcherWorkAsync(sender.Folder).ConfigureAwait(false);
     }
 }
コード例 #2
0
        private async void Query_ContentsChanged(IStorageQueryResultBase sender, object args)
        {
            try
            {
                var configFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/settings/terminal.json"));

                var content = await FileIO.ReadTextAsync(configFile);

                if (configContent != content)
                {
                    configContent = content;
                }
                else
                {
                    return;
                }

                await LoadAsync();
                await GetInstalledTerminalsAsync();

                ModelChanged?.Invoke(this);
            }
            catch
            {
                // ignored
            }
        }
コード例 #3
0
 private void QueryResult_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     if (!dispatcher.HasThreadAccess)
     {
         var t = dispatcher.RunAsync(CoreDispatcherPriority.Normal, ResetCollection);
     }
 }
コード例 #4
0
        private async void Query_ContentsChanged(IStorageQueryResultBase sender, object args)
        {
            try
            {
                var configFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/settings/PinnedItems.json"));

                var content = await FileIO.ReadTextAsync(configFile);

                if (configContent != content)
                {
                    configContent = content;
                }
                else
                {
                    return;
                }

                // Watched file changed externally, reload the sidebar items
                await ReloadAsync();
            }
            catch
            {
                // ignored
            }
        }
コード例 #5
0
 private async void QueryResult_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     StorageItemsUpdated.Invoke(
         MusicLibrary.ChangeTracker,
         new StorageItemsUpdatedEventArgs(
             await MusicLibrary.ChangeTracker.GetChangeReader().ReadBatchAsync()));
 }
コード例 #6
0
 private void QueryResult_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     //if (MusicLibrary != null)
     //    StorageItemsUpdated.Invoke(
     //    MusicLibrary.ChangeTracker,
     //    new StorageItemsUpdatedEventArgs(
     //        await MusicLibrary.ChangeTracker.GetChangeReader().ReadBatchAsync()));
 }
コード例 #7
0
 private async void OnContentsChanged(IStorageQueryResultBase sender, object args)
 {
     await _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
     {
         _startIndex = 0;
         Clear();
     });
 }
コード例 #8
0
 private async void DropFolderWatcher_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     var images = await this.dropFolder.GetFilesAsync();
     var orderedImages = images.OrderByDescending(x => x.DateCreated);
     var file = orderedImages.FirstOrDefault();
     if (null != file && file.Name != this.newestImage.Name)
     {
         this.newestImage = file;
         this.producer.EmitLastCaptureFileNameChanged();
         this.producer.EmitLastCaptureTimeChanged();
     }
 }
コード例 #9
0
 // Handler for when the filesystem notifies us of a change to the file list
 private void QueryResult_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     // This callback can occur on a different thread so we need to marshal it back to the UI thread
     if (!_dispatcher.HasThreadAccess)
     {
         var t = _dispatcher.RunAsync(CoreDispatcherPriority.Normal, ResetCollection);
     }
     else
     {
         ResetCollection();
     }
 }
コード例 #10
0
 // Handler for when the filesystem notifies us of a change to the file list
 private void QueryResult_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     // This callback can occur on a different thread so we need to marshal it back to the UI thread
     if (!_dispatcher.HasThreadAccess)
     {
         var t = _dispatcher.RunAsync(CoreDispatcherPriority.Normal, ResetCollection);
     }
     else
     {
         ResetCollection();
     }
 }
コード例 #11
0
        private async void Query_ContentsChanged(IStorageQueryResultBase sender, object args)
        {
            // Run on UI thread.
            await App.Current.NavigationService.Frame.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() =>
            {
                var tracker = _folder.TryGetChangeTracker();
                if (tracker != null)
                {
                    var changeReader = tracker.GetChangeReader();
                    var changes      = await changeReader.ReadBatchAsync();

                    foreach (var change in changes)
                    {
                        if (change.ChangeType == StorageLibraryChangeType.ChangeTrackingLost)
                        {
                            // Change tracker is in an invalid state and must be reset
                            // This should be a very rare case, but must be handled
                            tracker.Reset();
                            return;
                        }
                        if (change.IsOfType(StorageItemTypes.File))
                        {
                            // Process file change on UI thread.
                            await ProcessFileChange(change);
                        }
                        else if (change.IsOfType(StorageItemTypes.Folder))
                        {
                            // No-op; not interested in folders
                        }
                        else
                        {
                            if (change.ChangeType == StorageLibraryChangeType.Deleted)
                            {
                                // TODO: The application does not have to support FAT drives at the moment. NTFS is enough.
                                //UnknownItemRemoved(change.Path);
                            }
                        }
                    }

                    // If any changes were recorded, save database.
                    if (changes.Count > 0)
                    {
                        // Log query contens changed saving.
                        GalleryLog.QueryContentsChangedSaving();
                        await DatabaseUtils.SaveAllMetadatasAsync(MediaDatas);
                    }

                    await changeReader.AcceptChangesAsync();
                }
            });
        }
コード例 #12
0
        private async void Query_ContentsChanged(IStorageQueryResultBase sender, object args)
        {
            if (suppressChangeEvent)
            {
                suppressChangeEvent = false;
                return;
            }

            // watched file changed externally, reload the sidebar items
            await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(async() =>
            {
                await ReloadAsync();
            });
        }
コード例 #13
0
        private async void DropFolderWatcher_ContentsChanged(IStorageQueryResultBase sender, object args)
        {
            var images = await this.dropFolder.GetFilesAsync();

            var orderedImages = images.OrderByDescending(x => x.DateCreated);
            var file          = orderedImages.FirstOrDefault();

            if (null != file && file.Name != this.newestImage.Name)
            {
                this.newestImage = file;
                this.producer.EmitLastCaptureFileNameChanged();
                this.producer.EmitLastCaptureTimeChanged();
            }
        }
コード例 #14
0
        private void Query_ContentsChanged(IStorageQueryResultBase sender, object args)
        {
            var newGpioValues = dictionaryComparer.GetFilesRecursively(localFolder.Path) as Dictionary <string, string>;

            var differences = dictionaryComparer.GetFileDifferences(oldGpioValues, newGpioValues);

            oldGpioValues = newGpioValues;

            foreach (var filePath in differences)
            {
                var pin = GetPin(filePath);

                UpdatePins(pin, filePath);
            }
        }
コード例 #15
0
        //Event Handler for the folder listener
        private async void resultSet_ContentsChanged(IStorageQueryResultBase sender, object args)
        {
            await driverList.ViewModel.LoadAsync();

            //CoreDispatcher for running in UI thread
            //Properties touching the UI should be updated with the UI thread
            await _coreDispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                ViewModel.IsLoading = false;

                driverList.Visibility  = Visibility.Visible;
                updateStack.Visibility = Visibility.Visible;
                loadingText.Visibility = Visibility.Collapsed;
            });
        }
コード例 #16
0
        /// Event Handlers



        void OnContentsChanged(IStorageQueryResultBase sender, object args)
        {
            if (_isScanQueued)
            {
                ReportLine($"#### ContentsChanged Detected, but a scan is already queued\n");
                return;
            }

            if (_cancellationToken != null && _cancellationToken.IsCancellationRequested)
            {
                ReportLine($"#### ContentsChanged Detected, but the job has been cancelled\n");
                return;
            }

            _isScanQueued = true;
            ReportLine($"#### Queueing another scan\n");
            _ = Scan();
        }
コード例 #17
0
        private async void ItemQuery_ContentsChanged(IStorageQueryResultBase sender, object args)
        {
            if (refreshRunning)
            {
                return;
            }
            refreshRunning = true;

            //itemQuery.ApplyNewQueryOptions(new QueryOptions());
            var items = await fileQuery.GetFilesAsync();

            await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
            {
                await AddDifference(items, browseCts.Token);
            });

            refreshRunning = false;
        }
コード例 #18
0
        private async void Query_ContentsChanged(IStorageQueryResultBase sender, object args)
        {
            if (suppressChangeEvent)
            {
                suppressChangeEvent = false;
                return;
            }

            try
            {
                var configFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/settings/terminal.json"));

                var content = await FileIO.ReadTextAsync(configFile);

                if (configContent != content)
                {
                    configContent = content;
                }
                else
                {
                    return;
                }

                await LoadAsync();
                await GetInstalledTerminalsAsync();

                CoreApplication.MainView.DispatcherQueue.TryEnqueue(() =>
                {
                    ModelChanged?.Invoke(this);
                });
            }
            catch
            {
                // ignored
            }
        }
コード例 #19
0
ファイル: MainPage.xaml.cs プロジェクト: Botinok666/PiAOIS
 private void QueryResult_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     sensors?.PollSensors();
 }
コード例 #20
0
ファイル: ItemViewModel.cs プロジェクト: victorMaf/files-uwp
        private async void FileContentsChanged(IStorageQueryResultBase sender, object args)
        {
            if (_filesRefreshing)
            {
                Debug.WriteLine("Filesystem change event fired but refresh is already running");
                return;
            }
            else
            {
                Debug.WriteLine("Filesystem change event fired. Refreshing...");
            }

            _filesRefreshing = true;

            //query options have to be reapplied otherwise old results are returned
            _fileQueryResult.ApplyNewQueryOptions(_options);
            _folderQueryResult.ApplyNewQueryOptions(_options);

            var fileCount = await _fileQueryResult.GetItemCountAsync();

            var folderCount = await _folderQueryResult.GetItemCountAsync();

            var files = await _fileQueryResult.GetFilesAsync();

            var folders = await _folderQueryResult.GetFoldersAsync();

            var cancellationTokenSourceCopy = _cancellationTokenSource;

            // modifying a file also results in a new unique FolderRelativeId so no need to check for DateModified explicitly

            var addedFiles             = files.Select(f => f.FolderRelativeId).Except(_filesAndFolders.Select(f => f.FolderRelativeId));
            var addedFolders           = folders.Select(f => f.FolderRelativeId).Except(_filesAndFolders.Select(f => f.FolderRelativeId));
            var removedFilesAndFolders = _filesAndFolders
                                         .Select(f => f.FolderRelativeId)
                                         .Except(files.Select(f => f.FolderRelativeId))
                                         .Except(folders.Select(f => f.FolderRelativeId))
                                         .ToArray();

            foreach (var file in addedFiles)
            {
                var toAdd = files.First(f => f.FolderRelativeId == file);
                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
                                                                              async() =>
                {
                    await AddFile(toAdd, _pageName, cancellationTokenSourceCopy.Token);
                });
            }
            foreach (var folder in addedFolders)
            {
                var toAdd = folders.First(f => f.FolderRelativeId == folder);
                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
                                                                              async() =>
                {
                    await AddFolder(toAdd, _pageName, cancellationTokenSourceCopy.Token);
                });
            }
            foreach (var item in removedFilesAndFolders)
            {
                var toRemove = _filesAndFolders.First(f => f.FolderRelativeId == item);
                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
                                                                              () =>
                {
                    RemoveFileOrFolder(toRemove);
                });
            }

            _filesRefreshing = false;
            Debug.WriteLine("Filesystem refresh complete");
        }
コード例 #21
0
 public IStorageQueryResultBaseEvents(IStorageQueryResultBase This)
 {
     this.This = This;
 }
コード例 #22
0
 private void _fileQueryResult_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     Refresh();
 }
コード例 #23
0
 private void Query_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     InvokeOnUIThread(() => RefreshUI());
 }
コード例 #24
0
 private void Query_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     FilesChanged?.Invoke(sender, EventArgs.Empty);
 }
コード例 #25
0
 private async static void QueryResult_ContentsChanged(IStorageQueryResultBase sender, object args)
 {
     await SettingsViewModel.PerformWatcherWorkAsync(sender.Folder).ConfigureAwait(false);
 }
コード例 #26
0
 private void QueryOnContentsChanged(IStorageQueryResultBase sender, object args)
 {
     UpdateItems().FireAndForget();
 }