ciderpress/app/EditAssocDialog.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

132 lines
3.4 KiB
C++

/*
* CiderPress
* Copyright (C) 2007 by faddenSoft, LLC. All Rights Reserved.
* See the file LICENSE for distribution terms.
*/
#include "stdafx.h"
#include "EditAssocDialog.h"
#include "MyApp.h"
#include "Registry.h"
#include "HelpTopics.h"
BEGIN_MESSAGE_MAP(EditAssocDialog, CDialog)
ON_WM_HELPINFO()
ON_COMMAND(IDHELP, OnHelp)
END_MESSAGE_MAP()
/* this comes from VC++6.0 MSDN help */
#ifndef ListView_SetCheckState
#define ListView_SetCheckState(hwndLV, i, fCheck) \
ListView_SetItemState(hwndLV, i, \
INDEXTOSTATEIMAGEMASK((fCheck)+1), LVIS_STATEIMAGEMASK)
#endif
BOOL EditAssocDialog::OnInitDialog(void)
{
CListCtrl* pListView = (CListCtrl*) GetDlgItem(IDC_ASSOCIATION_LIST);
ASSERT(pListView != NULL);
//pListView->ModifyStyleEx(0, LVS_EX_CHECKBOXES);
ListView_SetExtendedListViewStyleEx(pListView->m_hWnd,
LVS_EX_CHECKBOXES, LVS_EX_CHECKBOXES);
/* move it over slightly so we see some overlap */
CRect rect;
GetWindowRect(&rect);
rect.left += 10;
rect.right += 10;
MoveWindow(&rect);
/*
* Initialize this before DDX stuff happens. If the caller didn't
* provide a set, load our own.
*/
if (fOurAssociations == NULL) {
fOurAssociations = new bool[gMyApp.fRegistry.GetNumFileAssocs()];
Setup(true);
} else {
Setup(false);
}
return CDialog::OnInitDialog();
}
void EditAssocDialog::Setup(bool loadAssoc)
{
LOGD("Setup!");
CListCtrl* pListView = (CListCtrl*) GetDlgItem(IDC_ASSOCIATION_LIST);
ASSERT(pListView != NULL);
ASSERT(fOurAssociations != NULL);
/* two columns */
CRect rect;
pListView->GetClientRect(&rect);
int width;
width = pListView->GetStringWidth(L"XXExtensionXX");
pListView->InsertColumn(0, L"Extension", LVCFMT_LEFT, width);
pListView->InsertColumn(1, L"Association", LVCFMT_LEFT,
rect.Width() - width);
int num = gMyApp.fRegistry.GetNumFileAssocs();
int idx = 0;
while (num--) {
CString ext, handler;
CString dispStr;
bool ours;
gMyApp.fRegistry.GetFileAssoc(idx, &ext, &handler, &ours);
pListView->InsertItem(idx, ext);
pListView->SetItemText(idx, 1, handler);
if (loadAssoc)
fOurAssociations[idx] = ours;
idx++;
}
//DeleteAllItems(); // for Reload case
}
void EditAssocDialog::DoDataExchange(CDataExchange* pDX)
{
CListCtrl* pListView = (CListCtrl*) GetDlgItem(IDC_ASSOCIATION_LIST);
ASSERT(fOurAssociations != NULL);
if (fOurAssociations == NULL)
return;
int num = gMyApp.fRegistry.GetNumFileAssocs();
if (!pDX->m_bSaveAndValidate) {
/* load fixed set of file associations */
int idx = 0;
while (num--) {
ListView_SetCheckState(pListView->m_hWnd, idx,
fOurAssociations[idx]);
idx++;
}
} else {
/* copy the checkboxes out */
int idx = 0;
while (num--) {
fOurAssociations[idx] =
(ListView_GetCheckState(pListView->m_hWnd, idx) != 0);
idx++;
}
}
}
BOOL EditAssocDialog::OnHelpInfo(HELPINFO* lpHelpInfo)
{
return ShowContextHelp(this, lpHelpInfo);
}
void EditAssocDialog::OnHelp(void)
{
WinHelp(HELP_TOPIC_EDIT_ASSOC, HELP_CONTEXT);
}