1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_automation.hxx"
30 #include <svl/intitem.hxx>
31 #include <svl/stritem.hxx>
32 #include <svl/eitem.hxx>
33 #include "scmdstrm.hxx"
34 #include "svcommstream.hxx"
35 #include "rcontrol.hxx"
36 
37 #if OSL_DEBUG_LEVEL > 1
38 #include "editwin.hxx"
39 #include "statemnt.hxx"
40 #endif
41 
42 SCmdStream::SCmdStream(SvStream *pIn)
43 {
44 	pSammel = pIn;
45 	pCommStream = new SvCommStream( pSammel );
46 //	SetCommStream( pCommStream );
47 }
48 
49 SCmdStream::~SCmdStream()
50 {
51 	delete pCommStream;
52 }
53 
54 void SCmdStream::Read (String* &pString)
55 {
56     if ( !pString )
57         pString = new String();
58 	comm_UniChar* pStr;
59 	sal_uInt16 nLenInChars;
60 	CmdBaseStream::Read( pStr, nLenInChars );
61 
62 	*pString = String( pStr, nLenInChars );
63 	delete [] pStr;
64 }
65 
66 void SCmdStream::Read (String &aString)
67 {
68 	comm_UniChar* pStr;
69 	sal_uInt16 nLenInChars;
70 	CmdBaseStream::Read( pStr, nLenInChars );
71 
72 	aString = String( pStr, nLenInChars );
73 	delete [] pStr;
74 }
75 
76 void SCmdStream::Read ( SfxPoolItem *&pItem )
77 {
78 	sal_uInt16 nType;
79 	sal_uInt16 nId;
80 	Read(nId);
81 #if OSL_DEBUG_LEVEL > 1
82 		StatementList::m_pDbgWin->AddText( "Parameter: " );
83 		StatementList::m_pDbgWin->AddText( String::CreateFromInt32( nId ) );
84 		StatementList::m_pDbgWin->AddText( " " );
85 #endif
86     Read( nType );
87 	switch (nType)
88 	{
89 		case BinUSHORT:
90 			{
91 				comm_USHORT nNr;
92                 Read (nNr );
93 				pItem = new SfxUInt16Item(nId,nNr);
94 #if OSL_DEBUG_LEVEL > 1
95 				StatementList::m_pDbgWin->AddText( "USHORT:" );
96 				StatementList::m_pDbgWin->AddText( String::CreateFromInt32( nNr ) );
97 #endif
98 			}
99 			break;
100 		case BinULONG:
101 			{
102 				comm_ULONG nNr;
103                 Read (nNr );
104 				pItem = new SfxUInt32Item(nId,nNr);
105 #if OSL_DEBUG_LEVEL > 1
106 				StatementList::m_pDbgWin->AddText( "ULONG:" );
107 				StatementList::m_pDbgWin->AddText( String::CreateFromInt64( nNr ) );
108 #endif
109 			}
110 			break;
111 		case BinString:
112 			{
113 				String aString;
114                 Read (aString);
115 
116 				pItem = new SfxStringItem(nId,aString);
117 #if OSL_DEBUG_LEVEL > 1
118 				StatementList::m_pDbgWin->AddText( "String:" );
119 				StatementList::m_pDbgWin->AddText( aString );
120 #endif
121 			}
122 			break;
123 		case BinBool:
124 			{
125 				comm_BOOL bBool;
126                 Read (bBool);
127 				pItem = new SfxBoolItem(nId,bBool);
128 #if OSL_DEBUG_LEVEL > 1
129 				StatementList::m_pDbgWin->AddText( "BOOL:" );
130 				StatementList::m_pDbgWin->AddText( bBool ? "TRUE" : "FALSE" );
131 #endif
132 			}
133 			break;
134 		default:
135 			DBG_ERROR1( "Ung�ltiger Typ im Stream:%hu", nType );
136 #if OSL_DEBUG_LEVEL > 1
137 			StatementList::m_pDbgWin->AddText( "Ung�ltiger Typ !!!! " );
138 #endif
139 			break;
140 	}
141 #if OSL_DEBUG_LEVEL > 1
142 		StatementList::m_pDbgWin->AddText( "\n" );
143 #endif
144 }
145 
146 void SCmdStream::Read ( ::com::sun::star::beans::PropertyValue &rItem )
147 {
148 	sal_uInt16 nType;
149 	String aId;
150 	Read(aId);
151     rItem.Name = rtl::OUString( aId );
152 #if OSL_DEBUG_LEVEL > 1
153 		StatementList::m_pDbgWin->AddText( "Parameter: " );
154 		StatementList::m_pDbgWin->AddText( aId );
155 		StatementList::m_pDbgWin->AddText( " " );
156 #endif
157     nType = GetNextType();
158 	switch (nType)
159 	{
160 		case BinUSHORT:
161 			{
162 				comm_USHORT nNr;
163                 Read (nNr );
164                 rItem.Value <<= nNr;
165 #if OSL_DEBUG_LEVEL > 1
166 				StatementList::m_pDbgWin->AddText( "USHORT:" );
167 				StatementList::m_pDbgWin->AddText( String::CreateFromInt32( nNr ) );
168 #endif
169 			}
170 			break;
171 		case BinULONG:
172 			{
173 				comm_ULONG nNr;
174                 Read (nNr );
175                 rItem.Value <<= nNr;
176 #if OSL_DEBUG_LEVEL > 1
177 				StatementList::m_pDbgWin->AddText( "ULONG:" );
178 				StatementList::m_pDbgWin->AddText( String::CreateFromInt64( nNr ) );
179 #endif
180 			}
181 			break;
182 		case BinString:
183 			{
184 				String aString;
185                 Read (aString);
186                 rItem.Value <<= ::rtl::OUString( aString );
187 #if OSL_DEBUG_LEVEL > 1
188 				StatementList::m_pDbgWin->AddText( "String:" );
189 				StatementList::m_pDbgWin->AddText( aString );
190 #endif
191 			}
192 			break;
193 		case BinBool:
194 			{
195 				comm_BOOL bBool;
196                 Read (bBool);
197                 rItem.Value <<= bBool;
198 #if OSL_DEBUG_LEVEL > 1
199 				StatementList::m_pDbgWin->AddText( "BOOL:" );
200 				StatementList::m_pDbgWin->AddText( bBool ? "TRUE" : "FALSE" );
201 #endif
202 			}
203 			break;
204 		default:
205 			DBG_ERROR1( "Ung�ltiger Typ im Stream:%hu", nType );
206 #if OSL_DEBUG_LEVEL > 1
207 			StatementList::m_pDbgWin->AddText( "Ung�ltiger Typ !!!! " );
208 #endif
209 			break;
210 	}
211 #if OSL_DEBUG_LEVEL > 1
212 		StatementList::m_pDbgWin->AddText( "\n" );
213 #endif
214 }
215 
216