1 | /*
|
---|
2 | * This file is (C) Chris Wohlgemuth 1999-2003
|
---|
3 | *
|
---|
4 | * It's part of the Audio/Data-CD-Creator distribution
|
---|
5 | */
|
---|
6 | /*
|
---|
7 | * This program is free software; you can redistribute it and/or modify
|
---|
8 | * it under the terms of the GNU General Public License as published by
|
---|
9 | * the Free Software Foundation; either version 2, or (at your option)
|
---|
10 | * any later version.
|
---|
11 | *
|
---|
12 | * This program is distributed in the hope that it will be useful,
|
---|
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
15 | * GNU General Public License for more details.
|
---|
16 | *
|
---|
17 | * You should have received a copy of the GNU General Public License
|
---|
18 | * along with this program; see the file COPYING. If not, write to
|
---|
19 | * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
---|
20 | */
|
---|
21 |
|
---|
22 | #define INCL_DOSERRORS
|
---|
23 | #define INCL_DOSERRORS
|
---|
24 | #define INCL_GPIBITMAPS
|
---|
25 | #define INCL_REXXSAA
|
---|
26 |
|
---|
27 | #include "mediafolder.hh"
|
---|
28 | #include "mediafolderres.h"
|
---|
29 |
|
---|
30 | #pragma SOMAsDefault(pop)
|
---|
31 | #include <rexxsaa.h> /* needed for RexxStart() */
|
---|
32 | #include <wpclsmgr.hh> /* For wpModuleForClass() */
|
---|
33 | #include <stdio.h>
|
---|
34 | #include <stdlib.h>
|
---|
35 | #include <string.h>
|
---|
36 | #include "sys_funcs.h"
|
---|
37 |
|
---|
38 | #pragma SOMAsDefault(on)
|
---|
39 |
|
---|
40 |
|
---|
41 | ULONG EXPENTRY rxCallPMFunc(PSZ name, LONG argc, RXSTRING argv[], PSZ queuename,PRXSTRING retstring);
|
---|
42 | ULONG EXPENTRY rxCallWPSFunc(PSZ name, LONG argc, RXSTRING argv[], PSZ queuename,PRXSTRING retstring);
|
---|
43 | ULONG EXPENTRY rxCallCWWPSFunc(PSZ name, LONG argc, RXSTRING argv[], PSZ queuename,PRXSTRING retstring);
|
---|
44 |
|
---|
45 | HMODULE queryModuleHandle(PSZ pszClassName);
|
---|
46 |
|
---|
47 | char chrInstallDir[CCHMAXPATH];
|
---|
48 | HPOINTER hptrArrowWE=NULLHANDLE; /* Pointer for slider control */
|
---|
49 |
|
---|
50 | HMTX hmtxFileName;
|
---|
51 |
|
---|
52 | LOADEDBITMAP allBMPs[NUM_CTRL_IDX];
|
---|
53 |
|
---|
54 | /* Format:
|
---|
55 | typedef struct
|
---|
56 | {
|
---|
57 | INT id;
|
---|
58 | RECTL rclSource;
|
---|
59 | HBITMAP hbmSource;
|
---|
60 | RECTL rclDest;
|
---|
61 | }CONTROLINFO;
|
---|
62 | */
|
---|
63 |
|
---|
64 | CONTROLINFO ciControls[NUM_CTRL_IDX]={
|
---|
65 | {0,{0,0,590,70}, NULLHANDLE,{0}},/* main */
|
---|
66 | // {IDPB_POSBAR,{356, 17, 548,25},NULLHANDLE, { 0, 0, 191,10}},
|
---|
67 | {IDSL_POSBAR,{353, 15, 551,28},NULLHANDLE, { 0, 0, 191,10}},
|
---|
68 | {IDPB_SLIDERARM,{0,1,9,8},NULLHANDLE, {0,0,9,9} },
|
---|
69 | // {IDSL_VOLUME,{33, 5,158,14},NULLHANDLE, {0, 0, 126, 9} /* {10,18,93,13} */ },
|
---|
70 | {IDSL_VOLUME,{32, 2,158,17},NULLHANDLE, {0, 0, 126, 9} /* {10,18,93,13} */ },
|
---|
71 | {IDSL_VOLUMEARM,{0,0,9,9},NULLHANDLE, {0,0,9,9}},
|
---|
72 | {IDSL_VOLUMEARM,{0,0,9,9},NULLHANDLE, {0,0,9,9}},
|
---|
73 | // {IDST_PLAYTIME, {351, 25, 551,52},NULLHANDLE, { 0, 0, 190, 27} },
|
---|
74 | {IDST_PLAYTIME, {351, 29, 551,52},NULLHANDLE, { 0, 0, 190, 25} },
|
---|
75 | {0,{0,0,20,72}, NULLHANDLE,{0}},/* Top left */
|
---|
76 | {0,{0,0,20,72}, NULLHANDLE,{0}},/* Top right */
|
---|
77 | /* Achtung destination verwendet fuer position */
|
---|
78 | {IDPB_PLAY, {0, 0, 36, 36},NULLHANDLE, { 114, 18, 150, 54} },/* Play */
|
---|
79 | {IDPB_PLAY, {0, 0, 36,36},NULLHANDLE, { 114, 18, 150, 54} }, /* Playsel */
|
---|
80 |
|
---|
81 | {IDPB_STOP, {0, 0, 36, 36},NULLHANDLE, { 40, 18, 76, 54} },/* Stop */
|
---|
82 | {IDPB_STOP, {0, 0, 36,36},NULLHANDLE, { 40, 18, 76, 54} }, /* Stop sel */
|
---|
83 | {IDPB_PAUSE, {0, 0, 36, 36},NULLHANDLE, { 77, 18, 112, 54} },/* Pause */
|
---|
84 | {IDPB_PAUSE, {0, 0, 36,36},NULLHANDLE, { 77, 18, 112, 54} }, /* Pause sel */
|
---|
85 | {IDPB_SKIPBACK, {0, 0, 36, 36},NULLHANDLE, { 3, 18, 39, 54} },/* Skip back */
|
---|
86 | {IDPB_SKIPBACK, {0, 0, 36,36},NULLHANDLE, { 3, 18, 39, 54} }, /* Skip back sel */
|
---|
87 | {IDPB_SKIPFORWARD, {0, 0, 36, 36},NULLHANDLE, { 151, 18, 187, 54} },/* Skip fwd */
|
---|
88 | {IDPB_SKIPFORWARD, {0, 0, 36,36},NULLHANDLE, { 151, 18, 187, 54} }, /* Skip fwd sel */
|
---|
89 | {0,{0,0,300,20}, NULLHANDLE,{0}},/* Bottom */
|
---|
90 |
|
---|
91 | // {IDCB_REPEAT, {0, 0, 13,13},NULLHANDLE, { 197, 24, 233, 60} }, /* Placeholder for checkbutton */
|
---|
92 |
|
---|
93 | {IDCB_REPEAT, {0, 0, 13,13},NULLHANDLE, { 197, 36, 233, 60} }, /* Placeholder for checkbutton */
|
---|
94 | {IDCB_REPEAT, {0, 0, 13,13},NULLHANDLE, { 197, 36, 233, 60} }, /* Placeholder for checkbutton */
|
---|
95 | {IDCB_REPEAT, {0, 0, 13,13},NULLHANDLE, { 197, 36, 233, 60} }, /* Placeholder for checkbutton selected */
|
---|
96 | {IDCB_REPEAT, {0, 0, 13,13},NULLHANDLE, { 197, 36, 233, 60} }, /* Placeholder for checkbutton selected */
|
---|
97 |
|
---|
98 | {IDCB_RANDOM, {0, 0, 13,13},NULLHANDLE, { 197, 10, 233, 60} }, /* Placeholder for checkbutton */
|
---|
99 | {IDCB_RANDOM, {0, 0, 13,13},NULLHANDLE, { 197, 10, 233, 60} }, /* Placeholder for checkbutton */
|
---|
100 | {IDCB_RANDOM, {0, 0, 13,13},NULLHANDLE, { 197, 10, 233, 60} }, /* Placeholder for checkbutton selected */
|
---|
101 | {IDCB_RANDOM, {0, 0, 13,13},NULLHANDLE, { 197, 10, 233, 60} } /* Placeholder for checkbutton selected */
|
---|
102 |
|
---|
103 | };
|
---|
104 |
|
---|
105 |
|
---|
106 | void errorResource();
|
---|
107 | ULONG messageBox( char* text, ULONG ulTextID , LONG lSizeText,
|
---|
108 | char* title, ULONG ulTitleID, LONG lSizeTitle,
|
---|
109 | HMODULE hResource, HWND hwnd, ULONG ulFlags);
|
---|
110 | BOOL getMessage(char* text,ULONG ulID, LONG lSizeText, HMODULE hResource,HWND hwnd);
|
---|
111 | ULONG cwRequestMutex(HMTX hmtxBMP, ULONG ulTimeOut);
|
---|
112 | ULONG cwReleaseMutex(HMTX hmtxBMP);
|
---|
113 | ULONG cwCreateMutex(HMTX * hmtxBMP);
|
---|
114 | ULONG cwCloseMutex(HMTX hmtxBMP);
|
---|
115 |
|
---|
116 | MRESULT EXPENTRY topCtrlDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) ;
|
---|
117 | MRESULT EXPENTRY rightCtrlDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) ;
|
---|
118 | MRESULT EXPENTRY privateSliderProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
|
---|
119 | HMODULE queryResModuleHandle(void);
|
---|
120 |
|
---|
121 | static void _loadBmps()
|
---|
122 | {
|
---|
123 | HPS hps;
|
---|
124 | BITMAPINFOHEADER bmpInfoHdr;
|
---|
125 | HMODULE hResource;
|
---|
126 |
|
---|
127 | if(allBMPs[MAIN_BMP_IDX].hbm)
|
---|
128 | return;
|
---|
129 |
|
---|
130 | // hResource=queryResModuleHandle();
|
---|
131 | hResource=queryModuleHandle("M_CWMediaFolder");
|
---|
132 |
|
---|
133 | hps=WinGetPS(HWND_DESKTOP);
|
---|
134 |
|
---|
135 | /* The main BMP */
|
---|
136 | allBMPs[MAIN_BMP_IDX].hbm=GpiLoadBitmap(hps, hResource, IDBMP_TOPMIDDLE, 0, 0);
|
---|
137 | GpiQueryBitmapParameters(allBMPs[MAIN_BMP_IDX].hbm, &allBMPs[MAIN_BMP_IDX].bmpInfoHdr);
|
---|
138 |
|
---|
139 | /* Top right bmp */
|
---|
140 | allBMPs[CTRLIDX_TOPRIGHT].hbm=GpiLoadBitmap(hps, hResource, IDBMP_TOPRIGHT, 0, 0);
|
---|
141 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_TOPRIGHT].hbm, &allBMPs[CTRLIDX_TOPRIGHT].bmpInfoHdr);
|
---|
142 |
|
---|
143 | /* Top left bmp */
|
---|
144 | allBMPs[CTRLIDX_TOPLEFT].hbm=GpiLoadBitmap(hps, hResource, IDBMP_TOPLEFT, 0, 0);
|
---|
145 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_TOPLEFT].hbm, &allBMPs[CTRLIDX_TOPLEFT].bmpInfoHdr);
|
---|
146 |
|
---|
147 | /* Bottom bmp */
|
---|
148 | allBMPs[CTRLIDX_BOTTOM].hbm=GpiLoadBitmap(hps, hResource, IDBMP_BOTTOM, 0, 0);
|
---|
149 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_BOTTOM].hbm, &allBMPs[CTRLIDX_BOTTOM].bmpInfoHdr);
|
---|
150 |
|
---|
151 | /* Positionslider bg */
|
---|
152 | ciControls[CTRLIDX_POSSLIDER].hbmSource=allBMPs[MAIN_BMP_IDX].hbm;
|
---|
153 |
|
---|
154 | /* Positionslider arm */
|
---|
155 | allBMPs[CTRLIDX_POSSLIDERARM].hbm=GpiLoadBitmap(hps, hResource, IDBMP_POSSLIDERARM, 0, 0);
|
---|
156 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_POSSLIDERARM].hbm, &allBMPs[CTRLIDX_POSSLIDERARM].bmpInfoHdr);
|
---|
157 | ciControls[CTRLIDX_POSSLIDERARM].hbmSource=allBMPs[CTRLIDX_POSSLIDERARM].hbm;
|
---|
158 |
|
---|
159 | /* Volume slider background */
|
---|
160 | ciControls[CTRLIDX_VOLSLIDER].hbmSource=allBMPs[MAIN_BMP_IDX].hbm;
|
---|
161 |
|
---|
162 | /* Volume slider arm */
|
---|
163 | allBMPs[CTRLIDX_VOLSLIDERARM].hbm=GpiLoadBitmap(hps, hResource, IDBMP_VOLSLIDERARM, 0, 0);
|
---|
164 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_VOLSLIDERARM].hbm, &allBMPs[CTRLIDX_VOLSLIDERARM].bmpInfoHdr);
|
---|
165 | ciControls[CTRLIDX_VOLSLIDERARM].hbmSource=allBMPs[CTRLIDX_VOLSLIDERARM].hbm;
|
---|
166 |
|
---|
167 | /* Volume slider arm selected*/
|
---|
168 | allBMPs[CTRLIDX_VOLSLIDERARMSEL].hbm=GpiLoadBitmap(hps, hResource, IDBMP_VOLSLIDERARMSEL, 0, 0);
|
---|
169 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_VOLSLIDERARMSEL].hbm, &allBMPs[CTRLIDX_VOLSLIDERARMSEL].bmpInfoHdr);
|
---|
170 | ciControls[CTRLIDX_VOLSLIDERARMSEL].hbmSource=allBMPs[CTRLIDX_VOLSLIDERARMSEL].hbm;
|
---|
171 |
|
---|
172 | /* Playtime text field */
|
---|
173 | ciControls[CTRLIDX_PLAYTIME].hbmSource=allBMPs[MAIN_BMP_IDX].hbm;
|
---|
174 |
|
---|
175 | /* Skip back */
|
---|
176 | allBMPs[CTRLIDX_SKIPBACKBUTTON].hbm=GpiLoadBitmap(hps, hResource, IDBMP_SKIPBACK, 0, 0);
|
---|
177 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_SKIPBACKBUTTON].hbm, &allBMPs[CTRLIDX_SKIPBACKBUTTON].bmpInfoHdr);
|
---|
178 | ciControls[CTRLIDX_SKIPBACKBUTTON].hbmSource=allBMPs[CTRLIDX_SKIPBACKBUTTON].hbm;
|
---|
179 |
|
---|
180 | /* Skip back sel */
|
---|
181 | allBMPs[CTRLIDX_SKIPBACKBUTTONSEL].hbm=GpiLoadBitmap(hps, hResource, IDBMP_SKIPBACKSEL, 0, 0);
|
---|
182 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_SKIPBACKBUTTONSEL].hbm, &allBMPs[CTRLIDX_SKIPBACKBUTTONSEL].bmpInfoHdr);
|
---|
183 | ciControls[CTRLIDX_SKIPBACKBUTTONSEL].hbmSource=allBMPs[CTRLIDX_SKIPBACKBUTTONSEL].hbm;
|
---|
184 |
|
---|
185 | /* Stop */
|
---|
186 | allBMPs[CTRLIDX_STOPBUTTON].hbm=GpiLoadBitmap(hps, hResource, IDBMP_STOP, 0, 0);
|
---|
187 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_STOPBUTTON].hbm, &allBMPs[CTRLIDX_STOPBUTTON].bmpInfoHdr);
|
---|
188 | ciControls[CTRLIDX_STOPBUTTON].hbmSource=allBMPs[CTRLIDX_STOPBUTTON].hbm;
|
---|
189 |
|
---|
190 | /* Stop sel */
|
---|
191 | allBMPs[CTRLIDX_STOPBUTTONSEL].hbm=GpiLoadBitmap(hps, hResource, IDBMP_STOPSEL, 0, 0);
|
---|
192 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_STOPBUTTONSEL].hbm, &allBMPs[CTRLIDX_STOPBUTTONSEL].bmpInfoHdr);
|
---|
193 | ciControls[CTRLIDX_STOPBUTTONSEL].hbmSource=allBMPs[CTRLIDX_STOPBUTTONSEL].hbm;
|
---|
194 |
|
---|
195 | /* Pause */
|
---|
196 | allBMPs[CTRLIDX_PAUSEBUTTON].hbm=GpiLoadBitmap(hps, hResource, IDBMP_PAUSE, 0, 0);
|
---|
197 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_PAUSEBUTTON].hbm, &allBMPs[CTRLIDX_PAUSEBUTTON].bmpInfoHdr);
|
---|
198 | ciControls[CTRLIDX_PAUSEBUTTON].hbmSource=allBMPs[CTRLIDX_PAUSEBUTTON].hbm;
|
---|
199 |
|
---|
200 | /* Pause sel */
|
---|
201 | allBMPs[CTRLIDX_PAUSEBUTTONSEL].hbm=GpiLoadBitmap(hps, hResource, IDBMP_PAUSESEL, 0, 0);
|
---|
202 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_PAUSEBUTTONSEL].hbm, &allBMPs[CTRLIDX_PAUSEBUTTONSEL].bmpInfoHdr);
|
---|
203 | ciControls[CTRLIDX_PAUSEBUTTONSEL].hbmSource=allBMPs[CTRLIDX_PAUSEBUTTONSEL].hbm;
|
---|
204 |
|
---|
205 | /* Play */
|
---|
206 | allBMPs[CTRLIDX_PLAYBUTTON].hbm=GpiLoadBitmap(hps, hResource, IDBMP_PLAY, 0, 0);
|
---|
207 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_PLAYBUTTON].hbm, &allBMPs[CTRLIDX_PLAYBUTTON].bmpInfoHdr);
|
---|
208 | ciControls[CTRLIDX_PLAYBUTTON].hbmSource=allBMPs[CTRLIDX_PLAYBUTTON].hbm;
|
---|
209 |
|
---|
210 | /* Play sel */
|
---|
211 | allBMPs[CTRLIDX_PLAYBUTTONSEL].hbm=GpiLoadBitmap(hps, hResource, IDBMP_PLAYSEL, 0, 0);
|
---|
212 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_PLAYBUTTONSEL].hbm, &allBMPs[CTRLIDX_PLAYBUTTONSEL].bmpInfoHdr);
|
---|
213 | ciControls[CTRLIDX_PLAYBUTTONSEL].hbmSource=allBMPs[CTRLIDX_PLAYBUTTONSEL].hbm;
|
---|
214 |
|
---|
215 | /* Skip forward */
|
---|
216 | allBMPs[CTRLIDX_SKIPFWDBUTTON].hbm=GpiLoadBitmap(hps, hResource, IDBMP_SKIPFORWARD, 0, 0);
|
---|
217 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_SKIPFWDBUTTON].hbm, &allBMPs[CTRLIDX_SKIPFWDBUTTON].bmpInfoHdr);
|
---|
218 | ciControls[CTRLIDX_SKIPFWDBUTTON].hbmSource=allBMPs[CTRLIDX_SKIPFWDBUTTON].hbm;
|
---|
219 |
|
---|
220 | /* Skip forward sel */
|
---|
221 | allBMPs[CTRLIDX_SKIPFWDBUTTONSEL].hbm=GpiLoadBitmap(hps, hResource, IDBMP_SKIPFORWARDSEL, 0, 0);
|
---|
222 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_SKIPFWDBUTTONSEL].hbm, &allBMPs[CTRLIDX_SKIPFWDBUTTONSEL].bmpInfoHdr);
|
---|
223 | ciControls[CTRLIDX_SKIPFWDBUTTONSEL].hbmSource=allBMPs[CTRLIDX_SKIPFWDBUTTONSEL].hbm;
|
---|
224 |
|
---|
225 | /* Checkbutton checked */
|
---|
226 | allBMPs[CTRLIDX_CHECK].hbm=GpiLoadBitmap(hps, hResource, IDBMP_CHECK, 0, 0);
|
---|
227 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_CHECK].hbm, &allBMPs[CTRLIDX_CHECK].bmpInfoHdr);
|
---|
228 | ciControls[CTRLIDX_CHECK].hbmSource=allBMPs[CTRLIDX_CHECK].hbm;
|
---|
229 | /* Adjust source pos */
|
---|
230 | ciControls[CTRLIDX_CHECK].rclSource.yBottom=0;
|
---|
231 | ciControls[CTRLIDX_CHECK].rclSource.yTop=allBMPs[CTRLIDX_CHECK].bmpInfoHdr.cy;
|
---|
232 | ciControls[CTRLIDX_CHECK].rclSource.xLeft=0;
|
---|
233 | ciControls[CTRLIDX_CHECK].rclSource.xRight=allBMPs[CTRLIDX_CHECK].bmpInfoHdr.cx;
|
---|
234 |
|
---|
235 | /* Checkbutton unchecked */
|
---|
236 | allBMPs[CTRLIDX_UNCHECK].hbm=GpiLoadBitmap(hps, hResource, IDBMP_UNCHECK, 0, 0);
|
---|
237 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_UNCHECK].hbm, &allBMPs[CTRLIDX_UNCHECK].bmpInfoHdr);
|
---|
238 | ciControls[CTRLIDX_UNCHECK].hbmSource=allBMPs[CTRLIDX_UNCHECK].hbm;
|
---|
239 | ciControls[CTRLIDX_UNCHECK].rclSource.yBottom=0;
|
---|
240 | ciControls[CTRLIDX_UNCHECK].rclSource.yTop=allBMPs[CTRLIDX_UNCHECK].bmpInfoHdr.cy;
|
---|
241 | ciControls[CTRLIDX_UNCHECK].rclSource.xLeft=0;
|
---|
242 | ciControls[CTRLIDX_UNCHECK].rclSource.xRight=allBMPs[CTRLIDX_UNCHECK].bmpInfoHdr.cx;
|
---|
243 |
|
---|
244 | /* Checkbutton checked selected */
|
---|
245 | allBMPs[CTRLIDX_CHECKSEL].hbm=GpiLoadBitmap(hps, hResource, IDBMP_CHECKSEL, 0, 0);
|
---|
246 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_CHECKSEL].hbm, &allBMPs[CTRLIDX_CHECKSEL].bmpInfoHdr);
|
---|
247 | ciControls[CTRLIDX_CHECKSEL].hbmSource=allBMPs[CTRLIDX_CHECKSEL].hbm;
|
---|
248 | /* Adjust source pos */
|
---|
249 | ciControls[CTRLIDX_CHECKSEL].rclSource.yBottom=0;
|
---|
250 | ciControls[CTRLIDX_CHECKSEL].rclSource.yTop=allBMPs[CTRLIDX_CHECKSEL].bmpInfoHdr.cy;
|
---|
251 | ciControls[CTRLIDX_CHECKSEL].rclSource.xLeft=0;
|
---|
252 | ciControls[CTRLIDX_CHECKSEL].rclSource.xRight=allBMPs[CTRLIDX_CHECKSEL].bmpInfoHdr.cx;
|
---|
253 |
|
---|
254 | /* Checkbutton unchecked selected */
|
---|
255 | allBMPs[CTRLIDX_UNCHECKSEL].hbm=GpiLoadBitmap(hps, hResource, IDBMP_UNCHECKSEL, 0, 0);
|
---|
256 | GpiQueryBitmapParameters(allBMPs[CTRLIDX_UNCHECKSEL].hbm, &allBMPs[CTRLIDX_UNCHECKSEL].bmpInfoHdr);
|
---|
257 | ciControls[CTRLIDX_UNCHECKSEL].hbmSource=allBMPs[CTRLIDX_UNCHECKSEL].hbm;
|
---|
258 | ciControls[CTRLIDX_UNCHECKSEL].rclSource.yBottom=0;
|
---|
259 | ciControls[CTRLIDX_UNCHECKSEL].rclSource.yTop=allBMPs[CTRLIDX_UNCHECKSEL].bmpInfoHdr.cy;
|
---|
260 | ciControls[CTRLIDX_UNCHECKSEL].rclSource.xLeft=0;
|
---|
261 | ciControls[CTRLIDX_UNCHECKSEL].rclSource.xRight=allBMPs[CTRLIDX_UNCHECK].bmpInfoHdr.cx;
|
---|
262 | /*********************/
|
---|
263 |
|
---|
264 | /* Checkbutton checked */
|
---|
265 | // allBMPs[CTRLIDX_CHECK].hbm=GpiLoadBitmap(hps, hResource, IDBMP_CHECK, 0, 0);
|
---|
266 | // GpiQueryBitmapParameters(allBMPs[CTRLIDX_CHECK].hbm, &allBMPs[CTRLIDX_CHECK].bmpInfoHdr);
|
---|
267 | ciControls[CTRLIDX_RANDOMCHECK].hbmSource=allBMPs[CTRLIDX_CHECK].hbm;
|
---|
268 | /* Adjust source pos */
|
---|
269 | ciControls[CTRLIDX_RANDOMCHECK].rclSource.yBottom=0;
|
---|
270 | ciControls[CTRLIDX_RANDOMCHECK].rclSource.yTop=allBMPs[CTRLIDX_CHECK].bmpInfoHdr.cy;
|
---|
271 | ciControls[CTRLIDX_RANDOMCHECK].rclSource.xLeft=0;
|
---|
272 | ciControls[CTRLIDX_RANDOMCHECK].rclSource.xRight=allBMPs[CTRLIDX_CHECK].bmpInfoHdr.cx;
|
---|
273 |
|
---|
274 | /* Checkbutton unchecked */
|
---|
275 | // allBMPs[CTRLIDX_UNCHECK].hbm=GpiLoadBitmap(hps, hResource, IDBMP_UNCHECK, 0, 0);
|
---|
276 | // GpiQueryBitmapParameters(allBMPs[CTRLIDX_UNCHECK].hbm, &allBMPs[CTRLIDX_UNCHECK].bmpInfoHdr);
|
---|
277 | ciControls[CTRLIDX_RANDOMUNCHECK].hbmSource=allBMPs[CTRLIDX_UNCHECK].hbm;
|
---|
278 | ciControls[CTRLIDX_RANDOMUNCHECK].rclSource.yBottom=0;
|
---|
279 | ciControls[CTRLIDX_RANDOMUNCHECK].rclSource.yTop=allBMPs[CTRLIDX_UNCHECK].bmpInfoHdr.cy;
|
---|
280 | ciControls[CTRLIDX_RANDOMUNCHECK].rclSource.xLeft=0;
|
---|
281 | ciControls[CTRLIDX_RANDOMUNCHECK].rclSource.xRight=allBMPs[CTRLIDX_UNCHECK].bmpInfoHdr.cx;
|
---|
282 |
|
---|
283 | /* Checkbutton checked selected */
|
---|
284 | // allBMPs[CTRLIDX_RANDOMCHECKSEL].hbm=allBMPs[CTRLIDX_CHECKSEL].hbm;
|
---|
285 | // GpiQueryBitmapParameters(allBMPs[CTRLIDX_CHECKSEL].hbm, &allBMPs[CTRLIDX_RANDOMCHECKSEL].bmpInfoHdr);
|
---|
286 | ciControls[CTRLIDX_RANDOMCHECKSEL].hbmSource=allBMPs[CTRLIDX_CHECKSEL].hbm;
|
---|
287 | /* Adjust source pos */
|
---|
288 | ciControls[CTRLIDX_RANDOMCHECKSEL].rclSource.yBottom=0;
|
---|
289 | ciControls[CTRLIDX_RANDOMCHECKSEL].rclSource.yTop=allBMPs[CTRLIDX_CHECKSEL].bmpInfoHdr.cy;
|
---|
290 | ciControls[CTRLIDX_RANDOMCHECKSEL].rclSource.xLeft=0;
|
---|
291 | ciControls[CTRLIDX_RANDOMCHECKSEL].rclSource.xRight=allBMPs[CTRLIDX_CHECKSEL].bmpInfoHdr.cx;
|
---|
292 |
|
---|
293 |
|
---|
294 | /* Random checkbutton unchecked selected */
|
---|
295 | // allBMPs[CTRLIDX_RANDOMUNCHECKSEL].hbm=allBMPs[CTRLIDX_UNCHECKSEL].hbm;
|
---|
296 | // GpiQueryBitmapParameters(allBMPs[CTRLIDX_UNCHECKSEL].hbm, &allBMPs[CTRLIDX_RANDOMUNCHECKSEL].bmpInfoHdr);
|
---|
297 | ciControls[CTRLIDX_RANDOMUNCHECKSEL].hbmSource=allBMPs[CTRLIDX_UNCHECKSEL].hbm;
|
---|
298 | ciControls[CTRLIDX_RANDOMUNCHECKSEL].rclSource.yBottom=0;
|
---|
299 | ciControls[CTRLIDX_RANDOMUNCHECKSEL].rclSource.yTop=allBMPs[CTRLIDX_UNCHECKSEL].bmpInfoHdr.cy;
|
---|
300 | ciControls[CTRLIDX_RANDOMUNCHECKSEL].rclSource.xLeft=0;
|
---|
301 | ciControls[CTRLIDX_RANDOMUNCHECK].rclSource.xRight=allBMPs[CTRLIDX_UNCHECK].bmpInfoHdr.cx;
|
---|
302 |
|
---|
303 |
|
---|
304 | WinReleasePS(hps);
|
---|
305 | }
|
---|
306 | /*APIRET APIENTRY DosQueryModFromEIP( HMODULE *phMod,
|
---|
307 | ULONG *pObjNum,
|
---|
308 | ULONG BuffLen,
|
---|
309 | PCHAR pBuff,
|
---|
310 | ULONG *pOffset,
|
---|
311 | PVOID Address );*/
|
---|
312 |
|
---|
313 | /* This function returns the module handle of our class-dll */
|
---|
314 | HMODULE queryModuleHandle(PSZ pszClassName)
|
---|
315 | {
|
---|
316 | static HMODULE hmod=0;
|
---|
317 |
|
---|
318 | if(!hmod) {
|
---|
319 | // PSZ pathname;
|
---|
320 | ULONG ulObj, ulBufLen, ulOffset;
|
---|
321 | char thePath[CCHMAXPATH];
|
---|
322 |
|
---|
323 | if(DosQueryModFromEIP( &hmod,
|
---|
324 | &ulObj,
|
---|
325 | CCHMAXPATH,
|
---|
326 | thePath,
|
---|
327 | &ulOffset,
|
---|
328 | (ULONG) queryModuleHandle )!=NO_ERROR) {
|
---|
329 | SysWriteToTrapLog("Can't get module handle for class DLL!\n");
|
---|
330 | hmod=0;
|
---|
331 | return NULLHANDLE; /* Error */
|
---|
332 | }
|
---|
333 |
|
---|
334 | #if 0
|
---|
335 | /*
|
---|
336 | Sometimes the returned name isn't correct. To prevent loading a bunch of classes just
|
---|
337 | to get the module handle the following is replaced by the undocumented DosQueryModFromEIP()
|
---|
338 | call. Maybe this even fixes some deadlocks people had during WPS startup with the classes
|
---|
339 | because now the WPS isn't urged to load all classes at once.
|
---|
340 | */
|
---|
341 | pathname=((WPClassManager*)SOMClassMgrObject) //Query Pathname of class file
|
---|
342 | ->wpModuleForClass(pszClassName);
|
---|
343 | if(DosQueryModuleHandle(pathname,&hmod)) {
|
---|
344 | pathname=((WPClassManager*)SOMClassMgrObject) //Query Pathname of class file
|
---|
345 | ->wpModuleForClass("M_CWMediaFolder");
|
---|
346 | if(DosQueryModuleHandle(pathname,&hmod)) {
|
---|
347 | pathname=((WPClassManager*)SOMClassMgrObject) //Query Pathname of class file
|
---|
348 | ->wpModuleForClass("CWMediaFolder");
|
---|
349 | if(DosQueryModuleHandle(pathname,&hmod)) {
|
---|
350 | pathname=((WPClassManager*)SOMClassMgrObject) //Query Pathname of class file
|
---|
351 | ->wpModuleForClass("M_CWAudioShadow");
|
---|
352 | if(DosQueryModuleHandle(pathname,&hmod)) {
|
---|
353 | pathname=((WPClassManager*)SOMClassMgrObject) //Query Pathname of class file
|
---|
354 | ->wpModuleForClass("CWAudioShadow");
|
---|
355 | if(DosQueryModuleHandle(pathname,&hmod)) {
|
---|
356 | pathname=((WPClassManager*)SOMClassMgrObject) //Query Pathname of class file
|
---|
357 | ->wpModuleForClass("M_CWCDFolder");
|
---|
358 | if(DosQueryModuleHandle(pathname,&hmod)) {
|
---|
359 | pathname=((WPClassManager*)SOMClassMgrObject) //Query Pathname of class file
|
---|
360 | ->wpModuleForClass("CWCDFolder");
|
---|
361 | if(DosQueryModuleHandle(pathname,&hmod)) {
|
---|
362 | hmod=0;
|
---|
363 | return NULLHANDLE; /* Error */
|
---|
364 | }
|
---|
365 | }
|
---|
366 | }
|
---|
367 | }
|
---|
368 | }
|
---|
369 | }
|
---|
370 | }
|
---|
371 | #endif
|
---|
372 |
|
---|
373 | /* Get install dir. */
|
---|
374 | if(!DosQueryModuleName(hmod,sizeof(chrInstallDir),chrInstallDir)) {
|
---|
375 | char *found;
|
---|
376 | if((found=strrchr(chrInstallDir,'\\'))!=NULLHANDLE) {
|
---|
377 | *found=0;
|
---|
378 | if((found=strrchr(chrInstallDir,'\\'))!=NULLHANDLE)
|
---|
379 | *found=0;
|
---|
380 |
|
---|
381 | /* Save the dir for config files. */
|
---|
382 | //strcpy( chrConfigDir, chrInstallDir);
|
---|
383 | }
|
---|
384 | }
|
---|
385 | }/* end of if(!hmod) */
|
---|
386 | return hmod;
|
---|
387 | }
|
---|
388 |
|
---|
389 | /* This function returns the module handle of our ressource DLL */
|
---|
390 | HMODULE queryResModuleHandle(void)
|
---|
391 | {
|
---|
392 | static HMODULE hmod=0;
|
---|
393 |
|
---|
394 | if(!hmod) {
|
---|
395 | char path[CCHMAXPATH];
|
---|
396 | char buf[CCHMAXPATH];
|
---|
397 | char* found;
|
---|
398 | APIRET rc;
|
---|
399 |
|
---|
400 | /* Get the language code of our system and load the
|
---|
401 | resource DLL with the right language */
|
---|
402 | do {
|
---|
403 | static char chrLang[]="en_EN";
|
---|
404 | PCSZ pszLang=chrLang;
|
---|
405 | char *chrPtr;
|
---|
406 |
|
---|
407 | /* Get Language var */
|
---|
408 | if(NO_ERROR!=DosScanEnv("LANG", &pszLang))
|
---|
409 | {
|
---|
410 | /* No language var set */
|
---|
411 | pszLang=chrLang; /* Be safe. I don't know if a failing DosScanEnv()
|
---|
412 | may change the contents of the pointer. */
|
---|
413 | }
|
---|
414 |
|
---|
415 | // SysWriteToTrapLog("LANG: %s\n", pszLang);
|
---|
416 |
|
---|
417 | /* Skip leading spaces */
|
---|
418 | chrPtr=(char*)pszLang;
|
---|
419 | while(*chrPtr==' ')
|
---|
420 | chrPtr++;
|
---|
421 |
|
---|
422 | /* Check if value seems to be valid. The var must be something like xx_XX thus length is 5 */
|
---|
423 | if(strlen(chrPtr)<5)
|
---|
424 | break;
|
---|
425 |
|
---|
426 | if(DosQueryModuleName(queryModuleHandle("M_CWMediaFolder"),sizeof(path),path)!=NO_ERROR)
|
---|
427 | break;
|
---|
428 |
|
---|
429 | found=strrchr(path,'\\');
|
---|
430 | if(!found)
|
---|
431 | break;
|
---|
432 | *found=0;
|
---|
433 |
|
---|
434 | /* Extract the first two chars */
|
---|
435 | sprintf(buf, RESDLLNAME, chrPtr[0], chrPtr[1]);
|
---|
436 | strcat(path,buf);
|
---|
437 |
|
---|
438 | if(DosLoadModule(buf,sizeof(buf),path, &hmod)==NO_ERROR)
|
---|
439 | break;
|
---|
440 |
|
---|
441 | /* NLS DLL not found. Try to load default */
|
---|
442 | found=strrchr(path,'\\');
|
---|
443 | if(!found)
|
---|
444 | break;
|
---|
445 |
|
---|
446 | *found=0;
|
---|
447 | sprintf(buf, DEFRESDLLNAME);
|
---|
448 | strcat(path,buf);
|
---|
449 |
|
---|
450 | rc=DosLoadModule(buf,sizeof(buf),path, &hmod);
|
---|
451 | if(rc==NO_ERROR)
|
---|
452 | break;
|
---|
453 | hmod=NULLHANDLE;
|
---|
454 | }while(FALSE);
|
---|
455 | }
|
---|
456 | return hmod;
|
---|
457 | }
|
---|
458 |
|
---|
459 |
|
---|
460 | BOOL _queryHelpLibrary(char * chrBuffer, int iSize)
|
---|
461 | {
|
---|
462 | char chrBuf[CCHMAXPATH];
|
---|
463 |
|
---|
464 | queryModuleHandle("M_CWMediaFolder");
|
---|
465 | sprintf(chrBuf,"%s\\bin\\mediafld.hlp",chrInstallDir);
|
---|
466 | strncpy(chrBuffer, chrBuf, iSize);
|
---|
467 | chrBuffer[iSize-1]=0;
|
---|
468 | return TRUE;
|
---|
469 | }
|
---|
470 |
|
---|
471 |
|
---|
472 | BOOL M_CWMediaFolder::wpclsQueryDefaultHelp(PULONG HelpPanelId, PSZ HelpLibrary)
|
---|
473 | {
|
---|
474 | if(HelpLibrary)
|
---|
475 | _queryHelpLibrary(HelpLibrary, CCHMAXPATH);
|
---|
476 |
|
---|
477 | //SysWriteToTrapLog("%s\n", HelpLibrary);
|
---|
478 | if(HelpPanelId)
|
---|
479 | *HelpPanelId= IDHLP_MEDIAFOLDERMAIN;
|
---|
480 |
|
---|
481 | return TRUE;
|
---|
482 | }
|
---|
483 |
|
---|
484 | /* Overriden function which returns our class name */
|
---|
485 | PSZ M_CWMediaFolder::wpclsQueryTitle()
|
---|
486 | {
|
---|
487 | static char chrTitle[40];
|
---|
488 |
|
---|
489 | if(getMessage(chrTitle, IDSTR_TITLEMEDIAFOLDER,sizeof(chrTitle), queryResModuleHandle(), HWND_DESKTOP))
|
---|
490 | return chrTitle;
|
---|
491 | /* Fall back in case of error */
|
---|
492 | return "Media-Player";
|
---|
493 | }
|
---|
494 |
|
---|
495 | /* Overriden function which returns the custom icon */
|
---|
496 | ULONG M_CWMediaFolder::wpclsQueryIconData(PICONINFO pIconInfo)
|
---|
497 | {
|
---|
498 | // HMODULE hResource=queryResModuleHandle();
|
---|
499 | /* The icon is bound to the class DLL not the language DLL */
|
---|
500 | HMODULE hResource=queryModuleHandle("M_CWMediaFolder");
|
---|
501 |
|
---|
502 | if(!hResource)
|
---|
503 | return M_CWProgFolder::wpclsQueryIconData(pIconInfo);
|
---|
504 |
|
---|
505 | if (pIconInfo) {
|
---|
506 | pIconInfo->fFormat = ICON_RESOURCE;
|
---|
507 | pIconInfo->hmod = hResource;
|
---|
508 | pIconInfo->resid = IDICON_FOLDER1;
|
---|
509 | } /* endif */
|
---|
510 |
|
---|
511 | return ( sizeof(ICONINFO) );
|
---|
512 | }
|
---|
513 |
|
---|
514 | ULONG M_CWMediaFolder::wpclsQueryIconDataN(PICONINFO pIconInfo, ULONG ulIconIndex)
|
---|
515 | {
|
---|
516 | //HMODULE hResource=queryResModuleHandle();
|
---|
517 | /* The icon is bound to the class DLL not the language DLL */
|
---|
518 | HMODULE hResource=queryModuleHandle("M_CWMediaFolder");
|
---|
519 | if(!hResource)
|
---|
520 | return M_CWProgFolder::wpclsQueryIconDataN(pIconInfo, ulIconIndex);
|
---|
521 |
|
---|
522 | if (pIconInfo) {
|
---|
523 | pIconInfo->fFormat = ICON_RESOURCE;
|
---|
524 | pIconInfo->hmod = hResource;
|
---|
525 | pIconInfo->resid = IDICON_FOLDER2;
|
---|
526 | } /* endif */
|
---|
527 | return ( sizeof(ICONINFO) );
|
---|
528 | }
|
---|
529 |
|
---|
530 | void M_CWMediaFolder::wpclsInitData()
|
---|
531 | {
|
---|
532 | COUNTRYCODE country= {0};
|
---|
533 | COUNTRYINFO countryInfo= {0};
|
---|
534 | ULONG ulInfoLen=0;
|
---|
535 | APIRET rc;
|
---|
536 | char path[CCHMAXPATH];
|
---|
537 | char* found;
|
---|
538 | char buf[CCHMAXPATH];
|
---|
539 | HATOMTBL hatSystem;
|
---|
540 |
|
---|
541 | cwCreateMutex(&hmtxFileName);
|
---|
542 |
|
---|
543 | /* Call parent */
|
---|
544 | M_CWProgFolder::wpclsInitData();
|
---|
545 |
|
---|
546 | /* Get slider cursor */
|
---|
547 | if(!hptrArrowWE)
|
---|
548 | hptrArrowWE=WinLoadPointer(HWND_DESKTOP, queryModuleHandle("M_CWMediaFolder"), IDPTR_ARROWWE);
|
---|
549 | /* Register the slider window class */
|
---|
550 | WinRegisterClass(WinQueryAnchorBlock(HWND_DESKTOP), SLIDER_CLASS, privateSliderProc,0, SLADDBYTES);
|
---|
551 |
|
---|
552 | /* Register media folder REXX functions */
|
---|
553 | RexxRegisterFunctionExe("MFldrCallFunc", (PFN)rxCallCWWPSFunc);
|
---|
554 |
|
---|
555 | _loadBmps();
|
---|
556 |
|
---|
557 | }
|
---|
558 |
|
---|
559 | void M_CWMediaFolder::wpclsUnInitData()
|
---|
560 | {
|
---|
561 | /* Don't deregister the function here. If doing it the function
|
---|
562 | may be unavailable if the class object goes dormant. */
|
---|
563 | /* RexxDeregisterFunction("MFldrCallFunc"); */
|
---|
564 |
|
---|
565 | cwCloseMutex( hmtxFileName);
|
---|
566 | M_CWProgFolder::wpclsUnInitData();
|
---|
567 | }
|
---|
568 |
|
---|
569 |
|
---|
570 | ULONG M_CWMediaFolder::wpclsQueryStyle()
|
---|
571 | {
|
---|
572 | /* CWProgFolder returns *_NEVERTEMPLATE but we want a template */
|
---|
573 |
|
---|
574 | /* We don't want an automatic template because we create it during
|
---|
575 | installation because we need one with an ID so we can create a shadow
|
---|
576 | without problems. So we return CLSSTYLE_DONTTEMPLATE.
|
---|
577 | Another way would be an override of wpclsCreateDefaultTemplate()
|
---|
578 | but this works, too, and we have to override this method anyway. We must
|
---|
579 | disable CLSSTYLE_NEVERTEMPLATE or 'Create another' and the template checkbox
|
---|
580 | will be lost. */
|
---|
581 | return (M_CWProgFolder::wpclsQueryStyle()&~CLSSTYLE_NEVERTEMPLATE)|CLSSTYLE_DONTTEMPLATE;
|
---|
582 | }
|
---|
583 |
|
---|
584 | void writeLog(char* logFile, char* logText);
|
---|
585 |
|
---|
586 | static void createMediaFolderShadow(M_WPObject * m_wpObject)
|
---|
587 | {
|
---|
588 | char chrSetup[CCHMAXPATH];
|
---|
589 |
|
---|
590 | /* Get special settings from the INI file */
|
---|
591 | if(PrfQueryProfileInt(HINI_USERPROFILE, APPKEY_CWMM, MFLDR_NO_TEMPLATE_SHADOW, 0))
|
---|
592 | return;
|
---|
593 |
|
---|
594 | if(!WinQueryObject(ID_MEDIALDRTMPL_SHADOW))
|
---|
595 | {
|
---|
596 | sprintf(chrSetup,"SHADOWID=%s;OBJECTID=%s;", ID_MEDIAFLDRTEMPLATE,ID_MEDIALDRTMPL_SHADOW);
|
---|
597 | WinCreateObject("WPShadow", m_wpObject->wpclsQueryTitle(), chrSetup, ID_MMFOLDER, CO_UPDATEIFEXISTS);
|
---|
598 | }
|
---|
599 | };
|
---|
600 |
|
---|
601 | BOOL M_CWMediaFolder::wpclsCreateDefaultTemplates(WPObject * wpObject)
|
---|
602 | {
|
---|
603 | HOBJECT hObject;
|
---|
604 | WPObject * wpTemplate;
|
---|
605 | char chrSetup[CCHMAXPATH*2];
|
---|
606 | BOOL rc;
|
---|
607 |
|
---|
608 | #ifdef WRITE_TEMPLATE_LOG
|
---|
609 | writeLog( "template.log", "In wpclsCreateDefaultTemplates()\n");
|
---|
610 | rc=FALSE;
|
---|
611 | TRY_LOUD(TEMPLATE) {
|
---|
612 | do {
|
---|
613 |
|
---|
614 | if((hObject=WinQueryObject(ID_MEDIAFLDRTEMPLATE))!=NULLHANDLE) {
|
---|
615 | writeLog( "template.log", "1 WinQueryObject() gibt hObject zurck. Template bereits vorhanden.\n");
|
---|
616 | /* There's an object with the ID. Check if it's the right template */
|
---|
617 | if((wpTemplate=wpclsQueryObject(hObject))==NULLHANDLE) {
|
---|
618 | /* A handle but no object?! Shouldn't happen, fall back to default. */
|
---|
619 | writeLog( "template.log", "2 wpTemplate zu hObject kann nicht gefunden werden!!! -> break\n");
|
---|
620 | break;
|
---|
621 | }
|
---|
622 |
|
---|
623 | if(somIsObj(wpTemplate)) {
|
---|
624 | writeLog( "template.log", "3 wpTemplate ist ein SOMObject. Test, ob ein CWAudio-Objekt...\n");
|
---|
625 | if(wpTemplate->somIsInstanceOf(this)) {
|
---|
626 | ULONG ulStyle;
|
---|
627 |
|
---|
628 | writeLog( "template.log", "4 wpTemplate ist ein CWAudio-Objekt.\n");
|
---|
629 |
|
---|
630 | /* It's an instance of our class. Make sure it's a template. */
|
---|
631 | ulStyle=wpTemplate->wpQueryStyle();
|
---|
632 | writeLog( "template.log", "5 ulStyle=wpTemplate->wpQueryStyle(); done\n");
|
---|
633 | wpTemplate->wpSetStyle(ulStyle|OBJSTYLE_TEMPLATE);
|
---|
634 | writeLog( "template.log", "6 wpTemplate->wpSetStyle(ulStyle|OBJSTYLE_TEMPLATE); done\n");
|
---|
635 | rc=TRUE;
|
---|
636 | break;
|
---|
637 | /* Ok we have a template */
|
---|
638 | }
|
---|
639 | else
|
---|
640 | writeLog( "template.log", "7 Nein, kein CWAudio-Objekt. Entfernen...\n");
|
---|
641 | /* The object isn't our template. Probably left over from previous installation
|
---|
642 | so remove it. */
|
---|
643 | ((WPFileSystem*)wpTemplate)->wpSetAttr(FILE_NORMAL); /* Remove system, readonly, hidden flags */
|
---|
644 | writeLog( "template.log", "8 ((WPFileSystem*)wpTemplate)->wpSetAttr(FILE_NORMAL); done\n");
|
---|
645 | wpTemplate->wpSetStyle(0);/* Remove styles so deleting is possible */
|
---|
646 | writeLog( "template.log", "9 wpTemplate->wpSetStyle(0); done\n");
|
---|
647 | wpTemplate->wpDelete(NULL);
|
---|
648 | writeLog( "template.log", "10 wpTemplate->wpDelete(NULL); done\n");
|
---|
649 | }/* somIsObj() */
|
---|
650 | else
|
---|
651 | writeLog( "template.log", "11 wpTemplate ist kein SOMObject!!?\n");
|
---|
652 | }/* if((hObject=WinQueryObject(ID_AUDIOTEMPLATE))!=NULLHANDLE) */
|
---|
653 | else
|
---|
654 | writeLog( "template.log", "12 WinQueryObject() gibt NULLHANDLE zurck. Kein Template vorhanden.\n");
|
---|
655 |
|
---|
656 | wpTemplate=wpObject;
|
---|
657 | /* Create a new template */
|
---|
658 | /* Get Multimedia template folder */
|
---|
659 | writeLog( "template.log", "13 Neues Template erstellen...\n");
|
---|
660 | if((hObject=WinQueryObject(ID_MMTEMPLATEFOLDER))!=NULLHANDLE) {
|
---|
661 | writeLog( "template.log", "14 Multimediaordner gefunden...\n");
|
---|
662 | /* There's an object with the ID. */
|
---|
663 | if((wpTemplate=wpclsQueryObject(hObject))==NULLHANDLE) {
|
---|
664 | writeLog( "template.log", "15 Objekt-Ptr. zu Multimediaordner nicht gefunden!!\n");
|
---|
665 | /* A handle but no object?! Shouldn't happen, fall back to default. */
|
---|
666 | wpTemplate=wpObject;
|
---|
667 | }
|
---|
668 | writeLog( "template.log", "15b Objekt-Ptr. zu Multimediaordner gefunden!!\n");
|
---|
669 | }
|
---|
670 | else
|
---|
671 | writeLog( "template.log", "16 Multimediaordner nicht gefunden. Benutze Schablonen-Ordner\n");
|
---|
672 |
|
---|
673 | sprintf(chrSetup,
|
---|
674 | "TEMPLATE=YES;OBJECTID=%s", ID_MEDIAFLDRTEMPLATE);
|
---|
675 | writeLog( "template.log", "16b erstelle Template...\n");
|
---|
676 | if((wpTemplate=wpclsNew(MEDIAFLDR_TEMPLATE_NAME, chrSetup, (WPFolder*)wpTemplate, FALSE))!=NULLHANDLE) {
|
---|
677 | writeLog( "template.log", "17 wpTemplate=wpclsNew() war erfogreich.\n");
|
---|
678 | sprintf(chrSetup,
|
---|
679 | // "DEFAULTVIEW=DETAILS;DETAILSCLASS=CWAudioShadow;SORTCLASS=CWAudioShadow;");
|
---|
680 | "DEFAULTVIEW=DETAILS;DETAILSCLASS=CWAudioShadow;SORTCLASS=CWAudioShadow;DETAILSTODISPLAY=0,1,4,12,13,14,15,16,17,18,19,20,21;SORTBYATTR=6,24,25,26,27,28,29,30,31,32,33");
|
---|
681 | if(somIsObj(wpTemplate)) {
|
---|
682 | writeLog( "template.log", "18 wpTemplate ist ein SOMObject.\n");
|
---|
683 | wpTemplate->wpSetup(chrSetup);
|
---|
684 | writeLog( "template.log", "19 wpTemplate->wpSetup(chrSetup); done\n");
|
---|
685 | }
|
---|
686 | rc=TRUE;
|
---|
687 | }
|
---|
688 | writeLog( "template.log", "20 Verlasse while()\n");
|
---|
689 | }while(FALSE);
|
---|
690 | }
|
---|
691 | CATCH(TEMPLATE)
|
---|
692 | {
|
---|
693 | } END_CATCH;
|
---|
694 | if(rc)
|
---|
695 | writeLog( "template.log", "21 Verlasse wpclsCreateDefaultTemplates() mit rc=TRUE\n\n");
|
---|
696 | else
|
---|
697 | writeLog( "template.log", "21 Verlasse wpclsCreateDefaultTemplates() mit rc=FALSE\n\n");
|
---|
698 | return rc;
|
---|
699 | /* Above is for debugging only */
|
---|
700 | #else
|
---|
701 |
|
---|
702 | rc=FALSE;
|
---|
703 | TRY_LOUD(TEMPLATE) {
|
---|
704 | do {
|
---|
705 | if((hObject=WinQueryObject(ID_MEDIAFLDRTEMPLATE))!=NULLHANDLE) {
|
---|
706 | /* There's an object with the ID. Check if it's the right template */
|
---|
707 | if((wpTemplate=wpclsQueryObject(hObject))==NULLHANDLE) {
|
---|
708 | /* A handle but no object?! Shouldn't happen, fall back to default. */
|
---|
709 | break;
|
---|
710 | }
|
---|
711 |
|
---|
712 | if(somIsObj(wpTemplate)) {
|
---|
713 | if(wpTemplate->somIsInstanceOf(this)) {
|
---|
714 | ULONG ulStyle;
|
---|
715 |
|
---|
716 | /* It's an instance of our class. Make sure it's a template. */
|
---|
717 | ulStyle=wpTemplate->wpQueryStyle();
|
---|
718 | wpTemplate->wpSetStyle(ulStyle|OBJSTYLE_TEMPLATE);
|
---|
719 | rc=TRUE;
|
---|
720 | /* Now create a shadow in the MM folder. */
|
---|
721 | createMediaFolderShadow(this);
|
---|
722 | #if 0
|
---|
723 | if(!WinQueryObject(ID_MEDIALDRTMPL_SHADOW))
|
---|
724 | {
|
---|
725 | sprintf(chrSetup,"SHADOWID=%s;OBJECTID=%s;", ID_MEDIAFLDRTEMPLATE,ID_MEDIALDRTMPL_SHADOW);
|
---|
726 | WinCreateObject("WPShadow", wpclsQueryTitle(), chrSetup, ID_MMFOLDER, CO_UPDATEIFEXISTS);
|
---|
727 | }
|
---|
728 | #endif
|
---|
729 | break;
|
---|
730 | /* Ok we have a template */
|
---|
731 | }
|
---|
732 |
|
---|
733 | /* The object isn't our template. Probably left over from previous installation
|
---|
734 | so remove it. */
|
---|
735 | ((WPFileSystem*)wpTemplate)->wpSetAttr(FILE_NORMAL); /* Remove system, readonly, hidden flags */
|
---|
736 | wpTemplate->wpSetStyle(0);/* Remove styles so deleting is possible */
|
---|
737 | wpTemplate->wpDelete(NULL);
|
---|
738 | }/* somIsObj() */
|
---|
739 | }/* if((hObject=WinQueryObject(ID_AUDIOTEMPLATE))!=NULLHANDLE) */
|
---|
740 |
|
---|
741 | wpTemplate=wpObject;
|
---|
742 | /* Create a new template */
|
---|
743 | /* Get Multimedia template folder */
|
---|
744 | if((hObject=WinQueryObject(ID_MMTEMPLATEFOLDER))!=NULLHANDLE) {
|
---|
745 | /* There's an object with the ID. */
|
---|
746 | if((wpTemplate=wpclsQueryObject(hObject))==NULLHANDLE) {
|
---|
747 | /* A handle but no object?! Shouldn't happen, fall back to default. */
|
---|
748 | wpTemplate=wpObject;
|
---|
749 | }
|
---|
750 | }
|
---|
751 |
|
---|
752 | sprintf(chrSetup,
|
---|
753 | "TEMPLATE=YES;OBJECTID=%s", ID_MEDIAFLDRTEMPLATE);
|
---|
754 | // if((wpTemplate=wpclsNew(MEDIAFLDR_TEMPLATE_NAME, chrSetup, (WPFolder*)wpTemplate, FALSE))!=NULLHANDLE) {
|
---|
755 | if((wpTemplate=wpclsNew(wpclsQueryTitle(), chrSetup, (WPFolder*)wpTemplate, FALSE))!=NULLHANDLE) {
|
---|
756 | sprintf(chrSetup,
|
---|
757 | // "DEFAULTVIEW=DETAILS;DETAILSCLASS=CWAudioShadow;SORTCLASS=CWAudioShadow;");
|
---|
758 | "DEFAULTVIEW=DETAILS;DETAILSCLASS=CWAudioShadow;SORTCLASS=CWAudioShadow;DETAILSTODISPLAY=0,1,4,12,13,14,15,16,17,18,19,20,21;SORTBYATTR=6,24,25,26,27,28,29,30,31,32,33");
|
---|
759 | if(somIsObj(wpTemplate)) {
|
---|
760 | wpTemplate->wpSetup(chrSetup);
|
---|
761 | /* Now create a shadow in the MM folder. */
|
---|
762 | createMediaFolderShadow(this);
|
---|
763 | #if 0
|
---|
764 | if(!WinQueryObject(ID_MEDIALDRTMPL_SHADOW))
|
---|
765 | {
|
---|
766 | sprintf(chrSetup,"SHADOWID=%s;OBJECTID=%s;", ID_MEDIAFLDRTEMPLATE,ID_MEDIALDRTMPL_SHADOW);
|
---|
767 | WinCreateObject("WPShadow", wpclsQueryTitle(), chrSetup, ID_MMFOLDER, CO_UPDATEIFEXISTS);
|
---|
768 | }
|
---|
769 | #endif
|
---|
770 | }
|
---|
771 | rc=TRUE;
|
---|
772 | }
|
---|
773 | }while(FALSE);
|
---|
774 | }
|
---|
775 | CATCH(TEMPLATE)
|
---|
776 | {
|
---|
777 | } END_CATCH;
|
---|
778 |
|
---|
779 | return rc;
|
---|
780 | #endif
|
---|
781 |
|
---|
782 | }
|
---|
783 |
|
---|
784 |
|
---|
785 |
|
---|
786 |
|
---|
787 |
|
---|
788 |
|
---|
789 |
|
---|
790 |
|
---|
791 |
|
---|
792 |
|
---|