⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selectdatasdlg.cpp

📁 手机数据备份软件
💻 CPP
字号:
// SelectDatasDlg.cpp: implementation of the CSelectDatasDlg class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SelectDatasDlg.h"
#include "ProgressDlg.h"
#include "Public.h"
#include "Registry_DB.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSelectDatasDlg::CSelectDatasDlg()
{
	m_StorageType.Empty();
}

CSelectDatasDlg::~CSelectDatasDlg()
{

}
LRESULT CSelectDatasDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	m_hMenuBar = CreateMenuBarWnd(m_hWnd,IDR_ACTIONMENU);
	if(m_hMenuBar == NULL)
		return -1;

	DWORD tagID[]={CONTACT_TXT,CALENDAR_TXT,TASK_TXT,INBOX_TXT,CHANNELS_TXT,NOTES_TXT,VOICERECORDER_TXT,USERAPP_TXT};
	CString tag[8];
	CString temp;
	for(int i = 0; i < 8 ; i++)
	{
		temp.LoadString(tagID[i]);
		tag[i] = temp;
	}

//	LPWSTR DBName[] = {CONTACTDB,CALENDARDB,TASKDB,INBOXDB};
	int TextTotal = 8;

	HWND hWnd = GetDlgItem(IDC_LIST1);
	m_ListCtrl.SubclassWindow(hWnd);

	DWORD dwStyle = m_ListCtrl.GetExtendedListViewStyle();
	dwStyle |= LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT ; 
	m_ListCtrl.SetExtendedListViewStyle(dwStyle);
	CRect rect;
	m_ListCtrl.GetClientRect(&rect);
	m_ListCtrl.InsertColumn(0,L"Item No",LVCFMT_LEFT,rect.Width()/5,-1);
	m_ListCtrl.InsertColumn(1,L"Item",LVCFMT_LEFT,rect.Width()*4/5 , -1);
	
	CString FlashStr;
	FlashStr.LoadString(FLASHROM_TXT);
	if (m_StorageType.Find(FlashStr) != -1)
		TextTotal = 4;

	CString Num;
	for (i = 0; i < TextTotal ; i++)
	{
		Num.Format(L"%d",i+1);
		m_ListCtrl.InsertItem(i,Num);
		m_ListCtrl.SetCheckState(i,TRUE);
		m_ListCtrl.SetItemText(i,1,tag[i]);
		
	}
	m_ListCtrl.SelectItem(0);
	return 0;
}

LRESULT CSelectDatasDlg::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
	EndDialog(IDCANCEL);  
	return 0;
}

LRESULT CSelectDatasDlg::OnActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	// TODO : Add Code for message handler. Call DefWindowProc if necessary.
	m_ListCtrl.SetFocus();
	return 0;
}

