ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/VTBFileUtil2/DiscBrowse.cxx
(Generate patch)

Comparing trunk/VTBFileUtil2/DiscBrowse.cxx (file contents):
Revision 265 by douglas, 2003-08-16T20:55:39-07:00 vs.
Revision 282 by douglas, 2003-08-25T23:41:12-07:00

# Line 2 | Line 2
2   //
3   // Douglas Thrift
4   //
5 < // $Id: DiscBrowse.cxx,v 1.2 2003/08/17 03:55:39 douglas Exp $
5 > // $Id: DiscBrowse.cxx,v 1.3 2003/08/26 06:41:12 douglas Exp $
6  
7   #include "DiscBrowse.h"
8  
9 + DiscBrowse::DiscBrowse()
10 + {
11 +        number = count++;
12 +
13 +        browsers.insert(pair<unsigned, DiscBrowse*>(number, this));
14 +
15 +        title = programName + " - Disc Browse";
16 +
17 +        popup = CreatePopupMenu();
18 +
19 +        MENUITEMINFO open, separator, properties;
20 +
21 +        open.cbSize = sizeof(open);
22 +        open.fMask = MIIM_ID | MIIM_STATE | MIIM_TYPE;
23 +        open.fType = MFT_STRING;
24 +        open.fState = MFS_DEFAULT;
25 +        open.wID = 1;
26 +        open.dwTypeData = "&Open";
27 +        open.cch = 5;
28 +        separator.cbSize = sizeof(open);
29 +        separator.fMask = MIIM_TYPE;
30 +        separator.fType = MFT_SEPARATOR;
31 +        properties.cbSize = sizeof(open);
32 +        properties.fMask = MIIM_ID | MIIM_TYPE;
33 +        properties.fType = MFT_STRING;
34 +        properties.wID = 2;
35 +        properties.dwTypeData = "P&roperties";
36 +        properties.cch = 11;
37 +
38 +        InsertMenuItem(popup, 0, TRUE, &open);
39 +        InsertMenuItem(popup, 1, TRUE, &separator);
40 +        InsertMenuItem(popup, 2, TRUE, &properties);
41 +
42 +        // start
43 +        wizard[0].dwSize = sizeof(wizard[0]);
44 +        wizard[0].dwFlags = PSP_DEFAULT | PSP_USETITLE | PSP_USEHEADERTITLE |
45 +                PSP_USEHEADERSUBTITLE;
46 +        wizard[0].hInstance = gui.instance;
47 +        wizard[0].pszTemplate = MAKEINTRESOURCE(IDD_BEGIN);
48 +        wizard[0].pszTitle = title.c_str();
49 +        wizard[0].pfnDlgProc = start;
50 +        wizard[0].lParam = number;
51 +        wizard[0].pszHeaderTitle = "Start";
52 +        wizard[0].pszHeaderSubTitle = "Change any settings before browsing.";
53 +
54 +        // browse
55 +        wizard[1].dwSize = sizeof(wizard[1]);
56 +        wizard[1].dwFlags = PSP_DEFAULT | PSP_USETITLE | PSP_USEHEADERTITLE |
57 +                PSP_USEHEADERSUBTITLE;
58 +        wizard[1].hInstance = gui.instance;
59 +        wizard[1].pszTemplate = MAKEINTRESOURCE(IDD_BROWSE);
60 +        wizard[1].pszTitle = title.c_str();
61 +        wizard[1].pfnDlgProc = browse;
62 +        wizard[1].lParam = number;
63 +        wizard[1].pszHeaderTitle = "Browse";
64 +        wizard[1].pszHeaderSubTitle = "View documents on the disc.";
65 + }
66 +
67 + DiscBrowse::~DiscBrowse()
68 + {
69 +        DestroyMenu(popup);
70 +        browsers.erase(number);
71 + }
72 +
73   void DiscBrowse::run(void)
74   {
75 <        MessageBox(NULL, "STUB: Disc Browser", programName.c_str(),
76 <                MB_ICONINFORMATION);
75 >        loadDir();
76 >
77 >        PROPSHEETHEADER header;
78 >
79 >        // header
80 >        header.dwSize = sizeof(header);
81 >        header.dwFlags = PSH_DEFAULT | PSH_HEADER | PSH_PROPSHEETPAGE |
82 >                PSH_USEICONID | PSH_WIZARD97 | PSH_WIZARDHASFINISH;
83 >        header.hwndParent = NULL;
84 >        header.hInstance = gui.instance;
85 >        header.pszIcon = MAKEINTRESOURCE(IDI_VTB_ICON);
86 >        header.nPages = 2;
87 >        header.nStartPage = 0;
88 >        header.ppsp = wizard;
89 >        header.pszbmHeader = MAKEINTRESOURCE(IDB_VTB_BMP);
90 >
91 >        PropertySheet(&header);
92 >        saveDir();
93 > }
94 >
95 > unsigned DiscBrowse::count = 0;
96 > map<unsigned, DiscBrowse*> DiscBrowse::browsers;
97 >
98 > map<HWND, DiscBrowse*> DiscBrowse::windows;
99 >
100 > void DiscBrowse::loadDir(void)
101 > {
102 >        //
103 > }
104 >
105 > void DiscBrowse::saveDir(void)
106 > {
107 >        //
108 > }
109 >
110 > void DiscBrowse::setDiscDir(HWND parent)
111 > {
112 >        //
113 > }
114 >
115 > DiscBrowse* DiscBrowse::which(HWND window)
116 > {
117 >        map<HWND, DiscBrowse*>::iterator itor = windows.find(window);
118 >
119 >        return itor->second;
120 > }
121 >
122 > DiscBrowse* DiscBrowse::which(HWND window, LPARAM l)
123 > {
124 >        LPPROPSHEETPAGE page = LPPROPSHEETPAGE(l);
125 >        map<unsigned, DiscBrowse*>::iterator itor = browsers.find(page->lParam);
126 >
127 >        windows.insert(pair<HWND, DiscBrowse*>(window, itor->second));
128 >
129 >        return itor->second;
130 > }
131 >
132 > int DiscBrowse::browse(HWND dialog, UINT msg, LPARAM l, LPARAM d)
133 > {
134 >        map<unsigned, DiscBrowse*>::iterator itor = browsers.find(LOWORD(d));
135 >        DiscBrowse* data = itor->second;
136 >
137 >        switch (msg)
138 >        {
139 >        case BFFM_INITIALIZED:
140 >                center(dialog);
141 >                SendMessage(dialog, BFFM_SETOKTEXT, 0,
142 >                        LPARAM(toWide("&Select").c_str()));
143 >                SendMessage(dialog, BFFM_SETEXPANDED, FALSE, CSIDL_DRIVES);
144 >                SendMessage(dialog, BFFM_SETSELECTION, TRUE,
145 >                        LPARAM(data->discDir.c_str()));
146 >                break;
147 >        case BFFM_SELCHANGED:
148 >                {
149 >                        IShellFolder* object;
150 >
151 >                        SHGetDesktopFolder(&object);
152 >
153 >                        STRRET thing;
154 >                        char* folder;
155 >
156 >                        object->GetDisplayNameOf(LPCITEMIDLIST(l), SHGDN_FORPARSING,
157 >                                &thing);
158 >                        StrRetToStr(&thing, LPCITEMIDLIST(l), &folder);
159 >                        SendMessage(dialog, BFFM_SETSTATUSTEXT, 0, LPARAM(folder));
160 >
161 >                        if (PathIsUNCServer(folder))
162 >                        {
163 >                                SendMessage(dialog, BFFM_ENABLEOK, 0, 0);
164 >                        }
165 >
166 >                        CoTaskMemFree(folder);
167 >                        object->Release();
168 >                }
169 >                break;
170 >        }
171 >
172 >        return 0;
173 > }
174 >
175 > INT_PTR DiscBrowse::start(HWND dialog, UINT msg, WPARAM w, LPARAM l)
176 > {
177 >        DiscBrowse* data = which(dialog);
178 >
179 >        switch (msg)
180 >        {
181 >        case WM_INITDIALOG:
182 >                center(GetParent(dialog));
183 >                SendMessage(GetParent(dialog), WM_SETICON, ICON_BIG, LPARAM(gui.icon));
184 >
185 >                data = which(dialog, l);
186 >                break;
187 >        case WM_NOTIFY:
188 >                {
189 >                        LPNMHDR nm = LPNMHDR(l);
190 >
191 >                        switch (nm->code)
192 >                        {
193 >                        case PSN_SETACTIVE:
194 >                                PropSheet_SetWizButtons(GetParent(dialog), PSWIZB_FINISH |
195 >                                        PSWIZB_NEXT);
196 >                                break;
197 >                        }
198 >                }
199 >                break;
200 >        }
201 >
202 >        return FALSE;
203 > }
204 >
205 > INT_PTR DiscBrowse::browse(HWND dialog, UINT msg, WPARAM w, LPARAM l)
206 > {
207 >        DiscBrowse* data = which(dialog);
208 >
209 >        switch (msg)
210 >        {
211 >        case WM_INITDIALOG:
212 >                data = which(dialog, l);
213 >
214 >                {
215 >                        LVCOLUMN number, name, file;
216 >
217 >                        number.mask = LVCF_TEXT | LVCF_WIDTH;
218 >                        number.cx = 64;
219 >                        number.pszText = "Number";
220 >                        name.mask = LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
221 >                        name.cx = 256;
222 >                        name.pszText = "Client Name";
223 >                        name.iSubItem = 1;
224 >                        file.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
225 >                        file.fmt = LVCFMT_IMAGE;
226 >                        file.cx = 256;
227 >                        file.pszText = "File Name";
228 >                        file.iSubItem = 2;
229 >
230 >                        ListView_InsertColumn(GetDlgItem(dialog, IDC_BROWSE_DISC), 0,
231 >                                &number);
232 >                        ListView_InsertColumn(GetDlgItem(dialog, IDC_BROWSE_DISC), 1,
233 >                                &name);
234 >                        ListView_InsertColumn(GetDlgItem(dialog, IDC_BROWSE_DISC), 2,
235 >                                &file);
236 >                }
237 >                break;
238 >        case WM_NOTIFY:
239 >                if (w == IDC_BROWSE_DISC)
240 >                {
241 >                        LPNMITEMACTIVATE ni = LPNMITEMACTIVATE(l);
242 >
243 >                        switch (ni->hdr.code)
244 >                        {
245 >                        case NM_DBLCLK:
246 >                                //
247 >                                break;
248 >                        }
249 >                }
250 >                else
251 >                {
252 >                        LPNMHDR nm = LPNMHDR(l);
253 >
254 >                        switch (nm->code)
255 >                        {
256 >                        case PSN_SETACTIVE:
257 >                                PropSheet_SetWizButtons(GetParent(dialog), PSWIZB_BACK |
258 >                                        PSWIZB_FINISH);
259 >                                break;
260 >                        }
261 >                }
262 >                break;
263 >        }
264 >
265 >        return FALSE;
266   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines