102c50d82SAndre Fischer /************************************************************** 202c50d82SAndre Fischer * 302c50d82SAndre Fischer * Licensed to the Apache Software Foundation (ASF) under one 402c50d82SAndre Fischer * or more contributor license agreements. See the NOTICE file 502c50d82SAndre Fischer * distributed with this work for additional information 602c50d82SAndre Fischer * regarding copyright ownership. The ASF licenses this file 702c50d82SAndre Fischer * to you under the Apache License, Version 2.0 (the 802c50d82SAndre Fischer * "License"); you may not use this file except in compliance 902c50d82SAndre Fischer * with the License. You may obtain a copy of the License at 1002c50d82SAndre Fischer * 1102c50d82SAndre Fischer * http://www.apache.org/licenses/LICENSE-2.0 1202c50d82SAndre Fischer * 1302c50d82SAndre Fischer * Unless required by applicable law or agreed to in writing, 1402c50d82SAndre Fischer * software distributed under the License is distributed on an 1502c50d82SAndre Fischer * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 1602c50d82SAndre Fischer * KIND, either express or implied. See the License for the 1702c50d82SAndre Fischer * specific language governing permissions and limitations 1802c50d82SAndre Fischer * under the License. 1902c50d82SAndre Fischer * 2002c50d82SAndre Fischer *************************************************************/ 2102c50d82SAndre Fischer 2202c50d82SAndre Fischer #include "precompiled_sd.hxx" 2302c50d82SAndre Fischer 2402c50d82SAndre Fischer #include "MasterPageDescriptor.hxx" 2502c50d82SAndre Fischer 2602c50d82SAndre Fischer #include "DocumentHelper.hxx" 2702c50d82SAndre Fischer #include "sdpage.hxx" 2802c50d82SAndre Fischer #include <tools/urlobj.hxx> 2902c50d82SAndre Fischer 3002c50d82SAndre Fischer namespace sd { namespace sidebar { 3102c50d82SAndre Fischer 3202c50d82SAndre Fischer 3302c50d82SAndre Fischer //===== MasterPageDescriptor ================================================== 3402c50d82SAndre Fischer 3502c50d82SAndre Fischer MasterPageDescriptor::MasterPageDescriptor ( 3602c50d82SAndre Fischer MasterPageContainer::Origin eOrigin, 3702c50d82SAndre Fischer const sal_Int32 nTemplateIndex, 3802c50d82SAndre Fischer const String& rsURL, 3902c50d82SAndre Fischer const String& rsPageName, 4002c50d82SAndre Fischer const String& rsStyleName, 4102c50d82SAndre Fischer const bool bIsPrecious, 4202c50d82SAndre Fischer const ::boost::shared_ptr<PageObjectProvider>& rpPageObjectProvider, 4302c50d82SAndre Fischer const ::boost::shared_ptr<PreviewProvider>& rpPreviewProvider) 4402c50d82SAndre Fischer : maToken(MasterPageContainer::NIL_TOKEN), 4502c50d82SAndre Fischer meOrigin(eOrigin), 4602c50d82SAndre Fischer msURL(INetURLObject(rsURL).GetMainURL(INetURLObject::DECODE_UNAMBIGUOUS)), 4702c50d82SAndre Fischer msPageName(rsPageName), 4802c50d82SAndre Fischer msStyleName(rsStyleName), 4902c50d82SAndre Fischer mbIsPrecious(bIsPrecious), 5002c50d82SAndre Fischer mpMasterPage(NULL), 5102c50d82SAndre Fischer mpSlide(NULL), 5202c50d82SAndre Fischer maSmallPreview(), 5302c50d82SAndre Fischer maLargePreview(), 5402c50d82SAndre Fischer mpPreviewProvider(rpPreviewProvider), 5502c50d82SAndre Fischer mpPageObjectProvider(rpPageObjectProvider), 5602c50d82SAndre Fischer mnTemplateIndex(nTemplateIndex), 5702c50d82SAndre Fischer meURLClassification(URLCLASS_UNDETERMINED), 5802c50d82SAndre Fischer mnUseCount(0) 5902c50d82SAndre Fischer { 6002c50d82SAndre Fischer } 6102c50d82SAndre Fischer 6202c50d82SAndre Fischer 6302c50d82SAndre Fischer 6402c50d82SAndre Fischer 6502c50d82SAndre Fischer MasterPageDescriptor::MasterPageDescriptor (const MasterPageDescriptor& rDescriptor) 6602c50d82SAndre Fischer : maToken(rDescriptor.maToken), 6702c50d82SAndre Fischer meOrigin(rDescriptor.meOrigin), 6802c50d82SAndre Fischer msURL(rDescriptor.msURL), 6902c50d82SAndre Fischer msPageName(rDescriptor.msPageName), 7002c50d82SAndre Fischer msStyleName(rDescriptor.msStyleName), 7102c50d82SAndre Fischer mbIsPrecious(rDescriptor.mbIsPrecious), 7202c50d82SAndre Fischer mpMasterPage(rDescriptor.mpMasterPage), 7302c50d82SAndre Fischer mpSlide(rDescriptor.mpSlide), 7402c50d82SAndre Fischer maSmallPreview(rDescriptor.maSmallPreview), 7502c50d82SAndre Fischer maLargePreview(rDescriptor.maLargePreview), 7602c50d82SAndre Fischer mpPreviewProvider(rDescriptor.mpPreviewProvider), 7702c50d82SAndre Fischer mpPageObjectProvider(rDescriptor.mpPageObjectProvider), 7802c50d82SAndre Fischer mnTemplateIndex(rDescriptor.mnTemplateIndex), 7902c50d82SAndre Fischer meURLClassification(rDescriptor.meURLClassification), 8002c50d82SAndre Fischer mnUseCount(rDescriptor.mnUseCount) 8102c50d82SAndre Fischer { 8202c50d82SAndre Fischer } 8302c50d82SAndre Fischer 8402c50d82SAndre Fischer 8502c50d82SAndre Fischer 8602c50d82SAndre Fischer 8702c50d82SAndre Fischer MasterPageDescriptor::~MasterPageDescriptor (void) 8802c50d82SAndre Fischer { 8902c50d82SAndre Fischer } 9002c50d82SAndre Fischer 9102c50d82SAndre Fischer 9202c50d82SAndre Fischer 9302c50d82SAndre Fischer 9402c50d82SAndre Fischer void MasterPageDescriptor::SetToken (MasterPageContainer::Token aToken) 9502c50d82SAndre Fischer { 9602c50d82SAndre Fischer maToken = aToken; 9702c50d82SAndre Fischer } 9802c50d82SAndre Fischer 9902c50d82SAndre Fischer 10002c50d82SAndre Fischer 10102c50d82SAndre Fischer 10202c50d82SAndre Fischer Image MasterPageDescriptor::GetPreview (MasterPageContainer::PreviewSize eSize) 10302c50d82SAndre Fischer { 10402c50d82SAndre Fischer if (eSize == MasterPageContainer::SMALL) 10502c50d82SAndre Fischer return maSmallPreview; 10602c50d82SAndre Fischer else 10702c50d82SAndre Fischer return maLargePreview; 10802c50d82SAndre Fischer } 10902c50d82SAndre Fischer 11002c50d82SAndre Fischer 11102c50d82SAndre Fischer 11202c50d82SAndre Fischer 11302c50d82SAndre Fischer ::std::auto_ptr<std::vector<MasterPageContainerChangeEvent::EventType> > 11402c50d82SAndre Fischer MasterPageDescriptor::Update ( 11502c50d82SAndre Fischer const MasterPageDescriptor& rDescriptor) 11602c50d82SAndre Fischer { 11702c50d82SAndre Fischer bool bDataChanged (false); 11802c50d82SAndre Fischer bool bIndexChanged (false); 11902c50d82SAndre Fischer bool bPreviewChanged (false); 12002c50d82SAndre Fischer 12102c50d82SAndre Fischer if (meOrigin==MasterPageContainer::UNKNOWN 12202c50d82SAndre Fischer && rDescriptor.meOrigin!=MasterPageContainer::UNKNOWN) 12302c50d82SAndre Fischer { 12402c50d82SAndre Fischer meOrigin = rDescriptor.meOrigin; 12502c50d82SAndre Fischer bIndexChanged = true; 12602c50d82SAndre Fischer } 12702c50d82SAndre Fischer 12802c50d82SAndre Fischer if (msURL.getLength()==0 && rDescriptor.msURL.getLength()!=0) 12902c50d82SAndre Fischer { 13002c50d82SAndre Fischer msURL = rDescriptor.msURL; 13102c50d82SAndre Fischer bDataChanged = true; 13202c50d82SAndre Fischer } 13302c50d82SAndre Fischer 13402c50d82SAndre Fischer if (msPageName.getLength()==0 && rDescriptor.msPageName.getLength()!=0) 13502c50d82SAndre Fischer { 13602c50d82SAndre Fischer msPageName = rDescriptor.msPageName; 13702c50d82SAndre Fischer bDataChanged = true; 13802c50d82SAndre Fischer } 13902c50d82SAndre Fischer 14002c50d82SAndre Fischer if (msStyleName.getLength()==0 && rDescriptor.msStyleName.getLength()!=0) 14102c50d82SAndre Fischer { 14202c50d82SAndre Fischer msStyleName = rDescriptor.msStyleName; 14302c50d82SAndre Fischer bDataChanged = true; 14402c50d82SAndre Fischer } 14502c50d82SAndre Fischer 14602c50d82SAndre Fischer if (mpPageObjectProvider.get()==NULL && rDescriptor.mpPageObjectProvider.get()!=NULL) 14702c50d82SAndre Fischer { 14802c50d82SAndre Fischer mpPageObjectProvider = rDescriptor.mpPageObjectProvider; 14902c50d82SAndre Fischer bDataChanged = true; 15002c50d82SAndre Fischer } 15102c50d82SAndre Fischer 15202c50d82SAndre Fischer if (mpPreviewProvider.get()==NULL && rDescriptor.mpPreviewProvider.get()!=NULL) 15302c50d82SAndre Fischer { 15402c50d82SAndre Fischer mpPreviewProvider = rDescriptor.mpPreviewProvider; 15502c50d82SAndre Fischer bPreviewChanged = true; 15602c50d82SAndre Fischer } 15702c50d82SAndre Fischer 15802c50d82SAndre Fischer if (mnTemplateIndex<0 && rDescriptor.mnTemplateIndex>=0) 15902c50d82SAndre Fischer { 16002c50d82SAndre Fischer mnTemplateIndex = rDescriptor.mnTemplateIndex; 16102c50d82SAndre Fischer bIndexChanged = true; 16202c50d82SAndre Fischer } 16302c50d82SAndre Fischer 16402c50d82SAndre Fischer // Prepare the list of event types that will be returned. 16502c50d82SAndre Fischer ::std::auto_ptr<std::vector<MasterPageContainerChangeEvent::EventType> > pResult; 16602c50d82SAndre Fischer if (bDataChanged || bIndexChanged || bPreviewChanged) 16702c50d82SAndre Fischer { 16802c50d82SAndre Fischer pResult.reset(new std::vector<MasterPageContainerChangeEvent::EventType>()); 16902c50d82SAndre Fischer if (bDataChanged) 17002c50d82SAndre Fischer pResult->push_back(MasterPageContainerChangeEvent::DATA_CHANGED); 17102c50d82SAndre Fischer if (bIndexChanged) 17202c50d82SAndre Fischer pResult->push_back(MasterPageContainerChangeEvent::INDEX_CHANGED); 17302c50d82SAndre Fischer if (bPreviewChanged) 17402c50d82SAndre Fischer pResult->push_back(MasterPageContainerChangeEvent::PREVIEW_CHANGED); 17502c50d82SAndre Fischer } 17602c50d82SAndre Fischer 17702c50d82SAndre Fischer return pResult; 17802c50d82SAndre Fischer } 17902c50d82SAndre Fischer 18002c50d82SAndre Fischer 18102c50d82SAndre Fischer 18202c50d82SAndre Fischer 18302c50d82SAndre Fischer bool MasterPageDescriptor::UpdatePageObject ( 18402c50d82SAndre Fischer sal_Int32 nCostThreshold, 18502c50d82SAndre Fischer SdDrawDocument* pDocument) 18602c50d82SAndre Fischer { 18702c50d82SAndre Fischer bool bModified (false); 18802c50d82SAndre Fischer 18902c50d82SAndre Fischer // Update the page object when that is not yet known. 19002c50d82SAndre Fischer if (mpMasterPage == NULL 19102c50d82SAndre Fischer && mpPageObjectProvider.get()!=NULL 19202c50d82SAndre Fischer && (nCostThreshold<0 || mpPageObjectProvider->GetCostIndex()<=nCostThreshold)) 19302c50d82SAndre Fischer { 19402c50d82SAndre Fischer // Note that pDocument may be NULL. 19502c50d82SAndre Fischer 19602c50d82SAndre Fischer SdPage* pPage = (*mpPageObjectProvider)(pDocument); 19702c50d82SAndre Fischer if (meOrigin == MasterPageContainer::MASTERPAGE) 19802c50d82SAndre Fischer { 19902c50d82SAndre Fischer mpMasterPage = pPage; 20002c50d82SAndre Fischer if (mpMasterPage != NULL) 20102c50d82SAndre Fischer mpMasterPage->SetPrecious(mbIsPrecious); 20202c50d82SAndre Fischer } 20302c50d82SAndre Fischer else 20402c50d82SAndre Fischer { 20502c50d82SAndre Fischer // Master pages from templates are copied into the local document. 20602c50d82SAndre Fischer if (pDocument != NULL) 20702c50d82SAndre Fischer mpMasterPage = DocumentHelper::CopyMasterPageToLocalDocument(*pDocument,pPage); 20802c50d82SAndre Fischer mpSlide = DocumentHelper::GetSlideForMasterPage(mpMasterPage); 20902c50d82SAndre Fischer } 21002c50d82SAndre Fischer 21102c50d82SAndre Fischer if (mpMasterPage != NULL) 21202c50d82SAndre Fischer { 21302c50d82SAndre Fischer // Update page name and style name. 21402c50d82SAndre Fischer if (msPageName.getLength() == 0) 21502c50d82SAndre Fischer msPageName = mpMasterPage->GetName(); 21602c50d82SAndre Fischer msStyleName = mpMasterPage->GetName(); 21702c50d82SAndre Fischer 21802c50d82SAndre Fischer // Delete an existing substitution. The next request for a preview 21902c50d82SAndre Fischer // will create the real one. 22002c50d82SAndre Fischer maSmallPreview = Image(); 22102c50d82SAndre Fischer maLargePreview = Image(); 22202c50d82SAndre Fischer mpPreviewProvider = ::boost::shared_ptr<PreviewProvider>(new PagePreviewProvider()); 22302c50d82SAndre Fischer } 22402c50d82SAndre Fischer else 22502c50d82SAndre Fischer { 22602c50d82SAndre Fischer DBG_ASSERT(false, "UpdatePageObject: master page is NULL"); 22702c50d82SAndre Fischer } 22802c50d82SAndre Fischer 22902c50d82SAndre Fischer bModified = true; 23002c50d82SAndre Fischer } 23102c50d82SAndre Fischer 23202c50d82SAndre Fischer return bModified; 23302c50d82SAndre Fischer } 23402c50d82SAndre Fischer 23502c50d82SAndre Fischer 23602c50d82SAndre Fischer 23702c50d82SAndre Fischer 23802c50d82SAndre Fischer bool MasterPageDescriptor::UpdatePreview ( 23902c50d82SAndre Fischer sal_Int32 nCostThreshold, 24002c50d82SAndre Fischer const Size& rSmallSize, 24102c50d82SAndre Fischer const Size& rLargeSize, 24202c50d82SAndre Fischer ::sd::PreviewRenderer& rRenderer) 24302c50d82SAndre Fischer { 24402c50d82SAndre Fischer bool bModified (false); 24502c50d82SAndre Fischer 24602c50d82SAndre Fischer // Update the preview when that is not yet known. 24702c50d82SAndre Fischer if (maLargePreview.GetSizePixel().Width()==0 24802c50d82SAndre Fischer && mpPreviewProvider.get()!=NULL 24902c50d82SAndre Fischer && (nCostThreshold<0 || mpPreviewProvider->GetCostIndex()<=nCostThreshold)) 25002c50d82SAndre Fischer { 25102c50d82SAndre Fischer SdPage* pPage = mpSlide; 25202c50d82SAndre Fischer if (pPage == NULL) 25302c50d82SAndre Fischer { 25402c50d82SAndre Fischer pPage = mpMasterPage; 25502c50d82SAndre Fischer } 25602c50d82SAndre Fischer maLargePreview = (*mpPreviewProvider)( 25702c50d82SAndre Fischer rLargeSize.Width(), 25802c50d82SAndre Fischer pPage, 25902c50d82SAndre Fischer rRenderer); 26002c50d82SAndre Fischer if (maLargePreview.GetSizePixel().Width() > 0) 26102c50d82SAndre Fischer { 26202c50d82SAndre Fischer // Create the small preview by scaling the large one down. 26302c50d82SAndre Fischer maSmallPreview = rRenderer.ScaleBitmap( 26402c50d82SAndre Fischer maLargePreview.GetBitmapEx(), 26502c50d82SAndre Fischer rSmallSize.Width()); 26602c50d82SAndre Fischer // The large preview may not have the desired width. Scale it 267*141ed1b0SJohn Bampton // accordingly. 26802c50d82SAndre Fischer if (maLargePreview.GetSizePixel().Width() != rLargeSize.Width()) 26902c50d82SAndre Fischer maLargePreview = rRenderer.ScaleBitmap( 27002c50d82SAndre Fischer maLargePreview.GetBitmapEx(), 27102c50d82SAndre Fischer rLargeSize.Width()); 27202c50d82SAndre Fischer bModified = true; 27302c50d82SAndre Fischer } 27402c50d82SAndre Fischer } 27502c50d82SAndre Fischer 27602c50d82SAndre Fischer return bModified; 27702c50d82SAndre Fischer } 27802c50d82SAndre Fischer 27902c50d82SAndre Fischer 28002c50d82SAndre Fischer 28102c50d82SAndre Fischer 28202c50d82SAndre Fischer MasterPageDescriptor::URLClassification MasterPageDescriptor::GetURLClassification (void) 28302c50d82SAndre Fischer { 28402c50d82SAndre Fischer if (meURLClassification == URLCLASS_UNDETERMINED) 28502c50d82SAndre Fischer { 28602c50d82SAndre Fischer if (msURL.getLength() == 0) 28702c50d82SAndre Fischer meURLClassification = URLCLASS_UNKNOWN; 28802c50d82SAndre Fischer else if (msURL.indexOf(::rtl::OUString::createFromAscii("presnt"))>=0) 28902c50d82SAndre Fischer { 29002c50d82SAndre Fischer meURLClassification = URLCLASS_PRESENTATION; 29102c50d82SAndre Fischer } 29202c50d82SAndre Fischer else if (msURL.indexOf(::rtl::OUString::createFromAscii("layout"))>=0) 29302c50d82SAndre Fischer { 29402c50d82SAndre Fischer meURLClassification = URLCLASS_LAYOUT; 29502c50d82SAndre Fischer } 29602c50d82SAndre Fischer else if (msURL.indexOf(::rtl::OUString::createFromAscii("educate"))>=0) 29702c50d82SAndre Fischer { 29802c50d82SAndre Fischer meURLClassification = URLCLASS_OTHER; 29902c50d82SAndre Fischer } 30002c50d82SAndre Fischer else 30102c50d82SAndre Fischer { 30202c50d82SAndre Fischer meURLClassification = URLCLASS_USER; 30302c50d82SAndre Fischer } 30402c50d82SAndre Fischer } 30502c50d82SAndre Fischer 30602c50d82SAndre Fischer return meURLClassification; 30702c50d82SAndre Fischer } 30802c50d82SAndre Fischer 30902c50d82SAndre Fischer 31002c50d82SAndre Fischer 31102c50d82SAndre Fischer //===== URLComparator ========================================================= 31202c50d82SAndre Fischer 31302c50d82SAndre Fischer MasterPageDescriptor::URLComparator::URLComparator (const ::rtl::OUString& sURL) 31402c50d82SAndre Fischer : msURL(sURL) 31502c50d82SAndre Fischer { 31602c50d82SAndre Fischer } 31702c50d82SAndre Fischer 31802c50d82SAndre Fischer 31902c50d82SAndre Fischer 32002c50d82SAndre Fischer 32102c50d82SAndre Fischer bool MasterPageDescriptor::URLComparator::operator() ( 32202c50d82SAndre Fischer const SharedMasterPageDescriptor& rDescriptor) 32302c50d82SAndre Fischer { 32402c50d82SAndre Fischer if (rDescriptor.get() == NULL) 32502c50d82SAndre Fischer return false; 32602c50d82SAndre Fischer else 32702c50d82SAndre Fischer return rDescriptor->msURL.equals(msURL); 32802c50d82SAndre Fischer } 32902c50d82SAndre Fischer 33002c50d82SAndre Fischer 33102c50d82SAndre Fischer 33202c50d82SAndre Fischer 33302c50d82SAndre Fischer // ===== StyleNameComparator ================================================== 33402c50d82SAndre Fischer 33502c50d82SAndre Fischer MasterPageDescriptor::StyleNameComparator::StyleNameComparator (const ::rtl::OUString& sStyleName) 33602c50d82SAndre Fischer : msStyleName(sStyleName) 33702c50d82SAndre Fischer { 33802c50d82SAndre Fischer } 33902c50d82SAndre Fischer 34002c50d82SAndre Fischer 34102c50d82SAndre Fischer 34202c50d82SAndre Fischer 34302c50d82SAndre Fischer bool MasterPageDescriptor::StyleNameComparator::operator() ( 34402c50d82SAndre Fischer const SharedMasterPageDescriptor& rDescriptor) 34502c50d82SAndre Fischer { 34602c50d82SAndre Fischer if (rDescriptor.get() == NULL) 34702c50d82SAndre Fischer return false; 34802c50d82SAndre Fischer else 34902c50d82SAndre Fischer return rDescriptor->msStyleName.equals(msStyleName); 35002c50d82SAndre Fischer } 35102c50d82SAndre Fischer 35202c50d82SAndre Fischer 35302c50d82SAndre Fischer 35402c50d82SAndre Fischer 35502c50d82SAndre Fischer //===== PageObjectComparator ================================================== 35602c50d82SAndre Fischer 35702c50d82SAndre Fischer MasterPageDescriptor::PageObjectComparator::PageObjectComparator (const SdPage* pPageObject) 35802c50d82SAndre Fischer : mpMasterPage(pPageObject) 35902c50d82SAndre Fischer { 36002c50d82SAndre Fischer } 36102c50d82SAndre Fischer 36202c50d82SAndre Fischer 36302c50d82SAndre Fischer 36402c50d82SAndre Fischer 36502c50d82SAndre Fischer bool MasterPageDescriptor::PageObjectComparator::operator() ( 36602c50d82SAndre Fischer const SharedMasterPageDescriptor& rDescriptor) 36702c50d82SAndre Fischer { 36802c50d82SAndre Fischer if (rDescriptor.get() == NULL) 36902c50d82SAndre Fischer return false; 37002c50d82SAndre Fischer else 37102c50d82SAndre Fischer return rDescriptor->mpMasterPage==mpMasterPage; 37202c50d82SAndre Fischer } 37302c50d82SAndre Fischer 37402c50d82SAndre Fischer 37502c50d82SAndre Fischer 37602c50d82SAndre Fischer 37702c50d82SAndre Fischer //===== AllComparator ========================================================= 37802c50d82SAndre Fischer 37902c50d82SAndre Fischer MasterPageDescriptor::AllComparator::AllComparator(const SharedMasterPageDescriptor& rDescriptor) 38002c50d82SAndre Fischer : mpDescriptor(rDescriptor) 38102c50d82SAndre Fischer { 38202c50d82SAndre Fischer } 38302c50d82SAndre Fischer 38402c50d82SAndre Fischer 38502c50d82SAndre Fischer 38602c50d82SAndre Fischer 38702c50d82SAndre Fischer bool MasterPageDescriptor::AllComparator::operator() (const SharedMasterPageDescriptor&rDescriptor) 38802c50d82SAndre Fischer { 38902c50d82SAndre Fischer if (rDescriptor.get() == NULL) 39002c50d82SAndre Fischer return false; 39102c50d82SAndre Fischer else 39202c50d82SAndre Fischer { 39302c50d82SAndre Fischer // Take URL, page name, style name, and page object into account 39402c50d82SAndre Fischer // when comparing two descriptors. When two descriptors are 39502c50d82SAndre Fischer // identical in any of these values then their are thought of as 39602c50d82SAndre Fischer // equivalent. Only the Origin has to be the same in both 39702c50d82SAndre Fischer // descriptors. 39802c50d82SAndre Fischer return 39902c50d82SAndre Fischer mpDescriptor->meOrigin == rDescriptor->meOrigin 40002c50d82SAndre Fischer && ( 40102c50d82SAndre Fischer (mpDescriptor->msURL.getLength()>0 40202c50d82SAndre Fischer && mpDescriptor->msURL.equals(rDescriptor->msURL)) 40302c50d82SAndre Fischer || (mpDescriptor->msPageName.getLength()>0 40402c50d82SAndre Fischer && mpDescriptor->msPageName.equals(rDescriptor->msPageName)) 40502c50d82SAndre Fischer || (mpDescriptor->msStyleName.getLength()>0 40602c50d82SAndre Fischer && mpDescriptor->msStyleName.equals(rDescriptor->msStyleName)) 40702c50d82SAndre Fischer || (mpDescriptor->mpMasterPage!=NULL 40802c50d82SAndre Fischer && mpDescriptor->mpMasterPage==rDescriptor->mpMasterPage) 40902c50d82SAndre Fischer || (mpDescriptor->mpPageObjectProvider.get()!=NULL 41002c50d82SAndre Fischer && rDescriptor->mpPageObjectProvider.get()!=NULL 41102c50d82SAndre Fischer && mpDescriptor->mpPageObjectProvider==rDescriptor->mpPageObjectProvider)); 41202c50d82SAndre Fischer } 41302c50d82SAndre Fischer } 41402c50d82SAndre Fischer 41502c50d82SAndre Fischer 41602c50d82SAndre Fischer } } // end of namespace sd::sidebar 417