Esempio n. 1
0
 public WatcherExEventArgs(FileSystemWatcherEx watcher,
                           object arguments,
                           ArgumentType argType)
 {
     Watcher   = watcher;
     Arguments = arguments;
     ArgType   = argType;
     Filter    = NotifyFilters.Attributes;
 }
Esempio n. 2
0
 public WatcherExEventArgs(FileSystemWatcherEx watcher,
                           object arguments,
                           ArgumentType argType,
                           NotifyFilters filter)
 {
     Watcher   = watcher;
     Arguments = arguments;
     ArgType   = argType;
     Filter    = filter;
 }
        public CurrentDirectoryViewModel(FileListViewModel rootModel, Model.DirectoryModel model)
            : base(rootModel, model)
        {
            IsLoaded   = false;
            _rootModel = rootModel;

            _subEntries        = new CollectionViewSource();
            _subEntries.Source = SubEntriesInternal;
            _subEntries.SortDescriptions.Add(new SortDescription("IsDirectory", ListSortDirection.Descending));
            _subEntries.SortDescriptions.Add(new SortDescription("FullName", ListSortDirection.Ascending));

            _refreshCommand = new SimpleCommand
            {
                CanExecuteDelegate = x => true,
                ExecuteDelegate    = x => Refresh()
            };


            #region FileSystemWatcher
            _watcher = new FileSystemWatcherEx(model.EmbeddedDirectoryEntry);

            var handler = (FileSystemEventHandlerEx) delegate(object sender, FileSystemEventArgsEx args)
            {
                if (args.FullPath.Equals(model.FullName))
                {
                    Refresh();
                }
            };
            var renameHandler = (RenameEventHandlerEx) delegate(object sender, RenameEventArgsEx args)
            {
                if (args.OldFullPath.Equals(model.FullName))
                {
                    Refresh();
                }
            };

            _watcher.OnChanged += handler;
            _watcher.OnCreated += handler;
            _watcher.OnDeleted += handler;
            _watcher.OnRenamed += renameHandler;
            #endregion
        }
Esempio n. 4
0
        public DirectoryTreeViewModel()
        {
            setUpBackgroundWorker();

            #region FileSystemWatcher
            _watcher = new FileSystemWatcherEx(DirectoryInfoEx.DesktopDirectory);
            var handler = (FileSystemEventHandlerEx) delegate(object sender, FileSystemEventArgsEx args)
            {
                BroadcastChange(args.FullPath, args.ChangeType);
            };
            var renameHandler = (RenameEventHandlerEx) delegate(object sender, RenameEventArgsEx args)
            {
                BroadcastChange(args.OldFullPath, args.ChangeType);
            };

            _watcher.OnChanged += handler;
            _watcher.OnCreated += handler;
            _watcher.OnDeleted += handler;
            _watcher.OnRenamed += renameHandler;
            #endregion
        }
Esempio n. 5
0
        public DirectoryTreeViewModel()
        {
            setUpBackgroundWorker();

            #region FileSystemWatcher

            try
            {
                if (IsWin8())
                {
                    _watcher = new FileSystemWatcherEx(DirectoryInfoEx.MyComputerDirectory);
                }
                else
                {
                    _watcher = new FileSystemWatcherEx(DirectoryInfoEx.DesktopDirectory);
                }
            }
            catch (Exception e) {
                Debug.Write(e.Message);
            }



            var handler = (FileSystemEventHandlerEx) delegate(object sender, FileSystemEventArgsEx args)
            {
                BroadcastChange(args.FullPath, args.ChangeType);
            };
            var renameHandler = (RenameEventHandlerEx) delegate(object sender, RenameEventArgsEx args)
            {
                BroadcastChange(args.OldFullPath, args.ChangeType);
            };

            _watcher.OnChanged += handler;
            _watcher.OnCreated += handler;
            _watcher.OnDeleted += handler;
            _watcher.OnRenamed += renameHandler;
            #endregion
        }
