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