From ef51233d0a0c91dca09751e2129dce900de814fd Mon Sep 17 00:00:00 2001 From: sdottaka Date: Wed, 19 Jun 2013 00:12:42 +0900 Subject: [PATCH] Remove MFC dependency from DirViewColItems.* --- Src/DirView.cpp | 11 +- Src/DirView.h | 15 +- Src/DirViewColHandler.cpp | 34 ++--- Src/DirViewColItems.cpp | 374 ++++++++++++++++++++++------------------------ Src/DirViewColItems.h | 29 +++- Src/Merge.vcproj | 8 +- Src/Merge.vcxproj | 8 + 7 files changed, 245 insertions(+), 234 deletions(-) diff --git a/Src/DirView.cpp b/Src/DirView.cpp index 8d47830aa..0e994af01 100644 --- a/Src/DirView.cpp +++ b/Src/DirView.cpp @@ -31,6 +31,7 @@ #include "Merge.h" #include "ClipBoard.h" #include "DirView.h" +#include "DirViewColItems.h" #include "DirFrame.h" // StatePane #include "DirDoc.h" #include "HexMergeFrm.h" @@ -148,6 +149,7 @@ CDirView::CDirView() , m_pShellContextMenuRight(NULL) , m_hCurrentMenu(NULL) , m_pSavedTreeState(NULL) + , m_pColItems(NULL) { m_dwDefaultStyle &= ~LVS_TYPEMASK; // Show selection all the time, so user can see current item even when @@ -325,6 +327,7 @@ void CDirView::OnInitialUpdate() CListView::OnInitialUpdate(); m_pList = &GetListCtrl(); GetDocument()->SetDirView(this); + m_pColItems.reset(new DirViewColItems(GetDocument()->m_nDirs)); #ifdef _UNICODE m_pList->SendMessage(CCM_SETUNICODEFORMAT, TRUE, 0); @@ -3057,7 +3060,7 @@ void CDirView::SetColumnWidths() int phy = ColLogToPhys(i); if (phy >= 0) { - String sWidthKey = GetColRegValueNameBase(i) + _T("_Width"); + String sWidthKey = m_pColItems->GetColRegValueNameBase(i) + _T("_Width"); int w = max(10, theApp.GetProfileInt(GetDocument()->m_nDirs < 3 ? _T("DirView") : _T("DirView3"), sWidthKey.c_str(), DefColumnWidth)); GetListCtrl().SetColumnWidth(m_colorder[i], w); } @@ -3079,7 +3082,7 @@ void CDirView::SaveColumnWidths() int phy = ColLogToPhys(i); if (phy >= 0) { - String sWidthKey = GetColRegValueNameBase(i) + _T("_Width"); + String sWidthKey = m_pColItems->GetColRegValueNameBase(i) + _T("_Width"); int w = GetListCtrl().GetColumnWidth(phy); theApp.WriteProfileInt(GetDocument()->m_nDirs < 3 ? _T("DirView") : _T("DirView3"), sWidthKey.c_str(), w); } @@ -3268,7 +3271,7 @@ void CDirView::GetCurrentColRegKeys(std::vector& colKeys) for (int col = 0; col < nphyscols; ++col) { int logcol = ColPhysToLog(col); - colKeys.push_back(GetColRegValueNameBase(logcol)); + colKeys.push_back(m_pColItems->GetColRegValueNameBase(logcol)); } } @@ -3589,7 +3592,7 @@ void CDirView::ResetColumnWidths() int phy = ColLogToPhys(i); if (phy >= 0) { - String sWidthKey = GetColRegValueNameBase(i) + _T("_Width"); + String sWidthKey = m_pColItems->GetColRegValueNameBase(i) + _T("_Width"); theApp.WriteProfileInt(GetDocument()->m_nDirs < 3 ? _T("DirView") : _T("DirView3"), sWidthKey.c_str(), DefColumnWidth); } } diff --git a/Src/DirView.h b/Src/DirView.h index a9eee6658..163271277 100644 --- a/Src/DirView.h +++ b/Src/DirView.h @@ -57,6 +57,7 @@ struct DirColInfo; class CLoadSaveCodepageDlg; class CShellContextMenu; class CDiffContext; +class DirViewColItems; struct ViewCustomFlags { @@ -222,23 +223,10 @@ private: void ClearColumnOrders(); void ResetColumnOrdering(); void MoveColumn(int psrc, int pdest); - String GetColRegValueNameBase(int col) const; String ColGetTextToDisplay(const CDiffContext *pCtxt, int col, const DIFFITEM & di); int ColSort(const CDiffContext *pCtxt, int col, const DIFFITEM & ldi, const DIFFITEM &rdi) const; // End DirViewCols.cpp -// Implementation in DirViewColItems.cpp - int GetColDefaultOrder(int col) const; - const DirColInfo * DirViewColItems_GetDirColInfo(int col) const; - bool IsColById(int col, const char *idname) const; - bool IsColName(int col) const; - bool IsColLmTime(int col) const; - bool IsColMmTime(int col) const; - bool IsColRmTime(int col) const; - bool IsColStatus(int col) const; - bool IsColStatusAbbr(int col) const; -// End DirViewColItems.cpp - private: // Overrides @@ -304,6 +292,7 @@ protected: boost::scoped_ptr m_pShellContextMenuRight; /**< Shell context menu for group of right files */ HMENU m_hCurrentMenu; /**< Current shell context menu (either left or right) */ boost::scoped_ptr m_pSavedTreeState; + boost::scoped_ptr m_pColItems; // Generated message map functions afx_msg void OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult); diff --git a/Src/DirViewColHandler.cpp b/Src/DirViewColHandler.cpp index 63c1823d8..9f9fb620f 100644 --- a/Src/DirViewColHandler.cpp +++ b/Src/DirViewColHandler.cpp @@ -44,7 +44,7 @@ String CDirView::ColGetTextToDisplay(const CDiffContext *pCtxt, int col, const DIFFITEM & di) { // Custom properties have custom get functions - const DirColInfo * pColInfo = DirViewColItems_GetDirColInfo(col); + const DirColInfo * pColInfo = m_pColItems->GetDirColInfo(col); if (!pColInfo) { ASSERT(0); // fix caller, should not ask for nonexistent columns @@ -69,7 +69,7 @@ int CDirView::ColSort(const CDiffContext *pCtxt, int col, const DIFFITEM & ldi, const DIFFITEM & rdi) const { // Custom properties have custom sort functions - const DirColInfo * pColInfo = DirViewColItems_GetDirColInfo(col); + const DirColInfo * pColInfo = m_pColItems->GetDirColInfo(col); if (!pColInfo) { ASSERT(0); // fix caller, should not ask for nonexistent columns @@ -124,7 +124,7 @@ int CDirView::ColSort(const CDiffContext *pCtxt, int col, const DIFFITEM & ldi, */ bool CDirView::IsDefaultSortAscending(int col) const { - const DirColInfo * pColInfo = DirViewColItems_GetDirColInfo(col); + const DirColInfo * pColInfo = m_pColItems->GetDirColInfo(col); if (!pColInfo) { ASSERT(0); // fix caller, should not ask for nonexistent columns @@ -153,7 +153,7 @@ void CDirView::UpdateColumnNames() int ncols = GetColLogCount(); for (int i=0; iGetDirColInfo(i); NameColumn(col->idName, i); } } @@ -166,7 +166,7 @@ void CDirView::SetColAlignments() int ncols = GetColLogCount(); for (int i=0; iGetDirColInfo(i); LVCOLUMN lvc; lvc.mask = LVCF_FMT; lvc.fmt = col->alignment; @@ -254,7 +254,7 @@ void CDirView::ReflectGetdispinfo(NMLVDISPINFO *pParam) UIntPtr key = GetItemKey(nIdx); if (key == SPECIAL_ITEM_POS) { - if (IsColName(i)) + if (m_pColItems->IsColName(i)) { pParam->item.pszText = _T(".."); } @@ -274,8 +274,8 @@ void CDirView::ReflectGetdispinfo(NMLVDISPINFO *pParam) { if ( - IsColLmTime(i) && di.diffFileInfo[0].mtime > di.diffFileInfo[1].mtime // Left modification time - || IsColRmTime(i) && di.diffFileInfo[0].mtime < di.diffFileInfo[1].mtime // Right modification time + m_pColItems->IsColLmTime(i) && di.diffFileInfo[0].mtime > di.diffFileInfo[1].mtime // Left modification time + || m_pColItems->IsColRmTime(i) && di.diffFileInfo[0].mtime < di.diffFileInfo[1].mtime // Right modification time ) { s.insert(0, _T("* ")); @@ -288,9 +288,9 @@ void CDirView::ReflectGetdispinfo(NMLVDISPINFO *pParam) { if ( - IsColLmTime(i) && di.diffFileInfo[0].mtime > di.diffFileInfo[1].mtime && di.diffFileInfo[0].mtime > di.diffFileInfo[2].mtime // Left modification time - || IsColMmTime(i) && di.diffFileInfo[1].mtime > di.diffFileInfo[0].mtime && di.diffFileInfo[1].mtime > di.diffFileInfo[2].mtime // Middle modification time - || IsColRmTime(i) && di.diffFileInfo[2].mtime > di.diffFileInfo[0].mtime && di.diffFileInfo[2].mtime > di.diffFileInfo[1].mtime // Right modification time + m_pColItems->IsColLmTime(i) && di.diffFileInfo[0].mtime > di.diffFileInfo[1].mtime && di.diffFileInfo[0].mtime > di.diffFileInfo[2].mtime // Left modification time + || m_pColItems->IsColMmTime(i) && di.diffFileInfo[1].mtime > di.diffFileInfo[0].mtime && di.diffFileInfo[1].mtime > di.diffFileInfo[2].mtime // Middle modification time + || m_pColItems->IsColRmTime(i) && di.diffFileInfo[2].mtime > di.diffFileInfo[0].mtime && di.diffFileInfo[2].mtime > di.diffFileInfo[1].mtime // Right modification time ) { s.insert(0, _T("* ")); @@ -315,7 +315,7 @@ void CDirView::SaveColumnOrders() ASSERT(m_invcolorder.size() == m_numcols); for (int i=0; i < m_numcols; i++) { - String RegName = GetColRegValueNameBase(i) + _T("_Order"); + String RegName = m_pColItems->GetColRegValueNameBase(i) + _T("_Order"); int ord = m_colorder[i]; theApp.WriteProfileInt(GetDocument()->m_nDirs < 3 ? _T("DirView") : _T("DirView3"), RegName.c_str(), ord); } @@ -337,7 +337,7 @@ void CDirView::LoadColumnOrders() int i=0; for (i=0; iGetColRegValueNameBase(i) + _T("_Order"); int ord = theApp.GetProfileInt(GetDocument()->m_nDirs < 3 ? _T("DirView") : _T("DirView3"), RegName.c_str(), -2); if (ord<-1 || ord >= m_numcols) break; @@ -409,7 +409,7 @@ void CDirView::ResetColumnOrdering() m_dispcols = 0; for (int i=0; iGetColDefaultOrder(i); m_colorder[i] = phy; if (phy>=0) { @@ -439,7 +439,7 @@ void CDirView::ClearColumnOrders() */ String CDirView::GetColDisplayName(int col) const { - const DirColInfo * colinfo = DirViewColItems_GetDirColInfo(col); + const DirColInfo * colinfo = m_pColItems->GetDirColInfo(col); return tr(colinfo->idName); } @@ -448,7 +448,7 @@ String CDirView::GetColDisplayName(int col) const */ String CDirView::GetColDescription(int col) const { - const DirColInfo * colinfo = DirViewColItems_GetDirColInfo(col); + const DirColInfo * colinfo = m_pColItems->GetDirColInfo(col); return tr(colinfo->idDesc); } @@ -513,7 +513,7 @@ void CDirView::OnEditColumns() // Add default order of columns for resetting to defaults for (l = 0; l < m_numcols; ++l) { - int phy = GetColDefaultOrder(l); + int phy = m_pColItems->GetColDefaultOrder(l); dlg.AddDefColumn(GetColDisplayName(l), l, phy); } diff --git a/Src/DirViewColItems.cpp b/Src/DirViewColItems.cpp index 80ceb4d19..4e971ef5d 100644 --- a/Src/DirViewColItems.cpp +++ b/Src/DirViewColItems.cpp @@ -7,135 +7,119 @@ */ // ID line follows -- this is updated by SVN // $Id: DirViewColItems.cpp 7063 2009-12-27 15:28:16Z kimmov $ - - -#include "stdafx.h" -#include +#include "DirViewColItems.h" #include #include "UnicodeString.h" -#include "Merge.h" -#include "DirView.h" -#include "DirDoc.h" -#include "MainFrm.h" -#include "resource.h" -#include "DirViewColItems.h" +#include "DiffItem.h" +#include "DiffContext.h" #include "locality.h" -#include "unicoder.h" -#include "coretools.h" #include "paths.h" +#include "MergeApp.h" using Poco::Timestamp; -// shlwapi.h prior to VC6SP6 might lack definition of StrIsIntlEqual -#ifdef UNICODE -#define StrIsIntlEqual StrIsIntlEqualW -#else -#define StrIsIntlEqual StrIsIntlEqualA -#endif - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; +#ifndef countof +#define countof(x) sizeof(x)/sizeof((x)[0]) #endif using std::swap; +using Poco::Int64; /** * @name Constants for short sizes. */ /* @{ */ -static const UINT KILO = 1024; -static const UINT MEGA = 1024 * KILO; -static const UINT GIGA = 1024 * MEGA; -static const __int64 TERA = 1024 * (__int64) GIGA; +static const unsigned KILO = 1024; +static const unsigned MEGA = 1024 * KILO; +static const unsigned GIGA = 1024 * MEGA; +static const Int64 TERA = 1024 * (Int64) GIGA; /** * @} */ namespace { -const char *COLHDR_FILENAME = N_("Filename"); -const char *COLHDR_DIR = N_("Folder"); -const char *COLHDR_RESULT = N_("Comparison result"); -const char *COLHDR_LTIMEM = N_("Left Date"); -const char *COLHDR_RTIMEM = N_("Right Date"); -const char *COLHDR_MTIMEM = N_("Middle Date"); -const char *COLHDR_EXTENSION = N_("Extension"); -const char *COLHDR_LSIZE = N_("Left Size"); -const char *COLHDR_RSIZE = N_("Right Size"); -const char *COLHDR_MSIZE = N_("Middle Size"); -const char *COLHDR_RSIZE_SHORT = N_("Right Size (Short)"); -const char *COLHDR_LSIZE_SHORT = N_("Left Size (Short)"); -const char *COLHDR_MSIZE_SHORT = N_("Middle Size (Short)"); -const char *COLHDR_LTIMEC = N_("Left Creation Time"); -const char *COLHDR_RTIMEC = N_("Right Creation Time"); -const char *COLHDR_MTIMEC = N_("Middle Creation Time"); -const char *COLHDR_NEWER = N_("Newer File"); -const char *COLHDR_LVERSION = N_("Left File Version"); -const char *COLHDR_RVERSION = N_("Right File Version"); -const char *COLHDR_MVERSION = N_("Middle File Version"); -const char *COLHDR_RESULT_ABBR = N_("Short Result"); -const char *COLHDR_LATTRIBUTES = N_("Left Attributes"); -const char *COLHDR_RATTRIBUTES = N_("Right Attributes"); -const char *COLHDR_MATTRIBUTES = N_("Middle Attributes"); -const char *COLHDR_LEOL_TYPE = N_("Left EOL"); -const char *COLHDR_MEOL_TYPE = N_("Middle EOL"); -const char *COLHDR_REOL_TYPE = N_("Right EOL"); -const char *COLHDR_LENCODING = N_("Left Encoding"); -const char *COLHDR_RENCODING = N_("Right Encoding"); -const char *COLHDR_MENCODING = N_("Middle Encoding"); -const char *COLHDR_NIDIFFS = N_("Ignored Diff."); -const char *COLHDR_NSDIFFS = N_("Differences"); -const char *COLHDR_BINARY = N_("Binary"); +const char *COLHDR_FILENAME = N_("Filename"); +const char *COLHDR_DIR = N_("Folder"); +const char *COLHDR_RESULT = N_("Comparison result"); +const char *COLHDR_LTIMEM = N_("Left Date"); +const char *COLHDR_RTIMEM = N_("Right Date"); +const char *COLHDR_MTIMEM = N_("Middle Date"); +const char *COLHDR_EXTENSION = N_("Extension"); +const char *COLHDR_LSIZE = N_("Left Size"); +const char *COLHDR_RSIZE = N_("Right Size"); +const char *COLHDR_MSIZE = N_("Middle Size"); +const char *COLHDR_RSIZE_SHORT = N_("Right Size (Short)"); +const char *COLHDR_LSIZE_SHORT = N_("Left Size (Short)"); +const char *COLHDR_MSIZE_SHORT = N_("Middle Size (Short)"); +const char *COLHDR_LTIMEC = N_("Left Creation Time"); +const char *COLHDR_RTIMEC = N_("Right Creation Time"); +const char *COLHDR_MTIMEC = N_("Middle Creation Time"); +const char *COLHDR_NEWER = N_("Newer File"); +const char *COLHDR_LVERSION = N_("Left File Version"); +const char *COLHDR_RVERSION = N_("Right File Version"); +const char *COLHDR_MVERSION = N_("Middle File Version"); +const char *COLHDR_RESULT_ABBR = N_("Short Result"); +const char *COLHDR_LATTRIBUTES = N_("Left Attributes"); +const char *COLHDR_RATTRIBUTES = N_("Right Attributes"); +const char *COLHDR_MATTRIBUTES = N_("Middle Attributes"); +const char *COLHDR_LEOL_TYPE = N_("Left EOL"); +const char *COLHDR_MEOL_TYPE = N_("Middle EOL"); +const char *COLHDR_REOL_TYPE = N_("Right EOL"); +const char *COLHDR_LENCODING = N_("Left Encoding"); +const char *COLHDR_RENCODING = N_("Right Encoding"); +const char *COLHDR_MENCODING = N_("Middle Encoding"); +const char *COLHDR_NIDIFFS = N_("Ignored Diff."); +const char *COLHDR_NSDIFFS = N_("Differences"); +const char *COLHDR_BINARY = N_("Binary"); -const char *COLDESC_FILENAME = N_("Filename or folder name."); -const char *COLDESC_DIR = N_("Subfolder name when subfolders are included."); -const char *COLDESC_RESULT = N_("Comparison result, long form."); -const char *COLDESC_LTIMEM = N_("Left side modification date."); -const char *COLDESC_RTIMEM = N_("Right side modification date."); -const char *COLDESC_MTIMEM = N_("Middle side modification date."); -const char *COLDESC_EXTENSION = N_("File's extension."); -const char *COLDESC_LSIZE = N_("Left file size in bytes."); -const char *COLDESC_RSIZE = N_("Right file size in bytes."); -const char *COLDESC_MSIZE = N_("Middle file size in bytes."); -const char *COLDESC_LSIZE_SHORT = N_("Left file size abbreviated."); -const char *COLDESC_RSIZE_SHORT = N_("Right file size abbreviated."); -const char *COLDESC_MSIZE_SHORT = N_("Middle file size abbreviated."); -const char *COLDESC_LTIMEC = N_("Left side creation time."); -const char *COLDESC_RTIMEC = N_("Right side creation time."); -const char *COLDESC_MTIMEC = N_("Middle side creation time."); -const char *COLDESC_NEWER = N_("Tells which side has newer modification date."); -const char *COLDESC_LVERSION = N_("Left side file version, only for some filetypes."); -const char *COLDESC_RVERSION = N_("Right side file version, only for some filetypes."); -const char *COLDESC_MVERSION = N_("Middle side file version, only for some filetypes."); -const char *COLDESC_RESULT_ABBR = N_("Short comparison result."); -const char *COLDESC_LATTRIBUTES = N_("Left side attributes."); -const char *COLDESC_RATTRIBUTES = N_("Right side attributes."); -const char *COLDESC_MATTRIBUTES = N_("Middle side attributes."); -const char *COLDESC_LEOL_TYPE = N_("Left side file EOL type"); -const char *COLDESC_REOL_TYPE = N_("Right side file EOL type"); -const char *COLDESC_MEOL_TYPE = N_("Middle side file EOL type"); -const char *COLDESC_LENCODING = N_("Left side encoding."); -const char *COLDESC_RENCODING = N_("Right side encoding."); -const char *COLDESC_MENCODING = N_("Middle side encoding."); -const char *COLDESC_NIDIFFS = N_("Number of ignored differences in file. These differences are ignored by WinMerge and cannot be merged."); -const char *COLDESC_NSDIFFS = N_("Number of differences in file. This number does not include ignored differences."); -const char *COLDESC_BINARY = N_("Shows an asterisk (*) if the file is binary."); +const char *COLDESC_FILENAME = N_("Filename or folder name."); +const char *COLDESC_DIR = N_("Subfolder name when subfolders are included."); +const char *COLDESC_RESULT = N_("Comparison result, long form."); +const char *COLDESC_LTIMEM = N_("Left side modification date."); +const char *COLDESC_RTIMEM = N_("Right side modification date."); +const char *COLDESC_MTIMEM = N_("Middle side modification date."); +const char *COLDESC_EXTENSION = N_("File's extension."); +const char *COLDESC_LSIZE = N_("Left file size in bytes."); +const char *COLDESC_RSIZE = N_("Right file size in bytes."); +const char *COLDESC_MSIZE = N_("Middle file size in bytes."); +const char *COLDESC_LSIZE_SHORT = N_("Left file size abbreviated."); +const char *COLDESC_RSIZE_SHORT = N_("Right file size abbreviated."); +const char *COLDESC_MSIZE_SHORT = N_("Middle file size abbreviated."); +const char *COLDESC_LTIMEC = N_("Left side creation time."); +const char *COLDESC_RTIMEC = N_("Right side creation time."); +const char *COLDESC_MTIMEC = N_("Middle side creation time."); +const char *COLDESC_NEWER = N_("Tells which side has newer modification date."); +const char *COLDESC_LVERSION = N_("Left side file version, only for some filetypes."); +const char *COLDESC_RVERSION = N_("Right side file version, only for some filetypes."); +const char *COLDESC_MVERSION = N_("Middle side file version, only for some filetypes."); +const char *COLDESC_RESULT_ABBR = N_("Short comparison result."); +const char *COLDESC_LATTRIBUTES = N_("Left side attributes."); +const char *COLDESC_RATTRIBUTES = N_("Right side attributes."); +const char *COLDESC_MATTRIBUTES = N_("Middle side attributes."); +const char *COLDESC_LEOL_TYPE = N_("Left side file EOL type"); +const char *COLDESC_REOL_TYPE = N_("Right side file EOL type"); +const char *COLDESC_MEOL_TYPE = N_("Middle side file EOL type"); +const char *COLDESC_LENCODING = N_("Left side encoding."); +const char *COLDESC_RENCODING = N_("Right side encoding."); +const char *COLDESC_MENCODING = N_("Middle side encoding."); +const char *COLDESC_NIDIFFS = N_("Number of ignored differences in file. These differences are ignored by WinMerge and cannot be merged."); +const char *COLDESC_NSDIFFS = N_("Number of differences in file. This number does not include ignored differences."); +const char *COLDESC_BINARY = N_("Shows an asterisk (*) if the file is binary."); } /** - * @brief Function to compare two __int64s for a sort + * @brief Function to compare two Int64s for a sort */ -static int cmp64(__int64 i1, __int64 i2) +static int cmp64(Int64 i1, Int64 i2) { if (i1==i2) return 0; return i1>i2 ? 1 : -1; } /** - * @brief Convert __int64 to int sign + * @brief Convert Int64 to int sign */ -static int sign64(__int64 val) +static int sign64(Int64 val) { if (val>0) return 1; if (val<0) return -1; @@ -145,7 +129,7 @@ static int sign64(__int64 val) * @brief Function to compare two diffcodes for a sort * @todo How shall we order diff statuses? */ -static UINT cmpdiffcode(UINT diffcode1, UINT diffcode2) +static unsigned cmpdiffcode(unsigned diffcode1, unsigned diffcode2) { // Lower priority of the same items (FIXME:) if (((diffcode1 & DIFFCODE::COMPAREFLAGS) == DIFFCODE::SAME) && ((diffcode2 & DIFFCODE::COMPAREFLAGS) != DIFFCODE::SAME)) @@ -181,11 +165,11 @@ static int cmpfloat(double v1, double v2) * @note Localized suffix strings are read from resource. * @todo Can't handle > terabyte filesizes. */ -static String MakeShortSize(__int64 size) +static String MakeShortSize(Int64 size) { -#pragma warning(disable:4244) // warning C4244: '=' : conversion from '__int64' to 'double', possible loss of data +#pragma warning(disable:4244) // warning C4244: '=' : conversion from 'Int64' to 'double', possible loss of data double fsize = size; -#pragma warning(default:4244) // warning C4244: '=' : conversion from '__int64' to 'double', possible loss of data +#pragma warning(default:4244) // warning C4244: '=' : conversion from 'Int64' to 'double', possible loss of data double number = 0; int ndigits = 0; String suffix; @@ -221,15 +205,15 @@ static String MakeShortSize(__int64 size) ndigits = 1; } } - else if (size < (__int64)TERA) + else if (size < (Int64)TERA) { - number = fsize / ((__int64)GIGA); + number = fsize / ((Int64)GIGA); suffix = _(" GB"); - if (size < (__int64)GIGA * 10) + if (size < (Int64)GIGA * 10) { ndigits = 2; } - else if (size < (__int64)GIGA * 100) + else if (size < (Int64)GIGA * 100) { ndigits = 1; } @@ -243,9 +227,7 @@ static String MakeShortSize(__int64 size) return s; } - TCHAR buffer[48]; - _sntprintf(buffer, countof(buffer), _T("%lf"), number); - return locality::GetLocaleStr(buffer, ndigits) + suffix; + return locality::GetLocaleStr(string_format(_T("%lf"), number).c_str(), ndigits) + suffix; } /** @@ -319,7 +301,7 @@ static String ColPathGet(const CDiffContext *, const void *p) int length_s = (i_ahead != std::string::npos ? i_ahead : s.length()) - i; int length_t = (j_ahead != std::string::npos ? j_ahead : t.length()) - j; if (length_s != length_t || - !StrIsIntlEqual(FALSE, s.c_str() + i, t.c_str() + j, length_s)) + memcmp(s.c_str() + i, t.c_str() + j, length_s) != 0) { String u(t.c_str() + j, length_t + 1); u[length_t] = '|'; @@ -431,7 +413,7 @@ static String ColStatusGet(const CDiffContext *pCtxt, const void *p) */ static String ColTimeGet(const CDiffContext *, const void *p) { - const __int64 r = *static_cast(p) / Timestamp::resolution(); + const Int64 r = *static_cast(p) / Timestamp::resolution(); if (r) return locality::TimeString(&r); else @@ -445,7 +427,7 @@ static String ColTimeGet(const CDiffContext *, const void *p) */ static String ColSizeGet(const CDiffContext *, const void *p) { - const __int64 &r = *static_cast(p); + const Int64 &r = *static_cast(p); String s; if (r != -1) { @@ -461,7 +443,7 @@ static String ColSizeGet(const CDiffContext *, const void *p) */ static String ColSizeShortGet(const CDiffContext *, const void *p) { - const __int64 &r = *static_cast(p); + const Int64 &r = *static_cast(p); String s; if (r != -1) { @@ -855,8 +837,8 @@ static int ColStatusSort(const CDiffContext *, const void *p, const void *q) */ static int ColTimeSort(const CDiffContext *, const void *p, const void *q) { - const __int64 &r = *static_cast(p); - const __int64 &s = *static_cast(q); + const Int64 &r = *static_cast(p); + const Int64 &s = *static_cast(q); return cmp64(r, s); } @@ -868,8 +850,8 @@ static int ColTimeSort(const CDiffContext *, const void *p, const void *q) */ static int ColSizeSort(const CDiffContext *, const void *p, const void *q) { - const __int64 &r = *static_cast(p); - const __int64 &s = *static_cast(q); + const Int64 &r = *static_cast(p); + const Int64 &s = *static_cast(q); return cmp64(r, s); } @@ -993,67 +975,67 @@ static int ColEncodingSort(const CDiffContext *, const void *p, const void *q) */ static DirColInfo f_cols[] = { - { _T("Name"), COLHDR_FILENAME, COLDESC_FILENAME, &ColFileNameGet, &ColFileNameSort, 0, 0, true, LVCFMT_LEFT }, - { _T("Path"), COLHDR_DIR, COLDESC_DIR, &ColPathGet, &ColPathSort, 0, 1, true, LVCFMT_LEFT }, - { _T("Status"), COLHDR_RESULT, COLDESC_RESULT, &ColStatusGet, &ColStatusSort, 0, 2, true, LVCFMT_LEFT }, - { _T("Lmtime"), COLHDR_LTIMEM, COLDESC_LTIMEM, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].mtime), 3, false, LVCFMT_LEFT }, - { _T("Rmtime"), COLHDR_RTIMEM, COLDESC_RTIMEM, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].mtime), 4, false, LVCFMT_LEFT }, - { _T("Lctime"), COLHDR_LTIMEC, COLDESC_LTIMEC, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].ctime), -1, false, LVCFMT_LEFT }, - { _T("Rctime"), COLHDR_RTIMEC, COLDESC_RTIMEC, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].ctime), -1, false, LVCFMT_LEFT }, - { _T("Ext"), COLHDR_EXTENSION, COLDESC_EXTENSION, &ColExtGet, &ColExtSort, 0, 5, true, LVCFMT_LEFT }, - { _T("Lsize"), COLHDR_LSIZE, COLDESC_LSIZE, &ColSizeGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].size), -1, false, LVCFMT_RIGHT }, - { _T("Rsize"), COLHDR_RSIZE, COLDESC_RSIZE, &ColSizeGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].size), -1, false, LVCFMT_RIGHT }, - { _T("LsizeShort"), COLHDR_LSIZE_SHORT, COLDESC_LSIZE_SHORT, &ColSizeShortGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].size), -1, false, LVCFMT_RIGHT }, - { _T("RsizeShort"), COLHDR_RSIZE_SHORT, COLDESC_RSIZE_SHORT, &ColSizeShortGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].size), -1, false, LVCFMT_RIGHT }, - { _T("Newer"), COLHDR_NEWER, COLDESC_NEWER, &ColNewerGet, &ColNewerSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Lversion"), COLHDR_LVERSION, COLDESC_LVERSION, &ColLversionGet, &ColLversionSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Rversion"), COLHDR_RVERSION, COLDESC_RVERSION, &ColRversionGet, &ColRversionSort, 0, -1, true, LVCFMT_LEFT }, - { _T("StatusAbbr"), COLHDR_RESULT_ABBR, COLDESC_RESULT_ABBR, &ColStatusAbbrGet, &ColStatusSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Binary"), COLHDR_BINARY, COLDESC_BINARY, &ColBinGet, &ColBinSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Lattr"), COLHDR_LATTRIBUTES, COLDESC_LATTRIBUTES, &ColAttrGet, &ColAttrSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].flags), -1, true, LVCFMT_LEFT }, - { _T("Rattr"), COLHDR_RATTRIBUTES, COLDESC_RATTRIBUTES, &ColAttrGet, &ColAttrSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].flags), -1, true, LVCFMT_LEFT }, - { _T("Lencoding"), COLHDR_LENCODING, COLDESC_LENCODING, &ColEncodingGet, &ColEncodingSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0]), -1, true, LVCFMT_LEFT }, - { _T("Rencoding"), COLHDR_RENCODING, COLDESC_RENCODING, &ColEncodingGet, &ColEncodingSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1]), -1, true, LVCFMT_LEFT }, - { _T("Snsdiffs"), COLHDR_NSDIFFS, COLDESC_NSDIFFS, ColDiffsGet, ColDiffsSort, FIELD_OFFSET(DIFFITEM, nsdiffs), -1, false, LVCFMT_RIGHT }, - { _T("Snidiffs"), COLHDR_NIDIFFS, COLDESC_NIDIFFS, ColDiffsGet, ColDiffsSort, FIELD_OFFSET(DIFFITEM, nidiffs), -1, false, LVCFMT_RIGHT }, - { _T("Leoltype"), COLHDR_LEOL_TYPE, COLDESC_LEOL_TYPE, &ColLEOLTypeGet, 0, 0, -1, true, LVCFMT_LEFT }, - { _T("Reoltype"), COLHDR_REOL_TYPE, COLDESC_REOL_TYPE, &ColREOLTypeGet, 0, 0, -1, true, LVCFMT_LEFT }, + { _T("Name"), COLHDR_FILENAME, COLDESC_FILENAME, &ColFileNameGet, &ColFileNameSort, 0, 0, true, DirColInfo::ALIGN_LEFT }, + { _T("Path"), COLHDR_DIR, COLDESC_DIR, &ColPathGet, &ColPathSort, 0, 1, true, DirColInfo::ALIGN_LEFT }, + { _T("Status"), COLHDR_RESULT, COLDESC_RESULT, &ColStatusGet, &ColStatusSort, 0, 2, true, DirColInfo::ALIGN_LEFT }, + { _T("Lmtime"), COLHDR_LTIMEM, COLDESC_LTIMEM, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].mtime), 3, false, DirColInfo::ALIGN_LEFT }, + { _T("Rmtime"), COLHDR_RTIMEM, COLDESC_RTIMEM, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].mtime), 4, false, DirColInfo::ALIGN_LEFT }, + { _T("Lctime"), COLHDR_LTIMEC, COLDESC_LTIMEC, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].ctime), -1, false, DirColInfo::ALIGN_LEFT }, + { _T("Rctime"), COLHDR_RTIMEC, COLDESC_RTIMEC, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].ctime), -1, false, DirColInfo::ALIGN_LEFT }, + { _T("Ext"), COLHDR_EXTENSION, COLDESC_EXTENSION, &ColExtGet, &ColExtSort, 0, 5, true, DirColInfo::ALIGN_LEFT }, + { _T("Lsize"), COLHDR_LSIZE, COLDESC_LSIZE, &ColSizeGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].size), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("Rsize"), COLHDR_RSIZE, COLDESC_RSIZE, &ColSizeGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].size), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("LsizeShort"), COLHDR_LSIZE_SHORT, COLDESC_LSIZE_SHORT, &ColSizeShortGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].size), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("RsizeShort"), COLHDR_RSIZE_SHORT, COLDESC_RSIZE_SHORT, &ColSizeShortGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].size), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("Newer"), COLHDR_NEWER, COLDESC_NEWER, &ColNewerGet, &ColNewerSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Lversion"), COLHDR_LVERSION, COLDESC_LVERSION, &ColLversionGet, &ColLversionSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Rversion"), COLHDR_RVERSION, COLDESC_RVERSION, &ColRversionGet, &ColRversionSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("StatusAbbr"), COLHDR_RESULT_ABBR, COLDESC_RESULT_ABBR, &ColStatusAbbrGet, &ColStatusSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Binary"), COLHDR_BINARY, COLDESC_BINARY, &ColBinGet, &ColBinSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Lattr"), COLHDR_LATTRIBUTES, COLDESC_LATTRIBUTES, &ColAttrGet, &ColAttrSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].flags), -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Rattr"), COLHDR_RATTRIBUTES, COLDESC_RATTRIBUTES, &ColAttrGet, &ColAttrSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].flags), -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Lencoding"), COLHDR_LENCODING, COLDESC_LENCODING, &ColEncodingGet, &ColEncodingSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0]), -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Rencoding"), COLHDR_RENCODING, COLDESC_RENCODING, &ColEncodingGet, &ColEncodingSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1]), -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Snsdiffs"), COLHDR_NSDIFFS, COLDESC_NSDIFFS, ColDiffsGet, ColDiffsSort, FIELD_OFFSET(DIFFITEM, nsdiffs), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("Snidiffs"), COLHDR_NIDIFFS, COLDESC_NIDIFFS, ColDiffsGet, ColDiffsSort, FIELD_OFFSET(DIFFITEM, nidiffs), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("Leoltype"), COLHDR_LEOL_TYPE, COLDESC_LEOL_TYPE, &ColLEOLTypeGet, 0, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Reoltype"), COLHDR_REOL_TYPE, COLDESC_REOL_TYPE, &ColREOLTypeGet, 0, 0, -1, true, DirColInfo::ALIGN_LEFT }, }; static DirColInfo f_cols3[] = { - { _T("Name"), COLHDR_FILENAME, COLDESC_FILENAME, &ColFileNameGet, &ColFileNameSort, 0, 0, true, LVCFMT_LEFT }, - { _T("Path"), COLHDR_DIR, COLDESC_DIR, &ColPathGet, &ColPathSort, 0, 1, true, LVCFMT_LEFT }, - { _T("Status"), COLHDR_RESULT, COLDESC_RESULT, &ColStatusGet, &ColStatusSort, 0, 2, true, LVCFMT_LEFT }, - { _T("Lmtime"), COLHDR_LTIMEM, COLDESC_LTIMEM, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].mtime), 3, false, LVCFMT_LEFT }, - { _T("Mmtime"), COLHDR_MTIMEM, COLDESC_MTIMEM, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].mtime), 4, false, LVCFMT_LEFT }, - { _T("Rmtime"), COLHDR_RTIMEM, COLDESC_RTIMEM, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2].mtime), 5, false, LVCFMT_LEFT }, - { _T("Lctime"), COLHDR_LTIMEC, COLDESC_LTIMEC, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].ctime), -1, false, LVCFMT_LEFT }, - { _T("Mctime"), COLHDR_MTIMEC, COLDESC_MTIMEC, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].ctime), -1, false, LVCFMT_LEFT }, - { _T("Rctime"), COLHDR_RTIMEC, COLDESC_RTIMEC, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2].ctime), -1, false, LVCFMT_LEFT }, - { _T("Ext"), COLHDR_EXTENSION, COLDESC_EXTENSION, &ColExtGet, &ColExtSort, 0, 6, true, LVCFMT_LEFT }, - { _T("Lsize"), COLHDR_LSIZE, COLDESC_LSIZE, &ColSizeGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].size), -1, false, LVCFMT_RIGHT }, - { _T("Msize"), COLHDR_MSIZE, COLDESC_MSIZE, &ColSizeGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].size), -1, false, LVCFMT_RIGHT }, - { _T("Rsize"), COLHDR_RSIZE, COLDESC_RSIZE, &ColSizeGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2].size), -1, false, LVCFMT_RIGHT }, - { _T("LsizeShort"), COLHDR_LSIZE_SHORT, COLDESC_LSIZE_SHORT, &ColSizeShortGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].size), -1, false, LVCFMT_RIGHT }, - { _T("MsizeShort"), COLHDR_MSIZE_SHORT, COLDESC_MSIZE_SHORT, &ColSizeShortGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].size), -1, false, LVCFMT_RIGHT }, - { _T("RsizeShort"), COLHDR_RSIZE_SHORT, COLDESC_RSIZE_SHORT, &ColSizeShortGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2].size), -1, false, LVCFMT_RIGHT }, - { _T("Newer"), COLHDR_NEWER, COLDESC_NEWER, &ColNewerGet, &ColNewerSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Lversion"), COLHDR_LVERSION, COLDESC_LVERSION, &ColLversionGet, &ColLversionSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Mversion"), COLHDR_MVERSION, COLDESC_MVERSION, &ColRversionGet, &ColRversionSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Rversion"), COLHDR_RVERSION, COLDESC_RVERSION, &ColRversionGet, &ColRversionSort, 0, -1, true, LVCFMT_LEFT }, - { _T("StatusAbbr"), COLHDR_RESULT_ABBR, COLDESC_RESULT_ABBR, &ColStatusAbbrGet, &ColStatusSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Binary"), COLHDR_BINARY, COLDESC_BINARY, &ColBinGet, &ColBinSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Lattr"), COLHDR_LATTRIBUTES, COLDESC_LATTRIBUTES, &ColAttrGet, &ColAttrSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].flags), -1, true, LVCFMT_LEFT }, - { _T("Mattr"), COLHDR_MATTRIBUTES, COLDESC_MATTRIBUTES, &ColAttrGet, &ColAttrSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].flags), -1, true, LVCFMT_LEFT }, - { _T("Rattr"), COLHDR_RATTRIBUTES, COLDESC_RATTRIBUTES, &ColAttrGet, &ColAttrSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2].flags), -1, true, LVCFMT_LEFT }, - { _T("Lencoding"), COLHDR_LENCODING, COLDESC_LENCODING, &ColEncodingGet, &ColEncodingSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0]), -1, true, LVCFMT_LEFT }, - { _T("Mencoding"), COLHDR_MENCODING, COLDESC_MENCODING, &ColEncodingGet, &ColEncodingSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1]), -1, true, LVCFMT_LEFT }, - { _T("Rencoding"), COLHDR_RENCODING, COLDESC_RENCODING, &ColEncodingGet, &ColEncodingSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2]), -1, true, LVCFMT_LEFT }, - { _T("Snsdiffs"), COLHDR_NSDIFFS, COLDESC_NSDIFFS, ColDiffsGet, ColDiffsSort, FIELD_OFFSET(DIFFITEM, nsdiffs), -1, false, LVCFMT_RIGHT }, - { _T("Snidiffs"), COLHDR_NIDIFFS, COLDESC_NIDIFFS, ColDiffsGet, ColDiffsSort, FIELD_OFFSET(DIFFITEM, nidiffs), -1, false, LVCFMT_RIGHT }, - { _T("Leoltype"), COLHDR_LEOL_TYPE, COLDESC_LEOL_TYPE, &ColLEOLTypeGet, &ColAttrSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Meoltype"), COLHDR_MEOL_TYPE, COLDESC_MEOL_TYPE, &ColMEOLTypeGet, &ColAttrSort, 0, -1, true, LVCFMT_LEFT }, - { _T("Reoltype"), COLHDR_REOL_TYPE, COLDESC_REOL_TYPE, &ColREOLTypeGet, &ColAttrSort, 0, -1, true, LVCFMT_LEFT }, + { _T("Name"), COLHDR_FILENAME, COLDESC_FILENAME, &ColFileNameGet, &ColFileNameSort, 0, 0, true, DirColInfo::ALIGN_LEFT }, + { _T("Path"), COLHDR_DIR, COLDESC_DIR, &ColPathGet, &ColPathSort, 0, 1, true, DirColInfo::ALIGN_LEFT }, + { _T("Status"), COLHDR_RESULT, COLDESC_RESULT, &ColStatusGet, &ColStatusSort, 0, 2, true, DirColInfo::ALIGN_LEFT }, + { _T("Lmtime"), COLHDR_LTIMEM, COLDESC_LTIMEM, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].mtime), 3, false, DirColInfo::ALIGN_LEFT }, + { _T("Mmtime"), COLHDR_MTIMEM, COLDESC_MTIMEM, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].mtime), 4, false, DirColInfo::ALIGN_LEFT }, + { _T("Rmtime"), COLHDR_RTIMEM, COLDESC_RTIMEM, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2].mtime), 5, false, DirColInfo::ALIGN_LEFT }, + { _T("Lctime"), COLHDR_LTIMEC, COLDESC_LTIMEC, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].ctime), -1, false, DirColInfo::ALIGN_LEFT }, + { _T("Mctime"), COLHDR_MTIMEC, COLDESC_MTIMEC, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].ctime), -1, false, DirColInfo::ALIGN_LEFT }, + { _T("Rctime"), COLHDR_RTIMEC, COLDESC_RTIMEC, &ColTimeGet, &ColTimeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2].ctime), -1, false, DirColInfo::ALIGN_LEFT }, + { _T("Ext"), COLHDR_EXTENSION, COLDESC_EXTENSION, &ColExtGet, &ColExtSort, 0, 6, true, DirColInfo::ALIGN_LEFT }, + { _T("Lsize"), COLHDR_LSIZE, COLDESC_LSIZE, &ColSizeGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].size), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("Msize"), COLHDR_MSIZE, COLDESC_MSIZE, &ColSizeGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].size), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("Rsize"), COLHDR_RSIZE, COLDESC_RSIZE, &ColSizeGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2].size), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("LsizeShort"), COLHDR_LSIZE_SHORT, COLDESC_LSIZE_SHORT, &ColSizeShortGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].size), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("MsizeShort"), COLHDR_MSIZE_SHORT, COLDESC_MSIZE_SHORT, &ColSizeShortGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].size), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("RsizeShort"), COLHDR_RSIZE_SHORT, COLDESC_RSIZE_SHORT, &ColSizeShortGet, &ColSizeSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2].size), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("Newer"), COLHDR_NEWER, COLDESC_NEWER, &ColNewerGet, &ColNewerSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Lversion"), COLHDR_LVERSION, COLDESC_LVERSION, &ColLversionGet, &ColLversionSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Mversion"), COLHDR_MVERSION, COLDESC_MVERSION, &ColRversionGet, &ColRversionSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Rversion"), COLHDR_RVERSION, COLDESC_RVERSION, &ColRversionGet, &ColRversionSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("StatusAbbr"), COLHDR_RESULT_ABBR, COLDESC_RESULT_ABBR, &ColStatusAbbrGet, &ColStatusSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Binary"), COLHDR_BINARY, COLDESC_BINARY, &ColBinGet, &ColBinSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Lattr"), COLHDR_LATTRIBUTES, COLDESC_LATTRIBUTES, &ColAttrGet, &ColAttrSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0].flags), -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Mattr"), COLHDR_MATTRIBUTES, COLDESC_MATTRIBUTES, &ColAttrGet, &ColAttrSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1].flags), -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Rattr"), COLHDR_RATTRIBUTES, COLDESC_RATTRIBUTES, &ColAttrGet, &ColAttrSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2].flags), -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Lencoding"), COLHDR_LENCODING, COLDESC_LENCODING, &ColEncodingGet, &ColEncodingSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[0]), -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Mencoding"), COLHDR_MENCODING, COLDESC_MENCODING, &ColEncodingGet, &ColEncodingSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[1]), -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Rencoding"), COLHDR_RENCODING, COLDESC_RENCODING, &ColEncodingGet, &ColEncodingSort, FIELD_OFFSET(DIFFITEM, diffFileInfo[2]), -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Snsdiffs"), COLHDR_NSDIFFS, COLDESC_NSDIFFS, ColDiffsGet, ColDiffsSort, FIELD_OFFSET(DIFFITEM, nsdiffs), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("Snidiffs"), COLHDR_NIDIFFS, COLDESC_NIDIFFS, ColDiffsGet, ColDiffsSort, FIELD_OFFSET(DIFFITEM, nidiffs), -1, false, DirColInfo::ALIGN_RIGHT }, + { _T("Leoltype"), COLHDR_LEOL_TYPE, COLDESC_LEOL_TYPE, &ColLEOLTypeGet, &ColAttrSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Meoltype"), COLHDR_MEOL_TYPE, COLDESC_MEOL_TYPE, &ColMEOLTypeGet, &ColAttrSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, + { _T("Reoltype"), COLHDR_REOL_TYPE, COLDESC_REOL_TYPE, &ColREOLTypeGet, &ColAttrSort, 0, -1, true, DirColInfo::ALIGN_LEFT }, }; /** @@ -1066,16 +1048,16 @@ const int g_ncols3 = countof(f_cols3); * @brief Registry base value name for saving/loading info for this column */ String -CDirView::GetColRegValueNameBase(int col) const +DirViewColItems::GetColRegValueNameBase(int col) const { - if (GetDocument()->m_nDirs < 3) + if (m_nDirs < 3) { - ASSERT(col>=0 && col=0 && col=0 && col=0 && colm_nDirs < 3) + if (m_nDirs < 3) { - ASSERT(col>=0 && col=0 && col=0 && col=0 && colm_nDirs < 3) + if (m_nDirs < 3) { if (col < 0 || col >= countof(f_cols)) { - ASSERT(0); // fix caller, should not ask for nonexistent columns + assert(0); // fix caller, should not ask for nonexistent columns return 0; } return &f_cols[col]; @@ -1117,7 +1099,7 @@ CDirView::DirViewColItems_GetDirColInfo(int col) const { if (col < 0 || col >= countof(f_cols3)) { - ASSERT(0); // fix caller, should not ask for nonexistent columns + assert(0); // fix caller, should not ask for nonexistent columns return 0; } return &f_cols3[col]; @@ -1128,14 +1110,14 @@ CDirView::DirViewColItems_GetDirColInfo(int col) const * @brief Check if specified physical column has specified resource id name */ bool -CDirView::IsColById(int col, const char *idname) const +DirViewColItems::IsColById(int col, const char *idname) const { - int nDirs = GetDocument()->m_nDirs; + int nDirs = m_nDirs; if (nDirs < 3) { if (col < 0 || col >= countof(f_cols)) { - ASSERT(0); // fix caller, should not ask for nonexistent columns + assert(0); // fix caller, should not ask for nonexistent columns return false; } return f_cols[col].idName == idname; @@ -1144,7 +1126,7 @@ CDirView::IsColById(int col, const char *idname) const { if (col < 0 || col >= sizeof(f_cols3)/sizeof(f_cols3[0])) { - ASSERT(0); // fix caller, should not ask for nonexistent columns + assert(0); // fix caller, should not ask for nonexistent columns return false; } return f_cols3[col].idName == idname; @@ -1155,7 +1137,7 @@ CDirView::IsColById(int col, const char *idname) const * @brief Is specified physical column the name column? */ bool -CDirView::IsColName(int col) const +DirViewColItems::IsColName(int col) const { return IsColById(col, COLHDR_FILENAME); } @@ -1163,7 +1145,7 @@ CDirView::IsColName(int col) const * @brief Is specified physical column the left modification time column? */ bool -CDirView::IsColLmTime(int col) const +DirViewColItems::IsColLmTime(int col) const { return IsColById(col, COLHDR_LTIMEM); } @@ -1171,7 +1153,7 @@ CDirView::IsColLmTime(int col) const * @brief Is specified physical column the middle modification time column? */ bool -CDirView::IsColMmTime(int col) const +DirViewColItems::IsColMmTime(int col) const { return IsColById(col, COLHDR_MTIMEM); } @@ -1179,7 +1161,7 @@ CDirView::IsColMmTime(int col) const * @brief Is specified physical column the right modification time column? */ bool -CDirView::IsColRmTime(int col) const +DirViewColItems::IsColRmTime(int col) const { return IsColById(col, COLHDR_RTIMEM); } @@ -1187,7 +1169,7 @@ CDirView::IsColRmTime(int col) const * @brief Is specified physical column the full status (result) column? */ bool -CDirView::IsColStatus(int col) const +DirViewColItems::IsColStatus(int col) const { return IsColById(col, COLHDR_RESULT); } @@ -1195,7 +1177,7 @@ CDirView::IsColStatus(int col) const * @brief Is specified physical column the full status (result) column? */ bool -CDirView::IsColStatusAbbr(int col) const +DirViewColItems::IsColStatusAbbr(int col) const { return IsColById(col, COLHDR_RESULT_ABBR); } diff --git a/Src/DirViewColItems.h b/Src/DirViewColItems.h index 433fc75ea..60e06b42d 100644 --- a/Src/DirViewColItems.h +++ b/Src/DirViewColItems.h @@ -11,6 +11,8 @@ #ifndef DirViewColItems_h #define DirViewColItems_h +#include "UnicodeString.h" + class CDiffContext; // DirViewColItems typedefs @@ -23,13 +25,19 @@ typedef int (*ColSortFncPtrType)(const CDiffContext *, const void *, const void */ struct DirColInfo { - LPCTSTR regName; /**< Internal name used for registry entries etc */ + enum ColAlign + { + ALIGN_LEFT = 0, // LVCFMT_LEFT + ALIGN_RIGHT = 1, // LVCFMT_RIGHT + ALIGN_CENTER = 2 // LVCFMT_CENTER + }; + const TCHAR *regName; /**< Internal name used for registry entries etc */ // localized string resources const char *idName; /**< Displayed name, ID of string resource */ const char *idDesc; /**< Description, ID of string resource */ ColGetFncPtrType getfnc; /**< Handler giving display string */ ColSortFncPtrType sortfnc; /**< Handler for sorting this column */ - SIZE_T offset; + size_t offset; int physicalIndex; /**< Current physical index, -1 if not displayed */ bool defSortUp; /**< Does column start with ascending sort (most do) */ int alignment; /**< Column alignment */ @@ -38,5 +46,22 @@ struct DirColInfo extern const int g_ncols; extern const int g_ncols3; +class DirViewColItems +{ +public: + DirViewColItems(int nDirs): m_nDirs(nDirs) {} + String GetColRegValueNameBase(int col) const; + int GetColDefaultOrder(int col) const; + const DirColInfo * GetDirColInfo(int col) const; + bool IsColById(int col, const char *idname) const; + bool IsColName(int col) const; + bool IsColLmTime(int col) const; + bool IsColMmTime(int col) const; + bool IsColRmTime(int col) const; + bool IsColStatus(int col) const; + bool IsColStatusAbbr(int col) const; +private: + int m_nDirs; +}; #endif // DirViewColItems_h diff --git a/Src/Merge.vcproj b/Src/Merge.vcproj index c14e9a0a9..5a35bb11c 100644 --- a/Src/Merge.vcproj +++ b/Src/Merge.vcproj @@ -5001,7 +5001,8 @@ Name="VCCLCompilerTool" Optimization="1" AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> + PreprocessorDefinitions="" + UsePrecompiledHeader="0"/> @@ -5010,6 +5011,7 @@ Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + UsePrecompiledHeader="0" BrowseInformation="1"/> + PreprocessorDefinitions="" + UsePrecompiledHeader="0"/> MinSpace %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing Disabled -- 2.11.0