ciderpress/app/AddFilesDialog.cpp
Andy McFadden d8223dbcfd Relocate method comments
This moves method comments from the .cpp file to the .h file,
where users of the methods can find them.  This also makes it
possible for the IDE to show the comments when you mouse-hover over
the method name, though Visual Studio is a bit weak in this regard.

Also, added "override" keywords on overridden methods.  Reasonably
current versions of popular compilers seem to support this.

Also, don't have the return type on a separate line in the .cpp file.
The motivation for the practice -- quickly finding a method definition
with "^name" -- is less useful in C++ than C, and modern IDEs provide
more convenient ways to do the same thing.

Also, do some more conversion from unsigned types to uintXX_t.

This commit is primarily for the "app" directory.
2014-11-21 22:33:39 -08:00

185 lines
6.6 KiB
C++

/*
* CiderPress
* Copyright (C) 2007 by faddenSoft, LLC. All Rights Reserved.
* See the file LICENSE for distribution terms.
*/
#include "stdafx.h"
#include "AddFilesDialog.h"
#include "FileNameConv.h"
#include "HelpTopics.h"
#include "resource.h"
/*
* A lot like DoDataExchange, only different.
*
* We do some OnInitDialog-type stuff in here, because we're a subclass of
* SelectFilesDialog and don't really get to have one of those.
*
* Returns "true" if all is well, "false" if something failed. Usually a
* "false" indication occurs during saveAndValidate==true, and means that we
* shouldn't allow the dialog to close yet.
*/
bool AddFilesDialog::MyDataExchange(bool saveAndValidate)
{
CWnd* pWnd;
if (saveAndValidate) {
if (GetDlgButtonCheck(this, IDC_ADDFILES_NOPRESERVE) == BST_CHECKED)
fTypePreservation = kPreserveNone;
else if (GetDlgButtonCheck(this, IDC_ADDFILES_PRESERVE) == BST_CHECKED)
fTypePreservation = kPreserveTypes;
else if (GetDlgButtonCheck(this, IDC_ADDFILES_PRESERVEPLUS) == BST_CHECKED)
fTypePreservation = kPreserveAndExtend;
else {
ASSERT(false);
fTypePreservation = kPreserveNone;
}
if (GetDlgButtonCheck(this, IDC_ADDFILES_CONVEOLNONE) == BST_CHECKED)
fConvEOL = kConvEOLNone;
else if (GetDlgButtonCheck(this, IDC_ADDFILES_CONVEOLTYPE) == BST_CHECKED)
fConvEOL = kConvEOLType;
else if (GetDlgButtonCheck(this, IDC_ADDFILES_CONVEOLTEXT) == BST_CHECKED)
fConvEOL = kConvEOLAuto;
else if (GetDlgButtonCheck(this, IDC_ADDFILES_CONVEOLALL) == BST_CHECKED)
fConvEOL = kConvEOLAll;
else {
ASSERT(false);
fConvEOL = kConvEOLNone;
}
fIncludeSubfolders =
(GetDlgButtonCheck(this, IDC_ADDFILES_INCLUDE_SUBFOLDERS) == BST_CHECKED);
fStripFolderNames =
(GetDlgButtonCheck(this, IDC_ADDFILES_STRIP_FOLDER) == BST_CHECKED);
fOverwriteExisting =
(GetDlgButtonCheck(this, IDC_ADDFILES_OVERWRITE) == BST_CHECKED);
pWnd = GetDlgItem(IDC_ADDFILES_PREFIX);
ASSERT(pWnd != NULL);
pWnd->GetWindowText(fStoragePrefix);
if (!ValidateStoragePrefix())
return false;
return true;
} else {
SetDlgButtonCheck(this, IDC_ADDFILES_NOPRESERVE,
fTypePreservation == kPreserveNone);
SetDlgButtonCheck(this, IDC_ADDFILES_PRESERVE,
fTypePreservation == kPreserveTypes);
SetDlgButtonCheck(this, IDC_ADDFILES_PRESERVEPLUS,
fTypePreservation == kPreserveAndExtend);
SetDlgButtonCheck(this, IDC_ADDFILES_CONVEOLNONE,
fConvEOL == kConvEOLNone);
SetDlgButtonCheck(this, IDC_ADDFILES_CONVEOLTYPE,
fConvEOL == kConvEOLType);
SetDlgButtonCheck(this, IDC_ADDFILES_CONVEOLTEXT,
fConvEOL == kConvEOLAuto);
SetDlgButtonCheck(this, IDC_ADDFILES_CONVEOLALL,
fConvEOL == kConvEOLAll);
SetDlgButtonCheck(this, IDC_ADDFILES_INCLUDE_SUBFOLDERS,
fIncludeSubfolders != FALSE);
SetDlgButtonCheck(this, IDC_ADDFILES_STRIP_FOLDER,
fStripFolderNames != FALSE);
SetDlgButtonCheck(this, IDC_ADDFILES_OVERWRITE,
fOverwriteExisting != FALSE);
pWnd = GetDlgItem(IDC_ADDFILES_PREFIX);
ASSERT(pWnd != NULL);
pWnd->SetWindowText(fStoragePrefix);
if (!fStoragePrefixEnable)
pWnd->EnableWindow(FALSE);
if (!fStripFolderNamesEnable) {
::EnableControl(this, IDC_ADDFILES_STRIP_FOLDER, false);
}
if (!fConvEOLEnable) {
::EnableControl(this, IDC_ADDFILES_CONVEOLNONE, false);
::EnableControl(this, IDC_ADDFILES_CONVEOLTYPE, false);
::EnableControl(this, IDC_ADDFILES_CONVEOLTEXT, false);
::EnableControl(this, IDC_ADDFILES_CONVEOLALL, false);
}
return true;
}
}
bool AddFilesDialog::ValidateStoragePrefix(void)
{
if (fStoragePrefix.IsEmpty())
return true;
const char kFssep = PathProposal::kDefaultStoredFssep;
if (fStoragePrefix[0] == kFssep || fStoragePrefix.Right(1) == kFssep) {
CString errMsg;
errMsg.Format(L"The storage prefix may not start or end with '%c'.",
kFssep);
MessageBox(errMsg, m_ofn.lpstrTitle, MB_OK | MB_ICONWARNING);
return false;
}
return true;
}
UINT AddFilesDialog::MyOnCommand(WPARAM wParam, LPARAM lParam)
{
switch (wParam) {
case IDHELP:
OnIDHelp();
return 1;
default:
return SelectFilesDialog::MyOnCommand(wParam, lParam);
}
}
void AddFilesDialog::ShiftControls(int deltaX, int deltaY)
{
/*
* These only need to be here so that the initial move puts them
* where they belong. Once the dialog has been created, the
* CFileDialog will move things where they need to go.
*/
MoveControl(this, IDC_ADDFILES_STATIC1, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_NOPRESERVE, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_PRESERVE, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_PRESERVEPLUS, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_STATIC2, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_STRIP_FOLDER, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_INCLUDE_SUBFOLDERS, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_OVERWRITE, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_STATIC3, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_PREFIX, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_STATIC4, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_CONVEOLNONE, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_CONVEOLTYPE, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_CONVEOLTEXT, 0, deltaY, false);
MoveControl(this, IDC_ADDFILES_CONVEOLALL, 0, deltaY, false);
/*
* These actively move.
*/
MoveControl(this, IDHELP, deltaX, deltaY, false);
StretchControl(this, IDC_ADDFILES_PREFIX, deltaX, 0, false);
/*
* It's important that the base class be called last, because it calls
* Invalidate to redraw the dialog.
*/
SelectFilesDialog::ShiftControls(deltaX, deltaY);
}
void AddFilesDialog::OnIDHelp(void)
{
CWnd* pWndMain = ::AfxGetMainWnd();
CWinApp* pAppMain = ::AfxGetApp();
::WinHelp(pWndMain->m_hWnd, pAppMain->m_pszHelpFilePath,
HELP_CONTEXT, HELP_TOPIC_ADD_FILES_DLG);
}