LRESULT CSelectDatasDlg::OnNext(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
	BackupItem item;
	BOOL TotalFlag = TRUE;
	LPWSTR  DB_ZIP[] = {CONTACTDB,CALENDARDB,TASKDB,INBOXDB,CHANNELDIR,NOTEDIR,VOICEDIR,USERAPPDIR};
	DWORD tagID[] = {CONTACT_TXT,CALENDAR_TXT,TASK_TXT,INBOX_TXT,CHANNELS_TXT,NOTES_TXT,VOICERECORDER_TXT,USERAPP_TXT};
	CString tag[8];
	CString temp;
	for(int j = 0 ;j < 8 ; j++)
	{
		temp.LoadString(tagID[j]);
		tag[j] = temp;
	}
	
	int i = 0;
	CString FlashStr;
	FlashStr.LoadString(FLASHROM_TXT);
	if (m_StorageType.Find(FlashStr) != -1)
		TotalFlag = FALSE;
	else
	{
		for (i = 0 ;i < m_ListCtrl.GetItemCount() ; i++)
		{
			if (!m_ListCtrl.GetCheckState(i))
				TotalFlag = FALSE;
		}
	}

	CProgressDlg dlg;
	dlg.m_StorageType = m_StorageType;
	dlg.m_TotalFlag = TotalFlag;
	
	if (TotalFlag && (m_StorageType.Compare(FlashStr) != 0 ))	
	{
		//if select all data
		CRegistry_DB db(m_StorageType);
		if (db.GetTotalBackupDB())
		{
			// add all databases into list
			POSITION pos;
			CString PMailDB;
			for (i = 0; i < db.m_DBItemList.GetCount(); i++)
			{
				pos = db.m_DBItemList.FindIndex(i);
				ZeroMemory(&item,sizeof(item));
				wcscpy(item.DBNAME_ZIPDIR,db.m_DBItemList.GetAt(pos).ItemName);
				PMailDB.Format(item.DBNAME_ZIPDIR);
				if (wcscmp(item.DBNAME_ZIPDIR,DB_ZIP[3]) == 0)
				{
					wcscpy(item.ItemName,tag[3]);
					item.IsMail = TRUE;
				}
				else
				{
					if ((PMailDB.Find(L"pmail") != -1) || (PMailDB.Find(L"fldr") != -1))
						continue;
					for(int j = 0; j < 3; j++)
					{
						if (wcscmp(item.DBNAME_ZIPDIR,DB_ZIP[j]) == 0)
						{
							wcscpy(item.ItemName,tag[j]);
							break;
						}
					}
					item.IsDB = TRUE;
				}				
				dlg.m_ItemList.AddTail(item);
			}
		}

		// add all type of files into list
		for (i = 4; i < 8;i++)
		{
			ZeroMemory(&item,sizeof(item));
			wcscpy(item.ItemName,tag[i]);
			wcscpy(item.DBNAME_ZIPDIR,DB_ZIP[i]);	
			dlg.m_ItemList.AddTail(item);
		}
		if (dlg.DoModal() == IDOK)
			EndDialog(IDOK);

		return 0;
	}

	// if not select all data
	BSTR itemStr;
	for (i = 0 ;i < m_ListCtrl.GetItemCount(); i++)
	{
		if (m_ListCtrl.GetCheckState(i))
		{
			ZeroMemory(&item,sizeof(item));
			itemStr = NULL;
			m_ListCtrl.GetItemText(i,1,itemStr);
			for ( int j = 0 ;j < 8 ; j++)
			{
				if (wcscmp(itemStr,tag[j]) == 0)
				{
					wcscpy(item.ItemName,tag[j]);
					wcscpy(item.DBNAME_ZIPDIR,DB_ZIP[j]);
					if (j < 3)
						item.IsDB = TRUE;
					else
						if (j == 3)
							item.IsMail = TRUE;
						break;
				}
			}
			dlg.m_ItemList.AddTail(item);
		}
	}	
	if (dlg.DoModal() == IDOK)
		EndDialog(IDOK);
	
	return 0;	
}

LRESULT CSelectDatasDlg::OnKeyDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	// TODO : Add Code for message handler. Call DefWindowProc if necessary.
	
	return 0;
}
LRESULT CSelectDatasDlg::OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	// TODO : Add Code for message handler. Call DefWindowProc if necessary.
	CPaintDC dc(m_hWnd);
	CPen pen;
	pen.CreatePen(PS_SOLID,2,RGB(0,0,0));
	::SelectObject(dc.m_hDC,pen);
	CRect rect;
	m_ListCtrl.GetWindowRect(&rect);
	rect.top -= 21;
	rect.bottom -= 21;
	rect.InflateRect(1,1,1,1);
	dc.Draw3dRect(rect,RGB(0,0,0),GetSysColor(COLOR_3DFACE));//RGB(210,210,210));
	rect.InflateRect(1,1,1,1);
	dc.Draw3dRect(rect,RGB(70,70,70),RGB(200,200,200));
	rect.InflateRect(2,2,2,2);
	dc.Draw3dRect(rect,RGB(0,0,0),RGB(0,0,0));
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -