2007-03-27 17:47:10 +00:00
|
|
|
/*
|
|
|
|
* CiderPress
|
|
|
|
* Copyright (C) 2007 by faddenSoft, LLC. All Rights Reserved.
|
|
|
|
* See the file LICENSE for distribution terms.
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
* Class declaration for a list control showing archive contents.
|
|
|
|
*/
|
Large set of changes to restore CiderPress build.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
2014-11-10 23:32:55 +00:00
|
|
|
#ifndef APP_CONTENTLIST_H
|
|
|
|
#define APP_CONTENTLIST_H
|
2007-03-27 17:47:10 +00:00
|
|
|
|
|
|
|
#include "GenericArchive.h"
|
|
|
|
#include "Preferences.h"
|
|
|
|
#include "Resource.h"
|
|
|
|
#include <afxwin.h>
|
|
|
|
#include <afxcmn.h>
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* A ListCtrl with headers appropriate for viewing archive contents.
|
|
|
|
*
|
|
|
|
* NOTE: this class performs auto-cleanup, and must be allocated on the heap.
|
|
|
|
*
|
|
|
|
* We currently use the underlying GenericArchive as our storage for the stuff
|
|
|
|
* we display. This works great until we change or delete entries from
|
|
|
|
* GenericArchive. At that point we run the risk of displaying bad pointers.
|
|
|
|
*
|
|
|
|
* The GenericArchive has local copies of everything interesting, so the only
|
|
|
|
* time things go badly for us is when somebody inside GenericArchive calls
|
|
|
|
* Reload. That frees and reallocates the storage we're pointing to. So,
|
|
|
|
* GenericArchive maintains a "I have reloaded" flag that we test before we
|
|
|
|
* draw.
|
|
|
|
*/
|
|
|
|
class ContentList: public CListCtrl
|
|
|
|
{
|
|
|
|
public:
|
2014-11-04 00:26:53 +00:00
|
|
|
ContentList(GenericArchive* pArchive, ColumnLayout* pLayout) {
|
2014-11-18 05:13:13 +00:00
|
|
|
ASSERT(pArchive != NULL);
|
|
|
|
ASSERT(pLayout != NULL);
|
2014-11-04 00:26:53 +00:00
|
|
|
fpArchive = pArchive;
|
|
|
|
fpLayout = pLayout;
|
|
|
|
// fInvalid = false;
|
|
|
|
//fRightClickItem = -1;
|
|
|
|
|
|
|
|
fpArchive->ClearReloadFlag();
|
|
|
|
}
|
|
|
|
|
|
|
|
// call this before updating underlying storage; call Reload to un-inval
|
|
|
|
// void Invalidate(void);
|
|
|
|
// reload from underlying storage
|
|
|
|
void Reload(bool saveSelection = false);
|
|
|
|
|
|
|
|
void NewSortOrder(void);
|
|
|
|
void NewColumnWidths(void);
|
|
|
|
void ExportColumnWidths(void);
|
|
|
|
void SelectAll(void);
|
|
|
|
void InvertSelection(void);
|
|
|
|
void ClearSelection(void);
|
|
|
|
|
|
|
|
void SelectSubdirContents(void);
|
|
|
|
|
Large set of changes to restore CiderPress build.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
2014-11-10 23:32:55 +00:00
|
|
|
void FindNext(const WCHAR* str, bool down, bool matchCase, bool wholeWord);
|
|
|
|
bool CompareFindString(int num, const WCHAR* str, bool matchCase,
|
2014-11-04 00:26:53 +00:00
|
|
|
bool wholeWord);
|
|
|
|
|
|
|
|
//int GetRightClickItem(void) const { return fRightClickItem; }
|
|
|
|
//void ClearRightClickItem(void) { fRightClickItem = -1; }
|
|
|
|
|
|
|
|
enum { kFileTypeBufLen = 5, kAuxTypeBufLen = 6 };
|
|
|
|
static void MakeFileTypeDisplayString(const GenericEntry* pEntry,
|
Large set of changes to restore CiderPress build.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
2014-11-10 23:32:55 +00:00
|
|
|
WCHAR* buf);
|
2014-11-04 00:26:53 +00:00
|
|
|
static void MakeAuxTypeDisplayString(const GenericEntry* pEntry,
|
Large set of changes to restore CiderPress build.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
2014-11-10 23:32:55 +00:00
|
|
|
WCHAR* buf);
|
2007-03-27 17:47:10 +00:00
|
|
|
|
|
|
|
protected:
|
2014-11-04 00:26:53 +00:00
|
|
|
// overridden functions
|
|
|
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
|
|
|
virtual void PostNcDestroy(void);
|
2007-03-27 17:47:10 +00:00
|
|
|
|
2014-11-04 00:26:53 +00:00
|
|
|
afx_msg int OnCreate(LPCREATESTRUCT);
|
|
|
|
afx_msg void OnDestroy(void);
|
|
|
|
afx_msg void OnSysColorChange(void);
|
|
|
|
//afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
|
|
|
|
afx_msg void OnColumnClick(NMHDR*, LRESULT*);
|
|
|
|
afx_msg void OnGetDispInfo(NMHDR* pnmh, LRESULT* pResult);
|
2007-03-27 17:47:10 +00:00
|
|
|
|
|
|
|
private:
|
2014-11-04 00:26:53 +00:00
|
|
|
// Load the header images. Must do this every time the syscolors change.
|
|
|
|
// (Ideally this would re-map all 3dface colors. Note the current
|
|
|
|
// implementation relies on the top left pixel color.)
|
|
|
|
void LoadHeaderImages(void) {
|
|
|
|
if (!fHdrImageList.Create(IDB_HDRBAR, 16, 1, CLR_DEFAULT))
|
2014-11-18 21:05:15 +00:00
|
|
|
LOGI("GLITCH: header list create failed");
|
2014-11-04 00:26:53 +00:00
|
|
|
fHdrImageList.SetBkColor(::GetSysColor(COLOR_BTNFACE));
|
|
|
|
}
|
|
|
|
void LoadListImages(void) {
|
|
|
|
if (!fListImageList.Create(IDB_LIST_PICS, 16, 1, CLR_DEFAULT))
|
2014-11-18 21:05:15 +00:00
|
|
|
LOGI("GLITCH: list image create failed");
|
2014-11-04 00:26:53 +00:00
|
|
|
fListImageList.SetBkColor(::GetSysColor(COLOR_WINDOW));
|
|
|
|
}
|
|
|
|
enum { // defs for IDB_LIST_PICS
|
|
|
|
kListIconNone = 0,
|
|
|
|
kListIconComment = 1,
|
|
|
|
kListIconNonEmptyComment = 2,
|
|
|
|
kListIconDamaged = 3,
|
|
|
|
kListIconSuspicious = 4,
|
|
|
|
};
|
|
|
|
int LoadData(void);
|
|
|
|
long* GetSelectionSerials(long* pSelCount);
|
|
|
|
void RestoreSelection(const long* savedSel, long selCount);
|
|
|
|
|
|
|
|
int GetDefaultWidth(int col);
|
|
|
|
|
Large set of changes to restore CiderPress build.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
2014-11-10 23:32:55 +00:00
|
|
|
static void MakeMacTypeString(unsigned long val, WCHAR* buf);
|
|
|
|
static void MakeRatioDisplayString(const GenericEntry* pEntry, WCHAR* buf,
|
2014-11-04 00:26:53 +00:00
|
|
|
int* pPerc);
|
|
|
|
|
|
|
|
void SetSortIcon(void);
|
|
|
|
static int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2,
|
|
|
|
LPARAM lParamSort);
|
|
|
|
|
|
|
|
void OnDoubleClick(NMHDR* pnmh, LRESULT* pResult);
|
|
|
|
void OnRightClick(NMHDR* pnmh, LRESULT* pResult);
|
Large set of changes to restore CiderPress build.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
2014-11-10 23:32:55 +00:00
|
|
|
void SelectSubdir(const WCHAR* displayPrefix);
|
2014-11-04 00:26:53 +00:00
|
|
|
|
|
|
|
CImageList fHdrImageList;
|
|
|
|
CImageList fListImageList;
|
|
|
|
GenericArchive* fpArchive; // data we're expected to display
|
|
|
|
ColumnLayout* fpLayout;
|
|
|
|
// int fRightClickItem;
|
|
|
|
// bool fInvalid;
|
|
|
|
|
|
|
|
DECLARE_MESSAGE_MAP()
|
2007-03-27 17:47:10 +00:00
|
|
|
};
|
|
|
|
|
Large set of changes to restore CiderPress build.
CiderPress and MDC now compile, and execute far enough to open
their respective "about" boxes, but I doubt they'll do much
more than that.
* Switch from MBCS to UNICODE APIs
Microsoft switched to UTF-16 (by way of UCS-2) a long time ago,
and the support for MBCS seems to be getting phased out. So it's
time to switch to wide strings.
This is a bit awkward for CiderPress because it works with disk
and file archives with 8-bit filenames, and I want NufxLib and
DiskImgLib to continue to work on Linux (which has largely taken
the UTF-8 approach to Unicode). The libraries will continue to
work with 8-bit filenames, with CiderPress/MDC doing the
conversion at the appropriate point.
There were a couple of places where strings from a structure
handed back by one of the libraries were used directly in the UI,
or vice-versa, which is a problem because we have nowhere to
store the result of the conversion. These currently have fixed
place-holder "xyzzy" strings.
All UI strings are now wide.
Various format strings now use "%ls" and "%hs" to explicitly
specify wide and narrow. This doesn't play well with gcc, so
only the Windows-specific parts use those.
* Various updates to vcxproj files
The project-file conversion had some cruft that is now largely
gone. The build now has a common output directory for the EXEs
and libraries, avoiding the old post-build copy steps.
* Added zlib 1.2.8 and nufxlib 2.2.2 source snapshots
The old "prebuilts" directory is now gone. The libraries are now
built as part of building the apps.
I added a minimal set of files for zlib, and a full set for nufxlib.
The Linux-specific nufxlib goodies are included for the benefit of
the Linux utilities, which are currently broken (don't build).
* Replace symbols used for include guards
Symbols with a leading "__" are reserved.
2014-11-10 23:32:55 +00:00
|
|
|
#endif /*APP_CONTENTLIST_H*/
|