]> git.sesse.net Git - vlc/blob - activex/persistpropbag.cpp
Avoid \r\n problems between platforms
[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
28 using namespace std;
29
30 STDMETHODIMP VLCPersistPropertyBag::GetClassID(LPCLSID pClsID)
31 {
32     if( NULL == pClsID )
33         return E_POINTER;
34
35     *pClsID = _p_instance->getClassID();
36
37     return S_OK;
38 };
39
40 STDMETHODIMP VLCPersistPropertyBag::InitNew(void)
41 {
42     return _p_instance->onInitNew();
43 };
44
45 STDMETHODIMP VLCPersistPropertyBag::Load(LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog)
46 {
47     if( NULL == pPropBag )
48         return E_POINTER;
49
50     HRESULT hr = _p_instance->onInitNew();
51     if( FAILED(hr) )
52         return hr;
53
54     VARIANT value;
55
56     V_VT(&value) = VT_BSTR;
57     if( S_OK == pPropBag->Read(OLESTR("filename"), &value, pErrorLog) )
58     {
59         char *src = CStrFromBSTR(_p_instance->getCodePage(), V_BSTR(&value));
60         if( NULL != src )
61         {
62             _p_instance->setSourceURL(src);
63             free(src);
64         }
65         VariantClear(&value);
66     }
67
68     V_VT(&value) = VT_BSTR;
69     if( S_OK == pPropBag->Read(OLESTR("src"), &value, pErrorLog) )
70     {
71         char *src = CStrFromBSTR(_p_instance->getCodePage(), V_BSTR(&value));
72         if( NULL != src )
73         {
74             _p_instance->setSourceURL(src);
75             free(src);
76         }
77         VariantClear(&value);
78     }
79
80     V_VT(&value) = VT_BOOL;
81     if( S_OK == pPropBag->Read(OLESTR("autoplay"), &value, pErrorLog) )
82     {
83         _p_instance->setAutoStart(V_BOOL(&value) != VARIANT_FALSE);
84         VariantClear(&value);
85     }
86
87     V_VT(&value) = VT_BOOL;
88     if( S_OK == pPropBag->Read(OLESTR("autostart"), &value, pErrorLog) )
89     {
90         _p_instance->setAutoStart(V_BOOL(&value) != VARIANT_FALSE);
91         VariantClear(&value);
92     }
93
94     V_VT(&value) = VT_BOOL;
95     if( S_OK == pPropBag->Read(OLESTR("loop"), &value, pErrorLog) )
96     {
97         _p_instance->setLoopMode(V_BOOL(&value) != VARIANT_FALSE);
98         VariantClear(&value);
99     }
100
101     V_VT(&value) = VT_BOOL;
102     if( S_OK == pPropBag->Read(OLESTR("mute"), &value, pErrorLog) )
103     {
104         _p_instance->setMute(V_BOOL(&value) != VARIANT_FALSE);
105         VariantClear(&value);
106     }
107
108     V_VT(&value) = VT_BOOL;
109     if( S_OK == pPropBag->Read(OLESTR("showdisplay"), &value, pErrorLog) )
110     {
111         _p_instance->setVisible(V_BOOL(&value) != VARIANT_FALSE);
112         VariantClear(&value);
113     }
114
115     return S_OK;
116 };
117
118 STDMETHODIMP VLCPersistPropertyBag::Save(LPPROPERTYBAG pPropBag, BOOL fClearDiry, BOOL fSaveAllProperties)
119 {
120     if( NULL == pPropBag )
121         return E_POINTER;
122
123     return S_OK;
124 };
125