1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
#ifndef __WA2WNDEMBED_H
#define __WA2WNDEMBED_H
#include "../winamp/wa_ipc.h"
#include <api/service/svcs/svc_wndcreate.h>
#include <bfc/depview.h>
#include <bfc/reentryfilter.h>
#include <api/wndmgr/appcmds.h>
#include <api/skin/widgets/xuioswndhost.h>
#include <api/script/objects/c_script/h_layout.h>
#include <api/syscb/callbacks/wndcb.h>
#include "wa2pldirobj.h"
class BucketItem;
class XuiOSWndHost;
class Wa2BucketItem;
#define EMBED_STATE_EXTRA_LINK 0
#define EMBED_STATE_EXTRA_ATTACHED 1
#define EMBED_STATE_EXTRA_HOSTCOUNT 61
#define EMBED_STATE_EXTRA_REPARENTING 62
#define EMBED_STATE_EXTRA_FFROOTWND 63
//-----------------------------------------------------------------------------------------------
// {E6323F86-1724-4cd3-9D87-70591FC16E5E}
static const GUID playerWndGuid =
{ 0xe6323f86, 0x1724, 0x4cd3, { 0x9d, 0x87, 0x70, 0x59, 0x1f, 0xc1, 0x6e, 0x5e } };
// benski> don't use this in a windowholder, this is for <container primarycontent="guid:main"/>
//-----------------------------------------------------------------------------------------------
// {45F3F7C1-A6F3-4ee6-A15E-125E92FC3F8D}
static const GUID pleditWndGuid =
{ 0x45f3f7c1, 0xa6f3, 0x4ee6, { 0xa1, 0x5e, 0x12, 0x5e, 0x92, 0xfc, 0x3f, 0x8d } };
//-----------------------------------------------------------------------------------------------
// {F0816D7B-FFFC-4343-80F2-E8199AA15CC3}
static const GUID videoWndGuid =
{ 0xf0816d7b, 0xfffc, 0x4343, { 0x80, 0xf2, 0xe8, 0x19, 0x9a, 0xa1, 0x5c, 0xc3 } };
#ifdef MINIBROWSER_SUPPORT
//-----------------------------------------------------------------------------------------------
// {CF477C3E-FDC8-44a2-9066-58D0184D47A8}
static const GUID minibrowserWndGuid =
{ 0xcf477c3e, 0xfdc8, 0x44a2, { 0x90, 0x66, 0x58, 0xd0, 0x18, 0x4d, 0x47, 0xa8 } };
#endif
// scan
static const GUID embedWndGuids =
{ 0x00000000, 0xf000, 0x44a2, { 0x90, 0x66, 0x58, 0xd0, 0x18, 0x4d, 0x47, 0xa8 } };
// {A8533CEC-D05D-45b8-A617-E2B7F2C2CF82}
static const GUID embeddedWndStateGuid =
{ 0xa8533cec, 0xd05d, 0x45b8, { 0xa6, 0x17, 0xe2, 0xb7, 0xf2, 0xc2, 0xcf, 0x82 } };
// {6B0EDF80-C9A5-11d3-9F26-00C04F39FFC6}
static const GUID library_guid =
{ 0x6b0edf80, 0xc9a5, 0x11d3, { 0x9f, 0x26, 0x0, 0xc0, 0x4f, 0x39, 0xff, 0xc6 } };
// {B397A4CE-455A-4d62-8BF6-D0F91ACB70E6}
static const GUID preferences_guid =
{ 0xb397a4ce, 0x455a, 0x4d62, { 0x8b, 0xf6, 0xd0, 0xf9, 0x1a, 0xcb, 0x70, 0xe6 } };
// {0000000A-000C-0010-FF7B-01014263450C}
static const GUID avs_guid =
{ 10, 12, 16, { 255, 123, 1, 1, 66, 99, 69, 12 } };
// {8DDA9D48-B915-4320-A888-831A1D837516}
static const GUID about_guid =
{ 0x8dda9d48, 0xb915, 0x4320, { 0xa8, 0x88, 0x83, 0x1a, 0x1d, 0x83, 0x75, 0x16 } };
// {D6201408-476A-4308-BF1B-7BACA1124B12}
static const GUID lightning_bolt_guid =
{ 0xd6201408, 0x476a, 0x4308, { 0xbf, 0x1b, 0x7b, 0xac, 0xa1, 0x12, 0x4b, 0x12 } };
// {53DE6284-7E88-4c62-9F93-22ED68E6A024}
static const GUID colorthemes_guid =
{ 0x53de6284, 0x7e88, 0x4c62, { 0x9f, 0x93, 0x22, 0xed, 0x68, 0xe6, 0xa0, 0x24 } };
//-----------------------------------------------------------------------------------------------
class WaOsWndHost : public XuiOSWndHost
{
public:
WaOsWndHost() : transparencysafe(1), transfer(0) {}
virtual void onBeforeReparent(int i);
virtual void onAfterReparent(int i);
virtual int wantHideOnUnhost() { return 1; }
virtual int wantFocus();
virtual int onGetFocus();
virtual int handleTransparency() { return transparencysafe; }
virtual void setNoTransparency() { transparencysafe = 0; }
void setTransfering(int i) { transfer = i; }
int isTransfering() { return transfer; }
virtual int onMouseWheelUp(int click, int lines);
virtual int onMouseWheelDown(int click, int lines);
private:
int transparencysafe;
int transfer;
};
//-----------------------------------------------------------------------------------------------
class VideoLayoutMonitor : public H_Layout
{
public:
VideoLayoutMonitor(ScriptObject *o) : H_Layout(o) { }
VideoLayoutMonitor() {}
virtual void hook_onResize(int x, int y, int w, int h);
virtual void hook_onMove();
};
//-----------------------------------------------------------------------------------------------
class EmbedEntry
{
public:
WaOsWndHost *host;
ifc_dependent *dep;
intptr_t whichwnd;
AppCmds *cmds;
VideoLayoutMonitor *monitor;
GUID g;
};
class WndStatus
{
public:
int wndcode; // or -1
HWND wnd;
int visible;
RECT position;
};
//-----------------------------------------------------------------------------------------------
class Wa2WndEmbed : public svc_windowCreateI, DependentViewerTPtr<ifc_window>, public WndCallbackI
{
public:
Wa2WndEmbed();
virtual ~Wa2WndEmbed();
static const char *getServiceName() { return "Playlist Editor window creator"; }
virtual int testGuid(GUID g);
virtual ifc_window *createWindowByGuid(GUID g, ifc_window *parent);
virtual int testType(const wchar_t *windowtype);
virtual ifc_window *createWindowOfType(const wchar_t *windowtype, ifc_window *parent, int n);
virtual int destroyWindow(ifc_window *w);
virtual int viewer_onEvent(ifc_window *item, int event, intptr_t param, void *ptr, size_t ptrlen);
static void rememberVisibleWindows();
static void restoreVisibleWindows();
static int hadRememberedWndVisible(HWND wnd);
static int embedRememberProc(embedWindowState *p, embedEnumStruct *parms);
virtual int onShowWindow(Container *c, GUID guid, const wchar_t *groupid);
virtual int onHideWindow(Container *c, GUID guid, const wchar_t *groupid);
PtrList<Wa2BucketItem> bucketitems;
PtrList<EmbedEntry> wndhosts;
PtrList<PlDirObject> pldirs;
static PtrList<WndStatus> wa2wndstatus;
static int switching_holder;
};
extern ReentryFilterObject wndMsgFilter;
//-----------------------------------------------------------------------------------------------
class PlaylistAppCmds : public AppCmdsI
{
public:
PlaylistAppCmds();
virtual ~PlaylistAppCmds() {}
virtual void appcmds_onCommand(int id, const RECT *buttonRect, int which_button);
enum {
PL_ADD=0,
PL_REM,
PL_SEL,
PL_MISC,
PL_LIST,
};
protected:
CmdRec addCmd, remCmd, selCmd, miscCmd, listCmd;
};
#ifdef MINIBROWSER_SUPPORT
//-----------------------------------------------------------------------------------------------
class MinibrowserAppCmds : public AppCmdsI {
public:
MinibrowserAppCmds();
virtual ~MinibrowserAppCmds() {}
virtual void appcmds_onCommand(int id, const RECT *buttonRect, int which_button);
enum {
MB_BACK=0,
MB_FORWARD,
MB_STOP,
MB_RELOAD,
MB_MISC,
};
};
#endif
//-----------------------------------------------------------------------------------------------
class VideoAppCmds : public AppCmdsI {
public:
VideoAppCmds();
virtual ~VideoAppCmds() {}
virtual void appcmds_onCommand(int id, const RECT *buttonRect, int which_button);
enum {
VID_FULLSCREEN=0,
VID_1X,
VID_2X,
VID_LIB,
VID_MISC,
};
};
#endif
|