1b9e67834SAndre Fischer /************************************************************** 2b9e67834SAndre Fischer * 3b9e67834SAndre Fischer * Licensed to the Apache Software Foundation (ASF) under one 4b9e67834SAndre Fischer * or more contributor license agreements. See the NOTICE file 5b9e67834SAndre Fischer * distributed with this work for additional information 6b9e67834SAndre Fischer * regarding copyright ownership. The ASF licenses this file 7b9e67834SAndre Fischer * to you under the Apache License, Version 2.0 (the 8b9e67834SAndre Fischer * "License"); you may not use this file except in compliance 9b9e67834SAndre Fischer * with the License. You may obtain a copy of the License at 10b9e67834SAndre Fischer * 11b9e67834SAndre Fischer * http://www.apache.org/licenses/LICENSE-2.0 12b9e67834SAndre Fischer * 13b9e67834SAndre Fischer * Unless required by applicable law or agreed to in writing, 14b9e67834SAndre Fischer * software distributed under the License is distributed on an 15b9e67834SAndre Fischer * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16b9e67834SAndre Fischer * KIND, either express or implied. See the License for the 17b9e67834SAndre Fischer * specific language governing permissions and limitations 18b9e67834SAndre Fischer * under the License. 19b9e67834SAndre Fischer * 20b9e67834SAndre Fischer *************************************************************/ 21b9e67834SAndre Fischer 22b9e67834SAndre Fischer #include "precompiled_sfx2.hxx" 23b9e67834SAndre Fischer 24f35c6d02SAndre Fischer #include "sfx2/sidebar/Tools.hxx" 25b9e67834SAndre Fischer 26b9e67834SAndre Fischer #include "sfx2/sidebar/Theme.hxx" 27b9e67834SAndre Fischer 28b9e67834SAndre Fischer #include "sfx2/imagemgr.hxx" 29b9e67834SAndre Fischer #include <comphelper/processfactory.hxx> 30b9e67834SAndre Fischer #include <comphelper/componentcontext.hxx> 31b9e67834SAndre Fischer #include <comphelper/namedvaluecollection.hxx> 3295a18594SAndre Fischer #include <vcl/gradient.hxx> 33b9e67834SAndre Fischer 34f35c6d02SAndre Fischer #include <com/sun/star/frame/XDispatchProvider.hpp> 3595a18594SAndre Fischer #include <com/sun/star/graphic/XGraphicProvider.hpp> 36f35c6d02SAndre Fischer #include <com/sun/star/util/XURLTransformer.hpp> 37*d46a1e42SAndre Fischer #include <com/sun/star/frame/XModuleManager.hpp> 3895a18594SAndre Fischer 3995a18594SAndre Fischer #include <cstring> 40b9e67834SAndre Fischer 41b9e67834SAndre Fischer using namespace css; 42b9e67834SAndre Fischer using namespace cssu; 43b9e67834SAndre Fischer 44b9e67834SAndre Fischer 45b9e67834SAndre Fischer namespace sfx2 { namespace sidebar { 46b9e67834SAndre Fischer 47b9e67834SAndre Fischer Image Tools::GetImage ( 48b9e67834SAndre Fischer const ::rtl::OUString& rsImageURL, 49b9e67834SAndre Fischer const ::rtl::OUString& rsHighContrastImageURL, 50b9e67834SAndre Fischer const Reference<frame::XFrame>& rxFrame) 51b9e67834SAndre Fischer { 52b9e67834SAndre Fischer if (Theme::IsHighContrastMode()) 53b9e67834SAndre Fischer return GetImage(rsHighContrastImageURL, rxFrame); 54b9e67834SAndre Fischer else 55b9e67834SAndre Fischer return GetImage(rsImageURL, rxFrame); 56b9e67834SAndre Fischer } 57b9e67834SAndre Fischer 58b9e67834SAndre Fischer 59b9e67834SAndre Fischer 60b9e67834SAndre Fischer 61b9e67834SAndre Fischer Image Tools::GetImage ( 62b9e67834SAndre Fischer const ::rtl::OUString& rsURL, 63b9e67834SAndre Fischer const Reference<frame::XFrame>& rxFrame) 64b9e67834SAndre Fischer { 65b9e67834SAndre Fischer if (rsURL.getLength() > 0) 66b9e67834SAndre Fischer { 67b9e67834SAndre Fischer static const sal_Char* sUnoCommandPrefix = ".uno:"; 68b9e67834SAndre Fischer static const sal_Int32 nUnoCommandPrefixLength = strlen(sUnoCommandPrefix); 69b9e67834SAndre Fischer static const sal_Char* sCommandImagePrefix = "private:commandimage/"; 70b9e67834SAndre Fischer static const sal_Int32 nCommandImagePrefixLength = strlen(sCommandImagePrefix); 71b9e67834SAndre Fischer 72b9e67834SAndre Fischer if (rsURL.compareToAscii(sUnoCommandPrefix, nUnoCommandPrefixLength) == 0) 73b9e67834SAndre Fischer { 74b9e67834SAndre Fischer const Image aPanelImage (::GetImage(rxFrame, rsURL, sal_False, Theme::IsHighContrastMode())); 75b9e67834SAndre Fischer return aPanelImage; 76b9e67834SAndre Fischer } 77b9e67834SAndre Fischer else if (rsURL.compareToAscii(sCommandImagePrefix, nCommandImagePrefixLength) == 0) 78b9e67834SAndre Fischer { 79b9e67834SAndre Fischer ::rtl::OUStringBuffer aCommandName; 80b9e67834SAndre Fischer aCommandName.appendAscii(sUnoCommandPrefix); 81b9e67834SAndre Fischer aCommandName.append(rsURL.copy(nCommandImagePrefixLength)); 82b9e67834SAndre Fischer const ::rtl::OUString sCommandName (aCommandName.makeStringAndClear()); 83b9e67834SAndre Fischer 84b9e67834SAndre Fischer const Image aPanelImage (::GetImage(rxFrame, sCommandName, sal_False, Theme::IsHighContrastMode())); 85b9e67834SAndre Fischer return aPanelImage; 86b9e67834SAndre Fischer } 87b9e67834SAndre Fischer else 88b9e67834SAndre Fischer { 89b9e67834SAndre Fischer const ::comphelper::ComponentContext aContext (::comphelper::getProcessServiceFactory()); 90b9e67834SAndre Fischer const Reference<graphic::XGraphicProvider> xGraphicProvider ( 91b9e67834SAndre Fischer aContext.createComponent("com.sun.star.graphic.GraphicProvider"), 92b9e67834SAndre Fischer UNO_QUERY); 93b9e67834SAndre Fischer if ( xGraphicProvider.is()) 94b9e67834SAndre Fischer { 95b9e67834SAndre Fischer ::comphelper::NamedValueCollection aMediaProperties; 96b9e67834SAndre Fischer aMediaProperties.put("URL", rsURL); 97b9e67834SAndre Fischer const Reference<graphic::XGraphic> xGraphic ( 98b9e67834SAndre Fischer xGraphicProvider->queryGraphic(aMediaProperties.getPropertyValues()), 99b9e67834SAndre Fischer UNO_QUERY); 100b9e67834SAndre Fischer if (xGraphic.is()) 101b9e67834SAndre Fischer return Image(xGraphic); 102b9e67834SAndre Fischer } 103b9e67834SAndre Fischer } 104b9e67834SAndre Fischer } 105b9e67834SAndre Fischer return Image(); 106b9e67834SAndre Fischer } 107b9e67834SAndre Fischer 108b9e67834SAndre Fischer 10995a18594SAndre Fischer 11095a18594SAndre Fischer 11195a18594SAndre Fischer css::awt::Gradient Tools::VclToAwtGradient (const Gradient aVclGradient) 11295a18594SAndre Fischer { 11395a18594SAndre Fischer css::awt::Gradient aAwtGradient ( 11495a18594SAndre Fischer awt::GradientStyle(aVclGradient.GetStyle()), 11595a18594SAndre Fischer aVclGradient.GetStartColor().GetRGBColor(), 11695a18594SAndre Fischer aVclGradient.GetEndColor().GetRGBColor(), 11795a18594SAndre Fischer aVclGradient.GetAngle(), 11895a18594SAndre Fischer aVclGradient.GetBorder(), 11995a18594SAndre Fischer aVclGradient.GetOfsX(), 12095a18594SAndre Fischer aVclGradient.GetOfsY(), 12195a18594SAndre Fischer aVclGradient.GetStartIntensity(), 12295a18594SAndre Fischer aVclGradient.GetEndIntensity(), 12395a18594SAndre Fischer aVclGradient.GetSteps()); 12495a18594SAndre Fischer return aAwtGradient; 12595a18594SAndre Fischer } 12695a18594SAndre Fischer 12795a18594SAndre Fischer 12895a18594SAndre Fischer 12995a18594SAndre Fischer 13095a18594SAndre Fischer Gradient Tools::AwtToVclGradient (const css::awt::Gradient aAwtGradient) 13195a18594SAndre Fischer { 13295a18594SAndre Fischer Gradient aVclGradient ( 13395a18594SAndre Fischer GradientStyle(aAwtGradient.Style), 13495a18594SAndre Fischer aAwtGradient.StartColor, 13595a18594SAndre Fischer aAwtGradient.EndColor); 13695a18594SAndre Fischer aVclGradient.SetAngle(aAwtGradient.Angle); 13795a18594SAndre Fischer aVclGradient.SetBorder(aAwtGradient.Border); 13895a18594SAndre Fischer aVclGradient.SetOfsX(aAwtGradient.XOffset); 13995a18594SAndre Fischer aVclGradient.SetOfsY(aAwtGradient.YOffset); 14095a18594SAndre Fischer aVclGradient.SetStartIntensity(aAwtGradient.StartIntensity); 14195a18594SAndre Fischer aVclGradient.SetEndIntensity(aAwtGradient.EndIntensity); 14295a18594SAndre Fischer aVclGradient.SetSteps(aAwtGradient.StepCount); 14395a18594SAndre Fischer 14495a18594SAndre Fischer return aVclGradient; 14595a18594SAndre Fischer } 14695a18594SAndre Fischer 14795a18594SAndre Fischer 14895a18594SAndre Fischer 14995a18594SAndre Fischer 15095a18594SAndre Fischer SvBorder Tools::RectangleToSvBorder (const Rectangle aBox) 15195a18594SAndre Fischer { 15295a18594SAndre Fischer return SvBorder( 15395a18594SAndre Fischer aBox.Left(), 15495a18594SAndre Fischer aBox.Top(), 15595a18594SAndre Fischer aBox.Right(), 15695a18594SAndre Fischer aBox.Bottom()); 15795a18594SAndre Fischer } 15895a18594SAndre Fischer 159f35c6d02SAndre Fischer 160f35c6d02SAndre Fischer 161f35c6d02SAndre Fischer 162f35c6d02SAndre Fischer util::URL Tools::GetURL (const ::rtl::OUString& rsCommand) 163f35c6d02SAndre Fischer { 164f35c6d02SAndre Fischer util::URL aURL; 165f35c6d02SAndre Fischer aURL.Complete = rsCommand; 166f35c6d02SAndre Fischer 167f35c6d02SAndre Fischer const ::comphelper::ComponentContext aComponentContext (::comphelper::getProcessServiceFactory()); 168f35c6d02SAndre Fischer const Reference<util::XURLTransformer> xParser ( 169f35c6d02SAndre Fischer aComponentContext.createComponent("com.sun.star.util.URLTransformer"), 170f35c6d02SAndre Fischer UNO_QUERY_THROW); 171f35c6d02SAndre Fischer xParser->parseStrict(aURL); 172f35c6d02SAndre Fischer 173f35c6d02SAndre Fischer return aURL; 174f35c6d02SAndre Fischer } 175f35c6d02SAndre Fischer 176f35c6d02SAndre Fischer 177f35c6d02SAndre Fischer 178f35c6d02SAndre Fischer 179f35c6d02SAndre Fischer Reference<frame::XDispatch> Tools::GetDispatch ( 180f35c6d02SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame, 181f35c6d02SAndre Fischer const util::URL& rURL) 182f35c6d02SAndre Fischer { 183f35c6d02SAndre Fischer Reference<frame::XDispatchProvider> xProvider (rxFrame, UNO_QUERY_THROW); 184f35c6d02SAndre Fischer Reference<frame::XDispatch> xDispatch (xProvider->queryDispatch(rURL, ::rtl::OUString(), 0)); 185f35c6d02SAndre Fischer return xDispatch; 186f35c6d02SAndre Fischer } 187f35c6d02SAndre Fischer 188f35c6d02SAndre Fischer 189*d46a1e42SAndre Fischer 190*d46a1e42SAndre Fischer 191*d46a1e42SAndre Fischer ::rtl::OUString Tools::GetModuleName ( 192*d46a1e42SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame) 193*d46a1e42SAndre Fischer { 194*d46a1e42SAndre Fischer if ( ! rxFrame.is() || ! rxFrame->getController().is()) 195*d46a1e42SAndre Fischer return ::rtl::OUString(); 196*d46a1e42SAndre Fischer 197*d46a1e42SAndre Fischer try 198*d46a1e42SAndre Fischer { 199*d46a1e42SAndre Fischer const ::comphelper::ComponentContext aContext (::comphelper::getProcessServiceFactory()); 200*d46a1e42SAndre Fischer const Reference<frame::XModuleManager> xModuleManager ( 201*d46a1e42SAndre Fischer aContext.createComponent("com.sun.star.frame.ModuleManager"), 202*d46a1e42SAndre Fischer UNO_QUERY_THROW); 203*d46a1e42SAndre Fischer return xModuleManager->identify(rxFrame); 204*d46a1e42SAndre Fischer } 205*d46a1e42SAndre Fischer catch (const Exception&) 206*d46a1e42SAndre Fischer { 207*d46a1e42SAndre Fischer // Ignored. 208*d46a1e42SAndre Fischer } 209*d46a1e42SAndre Fischer return ::rtl::OUString(); 210*d46a1e42SAndre Fischer } 211*d46a1e42SAndre Fischer 212*d46a1e42SAndre Fischer 213b9e67834SAndre Fischer } } // end of namespace sfx2::sidebar 214