]> git.sesse.net Git - vlc/blob - activex/persistpropbag.cpp
compilation fixes for MSVC
[vlc] / activex / persistpropbag.cpp
1 /*****************************************************************************
2  * persistpropbag.cpp: ActiveX control for VLC
3  *****************************************************************************
4  * Copyright (C) 2005 VideoLAN
5  *
6  * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
21  *****************************************************************************/
22
23 #include "plugin.h"
24 #include "persistpropbag.h"
25
26 #include "utils.h"
27 #include "oleobject.h"
28
29 using namespace std;
30
31 STDMETHODIMP VLCPersistPropertyBag::GetClassID(LPCLSID pClsID)
32 {
33     if( NULL == pClsID )
34         return E_POINTER;
35
36     *pClsID = _p_instance->getClassID();
37
38     return S_OK;
39 };
40
41 STDMETHODIMP VLCPersistPropertyBag::InitNew(void)
42 {
43     return _p_instance->onInit(TRUE);
44 };
45
46 STDMETHODIMP VLCPersistPropertyBag::Load(LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog)
47 {
48     if( NULL == pPropBag )
49         return E_POINTER;
50
51     HRESULT hr = _p_instance->onInit(FALSE);
52     if( FAILED(hr) )
53         return hr;
54
55     VARIANT value;
56
57     V_VT(&value) = VT_BSTR;
58     if( S_OK == pPropBag->Read(OLESTR("filename"), &value, pErrorLog) )
59     {
60         char *src = CStrFromBSTR(_p_instance->getCodePage(), V_BSTR(&value));
61         if( NULL != src )
62         {
63             _p_instance->setSourceURL(src);
64             free(src);
65         }
66         VariantClear(&value);
67     }
68
69     V_VT(&value) = VT_BSTR;
70     if( S_OK == pPropBag->Read(OLESTR("src"), &value, pErrorLog) )
71     {
72         char *src = CStrFromBSTR(_p_instance->getCodePage(), V_BSTR(&value));
73         if( NULL != src )
74         {
75             _p_instance->setSourceURL(src);
76             free(src);
77         }
78         VariantClear(&value);
79     }
80
81     V_VT(&value) = VT_BOOL;
82     if( S_OK == pPropBag->Read(OLESTR("autoplay"), &value, pErrorLog) )
83     {
84         _p_instance->setAutoStart(V_BOOL(&value) != VARIANT_FALSE);
85         VariantClear(&value);
86     }
87
88     V_VT(&value) = VT_BOOL;
89     if( S_OK == pPropBag->Read(OLESTR("autostart"), &value, pErrorLog) )
90     {
91         _p_instance->setAutoStart(V_BOOL(&value) != VARIANT_FALSE);
92         VariantClear(&value);
93     }
94
95     V_VT(&value) = VT_BOOL;
96     if( S_OK == pPropBag->Read(OLESTR("loop"), &value, pErrorLog) )
97     {
98         _p_instance->setLoopMode(V_BOOL(&value) != VARIANT_FALSE);
99         VariantClear(&value);
100     }
101
102     V_VT(&value) = VT_BOOL;
103     if( S_OK == pPropBag->Read(OLESTR("mute"), &value, pErrorLog) )
104     {
105         _p_instance->setMute(V_BOOL(&value) != VARIANT_FALSE);
106         VariantClear(&value);
107     }
108
109     V_VT(&value) = VT_BOOL;
110     if( S_OK == pPropBag->Read(OLESTR("showdisplay"), &value, pErrorLog) )
111     {
112         _p_instance->setVisible(V_BOOL(&value) != VARIANT_FALSE);
113         VariantClear(&value);
114     }
115
116     return _p_instance->onLoad();
117 };
118
119 STDMETHODIMP VLCPersistPropertyBag::Save(LPPROPERTYBAG pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties)
120 {
121     if( NULL == pPropBag )
122         return E_POINTER;
123
124     return S_OK;
125 };
126