ciderpress/app/ChooseAddTargetDialog.cpp

86 lines
2.4 KiB
C++

/*
* CiderPress
* Copyright (C) 2007 by faddenSoft, LLC. All Rights Reserved.
* See the file LICENSE for distribution terms.
*/
/*
* Functions for the ChooseAddTarget dialog box.
*/
#include "StdAfx.h"
#include "ChooseAddTargetDialog.h"
#include "DiskFSTree.h"
using namespace DiskImgLib;
BEGIN_MESSAGE_MAP(ChooseAddTargetDialog, CDialog)
ON_COMMAND(IDHELP, OnHelp)
END_MESSAGE_MAP()
BOOL ChooseAddTargetDialog::OnInitDialog(void)
{
CDialog::OnInitDialog();
CTreeCtrl* pTree = (CTreeCtrl*) GetDlgItem(IDC_ADD_TARGET_TREE);
ASSERT(fpDiskFS != NULL);
ASSERT(pTree != NULL);
fDiskFSTree.fIncludeSubdirs = true;
fDiskFSTree.fExpandDepth = -1;
if (!fDiskFSTree.BuildTree(fpDiskFS, pTree)) {
LOGI("Tree load failed!");
OnCancel();
}
int count = pTree->GetCount();
LOGI("ChooseAddTargetDialog tree has %d items", count);
if (count <= 1) {
LOGI(" Skipping out of target selection");
// adding to root volume of the sole DiskFS
fpChosenDiskFS = fpDiskFS;
ASSERT(fpChosenSubdir == NULL);
OnOK();
}
return TRUE;
}
void ChooseAddTargetDialog::DoDataExchange(CDataExchange* pDX)
{
/*
* Not much to do on the way in. On the way out, make sure that they've
* selected something acceptable, and copy the values to an easily
* accessible location.
*/
if (pDX->m_bSaveAndValidate) {
CTreeCtrl* pTree = (CTreeCtrl*) GetDlgItem(IDC_ADD_TARGET_TREE);
CString errMsg, appName;
CheckedLoadString(&appName, IDS_MB_APP_NAME);
/* shortcut for simple disk images */
if (pTree->GetCount() == 1 && fpChosenDiskFS != NULL)
return;
HTREEITEM selected;
selected = pTree->GetSelectedItem();
if (selected == NULL) {
errMsg = L"Please select a disk or subdirectory to add files to.";
MessageBox(errMsg, appName, MB_OK);
pDX->Fail();
return;
}
DiskFSTree::TargetData* pTargetData;
pTargetData = (DiskFSTree::TargetData*) pTree->GetItemData(selected);
if (!pTargetData->selectable) {
errMsg = L"You can't add files there.";
MessageBox(errMsg, appName, MB_OK);
pDX->Fail();
return;
}
fpChosenDiskFS = pTargetData->pDiskFS;
fpChosenSubdir = pTargetData->pFile;
}
}