Пример #1
0
        public MainWindow()
        {
            InitializeComponent();

            //override the default tooltip timeout to make tooltips stay open until the user moves the mouse off the control
            ToolTipService.ShowDurationProperty.OverrideMetadata(typeof(DependencyObject), new FrameworkPropertyMetadata(Int32.MaxValue));

            m_close = false;

            m_settings = new FilerSettings();

            try
            {
                MainWindowViewModel vm = new MainWindowViewModel();
                vm.VisibilityChangeRequest      += _OnVisibilityChangeRequested;
                vm.DisplaySettingsWindowRequest += _OnDisplaySettingsWindowRequested;
                this.DataContext = vm;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                m_close = true;
                this.Close();
            }

            _CreateTrayIcon();

            ((INotifyCollectionChanged)SearchResultListView.Items).CollectionChanged += SearchResultListView_CollectionChanged;
        }
Пример #2
0
        public SettingsWindowViewModel(SettingsWindowEventArgs args)
        {
            Settings                  = new FilerSettings();
            AllowRepositioning        = Settings.AllowRepositioning;
            DirectoryMonitor          = args.DirectoryMonitor;
            RestrictedResultCountList = new List <int> {
                10, 25, 50, 100, 200
            };

            m_directoryMonitor.ScanCompleted += _DirectoryMonitor_ScanCompleted;

            AddDirectoryCommand           = new RelayCommand(_AddDirectory);
            RemoveDirectoryCommand        = new RelayCommand(_RemoveDirectory);
            ScanDirectoriesCommand        = new RelayCommand(_ScanDirectories);
            ToggleStartWithWindowsCommand = new RelayCommand(_ToggleStartWithWindows);

            m_recursiveChanged = false;

            m_cacheSizeLabel = "";

            _LoadCacheSize();
        }
Пример #3
0
        public DatabaseSearcher(DatabaseLink database)
        {
            m_database = database;

            m_settings = new FilerSettings();

            m_availableSearchFilters = new List <SearchFilter>();
            m_availableSearchFilters.Add(new SearchFilter(DatabaseAccess.MatchFilters.Any, Properties.Resources.filter_any));
            m_availableSearchFilters.Add(new SearchFilter(DatabaseAccess.MatchFilters.Folders, Properties.Resources.filter_folder));
            m_availableSearchFilters.Add(new SearchFilter(DatabaseAccess.MatchFilters.Files, Properties.Resources.filter_file));
            m_availableSearchFilters.Add(new SearchFilter(DatabaseAccess.MatchFilters.Tags, Properties.Resources.filter_tag));

            m_activeSearchFilter = m_availableSearchFilters[0];
            m_activeSearchID     = 0;
            m_searchTerm         = "";
            m_newSearchLock      = new object();
            m_databaseLock       = new object();

            m_searchDelayTimer           = new System.Timers.Timer();
            m_searchDelayTimer.Interval  = 250;
            m_searchDelayTimer.Elapsed  += _SearchDelayTimer_Elapsed;
            m_searchDelayTimer.AutoReset = false;
        }
Пример #4
0
        public MainWindowViewModel()
        {
            Settings = new FilerSettings();
            Debug.Assert(Settings != null);

            Settings.SessionLog = $"---Session Debug Log Started At {DateTime.Now.ToString()}---\n";

            LaunchItemChosenCommand   = new RelayCommand(_OnLaunchItemChosen);
            EnterPressedCommand       = new RelayCommand(_OnEnterPressed);
            ShowSettingsWindowCommand = new RelayCommand(_ShowSettingsWindow);
            ShowMoreResultsCommand    = new RelayCommand(_ShowMoreResults);

            _InitializeDatabase();

            m_limitedResultCollection = new ObservableCollection <Controls.SearchResultControl>();

            m_latestSearchResult = null;

            m_resultLock = new object();

            StatusMessage          = "Ready";
            m_enableShowMoreButton = false;

            m_directoryMonitor = new DirectoryMonitor();

            m_directoryMonitor.ScanCompleted             += _DirectoryMonitor_ScanCompleted;
            m_directoryMonitor.MonitoredDirectoryRemoved += _DirectoryMonitor_MonitoredDirectoryRemoved;
            m_directoryMonitor.StatusChanged             += _DirectoryMonitor_StatusChanged;
            m_directoryMonitor.ScanProgress         += _DirectoryMonitor_ScanProgress;
            m_directoryMonitor.ScanStarted          += _DirectoryMonitor_ScanStarted;
            m_directoryMonitor.MonitoredFileCreated += _DirectoryMonitor_MonitoredFileCreated;
            m_directoryMonitor.MonitoredFileDeleted += _DirectoryMonitor_MonitoredFileDeleted;
            m_directoryMonitor.MonitoredFileRenamed += _DirectoryMonitor_MonitoredFileRenamed;

            if (Settings.FirstRun)
            {
                //add the user's special folders as a default
                m_directoryMonitor.AddMonitoredDirectory(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
                m_directoryMonitor.AddMonitoredDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
                m_directoryMonitor.AddMonitoredDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic));
                m_directoryMonitor.AddMonitoredDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures));
                m_directoryMonitor.AddMonitoredDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyVideos));
                m_directoryMonitor.AddMonitoredDirectory(Environment.GetFolderPath(Environment.SpecialFolder.Personal));
                m_directoryMonitor.AddMonitoredDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
                m_directoryMonitor.AddMonitoredDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86));
                m_directoryMonitor.AddMonitoredDirectory(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu));
                m_directoryMonitor.AddMonitoredDirectory(Environment.GetFolderPath(Environment.SpecialFolder.System), false);                 //just want top-level for calc, notepad, etc.

                Settings.MonitoredDirectories = m_directoryMonitor.GetFormattedStringFromDirectoryList();

                m_directoryMonitor.ScanMonitoredDirectories();
            }
            else
            {
                var extractedDirectories = DirectoryMonitor.GetDirectoryListFromFormattedString(Settings.MonitoredDirectories);
                foreach (DirectoryMonitor.Directory directory in extractedDirectories)
                {
                    m_directoryMonitor.AddMonitoredDirectory(directory);
                }
            }

            try
            {
                DatabaseItemCount = m_database.QueryDatabaseSize();
            }
            catch (Exception crap)
            {
                Settings.SessionLog += crap.Message + "\n";
                Debug.WriteLine(crap.Message);
            }
        }