1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_fpicker.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <tchar.h>
28*b1cdbd2cSJim Jagielski #include "previewadapter.hxx"
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_UI_DIALOG_FILEPREVIEWIMAGEFORMATS_HPP_
31*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/FilePreviewImageFormats.hpp>
32*b1cdbd2cSJim Jagielski #endif
33*b1cdbd2cSJim Jagielski #include "dibpreview.hxx"
34*b1cdbd2cSJim Jagielski #include "../misc/WinImplHelper.hxx"
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski #include <memory>
37*b1cdbd2cSJim Jagielski #include <stdexcept>
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski //---------------------------------------------
40*b1cdbd2cSJim Jagielski //
41*b1cdbd2cSJim Jagielski //---------------------------------------------
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
44*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::lang;
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski //---------------------------------------------
47*b1cdbd2cSJim Jagielski // An impl class to hide implementation details
48*b1cdbd2cSJim Jagielski // from clients
49*b1cdbd2cSJim Jagielski //---------------------------------------------
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski class CPreviewAdapterImpl
52*b1cdbd2cSJim Jagielski {
53*b1cdbd2cSJim Jagielski public:
54*b1cdbd2cSJim Jagielski 	CPreviewAdapterImpl(HINSTANCE instance);
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski 	virtual ~CPreviewAdapterImpl();
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski 	virtual sal_Int32 SAL_CALL getTargetColorDepth();
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski 	virtual sal_Int32 SAL_CALL getAvailableWidth();
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski 	virtual sal_Int32 SAL_CALL getAvailableHeight();
63*b1cdbd2cSJim Jagielski 
64*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL setImage( sal_Int16 aImageFormat, const Any& aImage )
65*b1cdbd2cSJim Jagielski 		throw (IllegalArgumentException,RuntimeException);
66*b1cdbd2cSJim Jagielski 
67*b1cdbd2cSJim Jagielski     virtual sal_Bool SAL_CALL setShowState(sal_Bool bShowState);
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski 	virtual sal_Bool SAL_CALL getShowState();
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL setParent(HWND parent);
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski 	virtual HWND SAL_CALL getParent();
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski 	//-------------------------------------
76*b1cdbd2cSJim Jagielski 	// parent notification handler
77*b1cdbd2cSJim Jagielski 	//-------------------------------------
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL notifyParentShow(sal_Bool bShow);
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL notifyParentSizeChanged();
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL notifyParentWindowPosChanged();
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski protected:
86*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL calcRightMargin();
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL rearrangeLayout();
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski 	void SAL_CALL initializeActivePreview() throw(std::runtime_error);
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski 	HWND SAL_CALL findFileListbox() const;
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski // member
95*b1cdbd2cSJim Jagielski protected:
96*b1cdbd2cSJim Jagielski 	HINSTANCE					m_Instance;
97*b1cdbd2cSJim Jagielski 	std::auto_ptr<PreviewBase>  m_Preview;
98*b1cdbd2cSJim Jagielski 	HWND						m_FileDialog;
99*b1cdbd2cSJim Jagielski 	int							m_RightMargin;
100*b1cdbd2cSJim Jagielski 
101*b1cdbd2cSJim Jagielski //prevent copy/assignment
102*b1cdbd2cSJim Jagielski private:
103*b1cdbd2cSJim Jagielski 	CPreviewAdapterImpl(const CPreviewAdapterImpl&);
104*b1cdbd2cSJim Jagielski 	CPreviewAdapterImpl& operator=(const CPreviewAdapterImpl&);
105*b1cdbd2cSJim Jagielski };
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski //-----------------------------------------
108*b1cdbd2cSJim Jagielski //
109*b1cdbd2cSJim Jagielski //-----------------------------------------
110*b1cdbd2cSJim Jagielski 
CPreviewAdapterImpl(HINSTANCE instance)111*b1cdbd2cSJim Jagielski CPreviewAdapterImpl::CPreviewAdapterImpl(HINSTANCE instance) :
112*b1cdbd2cSJim Jagielski 	m_Instance(instance),
113*b1cdbd2cSJim Jagielski 	m_Preview(new PreviewBase()), // create dummy preview (NULL-Object pattern)
114*b1cdbd2cSJim Jagielski 	m_FileDialog(0),
115*b1cdbd2cSJim Jagielski 	m_RightMargin(0)
116*b1cdbd2cSJim Jagielski {
117*b1cdbd2cSJim Jagielski }
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski //-----------------------------------------
120*b1cdbd2cSJim Jagielski //
121*b1cdbd2cSJim Jagielski //-----------------------------------------
122*b1cdbd2cSJim Jagielski 
~CPreviewAdapterImpl()123*b1cdbd2cSJim Jagielski CPreviewAdapterImpl::~CPreviewAdapterImpl()
124*b1cdbd2cSJim Jagielski {
125*b1cdbd2cSJim Jagielski }
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski //-----------------------------------------
128*b1cdbd2cSJim Jagielski //
129*b1cdbd2cSJim Jagielski //-----------------------------------------
130*b1cdbd2cSJim Jagielski 
getTargetColorDepth()131*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL CPreviewAdapterImpl::getTargetColorDepth()
132*b1cdbd2cSJim Jagielski {
133*b1cdbd2cSJim Jagielski 	return m_Preview->getTargetColorDepth();
134*b1cdbd2cSJim Jagielski }
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski //-----------------------------------------
137*b1cdbd2cSJim Jagielski //
138*b1cdbd2cSJim Jagielski //-----------------------------------------
139*b1cdbd2cSJim Jagielski 
getAvailableWidth()140*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL CPreviewAdapterImpl::getAvailableWidth()
141*b1cdbd2cSJim Jagielski {
142*b1cdbd2cSJim Jagielski 	return m_Preview->getAvailableWidth();
143*b1cdbd2cSJim Jagielski }
144*b1cdbd2cSJim Jagielski 
145*b1cdbd2cSJim Jagielski //-----------------------------------------
146*b1cdbd2cSJim Jagielski //
147*b1cdbd2cSJim Jagielski //-----------------------------------------
148*b1cdbd2cSJim Jagielski 
getAvailableHeight()149*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL CPreviewAdapterImpl::getAvailableHeight()
150*b1cdbd2cSJim Jagielski {
151*b1cdbd2cSJim Jagielski 	return m_Preview->getAvailableHeight();
152*b1cdbd2cSJim Jagielski }
153*b1cdbd2cSJim Jagielski 
154*b1cdbd2cSJim Jagielski //-----------------------------------------
155*b1cdbd2cSJim Jagielski //
156*b1cdbd2cSJim Jagielski //-----------------------------------------
157*b1cdbd2cSJim Jagielski 
setImage(sal_Int16 aImageFormat,const Any & aImage)158*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapterImpl::setImage( sal_Int16 aImageFormat, const Any& aImage )
159*b1cdbd2cSJim Jagielski 	throw (IllegalArgumentException,RuntimeException)
160*b1cdbd2cSJim Jagielski {
161*b1cdbd2cSJim Jagielski 	m_Preview->setImage(aImageFormat,aImage);
162*b1cdbd2cSJim Jagielski }
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski //-----------------------------------------
165*b1cdbd2cSJim Jagielski //
166*b1cdbd2cSJim Jagielski //-----------------------------------------
167*b1cdbd2cSJim Jagielski 
setShowState(sal_Bool bShowState)168*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL CPreviewAdapterImpl::setShowState( sal_Bool bShowState )
169*b1cdbd2cSJim Jagielski {
170*b1cdbd2cSJim Jagielski 	sal_Bool bRet = m_Preview->setShowState(bShowState);
171*b1cdbd2cSJim Jagielski 	rearrangeLayout();
172*b1cdbd2cSJim Jagielski 	return bRet;
173*b1cdbd2cSJim Jagielski }
174*b1cdbd2cSJim Jagielski 
175*b1cdbd2cSJim Jagielski //-----------------------------------------
176*b1cdbd2cSJim Jagielski //
177*b1cdbd2cSJim Jagielski //-----------------------------------------
178*b1cdbd2cSJim Jagielski 
getShowState()179*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL CPreviewAdapterImpl::getShowState()
180*b1cdbd2cSJim Jagielski {
181*b1cdbd2cSJim Jagielski 	return m_Preview->getShowState();
182*b1cdbd2cSJim Jagielski }
183*b1cdbd2cSJim Jagielski 
184*b1cdbd2cSJim Jagielski //-----------------------------------------
185*b1cdbd2cSJim Jagielski //
186*b1cdbd2cSJim Jagielski //-----------------------------------------
187*b1cdbd2cSJim Jagielski 
setParent(HWND parent)188*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapterImpl::setParent(HWND parent)
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski 	OSL_PRECOND(IsWindow(parent),"Invalid FileDialog handle");
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski 	m_FileDialog = parent;
193*b1cdbd2cSJim Jagielski 	calcRightMargin();
194*b1cdbd2cSJim Jagielski }
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski //-----------------------------------------
197*b1cdbd2cSJim Jagielski //
198*b1cdbd2cSJim Jagielski //-----------------------------------------
199*b1cdbd2cSJim Jagielski 
getParent()200*b1cdbd2cSJim Jagielski HWND SAL_CALL CPreviewAdapterImpl::getParent()
201*b1cdbd2cSJim Jagielski {
202*b1cdbd2cSJim Jagielski 	return m_FileDialog;
203*b1cdbd2cSJim Jagielski }
204*b1cdbd2cSJim Jagielski 
205*b1cdbd2cSJim Jagielski //-----------------------------------------
206*b1cdbd2cSJim Jagielski //
207*b1cdbd2cSJim Jagielski //-----------------------------------------
208*b1cdbd2cSJim Jagielski 
calcRightMargin()209*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapterImpl::calcRightMargin()
210*b1cdbd2cSJim Jagielski {
211*b1cdbd2cSJim Jagielski 	// Calculate the right reference margin
212*b1cdbd2cSJim Jagielski 	//
213*b1cdbd2cSJim Jagielski 	// Assumtions:
214*b1cdbd2cSJim Jagielski 	// 1. This method will be called before the dialog becomes
215*b1cdbd2cSJim Jagielski 	//    visible
216*b1cdbd2cSJim Jagielski 	// 2. There exist a FileListbox with the id lst1 even
217*b1cdbd2cSJim Jagielski 	//    if it is not visible like under Win2000/XP
218*b1cdbd2cSJim Jagielski 	// 3. Initially this FileListbox has the appropriate size
219*b1cdbd2cSJim Jagielski 	//    to fit within the FileListbox
220*b1cdbd2cSJim Jagielski 	// 4. The margin between the right edge of the FileListbox
221*b1cdbd2cSJim Jagielski 	//    and the right edge of the FileDialog will be constant
222*b1cdbd2cSJim Jagielski 	//    even if the size of the dialog changes
223*b1cdbd2cSJim Jagielski 
224*b1cdbd2cSJim Jagielski 	HWND flb = GetDlgItem(m_FileDialog,lst1);
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski 	OSL_ENSURE(IsWindow(flb),"Filelistbox not found");
227*b1cdbd2cSJim Jagielski 
228*b1cdbd2cSJim Jagielski 	RECT rcFlb;
229*b1cdbd2cSJim Jagielski 	GetWindowRect(flb,&rcFlb);
230*b1cdbd2cSJim Jagielski 
231*b1cdbd2cSJim Jagielski 	RECT rcFileDlg;
232*b1cdbd2cSJim Jagielski 	GetWindowRect(m_FileDialog,&rcFileDlg);
233*b1cdbd2cSJim Jagielski 
234*b1cdbd2cSJim Jagielski 	m_RightMargin = rcFileDlg.right - rcFlb.right;
235*b1cdbd2cSJim Jagielski }
236*b1cdbd2cSJim Jagielski 
237*b1cdbd2cSJim Jagielski //-----------------------------------------
238*b1cdbd2cSJim Jagielski //
239*b1cdbd2cSJim Jagielski //-----------------------------------------
240*b1cdbd2cSJim Jagielski 
notifyParentShow(sal_Bool)241*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapterImpl::notifyParentShow(sal_Bool)
242*b1cdbd2cSJim Jagielski {
243*b1cdbd2cSJim Jagielski }
244*b1cdbd2cSJim Jagielski 
245*b1cdbd2cSJim Jagielski //-----------------------------------------
246*b1cdbd2cSJim Jagielski //
247*b1cdbd2cSJim Jagielski //-----------------------------------------
248*b1cdbd2cSJim Jagielski 
notifyParentSizeChanged()249*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapterImpl::notifyParentSizeChanged()
250*b1cdbd2cSJim Jagielski {
251*b1cdbd2cSJim Jagielski 	rearrangeLayout();
252*b1cdbd2cSJim Jagielski }
253*b1cdbd2cSJim Jagielski 
254*b1cdbd2cSJim Jagielski //-----------------------------------------
255*b1cdbd2cSJim Jagielski //
256*b1cdbd2cSJim Jagielski //-----------------------------------------
257*b1cdbd2cSJim Jagielski 
notifyParentWindowPosChanged()258*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapterImpl::notifyParentWindowPosChanged()
259*b1cdbd2cSJim Jagielski {
260*b1cdbd2cSJim Jagielski }
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski //-----------------------------------------
263*b1cdbd2cSJim Jagielski //
264*b1cdbd2cSJim Jagielski //-----------------------------------------
265*b1cdbd2cSJim Jagielski 
rearrangeLayout()266*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapterImpl::rearrangeLayout()
267*b1cdbd2cSJim Jagielski {
268*b1cdbd2cSJim Jagielski 	// try to get a handle to the filelistbox
269*b1cdbd2cSJim Jagielski 	// if there is no new-style filelistbox like
270*b1cdbd2cSJim Jagielski 	// in Win2000/XP there should be at least the
271*b1cdbd2cSJim Jagielski 	// old listbox, so we take this one
272*b1cdbd2cSJim Jagielski 	// lst1 - identifies the old-style filelistbox
273*b1cdbd2cSJim Jagielski 	// lst2 - identifies the new-style filelistbox
274*b1cdbd2cSJim Jagielski 	// see dlgs.h
275*b1cdbd2cSJim Jagielski 	HWND flb_new = findFileListbox();
276*b1cdbd2cSJim Jagielski 
277*b1cdbd2cSJim Jagielski 	// under Windows NT 4.0 the size of the old
278*b1cdbd2cSJim Jagielski 	// filelistbox will be used as reference for
279*b1cdbd2cSJim Jagielski 	// sizing the new filelistbox, so we have
280*b1cdbd2cSJim Jagielski 	// to change the size of it too
281*b1cdbd2cSJim Jagielski 	HWND flb_old = GetDlgItem(m_FileDialog,lst1);
282*b1cdbd2cSJim Jagielski 
283*b1cdbd2cSJim Jagielski 	RECT rcFlbNew;
284*b1cdbd2cSJim Jagielski 	GetWindowRect(flb_new,&rcFlbNew);
285*b1cdbd2cSJim Jagielski 
286*b1cdbd2cSJim Jagielski 	RECT rcFileDlg;
287*b1cdbd2cSJim Jagielski 	GetWindowRect(m_FileDialog,&rcFileDlg);
288*b1cdbd2cSJim Jagielski 	rcFileDlg.right -= m_RightMargin;
289*b1cdbd2cSJim Jagielski 
290*b1cdbd2cSJim Jagielski 	// the available area for the filelistbox should be
291*b1cdbd2cSJim Jagielski 	// the left edge of the filelistbox and the right
292*b1cdbd2cSJim Jagielski 	// edge of the OK button, we take this as reference
293*b1cdbd2cSJim Jagielski 	int height = rcFlbNew.bottom - rcFlbNew.top;
294*b1cdbd2cSJim Jagielski 	int width  = rcFileDlg.right - rcFlbNew.left;
295*b1cdbd2cSJim Jagielski 
296*b1cdbd2cSJim Jagielski 	HWND prvwnd = m_Preview->getWindowHandle();
297*b1cdbd2cSJim Jagielski 
298*b1cdbd2cSJim Jagielski 	// we use GetWindowLong to ask for the visibility
299*b1cdbd2cSJim Jagielski 	// of the preview window because IsWindowVisible
300*b1cdbd2cSJim Jagielski 	// only returns true the specified window including
301*b1cdbd2cSJim Jagielski 	// its parent windows are visible
302*b1cdbd2cSJim Jagielski 	// this is not the case when we are called in response
303*b1cdbd2cSJim Jagielski 	// to the WM_SHOWWINDOW message, somehow the WS_VISIBLE
304*b1cdbd2cSJim Jagielski 	// style bit of the FileOpen dialog must be set after that
305*b1cdbd2cSJim Jagielski 	// message
306*b1cdbd2cSJim Jagielski 	LONG lStyle = GetWindowLong(prvwnd,GWL_STYLE);
307*b1cdbd2cSJim Jagielski 	bool bIsVisible = ((lStyle & WS_VISIBLE) != 0);
308*b1cdbd2cSJim Jagielski 
309*b1cdbd2cSJim Jagielski 	int cx = 0;
310*b1cdbd2cSJim Jagielski 
311*b1cdbd2cSJim Jagielski 	if (IsWindow(prvwnd) && bIsVisible)
312*b1cdbd2cSJim Jagielski 	{
313*b1cdbd2cSJim Jagielski 		cx = width/2;
314*b1cdbd2cSJim Jagielski 
315*b1cdbd2cSJim Jagielski 		// resize the filelistbox to the half of the
316*b1cdbd2cSJim Jagielski 		// available space
317*b1cdbd2cSJim Jagielski 		bool bRet = SetWindowPos(flb_new,
318*b1cdbd2cSJim Jagielski 			NULL, 0, 0, cx, height,
319*b1cdbd2cSJim Jagielski 			SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
320*b1cdbd2cSJim Jagielski 
321*b1cdbd2cSJim Jagielski 		bRet = SetWindowPos(flb_old,
322*b1cdbd2cSJim Jagielski 			NULL, 0, 0, cx, height,
323*b1cdbd2cSJim Jagielski 			SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
324*b1cdbd2cSJim Jagielski 
325*b1cdbd2cSJim Jagielski 		// get the new dimensions of the filelistbox after
326*b1cdbd2cSJim Jagielski 		// resizing and take the right,top corner as starting
327*b1cdbd2cSJim Jagielski 		// point for the preview window
328*b1cdbd2cSJim Jagielski 		GetWindowRect(flb_new,&rcFlbNew);
329*b1cdbd2cSJim Jagielski 		POINT pt = { rcFlbNew.right, rcFlbNew.top };
330*b1cdbd2cSJim Jagielski 		ScreenToClient(m_FileDialog,&pt);
331*b1cdbd2cSJim Jagielski 
332*b1cdbd2cSJim Jagielski 		// resize the preview window to fit within
333*b1cdbd2cSJim Jagielski 		// the available space and set the window
334*b1cdbd2cSJim Jagielski 		// to the top of the z-order else it will
335*b1cdbd2cSJim Jagielski 		// be invisible
336*b1cdbd2cSJim Jagielski 		SetWindowPos(prvwnd,
337*b1cdbd2cSJim Jagielski 			HWND_TOP, pt.x, pt.y, cx, height, SWP_NOACTIVATE);
338*b1cdbd2cSJim Jagielski 	}
339*b1cdbd2cSJim Jagielski 	else
340*b1cdbd2cSJim Jagielski 	{
341*b1cdbd2cSJim Jagielski 		// resize the filelistbox to the maximum available
342*b1cdbd2cSJim Jagielski 		// space
343*b1cdbd2cSJim Jagielski 		cx = rcFileDlg.right - rcFlbNew.left;
344*b1cdbd2cSJim Jagielski 
345*b1cdbd2cSJim Jagielski 		// resize the old filelistbox
346*b1cdbd2cSJim Jagielski 		SetWindowPos(flb_old,
347*b1cdbd2cSJim Jagielski 			NULL, 0, 0, cx, height,
348*b1cdbd2cSJim Jagielski 			SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
349*b1cdbd2cSJim Jagielski 
350*b1cdbd2cSJim Jagielski 		// resize the new filelistbox
351*b1cdbd2cSJim Jagielski 		SetWindowPos(flb_new,
352*b1cdbd2cSJim Jagielski 			NULL, 0, 0, cx, height,
353*b1cdbd2cSJim Jagielski 			SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE );
354*b1cdbd2cSJim Jagielski 	}
355*b1cdbd2cSJim Jagielski }
356*b1cdbd2cSJim Jagielski 
357*b1cdbd2cSJim Jagielski //-----------------------------------------
358*b1cdbd2cSJim Jagielski //
359*b1cdbd2cSJim Jagielski //-----------------------------------------
360*b1cdbd2cSJim Jagielski 
initializeActivePreview()361*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapterImpl::initializeActivePreview() throw(std::runtime_error)
362*b1cdbd2cSJim Jagielski {
363*b1cdbd2cSJim Jagielski 	sal_Bool bShowState = m_Preview->getImaginaryShowState();
364*b1cdbd2cSJim Jagielski 
365*b1cdbd2cSJim Jagielski 	sal_Int16 aImgFrmt;
366*b1cdbd2cSJim Jagielski 	Any aImg;
367*b1cdbd2cSJim Jagielski 	m_Preview->getImage(aImgFrmt,aImg);
368*b1cdbd2cSJim Jagielski 
369*b1cdbd2cSJim Jagielski 	HWND flb = findFileListbox();
370*b1cdbd2cSJim Jagielski 
371*b1cdbd2cSJim Jagielski 	PreviewBase* prv = new CDIBPreview(
372*b1cdbd2cSJim Jagielski 		m_Instance, GetParent(flb), bShowState);
373*b1cdbd2cSJim Jagielski 
374*b1cdbd2cSJim Jagielski 	m_Preview.reset(prv);
375*b1cdbd2cSJim Jagielski 
376*b1cdbd2cSJim Jagielski 	m_Preview->setImage(aImgFrmt,aImg);
377*b1cdbd2cSJim Jagielski }
378*b1cdbd2cSJim Jagielski 
379*b1cdbd2cSJim Jagielski //-----------------------------------------
380*b1cdbd2cSJim Jagielski //
381*b1cdbd2cSJim Jagielski //-----------------------------------------
382*b1cdbd2cSJim Jagielski 
findFileListbox() const383*b1cdbd2cSJim Jagielski HWND SAL_CALL CPreviewAdapterImpl::findFileListbox() const
384*b1cdbd2cSJim Jagielski {
385*b1cdbd2cSJim Jagielski 	// try to get a handle to the filelistbox
386*b1cdbd2cSJim Jagielski 	// if there is no new-style filelistbox like
387*b1cdbd2cSJim Jagielski 	// in Win2000/XP there should be at least the
388*b1cdbd2cSJim Jagielski 	// old listbox, so we take this one
389*b1cdbd2cSJim Jagielski 	// lst1 - identifies the old-style filelistbox
390*b1cdbd2cSJim Jagielski 	// lst2 - identifies the new-style filelistbox
391*b1cdbd2cSJim Jagielski 	// see dlgs.h
392*b1cdbd2cSJim Jagielski 	HWND flb = GetDlgItem(m_FileDialog,lst2);
393*b1cdbd2cSJim Jagielski 	if (!IsWindow(flb))
394*b1cdbd2cSJim Jagielski 		flb = GetDlgItem(m_FileDialog,lst1);
395*b1cdbd2cSJim Jagielski 
396*b1cdbd2cSJim Jagielski 	return flb;
397*b1cdbd2cSJim Jagielski }
398*b1cdbd2cSJim Jagielski 
399*b1cdbd2cSJim Jagielski 
400*b1cdbd2cSJim Jagielski //##############################################################
401*b1cdbd2cSJim Jagielski 
402*b1cdbd2cSJim Jagielski 
403*b1cdbd2cSJim Jagielski //-----------------------------------------
404*b1cdbd2cSJim Jagielski // Special implementation for Win98
405*b1cdbd2cSJim Jagielski // because:
406*b1cdbd2cSJim Jagielski //
407*b1cdbd2cSJim Jagielski //-----------------------------------------
408*b1cdbd2cSJim Jagielski 
409*b1cdbd2cSJim Jagielski class CWin98PreviewAdapterImpl : public CPreviewAdapterImpl
410*b1cdbd2cSJim Jagielski {
411*b1cdbd2cSJim Jagielski public:
412*b1cdbd2cSJim Jagielski 	CWin98PreviewAdapterImpl(HINSTANCE instance);
413*b1cdbd2cSJim Jagielski 
414*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL notifyParentWindowPosChanged();
415*b1cdbd2cSJim Jagielski 
416*b1cdbd2cSJim Jagielski protected:
417*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL rearrangeLayout();
418*b1cdbd2cSJim Jagielski 
419*b1cdbd2cSJim Jagielski 	bool isValidToolbarDimension() const;
420*b1cdbd2cSJim Jagielski 
421*b1cdbd2cSJim Jagielski private:
422*b1cdbd2cSJim Jagielski 	sal_Bool	m_PreviewActive;
423*b1cdbd2cSJim Jagielski 	int			m_ToolbarPosX;
424*b1cdbd2cSJim Jagielski 	int			m_ToolbarPosY;
425*b1cdbd2cSJim Jagielski 	int			m_ToolbarWidth;
426*b1cdbd2cSJim Jagielski 	int			m_ToolbarHeight;
427*b1cdbd2cSJim Jagielski };
428*b1cdbd2cSJim Jagielski 
429*b1cdbd2cSJim Jagielski //--------------------------------------------
430*b1cdbd2cSJim Jagielski //
431*b1cdbd2cSJim Jagielski //--------------------------------------------
432*b1cdbd2cSJim Jagielski 
CWin98PreviewAdapterImpl(HINSTANCE instance)433*b1cdbd2cSJim Jagielski CWin98PreviewAdapterImpl::CWin98PreviewAdapterImpl(HINSTANCE instance) :
434*b1cdbd2cSJim Jagielski 	CPreviewAdapterImpl(instance),
435*b1cdbd2cSJim Jagielski 	m_PreviewActive(sal_False),
436*b1cdbd2cSJim Jagielski 	m_ToolbarPosX(0),
437*b1cdbd2cSJim Jagielski 	m_ToolbarPosY(0),
438*b1cdbd2cSJim Jagielski 	m_ToolbarWidth(0),
439*b1cdbd2cSJim Jagielski 	m_ToolbarHeight(0)
440*b1cdbd2cSJim Jagielski {
441*b1cdbd2cSJim Jagielski }
442*b1cdbd2cSJim Jagielski 
443*b1cdbd2cSJim Jagielski //--------------------------------------------
444*b1cdbd2cSJim Jagielski //
445*b1cdbd2cSJim Jagielski //--------------------------------------------
446*b1cdbd2cSJim Jagielski 
notifyParentWindowPosChanged()447*b1cdbd2cSJim Jagielski void SAL_CALL CWin98PreviewAdapterImpl::notifyParentWindowPosChanged()
448*b1cdbd2cSJim Jagielski {
449*b1cdbd2cSJim Jagielski 	try
450*b1cdbd2cSJim Jagielski 	{
451*b1cdbd2cSJim Jagielski 		// the reason for this condition is
452*b1cdbd2cSJim Jagielski 		// Windows 98
453*b1cdbd2cSJim Jagielski 		// Under Windows 98 the message WM_SHOWWINDOW
454*b1cdbd2cSJim Jagielski 		// will be sent only the first time the
455*b1cdbd2cSJim Jagielski 		// GetOpenFileName function is called within
456*b1cdbd2cSJim Jagielski 		// the same process
457*b1cdbd2cSJim Jagielski 		// so we must use another message to initialize
458*b1cdbd2cSJim Jagielski 		// the preview window
459*b1cdbd2cSJim Jagielski 		if (IsWindow(m_FileDialog) && !m_PreviewActive)
460*b1cdbd2cSJim Jagielski 		{
461*b1cdbd2cSJim Jagielski 			initializeActivePreview();
462*b1cdbd2cSJim Jagielski 			m_PreviewActive = sal_True;
463*b1cdbd2cSJim Jagielski 			rearrangeLayout();
464*b1cdbd2cSJim Jagielski 		}
465*b1cdbd2cSJim Jagielski 
466*b1cdbd2cSJim Jagielski 		if (IsWindow(m_FileDialog) && !isValidToolbarDimension())
467*b1cdbd2cSJim Jagielski 		{
468*b1cdbd2cSJim Jagielski 			RECT rcStc1;
469*b1cdbd2cSJim Jagielski 			GetWindowRect(GetDlgItem(m_FileDialog,stc1),&rcStc1);
470*b1cdbd2cSJim Jagielski 
471*b1cdbd2cSJim Jagielski 			RECT rcCmb2;
472*b1cdbd2cSJim Jagielski 			GetWindowRect(GetDlgItem(m_FileDialog,cmb2),&rcCmb2);
473*b1cdbd2cSJim Jagielski 
474*b1cdbd2cSJim Jagielski 			// Assumption:
475*b1cdbd2cSJim Jagielski 			// the toolbar position is only valid
476*b1cdbd2cSJim Jagielski 			// if the left edge is greater or equal
477*b1cdbd2cSJim Jagielski 			// than the right edge of the drives listbox
478*b1cdbd2cSJim Jagielski 			// the stc1 static text is invisible at runtime
479*b1cdbd2cSJim Jagielski 			// but will be used as reference for the position
480*b1cdbd2cSJim Jagielski 			// and dimension of the toolbar
481*b1cdbd2cSJim Jagielski 			if (rcStc1.left >= rcCmb2.right)
482*b1cdbd2cSJim Jagielski 			{
483*b1cdbd2cSJim Jagielski 				// important: save the upper left corner in
484*b1cdbd2cSJim Jagielski 				// client coordinates
485*b1cdbd2cSJim Jagielski 				POINT pt = {rcStc1.left,rcStc1.top};
486*b1cdbd2cSJim Jagielski 				ScreenToClient(m_FileDialog,&pt);
487*b1cdbd2cSJim Jagielski 
488*b1cdbd2cSJim Jagielski 				m_ToolbarPosX   = pt.x;
489*b1cdbd2cSJim Jagielski 				m_ToolbarPosY   = pt.y;
490*b1cdbd2cSJim Jagielski 				m_ToolbarWidth  = rcStc1.right - rcStc1.left;
491*b1cdbd2cSJim Jagielski 				m_ToolbarHeight = rcStc1.bottom - rcStc1.top;
492*b1cdbd2cSJim Jagielski 			}
493*b1cdbd2cSJim Jagielski 		}
494*b1cdbd2cSJim Jagielski 	}
495*b1cdbd2cSJim Jagielski 	catch(std::runtime_error&)
496*b1cdbd2cSJim Jagielski 	{
497*b1cdbd2cSJim Jagielski 	}
498*b1cdbd2cSJim Jagielski }
499*b1cdbd2cSJim Jagielski 
500*b1cdbd2cSJim Jagielski //--------------------------------------------
501*b1cdbd2cSJim Jagielski //
502*b1cdbd2cSJim Jagielski //--------------------------------------------
503*b1cdbd2cSJim Jagielski 
rearrangeLayout()504*b1cdbd2cSJim Jagielski void SAL_CALL CWin98PreviewAdapterImpl::rearrangeLayout()
505*b1cdbd2cSJim Jagielski {
506*b1cdbd2cSJim Jagielski 	CPreviewAdapterImpl::rearrangeLayout();
507*b1cdbd2cSJim Jagielski 
508*b1cdbd2cSJim Jagielski 	// fix the position of the upper toolbar
509*b1cdbd2cSJim Jagielski 	// because the FileDialog moves all windows
510*b1cdbd2cSJim Jagielski 	// that are to the right of the FileListbox
511*b1cdbd2cSJim Jagielski 	// so if we have changed the size of the
512*b1cdbd2cSJim Jagielski 	// FileListbox we would run into trouble else
513*b1cdbd2cSJim Jagielski 	if (isValidToolbarDimension())
514*b1cdbd2cSJim Jagielski 	{
515*b1cdbd2cSJim Jagielski 		HWND hwndTlb = FindWindowEx(
516*b1cdbd2cSJim Jagielski 			m_FileDialog,NULL,TEXT("ToolbarWindow32"),NULL);
517*b1cdbd2cSJim Jagielski 
518*b1cdbd2cSJim Jagielski 		SetWindowPos(hwndTlb,
519*b1cdbd2cSJim Jagielski 			HWND_TOP,
520*b1cdbd2cSJim Jagielski 			m_ToolbarPosX,
521*b1cdbd2cSJim Jagielski 			m_ToolbarPosY,
522*b1cdbd2cSJim Jagielski 			m_ToolbarWidth,
523*b1cdbd2cSJim Jagielski 			m_ToolbarHeight,
524*b1cdbd2cSJim Jagielski 			SWP_NOACTIVATE);
525*b1cdbd2cSJim Jagielski 	}
526*b1cdbd2cSJim Jagielski }
527*b1cdbd2cSJim Jagielski 
528*b1cdbd2cSJim Jagielski //--------------------------------------------
529*b1cdbd2cSJim Jagielski //
530*b1cdbd2cSJim Jagielski //--------------------------------------------
531*b1cdbd2cSJim Jagielski 
isValidToolbarDimension() const532*b1cdbd2cSJim Jagielski bool CWin98PreviewAdapterImpl::isValidToolbarDimension() const
533*b1cdbd2cSJim Jagielski {
534*b1cdbd2cSJim Jagielski 	return (m_ToolbarPosX   > 0 &&
535*b1cdbd2cSJim Jagielski 			m_ToolbarPosY   > 0 &&
536*b1cdbd2cSJim Jagielski 			m_ToolbarWidth  > 0 &&
537*b1cdbd2cSJim Jagielski 			m_ToolbarHeight > 0);
538*b1cdbd2cSJim Jagielski }
539*b1cdbd2cSJim Jagielski 
540*b1cdbd2cSJim Jagielski //##############################################################
541*b1cdbd2cSJim Jagielski 
542*b1cdbd2cSJim Jagielski 
543*b1cdbd2cSJim Jagielski //--------------------------------------------
544*b1cdbd2cSJim Jagielski // Implementation for Windows 95/NT/ME/2000/XP
545*b1cdbd2cSJim Jagielski // because:
546*b1cdbd2cSJim Jagielski //
547*b1cdbd2cSJim Jagielski //--------------------------------------------
548*b1cdbd2cSJim Jagielski 
549*b1cdbd2cSJim Jagielski class CWin95NTPreviewAdapterImpl : public CPreviewAdapterImpl
550*b1cdbd2cSJim Jagielski {
551*b1cdbd2cSJim Jagielski public:
552*b1cdbd2cSJim Jagielski 	CWin95NTPreviewAdapterImpl(HINSTANCE instance);
553*b1cdbd2cSJim Jagielski 
554*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL notifyParentShow(sal_Bool bShow);
555*b1cdbd2cSJim Jagielski };
556*b1cdbd2cSJim Jagielski 
557*b1cdbd2cSJim Jagielski //--------------------------------------------
558*b1cdbd2cSJim Jagielski //
559*b1cdbd2cSJim Jagielski //--------------------------------------------
560*b1cdbd2cSJim Jagielski 
CWin95NTPreviewAdapterImpl(HINSTANCE instance)561*b1cdbd2cSJim Jagielski CWin95NTPreviewAdapterImpl::CWin95NTPreviewAdapterImpl(HINSTANCE instance) :
562*b1cdbd2cSJim Jagielski 	CPreviewAdapterImpl(instance)
563*b1cdbd2cSJim Jagielski {
564*b1cdbd2cSJim Jagielski }
565*b1cdbd2cSJim Jagielski 
566*b1cdbd2cSJim Jagielski //--------------------------------------------
567*b1cdbd2cSJim Jagielski //
568*b1cdbd2cSJim Jagielski //--------------------------------------------
569*b1cdbd2cSJim Jagielski 
notifyParentShow(sal_Bool bShow)570*b1cdbd2cSJim Jagielski void SAL_CALL CWin95NTPreviewAdapterImpl::notifyParentShow(sal_Bool bShow)
571*b1cdbd2cSJim Jagielski {
572*b1cdbd2cSJim Jagielski 	try
573*b1cdbd2cSJim Jagielski 	{
574*b1cdbd2cSJim Jagielski 		if (bShow)
575*b1cdbd2cSJim Jagielski 		{
576*b1cdbd2cSJim Jagielski 			initializeActivePreview();
577*b1cdbd2cSJim Jagielski 			rearrangeLayout();
578*b1cdbd2cSJim Jagielski 		}
579*b1cdbd2cSJim Jagielski 	}
580*b1cdbd2cSJim Jagielski 	catch(std::runtime_error&)
581*b1cdbd2cSJim Jagielski 	{
582*b1cdbd2cSJim Jagielski 	}
583*b1cdbd2cSJim Jagielski }
584*b1cdbd2cSJim Jagielski 
585*b1cdbd2cSJim Jagielski 
586*b1cdbd2cSJim Jagielski //##############################################################
587*b1cdbd2cSJim Jagielski 
588*b1cdbd2cSJim Jagielski 
589*b1cdbd2cSJim Jagielski //-------------------------------
590*b1cdbd2cSJim Jagielski // ctor
591*b1cdbd2cSJim Jagielski //-------------------------------
592*b1cdbd2cSJim Jagielski 
CPreviewAdapter(HINSTANCE instance)593*b1cdbd2cSJim Jagielski CPreviewAdapter::CPreviewAdapter(HINSTANCE instance)
594*b1cdbd2cSJim Jagielski {
595*b1cdbd2cSJim Jagielski 	if (!IsWindows98())
596*b1cdbd2cSJim Jagielski 		m_pImpl.reset(new CWin95NTPreviewAdapterImpl(instance));
597*b1cdbd2cSJim Jagielski 	else
598*b1cdbd2cSJim Jagielski 		m_pImpl.reset(new CWin98PreviewAdapterImpl(instance));
599*b1cdbd2cSJim Jagielski }
600*b1cdbd2cSJim Jagielski 
601*b1cdbd2cSJim Jagielski //-------------------------------
602*b1cdbd2cSJim Jagielski //
603*b1cdbd2cSJim Jagielski //-------------------------------
604*b1cdbd2cSJim Jagielski 
~CPreviewAdapter()605*b1cdbd2cSJim Jagielski CPreviewAdapter::~CPreviewAdapter()
606*b1cdbd2cSJim Jagielski {
607*b1cdbd2cSJim Jagielski }
608*b1cdbd2cSJim Jagielski 
609*b1cdbd2cSJim Jagielski //-------------------------------
610*b1cdbd2cSJim Jagielski //
611*b1cdbd2cSJim Jagielski //-------------------------------
612*b1cdbd2cSJim Jagielski 
getSupportedImageFormats()613*b1cdbd2cSJim Jagielski Sequence<sal_Int16> SAL_CALL CPreviewAdapter::getSupportedImageFormats()
614*b1cdbd2cSJim Jagielski {
615*b1cdbd2cSJim Jagielski 	com::sun::star::uno::Sequence<sal_Int16> imgFormats(1);
616*b1cdbd2cSJim Jagielski     imgFormats[0] = ::com::sun::star::ui::dialogs::FilePreviewImageFormats::BITMAP;
617*b1cdbd2cSJim Jagielski     return imgFormats;
618*b1cdbd2cSJim Jagielski }
619*b1cdbd2cSJim Jagielski 
620*b1cdbd2cSJim Jagielski //-------------------------------
621*b1cdbd2cSJim Jagielski //
622*b1cdbd2cSJim Jagielski //-------------------------------
623*b1cdbd2cSJim Jagielski 
getTargetColorDepth()624*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL CPreviewAdapter::getTargetColorDepth()
625*b1cdbd2cSJim Jagielski {
626*b1cdbd2cSJim Jagielski 	return m_pImpl->getTargetColorDepth();
627*b1cdbd2cSJim Jagielski }
628*b1cdbd2cSJim Jagielski 
629*b1cdbd2cSJim Jagielski //-------------------------------
630*b1cdbd2cSJim Jagielski //
631*b1cdbd2cSJim Jagielski //-------------------------------
632*b1cdbd2cSJim Jagielski 
getAvailableWidth()633*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL CPreviewAdapter::getAvailableWidth()
634*b1cdbd2cSJim Jagielski {
635*b1cdbd2cSJim Jagielski 	return m_pImpl->getAvailableWidth();
636*b1cdbd2cSJim Jagielski }
637*b1cdbd2cSJim Jagielski 
638*b1cdbd2cSJim Jagielski //-------------------------------
639*b1cdbd2cSJim Jagielski //
640*b1cdbd2cSJim Jagielski //-------------------------------
641*b1cdbd2cSJim Jagielski 
getAvailableHeight()642*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL CPreviewAdapter::getAvailableHeight()
643*b1cdbd2cSJim Jagielski {
644*b1cdbd2cSJim Jagielski 	return m_pImpl->getAvailableHeight();
645*b1cdbd2cSJim Jagielski }
646*b1cdbd2cSJim Jagielski 
647*b1cdbd2cSJim Jagielski //-------------------------------
648*b1cdbd2cSJim Jagielski //
649*b1cdbd2cSJim Jagielski //-------------------------------
650*b1cdbd2cSJim Jagielski 
setImage(sal_Int16 aImageFormat,const Any & aImage)651*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapter::setImage( sal_Int16 aImageFormat, const Any& aImage )
652*b1cdbd2cSJim Jagielski 	throw (IllegalArgumentException, RuntimeException)
653*b1cdbd2cSJim Jagielski {
654*b1cdbd2cSJim Jagielski 	m_pImpl->setImage(aImageFormat,aImage);
655*b1cdbd2cSJim Jagielski }
656*b1cdbd2cSJim Jagielski 
657*b1cdbd2cSJim Jagielski //-------------------------------
658*b1cdbd2cSJim Jagielski //
659*b1cdbd2cSJim Jagielski //-------------------------------
660*b1cdbd2cSJim Jagielski 
setShowState(sal_Bool bShowState)661*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL CPreviewAdapter::setShowState( sal_Bool bShowState )
662*b1cdbd2cSJim Jagielski {
663*b1cdbd2cSJim Jagielski 	return m_pImpl->setShowState(bShowState);
664*b1cdbd2cSJim Jagielski }
665*b1cdbd2cSJim Jagielski 
666*b1cdbd2cSJim Jagielski //-------------------------------
667*b1cdbd2cSJim Jagielski //
668*b1cdbd2cSJim Jagielski //-------------------------------
669*b1cdbd2cSJim Jagielski 
getShowState()670*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL CPreviewAdapter::getShowState()
671*b1cdbd2cSJim Jagielski {
672*b1cdbd2cSJim Jagielski 	return m_pImpl->getShowState();
673*b1cdbd2cSJim Jagielski }
674*b1cdbd2cSJim Jagielski 
675*b1cdbd2cSJim Jagielski //-------------------------------
676*b1cdbd2cSJim Jagielski //
677*b1cdbd2cSJim Jagielski //-------------------------------
678*b1cdbd2cSJim Jagielski 
setParent(HWND parent)679*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapter::setParent(HWND parent)
680*b1cdbd2cSJim Jagielski {
681*b1cdbd2cSJim Jagielski 	m_pImpl->setParent(parent);
682*b1cdbd2cSJim Jagielski }
683*b1cdbd2cSJim Jagielski 
684*b1cdbd2cSJim Jagielski //-------------------------------
685*b1cdbd2cSJim Jagielski //
686*b1cdbd2cSJim Jagielski //-------------------------------
687*b1cdbd2cSJim Jagielski 
notifyParentShow(bool bShow)688*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapter::notifyParentShow(bool bShow)
689*b1cdbd2cSJim Jagielski {
690*b1cdbd2cSJim Jagielski 	m_pImpl->notifyParentShow(bShow);
691*b1cdbd2cSJim Jagielski }
692*b1cdbd2cSJim Jagielski 
693*b1cdbd2cSJim Jagielski //-------------------------------
694*b1cdbd2cSJim Jagielski //
695*b1cdbd2cSJim Jagielski //-------------------------------
696*b1cdbd2cSJim Jagielski 
notifyParentSizeChanged()697*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapter::notifyParentSizeChanged()
698*b1cdbd2cSJim Jagielski {
699*b1cdbd2cSJim Jagielski 	m_pImpl->notifyParentSizeChanged();
700*b1cdbd2cSJim Jagielski }
701*b1cdbd2cSJim Jagielski 
702*b1cdbd2cSJim Jagielski //-------------------------------
703*b1cdbd2cSJim Jagielski //
704*b1cdbd2cSJim Jagielski //-------------------------------
705*b1cdbd2cSJim Jagielski 
notifyParentWindowPosChanged()706*b1cdbd2cSJim Jagielski void SAL_CALL CPreviewAdapter::notifyParentWindowPosChanged()
707*b1cdbd2cSJim Jagielski {
708*b1cdbd2cSJim Jagielski 	m_pImpl->notifyParentWindowPosChanged();
709*b1cdbd2cSJim Jagielski }
710