OSDN Git Service

Continue removing MFC code from file filter code.
authorKimmo Varis <kimmov@gmail.com>
Fri, 26 Jun 2009 13:22:16 +0000 (13:22 +0000)
committerKimmo Varis <kimmov@gmail.com>
Fri, 26 Jun 2009 13:22:16 +0000 (13:22 +0000)
Src/FileFilterHelper.cpp
Src/FileFilterHelper.h
Src/FileFilterMgr.cpp
Src/FileFiltersDlg.cpp
Src/FileFiltersDlg.h
Src/MainFrm.cpp

index 3b22f01..10b52cc 100644 (file)
@@ -33,6 +33,8 @@
 #include "Coretools.h"
 #include "paths.h"
 
+using std::vector;
+
 #ifdef _DEBUG
 #define new DEBUG_NEW
 #undef THIS_FILE
@@ -96,19 +98,19 @@ void FileFilterHelper::SetFileFilterPath(LPCTSTR szFileFilterPath)
  * @param [out] filters Filter list to receive found filters.
  * @param [out] selected Filepath of currently selected filter.
  */
-void FileFilterHelper::GetFileFilters(FILEFILTER_INFOLIST * filters, String & selected) const
+void FileFilterHelper::GetFileFilters(std::vector<FileFilterInfo> * filters, String & selected) const
 {
        if (m_fileFilterMgr)
        {
-               int count = m_fileFilterMgr->GetFilterCount();
-               filters->SetSize(count);
-               for (int i=0; i<count; ++i)
+               const int count = m_fileFilterMgr->GetFilterCount();
+               filters->reserve(count);
+               for (int i = 0; i < count; ++i)
                {
                        FileFilterInfo filter;
                        filter.fullpath = m_fileFilterMgr->GetFilterPath(i);
                        filter.name = m_fileFilterMgr->GetFilterName(i);
                        filter.description = m_fileFilterMgr->GetFilterDesc(i);
-                       filters->SetAt(i, filter);
+                       filters->push_back(filter);
                }
        }
        selected = m_sFileFilterPath;
@@ -122,18 +124,20 @@ void FileFilterHelper::GetFileFilters(FILEFILTER_INFOLIST * filters, String & se
  */
 String FileFilterHelper::GetFileFilterName(LPCTSTR filterPath) const
 {
-       FILEFILTER_INFOLIST filters;
+       vector<FileFilterInfo> filters;
        String selected;
        String name;
 
        GetFileFilters(&filters, selected);
-       for (int i = 0; i < filters.GetSize(); i++)
+       vector<FileFilterInfo>::const_iterator iter = filters.begin();
+       while (iter != filters.end())
        {
-               if (filters.GetAt(i).fullpath == filterPath)
+               if ((*iter).fullpath == filterPath)
                {
-                       name = filters.GetAt(i).name;
+                       name = (*iter).name;
                        break;
                }
+               iter++;
        }
        return name;
 }
@@ -145,18 +149,20 @@ String FileFilterHelper::GetFileFilterName(LPCTSTR filterPath) const
  */
 String FileFilterHelper::GetFileFilterPath(LPCTSTR filterName) const
 {
-       FILEFILTER_INFOLIST filters;
+       vector<FileFilterInfo> filters;
        String selected;
        String path;
 
        GetFileFilters(&filters, selected);
-       for (int i = 0; i < filters.GetSize(); i++)
+       vector<FileFilterInfo>::const_iterator iter = filters.begin();
+       while (iter != filters.end())
        {
-               if (filters.GetAt(i).name == filterName)
+               if ((*iter).name == filterName)
                {
-                       path = filters.GetAt(i).fullpath;
+                       path = (*iter).fullpath;
                        break;
                }
+               iter++;
        }
        return path;
 }
@@ -335,7 +341,7 @@ String FileFilterHelper::ParseExtensions(const String &extensions) const
        ext += _T(";"); // Add one separator char to end
        size_t pos = ext.find_first_of(pszSeps);
        
-       while (pos >= 0)
+       while (pos != String::npos)
        {
                String token = ext.substr(0, pos); // Get first extension
                ext = ext.substr(pos + 2); // Remove extension + separator
@@ -453,22 +459,19 @@ BOOL FileFilterHelper::SetFilter(const String &filter)
  */
 void FileFilterHelper::ReloadUpdatedFilters()
 {
-       FILEFILTER_INFOLIST filters;
+       vector<FileFilterInfo> filters;
        DirItem fileInfo;
-       DirItem *fileInfoStored = NULL;
-       FileFilterInfo filter;
        String selected;
 
        GetFileFilters(&filters, selected);
-       for (int i = 0; i < filters.GetSize(); i++)
+       vector<FileFilterInfo>::const_iterator iter = filters.begin();
+       while (iter != filters.end())
        {
-               filter = filters.GetAt(i);
-               String path = filter.fullpath;
-               fileInfoStored = &filter.fileinfo;
+               String path = (*iter).fullpath;
 
                fileInfo.Update(path);
-               if (fileInfo.mtime != fileInfoStored->mtime ||
-                       fileInfo.size != fileInfoStored->size)
+               if (fileInfo.mtime != (*iter).fileinfo.mtime ||
+                       fileInfo.size != (*iter).fileinfo.size)
                {
                        // Reload filter after changing it
                        int retval = m_fileFilterMgr->ReloadFilterFromDisk(path.c_str());
@@ -480,6 +483,7 @@ void FileFilterHelper::ReloadUpdatedFilters()
                                        SetFileFilterPath(path.c_str());
                        }
                }
+               iter++;
        }
 }
 
index a4dfe25..e72e46a 100644 (file)
@@ -25,6 +25,7 @@
 #ifndef _FILEFILTERHELPER_H_
 #define _FILEFILTERHELPER_H_
 
+#include <vector>
 #include "UnicodeString.h"
 
 class FileFilterMgr;
@@ -52,7 +53,6 @@ struct FileFilterInfo
        DirItem fileinfo;               /**< For tracking if file has been modified */
 };
 
-typedef CArray<FileFilterInfo, FileFilterInfo&> FILEFILTER_INFOLIST;
 typedef CMap<CString, LPCTSTR, int, int> FILEFILTER_FILEMAP;
 
 /// Interface for testing files & directories for exclusion, as diff traverses file tree
@@ -107,7 +107,7 @@ public:
        FileFilterMgr * GetManager() const;
        void SetFileFilterPath(LPCTSTR szFileFilterPath);
        void EditFileFilter(LPCTSTR szFileFilterPath);
-       void GetFileFilters(FILEFILTER_INFOLIST * filters, String & selected) const;
+       void GetFileFilters(std::vector<FileFilterInfo> * filters, String & selected) const;
        String GetFileFilterName(LPCTSTR filterPath) const;
        String GetFileFilterPath(LPCTSTR filterName) const;
        void SetUserFilterPath(const String & filterPath);
index 18c1aea..ee8d38b 100644 (file)
@@ -143,11 +143,11 @@ static void AddFilterPattern(vector<FileFilterElement*> *filterList, String & st
                return;
 
        // Find possible comment-separator '<whitespace>##'
-       while (pos > 0 && !_istspace(str[pos - 1]))
+       while (pos != std::string::npos && !_istspace(str[pos - 1]))
                pos = str.find(commentLeader, pos + 1);
 
        // Remove comment and whitespaces before it
-       if (pos > 0)
+       if (pos != std::string::npos)
                str = str.substr(0, pos);
        str = string_trim_ws_end(str);
        if (str.empty())
index 8b40c56..88274ac 100644 (file)
@@ -23,6 +23,7 @@
 // $Id$
 
 #include "stdafx.h"
+#include <vector>
 #include "UnicodeString.h"
 #include "merge.h"
 #include "MainFrm.h"
@@ -35,6 +36,8 @@
 #include "TestFilterDlg.h"
 #include "FileOrFolderSelect.h"
 
+using std::vector;
+
 #ifdef _DEBUG
 #define new DEBUG_NEW
 #undef THIS_FILE
@@ -95,7 +98,7 @@ END_MESSAGE_MAP()
  * @param [in] fileFilters Array of filters to show in the dialog.
  * @note Call this before actually showing the dialog.
  */
-void FileFiltersDlg::SetFilterArray(FILEFILTER_INFOLIST * fileFilters)
+void FileFiltersDlg::SetFilterArray(vector<FileFilterInfo> * fileFilters)
 {
        m_Filters = fileFilters;
 }
@@ -145,7 +148,7 @@ void FileFiltersDlg::InitList()
        m_listFilters.SetItemText(0, 1, title.c_str());
        m_listFilters.SetItemText(0, 2, title.c_str());
 
-       int count = m_Filters->GetSize();
+       const int count = m_Filters->size();
 
        for (int i = 0; i < count; i++)
        {
@@ -201,7 +204,7 @@ BOOL FileFiltersDlg::OnInitDialog()
  */
 void FileFiltersDlg::AddToGrid(int filterIndex)
 {
-       const FileFilterInfo & filterinfo = m_Filters->GetAt(filterIndex);
+       const FileFilterInfo & filterinfo = m_Filters->at(filterIndex);
        const int item = filterIndex + 1;
 
        m_listFilters.InsertItem(item, filterinfo.name.c_str());
@@ -469,7 +472,7 @@ void FileFiltersDlg::OnBnClickedFilterfileNewbutton()
                {
                        // Remove all from filterslist and re-add so we can update UI
                        String selected;
-                       m_Filters->RemoveAll();
+                       m_Filters->clear();
                        theApp.m_globalFileFilter.LoadAllFileFilters();
                        theApp.m_globalFileFilter.GetFileFilters(m_Filters, selected);
 
@@ -506,7 +509,7 @@ void FileFiltersDlg::OnBnClickedFilterfileDelete()
                                
                                // Remove all from filterslist and re-add so we can update UI
                                String selected;
-                               m_Filters->RemoveAll();
+                               m_Filters->clear();
                                theApp.m_globalFileFilter.GetFileFilters(m_Filters, selected);
 
                                UpdateFiltersList();
@@ -524,7 +527,7 @@ void FileFiltersDlg::OnBnClickedFilterfileDelete()
  */
 void FileFiltersDlg::UpdateFiltersList()
 {
-       int count = m_Filters->GetSize();
+       int count = m_Filters->size();
 
        m_listFilters.DeleteAllItems();
 
@@ -598,7 +601,7 @@ void FileFiltersDlg::OnBnClickedFilterfileInstall()
 
                        // Remove all from filterslist and re-add so we can update UI
                        String selected;
-                       m_Filters->RemoveAll();
+                       m_Filters->clear();
                        theApp.m_globalFileFilter.GetFileFilters(m_Filters, selected);
 
                        UpdateFiltersList();
index 32a2aae..859e2e8 100644 (file)
@@ -19,7 +19,7 @@
  *
  * @brief Declaration file for File Filters dialog
  */
-// RCS ID line follows -- this is updated by CVS
+// ID line follows -- this is updated by SVN
 // $Id$
 
 #if !defined(AFX_FILTERSDLG_H__6180CBC3_99BB_4C85_B0EA_BA85D219285E__INCLUDED_)
@@ -29,6 +29,8 @@
 #pragma once
 #endif // _MSC_VER > 1000
 
+#include <vector>
+
 /**
  * @brief Class for dialog allowing user to select
  * and edit used file filters
@@ -40,7 +42,7 @@ class FileFiltersDlg : public CPropertyPage
 // Construction
 public:
        FileFiltersDlg();   // standard constructor
-       void SetFilterArray(FILEFILTER_INFOLIST * fileFilters);
+       void SetFilterArray(std::vector<FileFilterInfo> * fileFilters);
        CString GetSelected();
        void SetSelected(const CString & selected);
 
@@ -48,7 +50,7 @@ public:
 private:
        CString m_sFileFilterPath;
        CPoint m_ptLastMousePos;
-       FILEFILTER_INFOLIST * m_Filters;
+       std::vector<FileFilterInfo> * m_Filters;
 
 // Dialog Data
        //{{AFX_DATA(FileFiltersDlg)
index 5bc0001..61747d9 100644 (file)
@@ -76,6 +76,8 @@
 #include "PluginsListDlg.h"
 #include "stringdiffs.h"
 
+using std::vector;
+
 /*
  One source file must compile the stubs for multimonitor
  by defining the symbol COMPILE_MULTIMON_STUBS & including <multimon.h>
@@ -2591,7 +2593,7 @@ void CMainFrame::OnToolsFilters()
        CPropertySheet sht(title.c_str());
        LineFiltersDlg lineFiltersDlg;
        FileFiltersDlg fileFiltersDlg;
-       FILEFILTER_INFOLIST fileFilters;
+       vector<FileFilterInfo> fileFilters;
        LineFiltersList * lineFilters = new LineFiltersList();
        String selectedFilter;
        const String origFilter = theApp.m_globalFileFilter.GetFilterNameOrMask();