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 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_sd.hxx" 26 27 #include <comphelper/serviceinfohelper.hxx> 28 29 #include "SdUnoOutlineView.hxx" 30 31 #include "DrawController.hxx" 32 #include "OutlineViewShell.hxx" 33 #include "sdpage.hxx" 34 #include "unopage.hxx" 35 36 #include <cppuhelper/proptypehlp.hxx> 37 #include <svx/unopage.hxx> 38 #include <vos/mutex.hxx> 39 #include <vcl/svapp.hxx> 40 41 using ::rtl::OUString; 42 using namespace ::vos; 43 using namespace ::cppu; 44 using namespace ::com::sun::star; 45 using namespace ::com::sun::star::uno; 46 47 48 49 namespace sd { 50 51 SdUnoOutlineView::SdUnoOutlineView( 52 DrawController& rController, 53 OutlineViewShell& rViewShell, 54 View& rView) throw() 55 : DrawSubControllerInterfaceBase(m_aMutex), 56 mrController(rController), 57 mrOutlineViewShell(rViewShell), 58 mrView(rView) 59 { 60 } 61 62 63 64 65 SdUnoOutlineView::~SdUnoOutlineView (void) throw() 66 { 67 } 68 69 70 71 72 void SAL_CALL SdUnoOutlineView::disposing (void) 73 { 74 } 75 76 77 78 79 //----- XSelectionSupplier ---------------------------------------------------- 80 81 sal_Bool SAL_CALL SdUnoOutlineView::select( const Any& ) 82 throw(lang::IllegalArgumentException, RuntimeException) 83 { 84 // todo: add selections for text ranges 85 return sal_False; 86 } 87 88 89 90 Any SAL_CALL SdUnoOutlineView::getSelection() 91 throw(RuntimeException) 92 { 93 Any aAny; 94 return aAny; 95 } 96 97 98 99 void SAL_CALL SdUnoOutlineView::addSelectionChangeListener ( 100 const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) 101 throw(css::uno::RuntimeException) 102 { 103 (void)rxListener; 104 } 105 106 107 108 109 void SAL_CALL SdUnoOutlineView::removeSelectionChangeListener ( 110 const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) 111 throw(css::uno::RuntimeException) 112 { 113 (void)rxListener; 114 } 115 116 117 118 119 //----- XDrawView ------------------------------------------------------------- 120 121 122 void SAL_CALL SdUnoOutlineView::setCurrentPage ( 123 const Reference< drawing::XDrawPage >& xPage) 124 throw(RuntimeException) 125 { 126 SvxDrawPage* pDrawPage = SvxDrawPage::getImplementation( xPage ); 127 SdrPage *pSdrPage = pDrawPage ? pDrawPage->GetSdrPage() : NULL; 128 129 if (pSdrPage != NULL) 130 mrOutlineViewShell.SetCurrentPage(dynamic_cast<SdPage*>(pSdrPage)); 131 } 132 133 134 135 136 Reference< drawing::XDrawPage > SAL_CALL SdUnoOutlineView::getCurrentPage (void) 137 throw(RuntimeException) 138 { 139 Reference<drawing::XDrawPage> xPage; 140 141 SdPage* pPage = mrOutlineViewShell.getCurrentPage(); 142 if (pPage != NULL) 143 xPage = Reference<drawing::XDrawPage>::query(pPage->getUnoPage()); 144 145 return xPage; 146 } 147 148 149 150 /* 151 // Return sal_True, value change 152 sal_Bool SdUnoOutlineView::convertFastPropertyValue ( 153 Any & rConvertedValue, 154 Any & rOldValue, 155 sal_Int32 nHandle, 156 const Any& rValue) 157 throw ( com::sun::star::lang::IllegalArgumentException) 158 { 159 sal_Bool bResult = sal_False; 160 161 switch( nHandle ) 162 { 163 case DrawController::PROPERTY_CURRENTPAGE: 164 { 165 Reference< drawing::XDrawPage > xOldPage( getCurrentPage() ); 166 Reference< drawing::XDrawPage > xNewPage; 167 ::cppu::convertPropertyValue( xNewPage, rValue ); 168 if( xOldPage != xNewPage ) 169 { 170 rConvertedValue <<= xNewPage; 171 rOldValue <<= xOldPage; 172 bResult = sal_True; 173 } 174 } 175 break; 176 177 default: 178 break; 179 } 180 181 return bResult; 182 } 183 */ 184 185 186 void SdUnoOutlineView::setFastPropertyValue ( 187 sal_Int32 nHandle, 188 const Any& rValue) 189 throw(css::beans::UnknownPropertyException, 190 css::beans::PropertyVetoException, 191 css::lang::IllegalArgumentException, 192 css::lang::WrappedTargetException, 193 css::uno::RuntimeException) 194 { 195 switch( nHandle ) 196 { 197 case DrawController::PROPERTY_CURRENTPAGE: 198 { 199 Reference< drawing::XDrawPage > xPage; 200 rValue >>= xPage; 201 setCurrentPage( xPage ); 202 } 203 break; 204 205 default: 206 throw beans::UnknownPropertyException(); 207 } 208 } 209 210 211 212 213 void SAL_CALL SdUnoOutlineView::disposing (const ::com::sun::star::lang::EventObject& ) 214 throw (::com::sun::star::uno::RuntimeException) 215 { 216 } 217 218 219 220 221 Any SAL_CALL SdUnoOutlineView::getFastPropertyValue ( 222 sal_Int32 nHandle) 223 throw(css::beans::UnknownPropertyException, 224 css::lang::WrappedTargetException, 225 css::uno::RuntimeException) 226 { 227 Any aValue; 228 229 switch( nHandle ) 230 { 231 case DrawController::PROPERTY_CURRENTPAGE: 232 { 233 SdPage* pPage = const_cast<OutlineViewShell&>(mrOutlineViewShell).GetActualPage(); 234 if (pPage != NULL) 235 aValue <<= pPage->getUnoPage(); 236 } 237 break; 238 case DrawController::PROPERTY_VIEWOFFSET: 239 break; 240 241 default: 242 throw beans::UnknownPropertyException(); 243 } 244 245 return aValue; 246 } 247 248 249 // XServiceInfo 250 OUString SAL_CALL SdUnoOutlineView::getImplementationName( ) throw (RuntimeException) 251 { 252 return OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.sd.SdUnoOutlineView") ); 253 } 254 255 sal_Bool SAL_CALL SdUnoOutlineView::supportsService( const OUString& ServiceName ) throw (RuntimeException) 256 { 257 return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); 258 } 259 260 Sequence< OUString > SAL_CALL SdUnoOutlineView::getSupportedServiceNames( ) throw (RuntimeException) 261 { 262 OUString aSN( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.OutlineView") ); 263 uno::Sequence< OUString > aSeq( &aSN, 1 ); 264 return aSeq; 265 } 266 267 } // end of namespace sd 268