xref: /AOO41X/main/sc/source/filter/xml/XMLDDELinksContext.hxx (revision 38d50f7b14e1cf975d8c6468d9633894cd59b523)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef SC_XMLDDELINKSCONTEXT_HXX
25 #define SC_XMLDDELINKSCONTEXT_HXX
26 
27 #include <xmloff/xmlictxt.hxx>
28 
29 #include <list>
30 
31 class ScXMLImport;
32 
33 class ScXMLDDELinksContext : public SvXMLImportContext
34 {
GetScImport() const35     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()36     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
37 public:
38     ScXMLDDELinksContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
39                         const ::rtl::OUString& rLName,
40                         const ::com::sun::star::uno::Reference<
41                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
42 
43     virtual ~ScXMLDDELinksContext();
44 
45     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
46                                      const ::rtl::OUString& rLocalName,
47                                      const ::com::sun::star::uno::Reference<
48                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
49 
50     virtual void EndElement();
51 };
52 
53 struct ScDDELinkCell
54 {
55     rtl::OUString sValue;
56     double fValue;
57     sal_Bool bString;
58     sal_Bool bEmpty;
59 };
60 
61 typedef std::list<ScDDELinkCell> ScDDELinkCells;
62 
63 class ScXMLDDELinkContext : public SvXMLImportContext
64 {
65     ScDDELinkCells  aDDELinkTable;
66     ScDDELinkCells  aDDELinkRow;
67     rtl::OUString   sApplication;
68     rtl::OUString   sTopic;
69     rtl::OUString   sItem;
70     sal_Int32       nPosition;
71     sal_Int32       nColumns;
72     sal_Int32       nRows;
73     sal_uInt8       nMode;
74 
GetScImport() const75     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()76     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
77 public:
78     ScXMLDDELinkContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
79                         const ::rtl::OUString& rLName,
80                         const ::com::sun::star::uno::Reference<
81                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
82 
83     virtual ~ScXMLDDELinkContext();
84 
85     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
86                                      const ::rtl::OUString& rLocalName,
87                                      const ::com::sun::star::uno::Reference<
88                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
89 
SetApplication(const rtl::OUString & sValue)90     void SetApplication(const rtl::OUString& sValue) { sApplication = sValue; }
SetTopic(const rtl::OUString & sValue)91     void SetTopic(const rtl::OUString& sValue) { sTopic = sValue; }
SetItem(const rtl::OUString & sValue)92     void SetItem(const rtl::OUString& sValue) { sItem = sValue; }
SetMode(const sal_uInt8 nValue)93     void SetMode(const sal_uInt8 nValue) { nMode = nValue; }
94     void CreateDDELink();
AddColumns(const sal_Int32 nValue)95     void AddColumns(const sal_Int32 nValue) { nColumns += nValue; }
AddRows(const sal_Int32 nValue)96     void AddRows(const sal_Int32 nValue) { nRows += nValue; }
97     void AddCellToRow(const ScDDELinkCell& aCell);
98     void AddRowsToTable(const sal_Int32 nRows);
99 
100     virtual void EndElement();
101 };
102 
103 class ScXMLDDESourceContext : public SvXMLImportContext
104 {
105     ScXMLDDELinkContext* pDDELink;
106 
GetScImport() const107     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()108     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
109 public:
110     ScXMLDDESourceContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
111                         const ::rtl::OUString& rLName,
112                         const ::com::sun::star::uno::Reference<
113                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
114                         ScXMLDDELinkContext* pDDELink);
115 
116     virtual ~ScXMLDDESourceContext();
117 
118     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
119                                      const ::rtl::OUString& rLocalName,
120                                      const ::com::sun::star::uno::Reference<
121                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
122 
123     virtual void EndElement();
124 };
125 
126 class ScXMLDDETableContext : public SvXMLImportContext
127 {
128     ScXMLDDELinkContext* pDDELink;
129 
GetScImport() const130     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()131     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
132 public:
133     ScXMLDDETableContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
134                         const ::rtl::OUString& rLName,
135                         const ::com::sun::star::uno::Reference<
136                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
137                         ScXMLDDELinkContext* pDDELink);
138 
139     virtual ~ScXMLDDETableContext();
140 
141     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
142                                      const ::rtl::OUString& rLocalName,
143                                      const ::com::sun::star::uno::Reference<
144                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
145 
146     virtual void EndElement();
147 };
148 
149 class ScXMLDDEColumnContext : public SvXMLImportContext
150 {
151     ScXMLDDELinkContext* pDDELink;
152 
GetScImport() const153     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()154     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
155 public:
156     ScXMLDDEColumnContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
157                         const ::rtl::OUString& rLName,
158                         const ::com::sun::star::uno::Reference<
159                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
160                         ScXMLDDELinkContext* pDDELink);
161 
162     virtual ~ScXMLDDEColumnContext();
163 
164     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
165                                      const ::rtl::OUString& rLocalName,
166                                      const ::com::sun::star::uno::Reference<
167                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
168 
169     virtual void EndElement();
170 };
171 
172 class ScXMLDDERowContext : public SvXMLImportContext
173 {
174     ScXMLDDELinkContext*    pDDELink;
175     sal_Int32               nRows;
176 
GetScImport() const177     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()178     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
179 public:
180     ScXMLDDERowContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
181                         const ::rtl::OUString& rLName,
182                         const ::com::sun::star::uno::Reference<
183                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
184                         ScXMLDDELinkContext* pDDELink);
185 
186     virtual ~ScXMLDDERowContext();
187 
188     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
189                                      const ::rtl::OUString& rLocalName,
190                                      const ::com::sun::star::uno::Reference<
191                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
192 
193     virtual void EndElement();
194 };
195 
196 class ScXMLDDECellContext : public SvXMLImportContext
197 {
198     rtl::OUString   sValue;
199     double          fValue;
200     sal_Int32       nCells;
201     sal_Bool        bString;
202     sal_Bool        bString2;
203     sal_Bool        bEmpty;
204 
205     ScXMLDDELinkContext* pDDELink;
206 
GetScImport() const207     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()208     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
209 public:
210     ScXMLDDECellContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
211                         const ::rtl::OUString& rLName,
212                         const ::com::sun::star::uno::Reference<
213                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
214                         ScXMLDDELinkContext* pDDELink);
215 
216     virtual ~ScXMLDDECellContext();
217 
218     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
219                                      const ::rtl::OUString& rLocalName,
220                                      const ::com::sun::star::uno::Reference<
221                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
222 
223     virtual void EndElement();
224 };
225 
226 #endif
227