Esempio n. 6
0
        //--------------------------------------------------------------------------------
        /// <summary>
        /// Actually creates the necessary FileSystemWatcher objects, depending oin which
        /// notify filters and change types the user specified.
        /// </summary>
        /// <param name="changeType"></param>
        /// <param name="filter"></param>
        private void CreateWatcher(bool changedWatcher, NotifyFilters filter)
        {
            Debug.WriteLine(string.Format("WatcherEx.CreateWatcher({0}, {1})", changedWatcher.ToString(), filter.ToString()));

            FileSystemWatcherEx watcher = null;
            int bufferSize = (int)this.watcherInfo.BufferKBytes * 1024;

            // Each "Change" filter gets its own watcher so we can determine *what*
            // actually changed. This will allow us to react only to the change events
            // that we actually want.  The reason I do this is because some programs
            // fire TWO events for  certain changes. For example, Notepad sends two
            // events when a file is created. One for CreationTime, and one for
            // Attributes.
            if (changedWatcher)
            {
                // if we're not handling the currently specified filter, get out
                if (HandleNotifyFilter(filter))
                {
                    watcher = new FileSystemWatcherEx(this.watcherInfo.WatchPath);
                    watcher.IncludeSubdirectories = this.watcherInfo.IncludeSubFolders;
                    watcher.Filter             = this.watcherInfo.FileFilter;
                    watcher.NotifyFilter       = filter;
                    watcher.InternalBufferSize = bufferSize;
                    switch (filter)
                    {
                    case NotifyFilters.Attributes:
                        watcher.Changed += new FileSystemEventHandler(watcher_ChangedAttribute);
                        break;

                    case NotifyFilters.CreationTime:
                        watcher.Changed += new FileSystemEventHandler(watcher_ChangedCreationTime);
                        break;

                    case NotifyFilters.DirectoryName:
                        watcher.Changed += new FileSystemEventHandler(watcher_ChangedDirectoryName);
                        break;

                    case NotifyFilters.FileName:
                        watcher.Changed += new FileSystemEventHandler(watcher_ChangedFileName);
                        break;

                    case NotifyFilters.LastAccess:
                        watcher.Changed += new FileSystemEventHandler(watcher_ChangedLastAccess);
                        break;

                    case NotifyFilters.LastWrite:
                        watcher.Changed += new FileSystemEventHandler(watcher_ChangedLastWrite);
                        break;

                    case NotifyFilters.Security:
                        watcher.Changed += new FileSystemEventHandler(watcher_ChangedSecurity);
                        break;

                    case NotifyFilters.Size:
                        watcher.Changed += new FileSystemEventHandler(watcher_ChangedSize);
                        break;
                    }
                }
            }
            // All other FileSystemWatcher events are handled through a single "main"
            // watcher.
            else
            {
                if (HandleWatchesFilter(WatcherChangeTypes.Created) ||
                    HandleWatchesFilter(WatcherChangeTypes.Deleted) ||
                    HandleWatchesFilter(WatcherChangeTypes.Renamed) ||
                    this.watcherInfo.WatchForError ||
                    this.watcherInfo.WatchForDisposed)
                {
                    watcher = new FileSystemWatcherEx(this.watcherInfo.WatchPath, watcherInfo.MonitorPathInterval);
                    watcher.IncludeSubdirectories = this.watcherInfo.IncludeSubFolders;
                    watcher.Filter             = this.watcherInfo.FileFilter;
                    watcher.InternalBufferSize = bufferSize;
                }

                if (HandleWatchesFilter(WatcherChangeTypes.Created))
                {
                    watcher.Created += new FileSystemEventHandler(watcher_CreatedDeleted);
                }
                if (HandleWatchesFilter(WatcherChangeTypes.Deleted))
                {
                    watcher.Deleted += new FileSystemEventHandler(watcher_CreatedDeleted);
                }
                if (HandleWatchesFilter(WatcherChangeTypes.Renamed))
                {
                    watcher.Renamed += new RenamedEventHandler(watcher_Renamed);
                }
                if (watcherInfo.MonitorPathInterval > 0)
                {
                    watcher.EventPathAvailability += new PathAvailabilityHandler(watcher_EventPathAvailability);
                }
            }
            if (watcher != null)
            {
                if (this.watcherInfo.WatchForError)
                {
                    watcher.Error += new ErrorEventHandler(watcher_Error);
                }
                if (this.watcherInfo.WatchForDisposed)
                {
                    watcher.Disposed += new EventHandler(watcher_Disposed);
                }
                this.watchers.Add(watcher);
            }
        }