2024-12-21 10:04:04 +08:00
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
#include "NxFileSystemTool.h"
|
|
|
|
|
|
#include "NxFileSystemToolDlg.h"
|
|
|
|
|
|
#include "NewFolderDlg.h"
|
|
|
|
|
|
#include "ExportBrowseFolder.h"
|
|
|
|
|
|
#include "WorkDialog.h"
|
|
|
|
|
|
#include "BuildDivisionPacking.h"
|
|
|
|
|
|
#include "BuildDivisionPackingCapacity.h"
|
|
|
|
|
|
#include "LogWnd.h"
|
|
|
|
|
|
#include "SundriesFunc.h"
|
|
|
|
|
|
#include "SHFolderDialog.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include <list>
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
|
|
#define new DEBUG_NEW
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#pragma warning(disable:4311)
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> CAboutDlg <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|
|
|
|
|
|
|
|
|
|
|
class CAboutDlg : public CDialog
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CAboutDlg();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
enum { IDD = IDD_ABOUTBOX };
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
protected:
|
|
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
|
{
|
|
|
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
|
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CNxFileSystemToolDlg <20><>ȭ <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CNxFileSystemToolDlg::CNxFileSystemToolDlg(CWnd* pParent /*=NULL*/)
|
|
|
|
|
|
: CDialog(CNxFileSystemToolDlg::IDD, pParent)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
|
|
|
|
|
|
|
|
|
|
|
m_iOverwriteType = -1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
|
{
|
|
|
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
|
|
|
|
|
|
|
|
DDX_Control(pDX, IDC_FILE_LIST, m_FileList);
|
|
|
|
|
|
DDX_Control(pDX, IDC_NAVI , m_Edit);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CNxFileSystemToolDlg, CDialog)
|
|
|
|
|
|
ON_WM_SYSCOMMAND()
|
|
|
|
|
|
ON_WM_PAINT()
|
|
|
|
|
|
ON_WM_QUERYDRAGICON()
|
|
|
|
|
|
//}}AFX_MSG_MAP
|
|
|
|
|
|
ON_WM_SIZE()
|
|
|
|
|
|
ON_COMMAND(ID_LOADSYSTEM, OnLoadsystem)
|
|
|
|
|
|
ON_COMMAND(ID_NEWSYSTEM, OnNewsystem)
|
|
|
|
|
|
ON_COMMAND(ID_FILESYSTEM_CLOSE, OnFilesystemClose)
|
|
|
|
|
|
ON_COMMAND(ID_INSERT_FILE, OnInsertFile)
|
|
|
|
|
|
ON_MESSAGE(WM_COMPLETE_MSG, OnCompleteMsg)
|
|
|
|
|
|
ON_MESSAGE(WM_COMPLETE_OPTIMIZE, OnComplete_Optimize)
|
|
|
|
|
|
ON_MESSAGE(WM_COMPLETE_EXPORT, OnComplete_Export)
|
|
|
|
|
|
ON_COMMAND(ID_NEW_FOLDER, OnNewFolder)
|
|
|
|
|
|
ON_COMMAND(ID_REMOVE, OnRemove)
|
|
|
|
|
|
ON_NOTIFY(NM_DBLCLK, IDC_FILE_LIST, OnNMDblclkFileList)
|
|
|
|
|
|
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_FILE_LIST, OnLvnEndlabeleditFileList)
|
|
|
|
|
|
ON_COMMAND(ID_IPAC_EXIT, OnIpacExit)
|
|
|
|
|
|
ON_COMMAND(ID_OPTIMIZE, OnOptimize)
|
|
|
|
|
|
ON_COMMAND(ID_RENAME, OnRename)
|
|
|
|
|
|
ON_COMMAND(ID_EXPORT, OnExport)
|
|
|
|
|
|
ON_COMMAND(ID_ABOUT, OnAbout)
|
|
|
|
|
|
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
|
|
|
|
|
|
ON_COMMAND(ID_MENU_DIV_PACKING, &CNxFileSystemToolDlg::OnMenuDivPacking)
|
|
|
|
|
|
ON_COMMAND(ID_MENU_DIV_PACKING_CAPACITY, &CNxFileSystemToolDlg::OnMenuDivPackingCapacity)
|
|
|
|
|
|
ON_COMMAND(ID_PATCH, &CNxFileSystemToolDlg::OnPatch)
|
|
|
|
|
|
ON_MESSAGE(WM_COMPLETE_PATCH, OnCompletePatch)
|
|
|
|
|
|
ON_COMMAND(ID_COMPARE, &CNxFileSystemToolDlg::OnCompare)
|
|
|
|
|
|
ON_COMMAND(ID_INSERT_FOLDER, &CNxFileSystemToolDlg::OnInsertFolder)
|
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CNxFileSystemToolDlg <20><EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL
|
|
|
|
|
|
CNxFileSystemToolDlg::OnInitDialog()
|
|
|
|
|
|
{
|
|
|
|
|
|
CDialog::OnInitDialog();
|
|
|
|
|
|
|
|
|
|
|
|
// <20>ý<EFBFBD><C3BD><EFBFBD> <20><EFBFBD><DEB4><EFBFBD> "<22><><EFBFBD><EFBFBD>..." <20><EFBFBD> <20><EFBFBD><D7B8><EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
|
|
|
|
|
|
// IDM_ABOUTBOX<4F><58> <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD> <20>մϴ<D5B4>.
|
|
|
|
|
|
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
|
|
|
|
|
ASSERT(IDM_ABOUTBOX < 0xF000);
|
|
|
|
|
|
|
|
|
|
|
|
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
|
|
|
|
|
if (pSysMenu != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CString strAboutMenu;
|
|
|
|
|
|
strAboutMenu.LoadString(IDS_ABOUTBOX);
|
|
|
|
|
|
if (!strAboutMenu.IsEmpty())
|
|
|
|
|
|
{
|
|
|
|
|
|
pSysMenu->AppendMenu(MF_SEPARATOR);
|
|
|
|
|
|
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// <20><> <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20><> â<><C3A2> <20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD>쿡<EFBFBD><ECBFA1>
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ũ<EFBFBD><C5A9> <20><> <20>۾<EFBFBD><DBBE><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
SetIcon(m_hIcon, TRUE); // ū <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
SetIcon(m_hIcon, FALSE); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20>߰<EFBFBD> <20>ʱ<EFBFBD>ȭ <20>۾<EFBFBD><DBBE><EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
|
|
|
|
|
|
m_FileList.DragAcceptFiles();
|
|
|
|
|
|
m_FileList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
|
|
|
|
|
|
|
|
|
|
|
|
RECT Rect;
|
|
|
|
|
|
m_FileList.GetWindowRect(&Rect);
|
|
|
|
|
|
|
|
|
|
|
|
const int COLUMN_WIDTH_GAB = 4;
|
|
|
|
|
|
const int SIZECOLUMN_WIDTH = 300;
|
|
|
|
|
|
const int SIZECOLUMN_WIDTH2 = 80;
|
|
|
|
|
|
|
|
|
|
|
|
m_FileList.InsertColumn(0,_T("<EFBFBD≯<EFBFBD>"),LVCFMT_LEFT,SIZECOLUMN_WIDTH);
|
|
|
|
|
|
m_FileList.InsertColumn(1,_T("ũ<EFBFBD><EFBFBD>"),LVCFMT_LEFT,SIZECOLUMN_WIDTH2);
|
|
|
|
|
|
m_FileList.InsertColumn(2,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD>"),LVCFMT_LEFT,SIZECOLUMN_WIDTH2);
|
|
|
|
|
|
m_FileList.InsertColumn(3,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),LVCFMT_LEFT,SIZECOLUMN_WIDTH);
|
|
|
|
|
|
|
|
|
|
|
|
m_ImageList.Create(IDB_FILE_LIST_ICON,16,2,RGB(0,255,0));
|
|
|
|
|
|
m_FileList.SetImageList(&m_ImageList,LVSIL_SMALL);
|
|
|
|
|
|
|
|
|
|
|
|
m_bWorking = false; // <20>۾<EFBFBD><DBBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD><C6B4><EFBFBD>.. <20>ʱ<EFBFBD>ȭ
|
|
|
|
|
|
|
|
|
|
|
|
m_FileList.SetFocus();
|
|
|
|
|
|
|
|
|
|
|
|
// LogWnd::CreateLog();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE; // <20><>Ʈ<EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TRUE<55><45> <20><>ȯ<EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
|
|
|
|
|
|
{
|
|
|
|
|
|
CAboutDlg dlgAbout;
|
|
|
|
|
|
dlgAbout.DoModal();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
CDialog::OnSysCommand(nID, lParam);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȭ <20><><EFBFBD>ڿ<EFBFBD> <20>ּ<EFBFBD>ȭ <20><><EFBFBD>߸<EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><D7B8><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20>Ʒ<EFBFBD> <20>ڵ尡 <20>ʿ<EFBFBD><CABF>մϴ<D5B4>. <20><><EFBFBD><EFBFBD>/<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> MFC <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20><><EFBFBD>쿡<EFBFBD><ECBFA1>
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD> <20><> <20>۾<EFBFBD><DBBE><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnPaint()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (IsIconic())
|
|
|
|
|
|
{
|
|
|
|
|
|
CPaintDC dc(this); // <20><EFBFBD><D7B8>⸦ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD> <20><><EFBFBD>ؽ<EFBFBD>Ʈ
|
|
|
|
|
|
|
|
|
|
|
|
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
|
|
|
|
|
|
|
|
|
|
|
|
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20>簢<EFBFBD><E7B0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB5A5> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|
|
|
|
|
int cxIcon = GetSystemMetrics(SM_CXICON);
|
|
|
|
|
|
int cyIcon = GetSystemMetrics(SM_CYICON);
|
|
|
|
|
|
CRect rect;
|
|
|
|
|
|
GetClientRect(&rect);
|
|
|
|
|
|
int x = (rect.Width() - cxIcon + 1) / 2;
|
|
|
|
|
|
int y = (rect.Height() - cyIcon + 1) / 2;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><D7B8>ϴ<EFBFBD>.
|
|
|
|
|
|
dc.DrawIcon(x, y, m_hIcon);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
CDialog::OnPaint();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ּ<EFBFBD>ȭ<EFBFBD><C8AD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ȿ<EFBFBD> Ŀ<><C4BF><EFBFBD><EFBFBD> ǥ<>õǵ<C3B5><C7B5><EFBFBD> <20>ý<EFBFBD><C3BD>ۿ<EFBFBD><DBBF><EFBFBD>
|
|
|
|
|
|
// <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
HCURSOR
|
|
|
|
|
|
CNxFileSystemToolDlg::OnQueryDragIcon()
|
|
|
|
|
|
{
|
|
|
|
|
|
return static_cast<HCURSOR>(m_hIcon);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL
|
|
|
|
|
|
CNxFileSystemToolDlg::PreTranslateMessage(MSG* pMsg)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
switch(pMsg->wParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
case VK_ESCAPE:
|
|
|
|
|
|
pMsg->wParam=NULL; // ESC <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|
|
|
|
|
break;
|
|
|
|
|
|
case VK_RETURN:
|
|
|
|
|
|
pMsg->wParam=NULL; // <20><><EFBFBD>͵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
switch(pMsg->message)
|
|
|
|
|
|
{
|
|
|
|
|
|
case WM_DROPFILES:
|
|
|
|
|
|
if(pMsg->hwnd == m_FileList.GetSafeHwnd())
|
|
|
|
|
|
DropFile((HDROP)pMsg->wParam);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case WM_KEYDOWN:
|
|
|
|
|
|
if(pMsg->hwnd == m_FileList.GetSafeHwnd() && pMsg->wParam == VK_DELETE)
|
|
|
|
|
|
OnRemove();
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return CDialog::PreTranslateMessage(pMsg);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnSize(UINT nType, int cx, int cy)
|
|
|
|
|
|
{
|
|
|
|
|
|
CDialog::OnSize(nType, cx, cy);
|
|
|
|
|
|
|
|
|
|
|
|
const int SIZECOLUMN_WIDTH = 300;
|
|
|
|
|
|
const int SIZECOLUMN_WIDTH2 = 60;
|
|
|
|
|
|
|
|
|
|
|
|
CRect rt;
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
if (m_FileList.GetSafeHwnd() != NULL )
|
|
|
|
|
|
{
|
|
|
|
|
|
m_FileList.SetWindowPos(NULL,10,35,cx-22,cy-48,SWP_NOZORDER);
|
|
|
|
|
|
//Client <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<>⸦ <20><><EFBFBD>Ѵ<EFBFBD>.
|
|
|
|
|
|
m_FileList.GetClientRect(&rt);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
|
CALLBACK FileListItemSortFunc(LPARAM lParam1,LPARAM lParam2,LPARAM /*lParamSort*/)
|
|
|
|
|
|
{
|
|
|
|
|
|
SNxFileInfo* pFH1 = (SNxFileInfo*)lParam1;
|
|
|
|
|
|
SNxFileInfo* pFH2 = (SNxFileInfo*)lParam2;
|
|
|
|
|
|
|
|
|
|
|
|
CString strItem1;
|
|
|
|
|
|
if(pFH1->nFileType == NFS_DIR)
|
|
|
|
|
|
{
|
|
|
|
|
|
strItem1.Format(_T("!%s"),pFH1->szFileName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
strItem1 = pFH1->szFileName;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CString strItem2;
|
|
|
|
|
|
if(pFH2->nFileType == NFS_DIR)
|
|
|
|
|
|
{
|
|
|
|
|
|
strItem2.Format(_T("!%s"),pFH2->szFileName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
strItem2 = pFH2->szFileName;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return _tcscmp(strItem1,strItem2);
|
|
|
|
|
|
}
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::UpdateFileList()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_FileList.DeleteAllItems();
|
|
|
|
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
|
CString strFileSize;
|
|
|
|
|
|
CString OriFileSize;
|
|
|
|
|
|
|
|
|
|
|
|
std::vector< SPackingFileInfo * > vecFileInfo;
|
|
|
|
|
|
std::vector< std::string > vecDirList;
|
|
|
|
|
|
|
|
|
|
|
|
g_FileSystem.GetFileInfoListCurDir( vecFileInfo );
|
|
|
|
|
|
g_FileSystem.GetDirListCurDir( vecDirList );
|
|
|
|
|
|
m_vecFileInfo.resize( vecFileInfo.size() + vecDirList.size() );
|
|
|
|
|
|
for( i = 0; i < ( int )vecFileInfo.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
_GetFullFileName( m_vecFileInfo[ i ].szFileName, _countof(m_vecFileInfo[ i ].szFileName), vecFileInfo[ i ]->szFileName );
|
|
|
|
|
|
m_vecFileInfo[ i ].dwCompressSize = vecFileInfo[ i ]->dwCompressSize;
|
|
|
|
|
|
m_vecFileInfo[ i ].dwOriginalSize = vecFileInfo[ i ]->dwOriginalSize;
|
|
|
|
|
|
m_vecFileInfo[ i ].nFileType = NFS_FILE;
|
|
|
|
|
|
}
|
|
|
|
|
|
for( i = 0; i < ( int )vecDirList.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
strcpy_s( m_vecFileInfo[ vecFileInfo.size() + i ].szFileName, _MAX_PATH, vecDirList[ i ].c_str() );
|
|
|
|
|
|
m_vecFileInfo[ vecFileInfo.size() + i ].nFileType = NFS_DIR;
|
|
|
|
|
|
}
|
|
|
|
|
|
for( i = 0; i < ( int )m_vecFileInfo.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
m_FileList.InsertItem( i, m_vecFileInfo[ i ].szFileName, 1 );
|
|
|
|
|
|
m_FileList.SetItemData( i, ( DWORD )( &m_vecFileInfo[ i ] ) );
|
|
|
|
|
|
|
|
|
|
|
|
if( m_vecFileInfo[ i ].nFileType == NFS_FILE )
|
|
|
|
|
|
{
|
|
|
|
|
|
strFileSize.Format(_T("%dKB"),( m_vecFileInfo[ i ].dwCompressSize + 999 ) / 1000 );
|
|
|
|
|
|
m_FileList.SetItemText(i,1,LPCTSTR(strFileSize));
|
|
|
|
|
|
|
|
|
|
|
|
OriFileSize.Format(_T("%dKB"),( m_vecFileInfo[ i ].dwOriginalSize + 999 ) / 1000 );
|
|
|
|
|
|
m_FileList.SetItemText(i,2,LPCTSTR(OriFileSize));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
m_FileList.SortItems(FileListItemSortFunc,NULL);
|
|
|
|
|
|
|
|
|
|
|
|
this->SetDlgItemText(IDC_NAVI,g_FileSystem.GetCurDir());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnLoadsystem()
|
|
|
|
|
|
{
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return ;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CFileDialog Dlg(TRUE,_T(".pak"),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(*.pak)|*.pak||"),NULL);
|
|
|
|
|
|
if(Dlg.DoModal() == IDCANCEL) return;
|
|
|
|
|
|
|
|
|
|
|
|
if(!g_FileSystem.OpenFileSystem(LPCTSTR(Dlg.GetPathName())))
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>ζ<EFBFBD><CEB6><EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|
|
|
|
|
if( !g_FileSystem.OpenFileSystem(LPCTSTR(Dlg.GetPathName()), true ))
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>Ͻý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD><CFBF>ų<EFBFBD> <20>߸<EFBFBD><DFB8><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Դϴ<D4B4>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
m_strPath = Dlg.GetPathName();
|
|
|
|
|
|
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnNewsystem()
|
|
|
|
|
|
{
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return ;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CFileDialog Dlg(FALSE,_T(".Nfs"),_T("NewSystem.pak"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(*.pak)|*.pak||"),NULL);
|
|
|
|
|
|
if(Dlg.DoModal() == IDCANCEL) return;
|
|
|
|
|
|
|
|
|
|
|
|
if(!g_FileSystem.NewFileSystem(LPCTSTR(Dlg.GetPathName())))
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD> <20><><EFBFBD>Ͻý<CFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if(!g_FileSystem.OpenFileSystem(LPCTSTR(Dlg.GetPathName())))
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
m_strPath = Dlg.GetPathName();
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnFilesystemClose()
|
|
|
|
|
|
{
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return ;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
g_FileSystem.CloseFileSystem();
|
|
|
|
|
|
|
|
|
|
|
|
m_strPath.Empty();
|
|
|
|
|
|
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL
|
|
|
|
|
|
CNxFileSystemToolDlg::DestroyWindow()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: <20><><EFBFBD> Ư<><C6AF>ȭ<EFBFBD><C8AD> <20>ڵ带 <20>߰<EFBFBD> <20><>/<2F>Ǵ<EFBFBD> <20>⺻ Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
SAFE_DELETE (g_pAddThread);
|
|
|
|
|
|
|
|
|
|
|
|
return CDialog::DestroyWindow();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LRESULT
|
|
|
|
|
|
CNxFileSystemToolDlg::OnCompleteMsg(WPARAM wParam, LPARAM lParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
SAFE_DELETE (g_pAddThread);
|
|
|
|
|
|
m_bWorking = false;
|
|
|
|
|
|
::PostMessage(g_pWorking->GetSafeHwnd(),WM_DESTROY,0,0);
|
|
|
|
|
|
SAFE_DELETE(g_pWorking);
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CNxFileSystemToolDlg::OnInsertFile()
|
|
|
|
|
|
{
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
if(!m_FileList.GetItemCount())
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>Ͻý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CFileDialog Dlg(TRUE);
|
|
|
|
|
|
if(Dlg.DoModal() == IDCANCEL)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
TCHAR strName[_MAX_FNAME];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_FileSystem.GetNameOnly(strName,Dlg.GetPathName().GetBuffer());
|
|
|
|
|
|
/* if(g_FileSystem.CheckNameExist(strName))
|
|
|
|
|
|
{
|
|
|
|
|
|
if(AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD> '<27><>' <20><>\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻ÷<CFBD><C3B7><EFBFBD> '<27>ƴϿ<C6B4>' <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ֽʽÿ<CABD>! "),MB_YESNO) == IDNO) return;
|
|
|
|
|
|
|
|
|
|
|
|
g_FileSystem.Remove(strName);
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
// <20>ȳ<EFBFBD> <20>ڽ<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
|
|
|
|
|
DrawWorking();
|
|
|
|
|
|
|
|
|
|
|
|
AddFileInfo add;
|
|
|
|
|
|
add.FileName = LPCTSTR( Dlg.GetPathName() );
|
|
|
|
|
|
add.FilePath = g_FileSystem.GetCurDir();
|
|
|
|
|
|
|
|
|
|
|
|
g_AddFileList.push_back(add);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!
|
|
|
|
|
|
g_pAddThread = new CFileImportThread(this->GetSafeHwnd());
|
|
|
|
|
|
g_pAddThread->Start();
|
|
|
|
|
|
m_bWorking = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CNxFileSystemToolDlg::OnInsertFolder()
|
|
|
|
|
|
{
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
if(!m_FileList.GetItemCount())
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>Ͻý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CString strSelectedPath;
|
|
|
|
|
|
if( !CSHFolderDialog::BrowseForFolder( strSelectedPath, _T("Choose a Folder:"), m_hWnd, 0, 0, NULL ) == IDOK )
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SearchFolderAndAddFile( strSelectedPath.GetBuffer() );
|
|
|
|
|
|
|
|
|
|
|
|
// <20>ȳ<EFBFBD> <20>ڽ<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
|
|
|
|
|
DrawWorking();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!
|
|
|
|
|
|
g_pAddThread = new CFileImportThread(this->GetSafeHwnd());
|
|
|
|
|
|
g_pAddThread->Start();
|
|
|
|
|
|
m_bWorking = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CNxFileSystemToolDlg::SearchFolderAndAddFile( const char *szFolderName )
|
|
|
|
|
|
{
|
|
|
|
|
|
char acCommonBuffer[1024];
|
|
|
|
|
|
sprintf(acCommonBuffer, szFolderName);
|
|
|
|
|
|
strcat(acCommonBuffer, "/*.*");
|
|
|
|
|
|
|
|
|
|
|
|
HANDLE hSearchFile;
|
|
|
|
|
|
WIN32_FIND_DATA wfd;
|
|
|
|
|
|
BOOL bResult = TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ȿ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<><C3A3> <20><>ȸ<EFBFBD>Ѵ<EFBFBD>.
|
|
|
|
|
|
hSearchFile = FindFirstFile(acCommonBuffer, &wfd);
|
|
|
|
|
|
if (hSearchFile == INVALID_HANDLE_VALUE)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
std::string strSubFolder;
|
|
|
|
|
|
std::string::size_type szLength;
|
|
|
|
|
|
if( m_strRootFolder.length() == 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string strTemp = szFolderName;
|
|
|
|
|
|
szLength = strTemp.rfind( "\\" );
|
|
|
|
|
|
strTemp.erase( szLength );
|
|
|
|
|
|
m_strRootFolder = strTemp;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
std::string strFolderName = szFolderName;
|
|
|
|
|
|
strFolderName.erase( 0, m_strRootFolder.length() );
|
|
|
|
|
|
strSubFolder = strFolderName + "\\";
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> ã<>Ҵٸ<D2B4>,
|
|
|
|
|
|
while (bResult)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><><EFBFBD>̴<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> . <20><> .. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD>. <20>̰<EFBFBD> <20>׳<EFBFBD> <20>ѱ<EFBFBD><D1B1><EFBFBD>, <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
|
|
|
|
|
if (wfd.cFileName[0] != '.')
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>.
|
|
|
|
|
|
sprintf(acCommonBuffer, "%s\\%s", szFolderName, wfd.cFileName);
|
|
|
|
|
|
SearchFolderAndAddFile(acCommonBuffer);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_stricmp(wfd.cFileName, "Thumbs.db"))
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
sprintf(acCommonBuffer, "%s\\%s", szFolderName, wfd.cFileName);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> ũ<>Ⱑ 0<><30> <20>ƴ<EFBFBD> <20><><EFBFBD>쿡<EFBFBD><ECBFA1> <20>߰<EFBFBD><DFB0>Ѵ<EFBFBD>. <20><><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9> 0<><30> <20>ǹ̾<C7B9><CCBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
|
|
|
|
|
HANDLE hFile = CreateFile(acCommonBuffer, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
|
|
|
|
if (GetFileSize(hFile, NULL) != 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
AddFileInfo add;
|
|
|
|
|
|
add.FileName = acCommonBuffer;
|
|
|
|
|
|
add.FilePath = strSubFolder;
|
|
|
|
|
|
|
|
|
|
|
|
g_AddFileList.push_back(add);
|
|
|
|
|
|
}
|
|
|
|
|
|
CloseHandle(hFile);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bResult = FindNextFile(hSearchFile, &wfd);
|
|
|
|
|
|
}
|
|
|
|
|
|
FindClose(hSearchFile);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CNxFileSystemToolDlg::OnNewFolder()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(!m_FileList.GetItemCount())
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>Ͻý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CNewFolderDlg Dlg;
|
|
|
|
|
|
if(Dlg.DoModal() == IDCANCEL) return;
|
|
|
|
|
|
if(Dlg.m_strFolderName.IsEmpty()) return;
|
|
|
|
|
|
|
|
|
|
|
|
// g_FileSystem.AddDirWithChange(LPCTSTR(Dlg.m_strFolderName));
|
|
|
|
|
|
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnRemove()
|
|
|
|
|
|
{
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(!m_FileList.GetItemCount())
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>Ͻý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(!m_FileList.GetSelectedCount()) return;
|
|
|
|
|
|
|
|
|
|
|
|
if(AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD> <20><><EFBFBD><EFBFBD> Ȥ<><C8A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?"), MB_YESNO) == IDYES)
|
|
|
|
|
|
{
|
|
|
|
|
|
CStringArray strRemove;
|
|
|
|
|
|
|
|
|
|
|
|
POSITION Pos = m_FileList.GetFirstSelectedItemPosition();
|
|
|
|
|
|
while(Pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
int iItem = m_FileList.GetNextSelectedItem(Pos);
|
|
|
|
|
|
SNxFileInfo* NxFileInfo = (SNxFileInfo*)m_FileList.GetItemData(iItem);
|
|
|
|
|
|
|
|
|
|
|
|
strRemove.Add(NxFileInfo->szFileName);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for(int i=0;i<strRemove.GetSize();i++) g_FileSystem.Remove(strRemove[i]);
|
|
|
|
|
|
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnNMDblclkFileList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(m_FileList.GetSelectedCount() != 1) return;
|
|
|
|
|
|
|
|
|
|
|
|
NMITEMACTIVATE* pNMItemActivate = (NMITEMACTIVATE*)pNMHDR;
|
|
|
|
|
|
if(pNMItemActivate->iItem >= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
SNxFileInfo *pFH = ( SNxFileInfo * )m_FileList.GetItemData(pNMItemActivate->iItem);
|
|
|
|
|
|
|
|
|
|
|
|
if( pFH->nFileType == NFS_DIR)
|
|
|
|
|
|
{
|
|
|
|
|
|
g_FileSystem.ChangeDir(pFH->szFileName);
|
|
|
|
|
|
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
*pResult = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnLvnEndlabeleditFileList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
|
|
|
|
|
|
if(!pDispInfo->item.pszText) return;
|
|
|
|
|
|
|
|
|
|
|
|
SNxFileInfo *pFH = ( SNxFileInfo * )m_FileList.GetItemData(pDispInfo->item.iItem);
|
|
|
|
|
|
if(!g_FileSystem.Rename(pFH->szFileName,pDispInfo->item.pszText))
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD> <20><><EFBFBD><EFBFBD> Ȥ<><C8A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>!"));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
m_FileList.SetItemText(pDispInfo->item.iItem,0,pDispInfo->item.pszText);
|
|
|
|
|
|
*pResult = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::DropFile(HDROP hDrop)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_AddFileList.clear();
|
|
|
|
|
|
|
|
|
|
|
|
if(!m_FileList.GetItemCount())
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>Ͻý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ( AfxMessageBox(_T("<EFBFBD>巡<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ϲ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ͻý<CFBD><C3BD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?") , MB_YESNO) == IDNO )
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
// <20>ȳ<EFBFBD> <20>ڽ<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
|
|
|
|
|
DrawWorking();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
UINT DragQueryFile( HDROP hDrop, UINT iFile, LPTSTR lpszFile, UINT cch );
|
|
|
|
|
|
|
|
|
|
|
|
iFile<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0xFFFFFFFF<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>쿡<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ӵǾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ
|
|
|
|
|
|
<EFBFBD><EFBFBD>, iFile<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD> <EFBFBD><EFBFBD>ü <EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>, lpszFile<EFBFBD><EFBFBD> NULL<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>쿡<EFBFBD><EFBFBD> null<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
<EFBFBD>ʴ<EFBFBD> <EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<EFBFBD>⸦ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
hDrop : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
iFile : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>մϴ<EFBFBD>.
|
|
|
|
|
|
lpszFile : <EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ƶ帱 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
|
cch : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
int iCount = DragQueryFile(hDrop,0xFFFFFFFF,NULL,0); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ѵ<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
TCHAR strPath[_MAX_PATH];
|
|
|
|
|
|
|
|
|
|
|
|
for(int i=0;i<iCount;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
DragQueryFile(hDrop,i,strPath,_MAX_PATH);
|
|
|
|
|
|
|
|
|
|
|
|
FILE* bFile = _tfopen(strPath, _T("rb")); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴϸ<C6B4> bFile <20><> NULL <20>ɰ<EFBFBD><C9B0>̴<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
if(bFile) // <20><>, <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20>ϴ<EFBFBD> <20>ݰ<EFBFBD>!
|
|
|
|
|
|
fclose(bFile);
|
|
|
|
|
|
|
|
|
|
|
|
TCHAR strName[_MAX_FNAME];
|
|
|
|
|
|
g_FileSystem.GetNameOnly(strName,strPath); // <20><><EFBFBD>θ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EEB3BD>.
|
|
|
|
|
|
|
|
|
|
|
|
if(bFile)
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><D2B0><EFBFBD>..
|
|
|
|
|
|
/* if(g_FileSystem.CheckNameExist(strName))
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_iOverwriteType < 0)
|
|
|
|
|
|
m_iOverwriteType = AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.\n\n <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD> '<27><>' <20><>\n\n <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻ÷<CFBD><C3B7><EFBFBD> '<27>ƴϿ<C6B4>' <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ֽʽÿ<CABD>!") ,MB_YESNO);
|
|
|
|
|
|
|
|
|
|
|
|
if(m_iOverwriteType == IDNO)
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|
|
g_FileSystem.Remove(strName);
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>..
|
|
|
|
|
|
AddFileInfo add;
|
|
|
|
|
|
add.FileName = strPath;
|
|
|
|
|
|
add.FilePath = g_FileSystem.GetCurDir();
|
|
|
|
|
|
g_AddFileList.push_back(add);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!DropFolder(strPath))
|
|
|
|
|
|
{
|
|
|
|
|
|
CString strError;
|
|
|
|
|
|
strError.Format(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>ϴµ<CFB4> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>.\n\n%s"),strPath);
|
|
|
|
|
|
AfxMessageBox(strError);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
m_iOverwriteType = -1;
|
|
|
|
|
|
|
|
|
|
|
|
DragFinish(hDrop);
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!
|
|
|
|
|
|
g_pAddThread = new CFileImportThread(this->GetSafeHwnd());
|
|
|
|
|
|
g_pAddThread->Start();
|
|
|
|
|
|
m_bWorking = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL
|
|
|
|
|
|
CNxFileSystemToolDlg::DropFolder(const TCHAR* strPath)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
char *pFindPtr = strstr( ( char * )strPath, ".svn" );
|
|
|
|
|
|
if( pFindPtr )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( _stricmp( pFindPtr, ".svn" ) == 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
TCHAR strOldPath[_MAX_PATH];
|
|
|
|
|
|
GetCurrentDirectory(_MAX_PATH,strOldPath); // <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>丮<EFBFBD><E4B8AE> <20>˾Ƴ<CBBE><C6B3><EFBFBD>.
|
|
|
|
|
|
SetCurrentDirectory(strPath); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>.??
|
|
|
|
|
|
|
|
|
|
|
|
TCHAR strName[_MAX_FNAME];
|
|
|
|
|
|
g_FileSystem.GetNameOnly(strName,strPath);
|
|
|
|
|
|
|
|
|
|
|
|
/* if(!g_FileSystem.CheckNameExist(strName))
|
|
|
|
|
|
{
|
|
|
|
|
|
g_FileSystem.AddDir(strName);
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
if(!g_FileSystem.ChangeDir(strName))
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
CFileFind FileFind;
|
|
|
|
|
|
if(FileFind.FindFile())
|
|
|
|
|
|
{
|
|
|
|
|
|
for(BOOL bNext=TRUE;bNext;)
|
|
|
|
|
|
{
|
|
|
|
|
|
bNext = FileFind.FindNextFile();
|
|
|
|
|
|
CString strP = FileFind.GetFilePath();
|
|
|
|
|
|
CString strN = FileFind.GetFileName();
|
|
|
|
|
|
if(strN == "." || strN == "..") continue;
|
|
|
|
|
|
|
|
|
|
|
|
if(FileFind.IsDirectory())
|
|
|
|
|
|
{
|
|
|
|
|
|
DropFolder(LPCTSTR(strP));
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
/* if(g_FileSystem.CheckNameExist(strN))
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_iOverwriteType < 0)
|
|
|
|
|
|
m_iOverwriteType = AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD> '<27><>' <20><>\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻ÷<CFBD><C3B7><EFBFBD> '<27>ƴϿ<C6B4>' <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ֽʽÿ<CABD>!"),MB_YESNO);
|
|
|
|
|
|
|
|
|
|
|
|
if(m_iOverwriteType == IDNO)
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|
|
g_FileSystem.Remove(strN);
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>..
|
|
|
|
|
|
AddFileInfo add;
|
|
|
|
|
|
add.FileName = strP;
|
|
|
|
|
|
add.FilePath = g_FileSystem.GetCurDir();
|
|
|
|
|
|
g_AddFileList.push_back(add);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
FileFind.Close();
|
|
|
|
|
|
|
|
|
|
|
|
g_FileSystem.ChangeDir(_T(".."));
|
|
|
|
|
|
|
|
|
|
|
|
SetCurrentDirectory(strOldPath);
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnIpacExit()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.\n\n<EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD> <20><><EFBFBD>ٷ<EFBFBD><D9B7>ֽø<D6BD> <20>ȵɱ<C8B5><C9B1><EFBFBD>..? \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>..."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
PostQuitMessage(0);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnOptimize()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.\n\n<EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD> <20><><EFBFBD>ٷ<EFBFBD><D9B7>ֽø<D6BD> <20>ȵɱ<C8B5><C9B1><EFBFBD>..? \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>..."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(!m_FileList.GetItemCount())
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>Ͻý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
// <20>ȳ<EFBFBD> <20>ڽ<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
|
|
|
|
|
DrawWorking();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!
|
|
|
|
|
|
g_pOptimizeThread = new COptimizeThread(this->GetSafeHwnd() , m_strPath);
|
|
|
|
|
|
//OptimizeThread->Start();
|
|
|
|
|
|
g_pOptimizeThread->Run();
|
|
|
|
|
|
m_bWorking = true;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
LRESULT
|
|
|
|
|
|
CNxFileSystemToolDlg::OnComplete_Optimize(WPARAM wParam, LPARAM lParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
SAFE_DELETE (g_pOptimizeThread);
|
|
|
|
|
|
g_FileSystem.ChangeDir(_T("/"));
|
|
|
|
|
|
m_bWorking = false;
|
|
|
|
|
|
::PostMessage(g_pWorking->GetSafeHwnd(),WM_DESTROY,0,0);
|
|
|
|
|
|
SAFE_DELETE(g_pWorking);
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȭ <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD>~"));
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
LRESULT
|
|
|
|
|
|
CNxFileSystemToolDlg::OnComplete_Export(WPARAM wParam, LPARAM lParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
SAFE_DELETE (g_pExportThread);
|
|
|
|
|
|
::PostMessage(g_pWorking->GetSafeHwnd(),WM_DESTROY,0,0);
|
|
|
|
|
|
SAFE_DELETE(g_pWorking);
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20>Ϸ<EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>."));
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
m_bWorking = false;
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnRename()
|
|
|
|
|
|
{
|
|
|
|
|
|
;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
typedef list<SNxFileInfo> CValueFileHandleList;
|
|
|
|
|
|
typedef list<SNxFileInfo>::iterator CValueFileHandleList_It;
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnExport()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
if ( m_bWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(!m_FileList.GetItemCount())
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>Ͻý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(!m_FileList.GetSelectedCount())
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if ( AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD> <20><><EFBFBD><EFBFBD> Ȥ<><C8A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܺη<DCBA> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?"), MB_YESNO) == IDNO)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
TCHAR strOldPath[_MAX_PATH]= { 0 , };
|
|
|
|
|
|
// GetCurrentDirectory(_MAX_PATH,strOldPath); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>丮<EFBFBD><E4B8AE> <20>˾Ƴ<CBBE><C6B3><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
if ( ExportBrowseFolder(GetSafeHwnd(),strOldPath) == FALSE )
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
CString CurPath;
|
|
|
|
|
|
CString ExportPath;
|
|
|
|
|
|
|
|
|
|
|
|
CurPath = strOldPath;
|
|
|
|
|
|
ExportPath = CurPath + _T("\\Exports");
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> + Exports <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CreateDirectory(ExportPath,NULL);
|
|
|
|
|
|
|
|
|
|
|
|
// <20>ͽ<EFBFBD><CDBD><EFBFBD>Ʈ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
|
|
|
|
|
SetCurrentDirectory(ExportPath);
|
|
|
|
|
|
|
|
|
|
|
|
// <20>ȳ<EFBFBD> <20>ڽ<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
|
|
|
|
|
DrawWorking();
|
|
|
|
|
|
|
|
|
|
|
|
g_ExportList.clear();
|
|
|
|
|
|
|
|
|
|
|
|
POSITION Pos = m_FileList.GetFirstSelectedItemPosition();
|
|
|
|
|
|
|
|
|
|
|
|
CValueFileHandleList OriginalValue;
|
|
|
|
|
|
|
|
|
|
|
|
while(Pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
int iItem = m_FileList.GetNextSelectedItem(Pos);
|
|
|
|
|
|
SNxFileInfo *pFH = ( SNxFileInfo * )m_FileList.GetItemData(iItem);
|
|
|
|
|
|
|
|
|
|
|
|
if( *(pFH->szFileName) == _T('.') )
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|
|
SNxFileInfo FH = *pFH; // Value Copy
|
|
|
|
|
|
OriginalValue.push_back(FH);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CValueFileHandleList_It tempit=OriginalValue.begin();
|
|
|
|
|
|
|
|
|
|
|
|
for(tempit ; tempit!=OriginalValue.end() ; ++tempit )
|
|
|
|
|
|
{
|
|
|
|
|
|
SNxFileInfo FH = (SNxFileInfo)(*tempit);
|
|
|
|
|
|
|
|
|
|
|
|
ExportInfo add;
|
|
|
|
|
|
add.FileType = FH.nFileType;
|
|
|
|
|
|
add.Name = FH.szFileName;
|
|
|
|
|
|
add.FilePath = g_FileSystem.GetCurDir();
|
|
|
|
|
|
g_ExportList.push_back(add);
|
|
|
|
|
|
|
|
|
|
|
|
if ( FH.nFileType == NFS_DIR )
|
|
|
|
|
|
{
|
|
|
|
|
|
tstring name = FH.szFileName;
|
|
|
|
|
|
FolderExport(name);
|
|
|
|
|
|
g_FileSystem.ChangeDir(_T(".."));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>α<CEB1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ƿ<EFBFBD>~
|
|
|
|
|
|
ExportInfoList_It Export_It = g_ExportList.begin();
|
|
|
|
|
|
//@Log.LogInfo(L"###### Ÿ<><C5B8> 0 <20><><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> 1<><31><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> ######");
|
|
|
|
|
|
for (Export_It ; Export_It != g_ExportList.end() ; ++Export_It )
|
|
|
|
|
|
{
|
|
|
|
|
|
tstring name = (*Export_It).Name;
|
|
|
|
|
|
tstring FilePath = (*Export_It).FilePath;
|
|
|
|
|
|
int FileType = (*Export_It).FileType;
|
|
|
|
|
|
//@Log.LogInfo(L"<22≯<EFBFBD>:[%s] , <20><><EFBFBD><EFBFBD>:[%s] , <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8>: [%d] ",name.c_str(),FilePath.c_str(),FileType);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>带 <20><><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>!!
|
|
|
|
|
|
g_pExportThread = new CFileExportThread(this->GetSafeHwnd() , ExportPath);
|
|
|
|
|
|
g_pExportThread->Start();
|
|
|
|
|
|
m_bWorking = true;
|
|
|
|
|
|
|
|
|
|
|
|
OriginalValue.clear();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CNxFileSystemToolDlg::FolderExport(tstring FolderName)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ( g_FileSystem.ChangeDir(FolderName.c_str()) == FALSE)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
std::vector< SPackingFileInfo * > vecFileInfo;
|
|
|
|
|
|
std::vector< std::string > vecDirList;
|
|
|
|
|
|
|
|
|
|
|
|
g_FileSystem.GetDirListCurDir( vecDirList );
|
|
|
|
|
|
g_FileSystem.GetFileInfoListCurDir( vecFileInfo );
|
|
|
|
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
|
for( i = 0; i < ( int )vecFileInfo.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( vecFileInfo[ i ]->dwCompressSize > 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
ExportInfo add;
|
|
|
|
|
|
add.FileType = NFS_FILE;
|
|
|
|
|
|
add.Name = vecFileInfo[ i ]->szFileName;
|
|
|
|
|
|
add.FilePath = g_FileSystem.GetCurDir();
|
|
|
|
|
|
g_ExportList.push_back(add);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for( i = 0; i < ( int )vecDirList.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( _stricmp( vecDirList[ i ].c_str(), "." ) == 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
if( _stricmp( vecDirList[ i ].c_str(), ".." ) == 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
FolderExport( vecDirList[ i ].c_str() );
|
|
|
|
|
|
}
|
|
|
|
|
|
g_FileSystem.ChangeDir( ".." );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnAbout()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
CAboutDlg dlgAbout;
|
|
|
|
|
|
dlgAbout.DoModal();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
|
CNxFileSystemToolDlg::OnBnClickedButton1()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
CString Path;
|
|
|
|
|
|
this->GetDlgItemText(IDC_NAVI,Path);
|
|
|
|
|
|
if( g_FileSystem.ChangeDir((LPTSTR)(LPCTSTR)Path) )
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CNxFileSystemToolDlg::OnMenuDivPacking()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: Add your command handler code here
|
|
|
|
|
|
BuildDivisionPacking dlg;
|
|
|
|
|
|
dlg.DoModal();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CNxFileSystemToolDlg::OnMenuDivPackingCapacity()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: Add your command handler code here
|
|
|
|
|
|
BuildDivisionPackingCapacity dlg;
|
|
|
|
|
|
dlg.DoModal();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CNxFileSystemToolDlg::OnPatch()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: Add your command handler code here
|
|
|
|
|
|
if(!m_FileList.GetItemCount())
|
|
|
|
|
|
{
|
|
|
|
|
|
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>Ͻý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>."));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CFileDialog Dlg(TRUE,_T(".pak"),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(*.pak)|*.pak||"),NULL);
|
|
|
|
|
|
if(Dlg.DoModal() == IDCANCEL) return;
|
|
|
|
|
|
|
|
|
|
|
|
DrawWorking();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!
|
|
|
|
|
|
g_pPatchThread = new PatchThread(this->GetSafeHwnd(), std::string(LPCTSTR(Dlg.GetPathName())));
|
|
|
|
|
|
g_pPatchThread->Start();
|
|
|
|
|
|
m_bWorking = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
LRESULT CNxFileSystemToolDlg::OnCompletePatch(WPARAM wParam, LPARAM lParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bWorking = false;
|
|
|
|
|
|
SAFE_DELETE(g_pPatchThread);
|
|
|
|
|
|
//AfxMessageBox(_T("<22><>ġ <20>Ϸ<EFBFBD>!!"));
|
|
|
|
|
|
|
|
|
|
|
|
if ( g_pWorking )
|
|
|
|
|
|
{
|
|
|
|
|
|
::PostMessage(g_pWorking->GetSafeHwnd(),WM_DESTROY,0,0);
|
|
|
|
|
|
SAFE_DELETE(g_pWorking);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
g_FileSystem.ChangeDir(_T("/"));
|
|
|
|
|
|
UpdateFileList();
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
void CNxFileSystemToolDlg::OnCompare()
|
|
|
|
|
|
{
|
|
|
|
|
|
char szFileList[ 10000 ];
|
|
|
|
|
|
TCHAR szFilter[] = _T( "DragonNest Packing File (*.pak)|*.pak|All Files (*.*)|*.*||" );
|
|
|
|
|
|
CFileDialog FileDlg( TRUE, _T("pak"), _T("*.pak"), OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_ENABLESIZING , szFilter, this );
|
|
|
|
|
|
memset( szFileList, 0, 10000 );
|
|
|
|
|
|
FileDlg.GetOFN().lpstrFile = szFileList;
|
|
|
|
|
|
FileDlg.GetOFN().nMaxFile = 10000;
|
|
|
|
|
|
FileDlg.m_ofn.lpstrTitle = "Open Source File";
|
|
|
|
|
|
|
|
|
|
|
|
if( FileDlg.DoModal() != IDOK )
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
std::vector< std::string > vecSour, vecDest;
|
|
|
|
|
|
POSITION Pos = FileDlg.GetStartPosition();
|
|
|
|
|
|
while( Pos )
|
|
|
|
|
|
{
|
|
|
|
|
|
CString szFileName = FileDlg.GetNextPathName( Pos );
|
|
|
|
|
|
vecSour.push_back( szFileName.GetBuffer() );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
FileDlg.m_ofn.lpstrTitle = "Open Destination File";
|
|
|
|
|
|
if( FileDlg.DoModal() != IDOK )
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Pos = FileDlg.GetStartPosition();
|
|
|
|
|
|
while( Pos )
|
|
|
|
|
|
{
|
|
|
|
|
|
CString szFileName = FileDlg.GetNextPathName( Pos );
|
|
|
|
|
|
vecDest.push_back( szFileName.GetBuffer() );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
std::vector< SPackingFileInfo > vecSourFileInfo, vecDestFileInfo;
|
|
|
|
|
|
int i, j;
|
|
|
|
|
|
for( i = 0; i < ( int )vecSour.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
CEtPackingFile FileSystem;
|
|
|
|
|
|
if( !FileSystem.OpenFileSystem( vecSour[ i ].c_str(), true ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
int nFileCount = FileSystem.GetFileCount();
|
|
|
|
|
|
for( j = 0; j < nFileCount; j++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
SPackingFileInfo *pFileInfo = FileSystem.GetFileInfo( j );
|
|
|
|
|
|
if( pFileInfo->dwCompressSize == 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
vecSourFileInfo.push_back( *pFileInfo );
|
|
|
|
|
|
}
|
|
|
|
|
|
FileSystem.CloseFileSystem();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for( i = 0; i < ( int )vecDest.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
CEtPackingFile FileSystem;
|
|
|
|
|
|
if( !FileSystem.OpenFileSystem( vecDest[ i ].c_str(), true ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
int nFileCount = FileSystem.GetFileCount();
|
|
|
|
|
|
for( j = 0; j < nFileCount; j++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
SPackingFileInfo *pFileInfo = FileSystem.GetFileInfo( j );
|
|
|
|
|
|
if( pFileInfo->dwCompressSize == 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
vecDestFileInfo.push_back( *pFileInfo );
|
|
|
|
|
|
}
|
|
|
|
|
|
FileSystem.CloseFileSystem();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
std::vector< char > vecCheckField;
|
|
|
|
|
|
std::vector< SPackingFileInfo > vecSourExist, vecDestExist, vecDiff;
|
|
|
|
|
|
|
|
|
|
|
|
vecCheckField.resize( vecDestFileInfo.size() );
|
|
|
|
|
|
memset( &vecCheckField[ 0 ], 0, vecCheckField.size() );
|
|
|
|
|
|
for( i = 0; i < ( int )vecSourFileInfo.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
for( j = 0; j < ( int )vecDestFileInfo.size(); j++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( _stricmp( vecSourFileInfo[ i ].szFileName, vecDestFileInfo[ j ].szFileName ) == 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
vecCheckField[ j ] = 1;
|
|
|
|
|
|
if( vecSourFileInfo[ i ].dwChecksum != vecDestFileInfo[ j ].dwChecksum )
|
|
|
|
|
|
{
|
|
|
|
|
|
vecDiff.push_back( vecSourFileInfo[ i ] );
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if( j == ( int )vecDestFileInfo.size() )
|
|
|
|
|
|
{
|
|
|
|
|
|
vecSourExist.push_back( vecSourFileInfo[ i ] );
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
for( i = 0; i < ( int )vecCheckField.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( vecCheckField[ i ] == 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
vecDestExist.push_back( vecDestFileInfo[ i ] );
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if( vecDestExist.size() + vecSourExist.size() + vecDiff.size() == 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox( "File Is Identical" );
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
MessageBox( "File Is Different" );
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|