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 "hfi_navibar.hxx"
22 :
23 :
24 : // NOT FULLY DEFINED SERVICES
25 : #include <ary/idl/i_ce.hxx>
26 : #include <toolkit/hf_navi_main.hxx>
27 : #include <toolkit/hf_navi_sub.hxx>
28 : #include "hfi_interface.hxx"
29 : #include "hfi_module.hxx"
30 : #include "hfi_service.hxx"
31 : #include "hi_linkhelper.hxx"
32 :
33 :
34 : extern const String
35 1 : C_sLocalManualLinks("#devmanual");
36 :
37 :
38 1 : const String C_sTop = "Overview";
39 1 : const String C_sModule = "Module";
40 1 : const String C_sUse = "Use";
41 1 : const String C_sManual = "Devguide";
42 1 : const String C_sIndex = "Index";
43 :
44 :
45 :
46 :
47 7831 : HF_IdlNavigationBar::HF_IdlNavigationBar( Environment & io_rEnv,
48 : Xml::Element & o_rOut )
49 7831 : : HtmlFactory_Idl(io_rEnv, &o_rOut)
50 : {
51 7831 : }
52 :
53 7831 : HF_IdlNavigationBar::~HF_IdlNavigationBar()
54 : {
55 7831 : }
56 :
57 : void
58 4134 : HF_IdlNavigationBar::Produce_CeMainRow( const client & i_ce,
59 : bool i_bNoUsePage )
60 : {
61 : HF_NaviMainRow
62 4134 : aNaviMain( CurOut() );
63 :
64 4134 : StreamLock aLink(500);
65 4134 : StreamStr & rLink = aLink();
66 :
67 4134 : Env().Get_LinkTo( rLink.reset(),
68 8268 : Env().OutputTree().Overview() );
69 4134 : aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
70 :
71 4134 : Env().Get_LinkTo( rLink.reset(),
72 8268 : Env().Linker().PositionOf_CurModule() );
73 4134 : aNaviMain.Add_StdItem( C_sModule, rLink.c_str() );
74 :
75 4134 : if (i_bNoUsePage)
76 : {
77 583 : aNaviMain.Add_NoneItem( C_sUse );
78 : }
79 : else
80 : {
81 3551 : Env().Get_LinkTo( rLink.reset(),
82 7102 : Env().Linker().PositionOf_CurXRefs(i_ce.LocalName()) );
83 3551 : aNaviMain.Add_StdItem( C_sUse, rLink.c_str() );
84 : }
85 :
86 : const StringVector &
87 4134 : rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual();
88 4134 : if (rManualDescrs.size() == 2)
89 : {
90 322 : aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
91 : }
92 3812 : else if (rManualDescrs.size() > 2)
93 : {
94 92 : aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks);
95 : }
96 : else
97 : {
98 3720 : aNaviMain.Add_NoneItem( C_sManual );
99 : }
100 :
101 4134 : Env().Get_LinkTo( rLink.reset(),
102 8268 : Env().Linker().PositionOf_Index() );
103 4134 : aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() );
104 :
105 4134 : aNaviMain.Produce_Row();
106 4134 : }
107 :
108 : void
109 3551 : HF_IdlNavigationBar::Produce_CeXrefsMainRow( const client & i_ce )
110 : {
111 : HF_NaviMainRow
112 3551 : aNaviMain( CurOut() );
113 :
114 3551 : StreamLock aLink(500);
115 3551 : StreamStr & rLink = aLink();
116 :
117 3551 : Env().Get_LinkTo( rLink.reset(),
118 7102 : Env().OutputTree().Overview() );
119 3551 : aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
120 :
121 3551 : Env().Get_LinkTo( rLink.reset(),
122 7102 : Env().Linker().PositionOf_CurModule() );
123 3551 : aNaviMain.Add_StdItem( C_sModule, rLink.c_str() );
124 :
125 3551 : aNaviMain.Add_SelfItem( C_sUse );
126 :
127 : const StringVector &
128 3551 : rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual();
129 3551 : if (rManualDescrs.size() == 2)
130 : {
131 301 : aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
132 : }
133 3250 : else if (rManualDescrs.size() > 2)
134 : {
135 88 : aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks);
136 : }
137 : else
138 : {
139 3162 : aNaviMain.Add_NoneItem( C_sManual );
140 : }
141 :
142 3551 : Env().Get_LinkTo( rLink.reset(),
143 7102 : Env().Linker().PositionOf_Index() );
144 3551 : aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() );
145 :
146 3551 : aNaviMain.Produce_Row();
147 3551 : }
148 :
149 : void
150 119 : HF_IdlNavigationBar::Produce_ModuleMainRow( const client & i_ce )
151 : {
152 : HF_NaviMainRow
153 119 : aNaviMain( CurOut() );
154 :
155 119 : StreamLock aLink(500);
156 119 : StreamStr & rLink = aLink();
157 :
158 119 : Env().Get_LinkTo( rLink.reset(),
159 238 : Env().OutputTree().Overview() );
160 119 : aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
161 :
162 119 : aNaviMain.Add_SelfItem( C_sModule );
163 :
164 119 : aNaviMain.Add_NoneItem( C_sUse );
165 :
166 : const StringVector &
167 119 : rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual();
168 119 : if (rManualDescrs.size() == 1)
169 : {
170 0 : aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
171 : }
172 119 : else if (rManualDescrs.size() > 1)
173 : {
174 0 : aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks);
175 : }
176 : else
177 : {
178 119 : aNaviMain.Add_NoneItem( C_sManual );
179 : }
180 :
181 119 : Env().Get_LinkTo( rLink.reset(),
182 238 : Env().Linker().PositionOf_Index() );
183 119 : aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() );
184 :
185 119 : aNaviMain.Produce_Row();
186 119 : }
187 :
188 : void
189 27 : HF_IdlNavigationBar::Produce_IndexMainRow()
190 : {
191 : HF_NaviMainRow
192 27 : aNaviMain( CurOut() );
193 :
194 27 : StreamLock aLink(500);
195 27 : StreamStr & rLink = aLink();
196 :
197 27 : Env().Get_LinkTo( rLink.reset(),
198 54 : Env().OutputTree().Overview() );
199 27 : aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
200 :
201 27 : aNaviMain.Add_NoneItem( C_sModule );
202 27 : aNaviMain.Add_NoneItem( C_sUse );
203 27 : aNaviMain.Add_NoneItem( C_sManual );
204 :
205 27 : aNaviMain.Add_SelfItem( C_sIndex );
206 :
207 27 : aNaviMain.Produce_Row();
208 :
209 27 : CurOut() << new Html::HorizontalLine();
210 27 : }
211 :
212 : DYN HF_NaviSubRow &
213 4220 : HF_IdlNavigationBar::Add_SubRow()
214 : {
215 4220 : return *new HF_NaviSubRow( CurOut() );
216 3 : }
217 :
218 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|