Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <precomp.h>
21 : #include <toolkit/hf_navi_main.hxx>
22 :
23 :
24 : // NOT FULLY DEFINED SERVICES
25 : #include <cosv/tpl/tpltools.hxx>
26 :
27 :
28 :
29 : //******************** MainItem and derived ones ***************//
30 : class HF_MainItem : public HtmlMaker
31 : {
32 : public:
33 39155 : virtual ~HF_MainItem() {}
34 39155 : void Produce_Item() const { do_ProduceItem(); }
35 : protected:
36 39155 : HF_MainItem(
37 : Xml::Element & o_out )
38 39155 : : HtmlMaker(o_out) {}
39 : private:
40 : virtual void do_ProduceItem() const = 0;
41 : };
42 :
43 :
44 : namespace
45 : {
46 :
47 : class StdItem : public HF_MainItem
48 : {
49 : public:
50 : StdItem(
51 : Xml::Element & o_out,
52 : const char * i_sText,
53 : const char * i_sLink );
54 :
55 : ~StdItem();
56 : private:
57 : virtual void do_ProduceItem() const;
58 :
59 : // DATA
60 : String sText;
61 : String sLink;
62 : };
63 :
64 : class SelfItem : public HF_MainItem
65 : {
66 : public:
67 : SelfItem(
68 : Xml::Element & o_out,
69 : const char * i_sText );
70 : ~SelfItem();
71 : private:
72 : virtual void do_ProduceItem() const;
73 :
74 : // DATA
75 : String sText;
76 : };
77 :
78 : class NoneItem : public HF_MainItem
79 : {
80 : public:
81 : NoneItem(
82 : Xml::Element & o_out,
83 : const char * i_sText );
84 : ~NoneItem();
85 : private:
86 : virtual void do_ProduceItem() const;
87 :
88 : // DATA
89 : String sText;
90 : };
91 :
92 : } // anonymous namespace
93 :
94 :
95 :
96 : //******************** HF_NaviMainRow ***************//
97 :
98 :
99 :
100 7831 : HF_NaviMainRow::HF_NaviMainRow( Xml::Element & o_out )
101 : : HtmlMaker(o_out),
102 : aItems(),
103 7831 : pRow(0)
104 : {
105 7831 : aItems.reserve(5);
106 :
107 : pRow =
108 7831 : &( CurOut()
109 15662 : >> *new Html::Table
110 23493 : << new Html::ClassAttr("navimain")
111 15662 : << new Xml::AnAttribute( "border", "0" )
112 15662 : << new Xml::AnAttribute( "cellpadding", "3" )
113 15662 : >> *new Html::TableRow
114 7831 : );
115 7831 : }
116 :
117 15662 : HF_NaviMainRow::~HF_NaviMainRow()
118 : {
119 7831 : csv::erase_container_of_heap_ptrs(aItems);
120 7831 : }
121 :
122 : void
123 27674 : HF_NaviMainRow::Add_StdItem( const char * i_sText,
124 : const char * i_sLink )
125 : {
126 27674 : aItems.push_back(new StdItem( *pRow,i_sText,i_sLink ));
127 27674 : }
128 :
129 : void
130 3697 : HF_NaviMainRow::Add_SelfItem( const char * i_sText )
131 : {
132 3697 : aItems.push_back(new SelfItem( *pRow,i_sText ));
133 3697 : }
134 :
135 : void
136 7784 : HF_NaviMainRow::Add_NoneItem( const char * i_sText )
137 : {
138 7784 : aItems.push_back(new NoneItem( *pRow,i_sText ));
139 7784 : }
140 :
141 : void
142 7831 : HF_NaviMainRow::Produce_Row()
143 : {
144 7831 : ItemList::iterator itEnd = aItems.end();
145 46986 : for ( ItemList::iterator iter = aItems.begin();
146 : iter != itEnd;
147 : ++iter )
148 : {
149 39155 : (*iter)->Produce_Item();
150 : }
151 7831 : }
152 :
153 :
154 :
155 :
156 : //******************** MainItem and derived ones ***************//
157 :
158 : namespace
159 : {
160 :
161 27674 : StdItem::StdItem( Xml::Element & o_out,
162 : const char * i_sText,
163 : const char * i_sLink )
164 : : HF_MainItem(o_out),
165 : sText(i_sText),
166 27674 : sLink(i_sLink)
167 : {
168 27674 : }
169 :
170 55348 : StdItem::~StdItem()
171 : {
172 55348 : }
173 :
174 : void
175 27674 : StdItem::do_ProduceItem() const
176 : {
177 : Xml::Element &
178 27674 : rCell = CurOut() >>* new Html::TableCell;
179 : rCell
180 55348 : << new Html::ClassAttr( "navimain" )
181 83022 : >> *new Html::Link(sLink.c_str())
182 83022 : << new Html::ClassAttr( "navimain" )
183 55348 : << sText.c_str();
184 27674 : }
185 :
186 3697 : SelfItem::SelfItem( Xml::Element & o_out,
187 : const char * i_sText )
188 : : HF_MainItem(o_out),
189 3697 : sText(i_sText)
190 : {
191 3697 : }
192 :
193 7394 : SelfItem::~SelfItem()
194 : {
195 7394 : }
196 :
197 : void
198 3697 : SelfItem::do_ProduceItem() const
199 : {
200 : Xml::Element &
201 3697 : rCell = CurOut() >>* new Html::TableCell;
202 : rCell
203 7394 : << new Html::ClassAttr( "navimainself" )
204 7394 : << sText.c_str();
205 3697 : }
206 :
207 7784 : NoneItem::NoneItem( Xml::Element & o_out,
208 : const char * i_sText )
209 : : HF_MainItem(o_out),
210 7784 : sText(i_sText)
211 : {
212 7784 : }
213 :
214 15568 : NoneItem::~NoneItem()
215 : {
216 15568 : }
217 :
218 : void
219 7784 : NoneItem::do_ProduceItem() const
220 : {
221 : Xml::Element &
222 7784 : rCell = CurOut() >>* new Html::TableCell;
223 : rCell
224 15568 : << new Html::ClassAttr( "navimainnone" )
225 15568 : << sText.c_str();
226 7784 : }
227 :
228 3 : } // anonymous namespace
229 :
230 :
231 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|