public FileExplorer(NameObjectCollection fileFunctionMap)
 {
     m_fileFunctionMap = fileFunctionMap;
     _quit = false;
     m_DNV = Settings.Instance.DNV;
     m_indexer = new Indexer(Properties.Settings.Instance.TempIndexPath, IndexMode.CREATE);
 }
Beispiel #2
0
        private string DoSearchResult()
        {
            string strSearchTerm = m_queryString["search"];
            string strStartAt    = m_queryString["page"];
            int    iStartAt      = 0;

            if (strStartAt != null)
            {
                try
                {
                    iStartAt = Int32.Parse(strStartAt) * 10;
                }
                catch
                {
                }
            }

            // Lock the index before starting search. This is to prevent FileExplorer from
            // moving/deleting index while a search operation is in progress
            Synchronizer.Instance.LockIndex(this);
            Indexer m_indexer = new Indexer(OpenDesktop.Properties.Settings.Instance.IndexPath, IndexMode.SEARCH);

            string strReturnVal = string.Empty;

            SearchInfo[] sinfo = m_indexer.Search(strSearchTerm);
            if (sinfo != null && sinfo.Length > 0)
            {
                StringBuilder sb     = new StringBuilder();
                int           iEndAt = iStartAt + 10;
                if (iEndAt > sinfo.Length)
                {
                    iEndAt = sinfo.Length;
                }

                // Display: Results 0 - 10 of about 44 for killing+work
                sb.Append("<div class=\"search-nav\">" +
                          string.Format(Properties.Resources.SearchResultsHeader,
                                        (iStartAt + 1).ToString(), iEndAt.ToString(),
                                        sinfo.Length.ToString(), strSearchTerm) + "</div>");
                sb.Append("<div class=\"search-results\"><ol>");

                for (int i = iStartAt; i < iEndAt; i++)
                {
                    string strDisplayText = GetExcerpt(sinfo[i].Text, strSearchTerm);
                    sb.Append("<li value=\"" + (i + 1).ToString() + "\"><a href=\"" + sinfo[i].Launcher +
                              "\"><span style=\"font-size:12pt\">" + sinfo[i].Title + "</span></a><br />" + strDisplayText + "</li>");
                }
                sb.Append("</ol></div>");
                int    iCurPageNum = (iStartAt / 10);
                string strPrevUrl  = string.Empty;
                string strNextUrl  = string.Empty;
                if (iCurPageNum > 0)
                {
                    strPrevUrl = string.Format("<a href=\"search.html?search={0}&page={1}\">",
                                               m_queryString["search"], (iCurPageNum - 1).ToString()) +
                                 Properties.Resources.SearchResultsPrev + "</a>";
                }
                if (iEndAt != sinfo.Length)
                {
                    strNextUrl = string.Format("<a href=\"search.html?search={0}&page={1}\">",
                                               m_queryString["search"], (iCurPageNum + 1).ToString()) +
                                 Properties.Resources.SearchResultsNext + "</a>";
                }
                sb.Append("<div class=\"search-nav\">" + strPrevUrl + " | " + strNextUrl + "</div>");
                strReturnVal = sb.ToString();
            }
            else
            {
                strReturnVal = "<div class=\"no-search-results\">" + Properties.Resources.NoSearchResults + "</div>";
            }
            m_indexer.Close();
            Synchronizer.Instance.ReleaseIndex(this);

            return(strReturnVal);
        }
        private void Explore()
        {
            string [] strDriveList = Environment.GetLogicalDrives();
            foreach (string strDrive in strDriveList)
            {
                DriveInfo info = new DriveInfo(strDrive);
                if (info.IsReady)
                {
                    Logger.Instance.LogDebug("Exploring " + strDrive);
                    Explore(strDrive);
                    break; //FIXME: REMOVE THIS. IT IS TEMP FOR DEBUGGING ONLY
                }
            }

            if (!_quit) // If the exit was natural
            {
                Logger.Instance.LogDebug("Moving index from " +
                    Properties.Settings.Instance.IndexPath + " to " +
                    Properties.Settings.Instance.TempIndexPath);
                // Close index and move it
                m_indexer.Close(); m_indexer = null;

                // Lock the index as we are going to be moving it
                Synchronizer.Instance.LockIndex(this);
                try
                {
                    if (Directory.Exists(Properties.Settings.Instance.IndexPath))
                    {
                        Directory.Delete(Properties.Settings.Instance.IndexPath, true);
                    }
                    Directory.Move(Properties.Settings.Instance.TempIndexPath,
                        Properties.Settings.Instance.IndexPath);

                    Properties.Settings.Instance.IndexLastUpdated = DateTime.Now;
                    Properties.Settings.Instance.Save();
                }
                catch (Exception e)
                {
                    Logger.Instance.LogException(e);
                }
                Synchronizer.Instance.ReleaseIndex(this);
            }
            OnFileExplorerDone(); // Signal we are done
        }
        private string DoSearchResult()
        {
            string strSearchTerm = m_queryString["search"];
            string strStartAt = m_queryString["page"];
            int iStartAt = 0;
            if (strStartAt != null)
            {
                try
                {
                    iStartAt = Int32.Parse(strStartAt) * 10;
                }
                catch
                {
                }
            }

            // Lock the index before starting search. This is to prevent FileExplorer from
            // moving/deleting index while a search operation is in progress
            Synchronizer.Instance.LockIndex(this);
            Indexer m_indexer = new Indexer(OpenDesktop.Properties.Settings.Instance.IndexPath, IndexMode.SEARCH);

            string strReturnVal = string.Empty;

            SearchInfo[] sinfo = m_indexer.Search(strSearchTerm);
            if (sinfo != null && sinfo.Length > 0)
            {
                StringBuilder sb = new StringBuilder();
                int iEndAt = iStartAt + 10;
                if (iEndAt > sinfo.Length)
                {
                    iEndAt = sinfo.Length;
                }

                // Display: Results 0 - 10 of about 44 for killing+work
                sb.Append("<div class=\"search-nav\">" +
                    string.Format(Properties.Resources.SearchResultsHeader,
                    (iStartAt + 1).ToString(), iEndAt.ToString(),
                    sinfo.Length.ToString(), strSearchTerm) + "</div>");
                sb.Append("<div class=\"search-results\"><ol>");

                for (int i = iStartAt; i < iEndAt; i++)
                {
                    string strDisplayText = GetExcerpt(sinfo[i].Text, strSearchTerm);
                    sb.Append("<li value=\"" + (i+1).ToString() + "\"><a href=\"" + sinfo[i].Launcher +
                        "\"><span style=\"font-size:12pt\">" + sinfo[i].Title + "</span></a><br />" + strDisplayText + "</li>");
                }
                sb.Append("</ol></div>");
                int iCurPageNum = (iStartAt/10);
                string strPrevUrl = string.Empty;
                string strNextUrl = string.Empty;
                if (iCurPageNum > 0)
                {
                    strPrevUrl = string.Format("<a href=\"search.html?search={0}&page={1}\">",
                        m_queryString["search"], (iCurPageNum - 1).ToString()) +
                        Properties.Resources.SearchResultsPrev + "</a>";
                }
                if (iEndAt != sinfo.Length)
                {
                    strNextUrl = string.Format("<a href=\"search.html?search={0}&page={1}\">",
                        m_queryString["search"], (iCurPageNum + 1).ToString()) +
                        Properties.Resources.SearchResultsNext + "</a>";
                }
                sb.Append("<div class=\"search-nav\">" + strPrevUrl + " | " + strNextUrl + "</div>");
                strReturnVal = sb.ToString();
            }
            else
            {
                strReturnVal = "<div class=\"no-search-results\">" + Properties.Resources.NoSearchResults + "</div>";
            }
            m_indexer.Close();
            Synchronizer.Instance.ReleaseIndex(this);

            return strReturnVal;
        }