mirror of
https://github.com/marketideas/qasm.git
synced 2024-12-28 06:29:58 +00:00
86 lines
2.4 KiB
C++
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;
|
|
}
|
|
}
|