diff options
Diffstat (limited to 'sfx2/source/control/templateabstractview.cxx')
-rw-r--r-- | sfx2/source/control/templateabstractview.cxx | 368 |
1 files changed, 0 insertions, 368 deletions
diff --git a/sfx2/source/control/templateabstractview.cxx b/sfx2/source/control/templateabstractview.cxx deleted file mode 100644 index 0067c3dc63a3..000000000000 --- a/sfx2/source/control/templateabstractview.cxx +++ /dev/null @@ -1,368 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#include <sfx2/templateabstractview.hxx> - -#include <comphelper/processfactory.hxx> -#include <sfx2/templatecontaineritem.hxx> -#include <sfx2/templateviewitem.hxx> -#include <sfx2/sfxresid.hxx> -#include <sfx2/docfac.hxx> -#include <tools/urlobj.hxx> -#include <unotools/ucbstreamhelper.hxx> -#include <vcl/pngread.hxx> -#include <vcl/layout.hxx> -#include <unotools/moduleoptions.hxx> - -#include <basegfx/polygon/b2dpolygon.hxx> -#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx> -#include <drawinglayer/processor2d/baseprocessor2d.hxx> -#include <drawinglayer/processor2d/processorfromoutputdevice.hxx> - -#include <com/sun/star/embed/ElementModes.hpp> -#include <com/sun/star/embed/XStorage.hpp> -#include <com/sun/star/embed/StorageFactory.hpp> -#include <com/sun/star/lang/XComponent.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/lang/XSingleServiceFactory.hpp> - -#include "../doc/doc.hrc" -#include "templateview.hrc" - -using namespace basegfx; -using namespace drawinglayer::primitive2d; -using namespace ::com::sun::star::uno; - -bool ViewFilter_Application::isFilteredExtension(FILTER_APPLICATION filter, const OUString &rExt) -{ - bool bRet = true; - - if (filter == FILTER_APPLICATION::WRITER) - { - bRet = rExt == "ott" || rExt == "stw" || rExt == "oth" || rExt == "dot" || rExt == "dotx" || rExt == "otm"; - } - else if (filter == FILTER_APPLICATION::CALC) - { - bRet = rExt == "ots" || rExt == "stc" || rExt == "xlt" || rExt == "xltm" || rExt == "xltx"; - } - else if (filter == FILTER_APPLICATION::IMPRESS) - { - bRet = rExt == "otp" || rExt == "sti" || rExt == "pot" || rExt == "potm" || rExt == "potx"; - } - else if (filter == FILTER_APPLICATION::DRAW) - { - bRet = rExt == "otg" || rExt == "std"; - } - - return bRet; -} - -bool ViewFilter_Application::isValid (const OUString &rPath) const -{ - INetURLObject aUrl(rPath); - return isFilteredExtension(mApp, aUrl.getExtension()); -} - -bool ViewFilter_Application::operator () (const ThumbnailViewItem *pItem) -{ - const TemplateViewItem *pTempItem = dynamic_cast<const TemplateViewItem*>(pItem); - if (pTempItem) - return isValid(pTempItem->getPath()); - - return true; -} - -TemplateAbstractView::TemplateAbstractView (vcl::Window *pParent, WinBits nWinStyle, bool bDisableTransientChildren) - : ThumbnailView(pParent,nWinStyle,bDisableTransientChildren), - mnCurRegionId(0), - maSelectedItem(nullptr), - mnThumbnailWidth(TEMPLATE_THUMBNAIL_MAX_WIDTH), - mnThumbnailHeight(TEMPLATE_THUMBNAIL_MAX_HEIGHT), - maPosition(0,0) -{ -} - -TemplateAbstractView::TemplateAbstractView(vcl::Window *pParent) - : ThumbnailView(pParent), - mnCurRegionId(0), - maSelectedItem(nullptr), - mnThumbnailWidth(TEMPLATE_THUMBNAIL_MAX_WIDTH), - mnThumbnailHeight(TEMPLATE_THUMBNAIL_MAX_HEIGHT), - maPosition(0,0) -{ -} - -TemplateAbstractView::~TemplateAbstractView() -{ - disposeOnce(); -} - -void TemplateAbstractView::dispose() -{ - ThumbnailView::dispose(); -} - -void TemplateAbstractView::insertItems(const std::vector<TemplateItemProperties> &rTemplates, bool isRegionSelected, bool bShowCategoryInTooltip) -{ - mItemList.clear(); - - std::vector<ThumbnailViewItem*> aItems(rTemplates.size()); - for (size_t i = 0, n = rTemplates.size(); i < n; ++i ) - { - const TemplateItemProperties *pCur = &rTemplates[i]; - - TemplateViewItem *pChild; - if(isRegionSelected) - pChild = new TemplateViewItem(*this, pCur->nId); - else - pChild = new TemplateViewItem(*this, i+1); - - pChild->mnDocId = pCur->nDocId; - pChild->mnRegionId = pCur->nRegionId; - pChild->maTitle = pCur->aName; - pChild->setPath(pCur->aPath); - - if(!bShowCategoryInTooltip) - pChild->setHelpText(pCur->aName); - else - { - OUString sHelpText = SfxResId(STR_TEMPLATE_TOOLTIP).toString(); - sHelpText = (sHelpText.replaceFirst("$1", pCur->aName)).replaceFirst("$2", pCur->aRegionName); - pChild->setHelpText(sHelpText); - } - - pChild->maPreview1 = pCur->aThumbnail; - - if(IsDefaultTemplate(pCur->aPath)) - pChild->showDefaultIcon(true); - - if ( pCur->aThumbnail.IsEmpty() ) - { - // Use the default thumbnail if we have nothing else - pChild->maPreview1 = TemplateAbstractView::getDefaultThumbnail(pCur->aPath); - } - - aItems[i] = pChild; - } - - updateItems(aItems); -} - -void TemplateAbstractView::updateThumbnailDimensions(long itemMaxSize) -{ - mnThumbnailWidth = itemMaxSize; - mnThumbnailHeight = itemMaxSize; -} - - -void TemplateAbstractView::MouseButtonDown( const MouseEvent& rMEvt ) -{ - GrabFocus(); - ThumbnailView::MouseButtonDown(rMEvt); -} - -void TemplateAbstractView::Command( const CommandEvent& rCEvt ) -{ - if ( rCEvt.GetCommand() == CommandEventId::ContextMenu ) - { - if(rCEvt.IsMouseEvent()) - { - deselectItems(); - size_t nPos = ImplGetItem(rCEvt.GetMousePosPixel()); - Point aPosition (rCEvt.GetMousePosPixel()); - maPosition = aPosition; - ThumbnailViewItem* pItem = ImplGetItem(nPos); - const TemplateViewItem *pViewItem = dynamic_cast<const TemplateViewItem*>(pItem); - - if(pViewItem) - { - maSelectedItem = dynamic_cast<TemplateViewItem*>(pItem); - maCreateContextMenuHdl.Call(pItem); - } - } - else - { - for (ThumbnailViewItem* pItem : mFilteredItemList) - { - //create context menu for the first selected item - if (pItem->isSelected()) - { - deselectItems(); - pItem->setSelection(true); - maItemStateHdl.Call(pItem); - Rectangle aRect = pItem->getDrawArea(); - maPosition = aRect.Center(); - maSelectedItem = dynamic_cast<TemplateViewItem*>(pItem); - maCreateContextMenuHdl.Call(pItem); - break; - } - } - } - } - - ThumbnailView::Command(rCEvt); -} - -void TemplateAbstractView::KeyInput( const KeyEvent& rKEvt ) -{ - vcl::KeyCode aKeyCode = rKEvt.GetKeyCode(); - - if(aKeyCode == ( KEY_MOD1 | KEY_A ) ) - { - for (ThumbnailViewItem* pItem : mFilteredItemList) - { - if (!pItem->isSelected()) - { - pItem->setSelection(true); - maItemStateHdl.Call(pItem); - } - } - - if (IsReallyVisible() && IsUpdateMode()) - Invalidate(); - return; - } - else if( aKeyCode == KEY_DELETE && !mFilteredItemList.empty()) - { - ScopedVclPtrInstance< MessageDialog > aQueryDlg(this, SfxResId(STR_QMSG_SEL_TEMPLATE_DELETE), VclMessageType::Question, VCL_BUTTONS_YES_NO); - - if ( aQueryDlg->Execute() != RET_YES ) - return; - - //copy to avoid changing filtered item list during deletion - ThumbnailValueItemList mFilteredItemListCopy = mFilteredItemList; - - for (ThumbnailViewItem* pItem : mFilteredItemListCopy) - { - if (pItem->isSelected()) - { - maDeleteTemplateHdl.Call(pItem); - } - } - reload(); - } - - ThumbnailView::KeyInput(rKEvt); -} - - -void TemplateAbstractView::setOpenRegionHdl(const Link<void*,void> &rLink) -{ - maOpenRegionHdl = rLink; -} - -void TemplateAbstractView::setCreateContextMenuHdl(const Link<ThumbnailViewItem*,void> &rLink) -{ - maCreateContextMenuHdl = rLink; -} - -void TemplateAbstractView::setOpenTemplateHdl(const Link<ThumbnailViewItem*,void> &rLink) -{ - maOpenTemplateHdl = rLink; -} - -void TemplateAbstractView::setEditTemplateHdl(const Link<ThumbnailViewItem*,void> &rLink) -{ - maEditTemplateHdl = rLink; -} - -void TemplateAbstractView::setDeleteTemplateHdl(const Link<ThumbnailViewItem*,void> &rLink) -{ - maDeleteTemplateHdl = rLink; -} - -void TemplateAbstractView::setDefaultTemplateHdl(const Link<ThumbnailViewItem*,void> &rLink) -{ - maDefaultTemplateHdl = rLink; -} - -BitmapEx TemplateAbstractView::scaleImg (const BitmapEx &rImg, long width, long height) -{ - BitmapEx aImg = rImg; - - if (!rImg.IsEmpty()) - { - Size aSize = rImg.GetSizePixel(); - - if (aSize.Width() == 0) - aSize.Width() = 1; - - if (aSize.Height() == 0) - aSize.Height() = 1; - - // make the picture fit the given width/height constraints - double nRatio = std::min(double(width)/double(aSize.Width()), double(height)/double(aSize.Height())); - - aImg.Scale(Size(aSize.Width() * nRatio, aSize.Height() * nRatio)); - } - - return aImg; -} - -bool TemplateAbstractView::IsDefaultTemplate(const OUString& rPath) -{ - SvtModuleOptions aModOpt; - const css::uno::Sequence<OUString> &aServiceNames = aModOpt.GetAllServiceNames(); - - for( sal_Int32 i=0, nCount = aServiceNames.getLength(); i < nCount; ++i ) - { - const OUString defaultPath = SfxObjectFactory::GetStandardTemplate( aServiceNames[i] ); - if(defaultPath.match(rPath)) - return true; - } - - return false; -} - -void TemplateAbstractView::RemoveDefaultTemplateIcon(const OUString& rPath) -{ - for (ThumbnailViewItem* pItem : mItemList) - { - TemplateViewItem* pViewItem = dynamic_cast<TemplateViewItem*>(pItem); - if (pViewItem && pViewItem->getPath().match(rPath)) - { - pViewItem->showDefaultIcon(false); - Invalidate(); - return; - } - } -} - -BitmapEx TemplateAbstractView::getDefaultThumbnail( const OUString& rPath ) -{ - BitmapEx aImg; - INetURLObject aUrl(rPath); - OUString aExt = aUrl.getExtension(); - - if ( ViewFilter_Application::isFilteredExtension( FILTER_APPLICATION::WRITER, aExt) ) - aImg = BitmapEx ( SfxResId( SFX_THUMBNAIL_TEXT ) ); - else if ( ViewFilter_Application::isFilteredExtension( FILTER_APPLICATION::CALC, aExt) ) - aImg = BitmapEx ( SfxResId( SFX_THUMBNAIL_SHEET ) ); - else if ( ViewFilter_Application::isFilteredExtension( FILTER_APPLICATION::IMPRESS, aExt) ) - aImg = BitmapEx ( SfxResId( SFX_THUMBNAIL_PRESENTATION ) ); - else if ( ViewFilter_Application::isFilteredExtension( FILTER_APPLICATION::DRAW, aExt) ) - aImg = BitmapEx ( SfxResId( SFX_THUMBNAIL_DRAWING ) ); - - return aImg; -} - -BitmapEx TemplateAbstractView::fetchThumbnail (const OUString &msURL, long width, long height) -{ - return TemplateAbstractView::scaleImg(ThumbnailView::readThumbnail(msURL), width, height); -} - -void TemplateAbstractView::OnItemDblClicked (ThumbnailViewItem *pItem) -{ - TemplateViewItem* pViewItem = dynamic_cast<TemplateViewItem*>(pItem); - - if( pViewItem ) - maOpenTemplateHdl.Call(pViewItem); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |