tdf#161341 show/hide controls/shapes/pictures in view/print
[LibreOffice.git] / vcl / source / window / EnumContext.cxx
blob46486f98f82dbfd991041587a74e31ca9758896f
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
19 #include <vcl/EnumContext.hxx>
21 #include <osl/diagnose.h>
22 #include <o3tl/enumarray.hxx>
24 #include <map>
26 namespace vcl {
28 namespace {
30 typedef ::std::map<OUString,EnumContext::Application> ApplicationMap;
32 ApplicationMap maApplicationMap;
33 o3tl::enumarray<EnumContext::Application, OUString> maApplicationVector;
35 typedef ::std::map<OUString,EnumContext::Context> ContextMap;
37 ContextMap maContextMap;
38 o3tl::enumarray<EnumContext::Context, OUString> maContextVector;
42 const sal_Int32 EnumContext::NoMatch = 4;
44 EnumContext::EnumContext()
45 : meApplication(Application::NONE),
46 meContext(Context::Unknown)
50 EnumContext::EnumContext (
51 const Application eApplication,
52 const Context eContext)
53 : meApplication(eApplication),
54 meContext(eContext)
58 sal_Int32 EnumContext::GetCombinedContext_DI() const
60 return CombinedEnumContext(GetApplication_DI(), meContext);
63 EnumContext::Application EnumContext::GetApplication() const
65 return meApplication;
68 EnumContext::Application EnumContext::GetApplication_DI() const
70 switch (meApplication)
72 case Application::Draw:
73 case Application::Impress:
74 return Application::DrawImpress;
76 case Application::Writer:
77 case Application::WriterGlobal:
78 case Application::WriterWeb:
79 case Application::WriterXML:
80 case Application::WriterForm:
81 case Application::WriterReport:
82 return Application::WriterVariants;
84 default:
85 return meApplication;
89 bool EnumContext::operator== (const EnumContext& rOther) const
91 return meApplication==rOther.meApplication
92 && meContext==rOther.meContext;
95 bool EnumContext::operator!= (const EnumContext& rOther) const
97 return meApplication!=rOther.meApplication
98 || meContext!=rOther.meContext;
101 void EnumContext::AddEntry (const OUString& rsName, const Application eApplication)
103 maApplicationMap[rsName] = eApplication;
104 OSL_ASSERT(eApplication<=Application::LAST);
105 maApplicationVector[eApplication]=rsName;
108 void EnumContext::ProvideApplicationContainers()
110 if (!maApplicationMap.empty())
111 return;
113 AddEntry(u"com.sun.star.text.TextDocument"_ustr, EnumContext::Application::Writer);
114 AddEntry(u"com.sun.star.text.GlobalDocument"_ustr, EnumContext::Application::WriterGlobal);
115 AddEntry(u"com.sun.star.text.WebDocument"_ustr, EnumContext::Application::WriterWeb);
116 AddEntry(u"com.sun.star.xforms.XMLFormDocument"_ustr, EnumContext::Application::WriterXML);
117 AddEntry(u"com.sun.star.sdb.FormDesign"_ustr, EnumContext::Application::WriterForm);
118 AddEntry(u"com.sun.star.sdb.TextReportDesign"_ustr, EnumContext::Application::WriterReport);
119 AddEntry(u"com.sun.star.sheet.SpreadsheetDocument"_ustr, EnumContext::Application::Calc);
120 AddEntry(u"com.sun.star.chart2.ChartDocument"_ustr, EnumContext::Application::Chart);
121 AddEntry(u"com.sun.star.drawing.DrawingDocument"_ustr, EnumContext::Application::Draw);
122 AddEntry(u"com.sun.star.presentation.PresentationDocument"_ustr, EnumContext::Application::Impress);
123 AddEntry(u"com.sun.star.formula.FormulaProperties"_ustr, EnumContext::Application::Formula);
124 AddEntry(u"com.sun.star.sdb.OfficeDatabaseDocument"_ustr, EnumContext::Application::Base);
125 AddEntry(u"any"_ustr, EnumContext::Application::Any);
126 AddEntry(u"none"_ustr, EnumContext::Application::NONE);
130 EnumContext::Application EnumContext::GetApplicationEnum (const OUString& rsApplicationName)
132 ProvideApplicationContainers();
134 ApplicationMap::const_iterator iApplication(
135 maApplicationMap.find(rsApplicationName));
136 if (iApplication != maApplicationMap.end())
137 return iApplication->second;
138 else
139 return EnumContext::Application::NONE;
142 const OUString& EnumContext::GetApplicationName (const Application eApplication)
144 ProvideApplicationContainers();
145 return maApplicationVector[eApplication];
148 void EnumContext::AddEntry (const OUString& rsName, const Context eContext)
150 maContextMap[rsName] = eContext;
151 maContextVector[eContext] = rsName;
154 void EnumContext::ProvideContextContainers()
156 if (!maContextMap.empty())
157 return;
159 AddEntry(u"3DObject"_ustr, Context::ThreeDObject);
160 AddEntry(u"Annotation"_ustr, Context::Annotation);
161 AddEntry(u"Auditing"_ustr, Context::Auditing);
162 AddEntry(u"Axis"_ustr, Context::Axis);
163 AddEntry(u"Cell"_ustr, Context::Cell);
164 AddEntry(u"Chart"_ustr, Context::Chart);
165 AddEntry(u"ChartElements"_ustr, Context::ChartElements);
166 AddEntry(u"Draw"_ustr, Context::Draw);
167 AddEntry(u"DrawFontwork"_ustr, Context::DrawFontwork);
168 AddEntry(u"DrawLine"_ustr, Context::DrawLine);
169 AddEntry(u"DrawPage"_ustr, Context::DrawPage);
170 AddEntry(u"DrawText"_ustr, Context::DrawText);
171 AddEntry(u"EditCell"_ustr, Context::EditCell);
172 AddEntry(u"ErrorBar"_ustr, Context::ErrorBar);
173 AddEntry(u"Form"_ustr, Context::Form);
174 AddEntry(u"Frame"_ustr, Context::Frame);
175 AddEntry(u"Graphic"_ustr, Context::Graphic);
176 AddEntry(u"Grid"_ustr, Context::Grid);
177 AddEntry(u"HandoutPage"_ustr, Context::HandoutPage);
178 AddEntry(u"MasterPage"_ustr, Context::MasterPage);
179 AddEntry(u"Math"_ustr, Context::Math);
180 AddEntry(u"Media"_ustr, Context::Media);
181 AddEntry(u"MultiObject"_ustr, Context::MultiObject);
182 AddEntry(u"NotesPage"_ustr, Context::NotesPage);
183 AddEntry(u"OLE"_ustr, Context::OLE);
184 AddEntry(u"OutlineText"_ustr, Context::OutlineText);
185 AddEntry(u"Pivot"_ustr, Context::Pivot);
186 AddEntry(u"Printpreview"_ustr, Context::Printpreview);
187 AddEntry(u"Series"_ustr, Context::Series);
188 AddEntry(u"SlidesorterPage"_ustr, Context::SlidesorterPage);
189 AddEntry(u"Table"_ustr, Context::Table);
190 AddEntry(u"Text"_ustr, Context::Text);
191 AddEntry(u"TextObject"_ustr, Context::TextObject);
192 AddEntry(u"Trendline"_ustr, Context::Trendline);
193 AddEntry(u"Sparkline"_ustr, Context::Sparkline);
195 // other general contexts
196 AddEntry(u"any"_ustr, Context::Any);
197 AddEntry(u"default"_ustr, Context::Default);
198 AddEntry(u"empty"_ustr, Context::Empty);
201 EnumContext::Context EnumContext::GetContextEnum (const OUString& rsContextName)
203 ProvideContextContainers();
205 ContextMap::const_iterator iContext( maContextMap.find(rsContextName) );
206 if (iContext != maContextMap.end())
207 return iContext->second;
208 else
209 return EnumContext::Context::Unknown;
212 const OUString& EnumContext::GetContextName (const Context eContext)
214 ProvideContextContainers();
215 return maContextVector[eContext];
218 } // end of namespace vcl
220 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */