📄 oldapp_sync728view.cpp
字号:
// App_Sync728View.cpp : implementation of the CApp_Sync728View class
//
#include "stdafx.h"
#include "App_Sync728.h"
#include "App_Sync728Doc.h"
#include "App_Sync728View.h"
#include "progressdlg.h"
#include "..\datamanager\858datamanager.h"
#include "..\datamanager\datamanager.h"
#include "..\common\XzipDLLInterface.h"
#include <afx.h>
#include <vector>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
using namespace std;
#ifndef MAX_PATH_LEN
#define MAX_PATH_LEN 256
#endif
extern BOOL bAutoRemind;
extern BOOL bReplace;
extern BOOL bPassword;
extern wchar_t wszLastZip[MAX_PATH_LEN];
extern wchar_t wszLastXDB[MAX_PATH_LEN];
#define MAX_NEED_SPACE (8*1024*1024)
extern Item_t item728Array[12];
extern Item_t item858Array[3];
/////////////////////////////////////////////////////////////////////////////
// CApp_Sync728View
IMPLEMENT_DYNCREATE(CApp_Sync728View, CFormView)
BEGIN_MESSAGE_MAP(CApp_Sync728View, CFormView)
//{{AFX_MSG_MAP(CApp_Sync728View)
ON_BN_CLICKED(IDC_BUTTON_BACKUP, OnButtonBackup)
ON_BN_CLICKED(IDC_BUTTON_RECOVER, OnButtonRecover)
//ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, OnSelchangeTab)
ON_BN_CLICKED(IDC_BUTTON_BROWSE, OnButtonBrowse)
ON_EN_CHANGE(IDC_EDIT_FILE, OnChangeEditFile)
//}}AFX_MSG_MAP
ON_MESSAGE(MSG_TAB_SEL_CHANGE, OnSelchangeTabSel)
//ON_COMMAND(MSG_TAB_SEL_CHANGE, OnSelchangeTabSel)
//ON_MESSAGE(MSG_TAB_SEL_CHANGE, OnSelchangeTabSel)
//WM_COMMAND(MSG_TAB_SEL_CHANGE, OnSelchangeTabSel)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CApp_Sync728View construction/destruction
CApp_Sync728View::CApp_Sync728View()
: CFormView(CApp_Sync728View::IDD)
{
//{{AFX_DATA_INIT(CApp_Sync728View)
m_strFile = _T("");
m_strMsg = _T("");
//}}AFX_DATA_INIT
// TODO: add construction code here
m_pDataManager = NULL;
m_hwndDlg = 0;
m_nSelected = VIEW_BACKUP;
m_pTabItem = NULL;
m_pMsgUI = NULL;
}
CApp_Sync728View::~CApp_Sync728View()
{
delete m_pMsgUI;
delete m_pTabItem;
delete m_pDataManager;
if (m_pDataManager != NULL)
{
delete m_pDataManager;
}
}
void CApp_Sync728View::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CApp_Sync728View)
DDX_Control(pDX, IDC_PROGRESS_SYNC, m_ctrlProgress);
// DDX_Control(pDX, IDC_TAB, m_tab);
DDX_Control(pDX, IDC_LIST_ITEM, m_listItem);
DDX_Text(pDX, IDC_EDIT_FILE, m_strFile);
DDX_Text(pDX, IDC_STATIC_MSG, m_strMsg);
//}}AFX_DATA_MAP
}
BOOL CApp_Sync728View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CApp_Sync728View diagnostics
#ifdef _DEBUG
void CApp_Sync728View::AssertValid() const
{
CFormView::AssertValid();
}
void CApp_Sync728View::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CApp_Sync728Doc* CApp_Sync728View::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CApp_Sync728Doc)));
return (CApp_Sync728Doc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CApp_Sync728View message handlers
void CApp_Sync728View::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
//m_pTab = new
//m_pTabItem = new CImgTab(IDB_TAB_NORMAL, IDB_TAB_SELECT, 48);
m_pTabItem = new CImgTab(IDB_TAB_REPEAT_NORMAL, IDB_TAB_REPEAT_SELECT, 72);
CRect rcTabArea;
//CStatic *pStatic = (CStatic *)GetDlgItem(IDC_STATIC_TAB);
CStatic *pStatic = (CStatic *)GetDlgItem(IDC_TAB);
pStatic->GetWindowRect(rcTabArea);
ScreenToClient(rcTabArea);
m_pTabItem->Create(rcTabArea, this, IDC_TAB_SEL);
m_pTabItem->InsertItem(_T("备份"));
m_pTabItem->InsertItem(_T("恢复"));
m_pTabItem->InsertItem(_T("858导入"));
m_pTabItem->SetCurSel(0);
m_ctrlProgress.SetRange(0, 99);
/*
TCITEM item;
memset(&item, 0, sizeof (item));
item.mask = TCIF_TEXT;
item.pszText = TEXT("备份");
m_tab.InsertItem(0, &item);
item.pszText = TEXT("恢复");
m_tab.InsertItem(1, &item);
item.pszText = TEXT("858导入");
m_tab.InsertItem(2, &item);
*/
m_listItem.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES);
m_listItem.InsertColumn(0, _T("编号"), LVCFMT_LEFT, 80);
m_listItem.InsertColumn(1, _T("数据"), LVCFMT_LEFT, 150);
m_pMsgUI = new CSD728Msg(this);
RefreshView();
}
void CApp_Sync728View::DisplayItems()
{
m_listItem.DeleteAllItems();
if (/*m_nSelected*/m_pTabItem->GetCurSel() == VIEW_BACKUP)
{
for (int i= 0; i < 12; i++)
{
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT ;
lvItem.iSubItem=0;
lvItem.iItem = i;
wchar_t szID[10];
wsprintf(szID, TEXT("%d"), i+1/**/);
lvItem.pszText = szID;
m_listItem.InsertItem( &lvItem );
lvItem.mask = LVIF_TEXT ;
lvItem.iSubItem=1;
lvItem.iItem = i;
lvItem.pszText = item728Array[i].szName;
m_listItem.SetItem(&lvItem);
m_listItem.SetItemData(i, item728Array[i].no);
}
}
if (/*m_nSelected*/m_pTabItem->GetCurSel() == VIEW_RECOVER)
{
FileAttrType *pFileAttrType = NULL;
DWORD nListNum = 0;
char szZipFile[128];
WideCharToMultiByte(CP_ACP, 0, (LPCTSTR)m_strFile, -1, szZipFile, sizeof(szZipFile) - 1, NULL, NULL );
GetFileList(szZipFile, NULL, &nListNum);
pFileAttrType = new FileAttrType[nListNum];
memset(pFileAttrType, 0, sizeof (FileAttrType)*nListNum);
GetFileList(szZipFile, pFileAttrType, &nListNum);
for (int i=0; i<nListNum; i++)
{
for (int j=0; j< 12; j++)
{
if (strcmp(pFileAttrType[i].fileName, item728Array[j].szZip) == 0)
{
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT ;
lvItem.iSubItem=0;
lvItem.iItem = i;
wchar_t szID[10];
wsprintf(szID, TEXT("%d"), i+1/**/);
lvItem.pszText = szID;
m_listItem.InsertItem( &lvItem );
lvItem.mask = LVIF_TEXT ;
lvItem.iSubItem=1;
lvItem.iItem = i;
lvItem.pszText = item728Array[j].szName;
m_listItem.SetItem(&lvItem);
m_listItem.SetItemData(i, item728Array[j].no);
break;
}
}
}
}
if (VIEW_858 == m_pTabItem->GetCurSel()/*m_nSelected*/)
{
for (int i=0; i<12; i++)
{
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT ;
lvItem.iSubItem=0;
lvItem.iItem = i;
wchar_t szID[10];
wsprintf(szID, TEXT("%d"), i+1/**/);
lvItem.pszText = szID;
m_listItem.InsertItem( &lvItem );
lvItem.mask = LVIF_TEXT ;
lvItem.iSubItem=1;
lvItem.iItem = i;
lvItem.pszText = item858Array[i].szName;
m_listItem.SetItem(&lvItem);
m_listItem.SetItemData(i, item858Array[i].no);
}
}
}
void CApp_Sync728View::OnButtonBackup()
{
// TODO: Add your control notification handler code here
vector<Item_t> vctItems;
if (GetCheckedItems(vctItems))
{
m_pTabItem->EnableWindow(FALSE);
CButton *pBnt1 = (CButton *)GetDlgItem(IDC_BUTTON_BACKUP);
CButton *pBnt2 = (CButton *)GetDlgItem(IDC_BUTTON_RECOVER);
pBnt1->EnableWindow(FALSE);
pBnt2->EnableWindow(FALSE);
m_pDataManager->Backup(vctItems, (LPTSTR)(LPCTSTR)m_strFile);
}
}
void CApp_Sync728View::OnButtonRecover()
{
// TODO: Add your control notification handler code here
vector<Item_t> vctItems;
BOOL bEnoughSpace = TRUE;
BOOL bIsUserData = TRUE;
if (m_pTabItem->GetCurSel() != VIEW_BACKUP)
{
WIN32_FIND_DATA fileData;
HANDLE hFindFile = FindFirstFile((LPCTSTR)m_strFile, &fileData);
if (hFindFile == INVALID_HANDLE_VALUE)
{
SendMessage(TEXT("没有找到您指定的文件"));
FindClose(hFindFile);
return;
}
FindClose(hFindFile);
}
CButton *pBnt1 = (CButton *)GetDlgItem(IDC_BUTTON_RECOVER); CButton *pBnt2 = (CButton *)GetDlgItem(IDC_BUTTON_BROWSE);
pBnt1->EnableWindow(FALSE);
pBnt2->EnableWindow(FALSE);
m_pTabItem->EnableWindow(FALSE);
m_listItem.EnableWindow(FALSE);
GetParent()->EnableWindow(FALSE);
ULARGE_INTEGER totalBytes,freeBytes,callerBytes;///当前的磁盘信息
if (GetCheckedItems(vctItems))
{
if (m_pTabItem->GetCurSel() == VIEW_RECOVER)
{
if (GetDiskFreeSpaceEx(TEXT("\\USERDATA"),&callerBytes,&totalBytes,&freeBytes))
{
if(freeBytes.QuadPart>MAX_NEED_SPACE)
{
bEnoughSpace = TRUE;
m_pDataManager->Recover(vctItems, (LPTSTR)(LPCTSTR)m_strFile);
}
}
}
else if (m_pTabItem->GetCurSel() == VIEW_BACKUP)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -