Kaydet (Commit) 72a1fbe1 authored tarafından Akshay Deep's avatar Akshay Deep Kaydeden (comit) Samuel Mehrbrodt

New Template Manager: Remove inheritance of TemplateContainerItem

Conflicts:
	include/sfx2/templatelocalview.hxx
	sfx2/source/control/templatelocalview.cxx

Change-Id: I5eb120853be768c3770a71829c40d00c97fcdadb
Reviewed-on: https://gerrit.libreoffice.org/25272Reviewed-by: 's avatarSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Tested-by: 's avatarSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
üst d37a18ff
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
class SfxDocumentTemplates; class SfxDocumentTemplates;
class TemplateViewItem; class TemplateViewItem;
class TemplateContainerItem;
enum class FILTER_APPLICATION enum class FILTER_APPLICATION
{ {
...@@ -86,7 +87,7 @@ public: ...@@ -86,7 +87,7 @@ public:
virtual void showAllTemplates () = 0; virtual void showAllTemplates () = 0;
virtual void showRegion (ThumbnailViewItem *pItem) = 0; virtual void showRegion (TemplateContainerItem *pItem) = 0;
virtual sal_uInt16 createRegion (const OUString &rName) = 0; virtual sal_uInt16 createRegion (const OUString &rName) = 0;
......
...@@ -11,34 +11,19 @@ ...@@ -11,34 +11,19 @@
#define INCLUDED_SFX2_TEMPLATECONTAINERITEM_HXX #define INCLUDED_SFX2_TEMPLATECONTAINERITEM_HXX
#include <sfx2/templateproperties.hxx> #include <sfx2/templateproperties.hxx>
#include <sfx2/thumbnailviewitem.hxx>
class TemplateContainerItem : public ThumbnailViewItem class TemplateContainerItem
{ {
public: public:
sal_uInt16 mnId;
sal_uInt16 mnRegionId; sal_uInt16 mnRegionId;
BitmapEx maPreview2; OUString maTitle;
BitmapEx maPreview3;
BitmapEx maPreview4;
std::vector<TemplateItemProperties> maTemplates; std::vector<TemplateItemProperties> maTemplates;
TemplateContainerItem (ThumbnailView &rView, sal_uInt16 nId); TemplateContainerItem (sal_uInt16 nId);
virtual ~TemplateContainerItem (); virtual ~TemplateContainerItem ();
virtual void Paint (drawinglayer::processor2d::BaseProcessor2D *pProcessor,
const ThumbnailItemAttributes *pAttrs) override;
virtual void calculateItemsPosition (const long nThumbnailHeight, const long nDisplayHeight,
const long nPadding, sal_uInt32 nMaxTextLength,
const ThumbnailItemAttributes *pAttrs) override;
bool HasMissingPreview( );
private:
Rectangle maThumbnailArea;
}; };
#endif // INCLUDED_SFX2_TEMPLATECONTAINERITEM_HXX #endif // INCLUDED_SFX2_TEMPLATECONTAINERITEM_HXX
......
...@@ -43,7 +43,7 @@ public: ...@@ -43,7 +43,7 @@ public:
virtual void showAllTemplates () override; virtual void showAllTemplates () override;
virtual void showRegion (ThumbnailViewItem *pItem) override; virtual void showRegion (TemplateContainerItem *pItem) override;
void showRegion (const OUString &rName); void showRegion (const OUString &rName);
...@@ -53,7 +53,7 @@ public: ...@@ -53,7 +53,7 @@ public:
sal_uInt16 getCurRegionItemId () const; sal_uInt16 getCurRegionItemId () const;
ThumbnailViewItem* getRegion(OUString const & sStr); TemplateContainerItem* getRegion(OUString const & sStr);
sal_uInt16 getRegionId (size_t pos) const; sal_uInt16 getRegionId (size_t pos) const;
......
...@@ -25,7 +25,7 @@ public: ...@@ -25,7 +25,7 @@ public:
virtual void showAllTemplates () override; virtual void showAllTemplates () override;
virtual void showRegion (ThumbnailViewItem *pItem) override; virtual void showRegion (TemplateContainerItem *pItem) override;
bool loadRepository (TemplateRepository* pRepository); bool loadRepository (TemplateRepository* pRepository);
......
...@@ -260,20 +260,10 @@ BitmapEx TemplateAbstractView::fetchThumbnail (const OUString &msURL, long width ...@@ -260,20 +260,10 @@ BitmapEx TemplateAbstractView::fetchThumbnail (const OUString &msURL, long width
void TemplateAbstractView::OnItemDblClicked (ThumbnailViewItem *pItem) void TemplateAbstractView::OnItemDblClicked (ThumbnailViewItem *pItem)
{ {
//Check if the item is a TemplateContainerItem (Folder) or a TemplateViewItem (File) TemplateViewItem* pViewItem = dynamic_cast<TemplateViewItem*>(pItem);
TemplateContainerItem* pContainerItem = dynamic_cast<TemplateContainerItem*>(pItem); if( pViewItem )
if ( pContainerItem ) maOpenTemplateHdl.Call(pViewItem);
{
// Fill templates
mnCurRegionId = pContainerItem->mnRegionId+1;
maCurRegionName = pContainerItem->maTitle;
showRegion(pItem);
}
else
{
maOpenTemplateHdl.Call(pItem);
}
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -8,28 +8,10 @@ ...@@ -8,28 +8,10 @@
*/ */
#include <sfx2/templatecontaineritem.hxx> #include <sfx2/templatecontaineritem.hxx>
#include <sfx2/templateabstractview.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
#include <drawinglayer/attribute/fillgraphicattribute.hxx>
#include <drawinglayer/primitive2d/fillgraphicprimitive2d.hxx>
#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
#include <drawinglayer/primitive2d/textprimitive2d.hxx>
#include <drawinglayer/processor2d/baseprocessor2d.hxx>
#include <sfx2/templateviewitem.hxx> #include <sfx2/templateviewitem.hxx>
#include <vcl/button.hxx>
#include <vcl/graph.hxx>
using namespace basegfx;
using namespace basegfx::tools;
using namespace drawinglayer::attribute;
using namespace drawinglayer::primitive2d;
TemplateContainerItem::TemplateContainerItem (ThumbnailView &rView, sal_uInt16 nId) TemplateContainerItem::TemplateContainerItem (sal_uInt16 nId)
: ThumbnailViewItem(rView, nId) : mnId(nId)
, mnRegionId(0) , mnRegionId(0)
{ {
} }
...@@ -38,139 +20,6 @@ TemplateContainerItem::~TemplateContainerItem () ...@@ -38,139 +20,6 @@ TemplateContainerItem::~TemplateContainerItem ()
{ {
} }
void TemplateContainerItem::calculateItemsPosition (const long nThumbnailHeight, const long nDisplayHeight,
const long nPadding, sal_uInt32 nMaxTextLength,
const ThumbnailItemAttributes *pAttrs)
{
ThumbnailViewItem::calculateItemsPosition( nThumbnailHeight, nDisplayHeight, nPadding, nMaxTextLength, pAttrs);
Point aPos (maDrawArea.getX() + nPadding, maDrawArea.getY() + nPadding);
maThumbnailArea = Rectangle(aPos, Size(maDrawArea.GetWidth() - 2 * nPadding, nThumbnailHeight));
}
void TemplateContainerItem::Paint (drawinglayer::processor2d::BaseProcessor2D *pProcessor,
const ThumbnailItemAttributes *pAttrs)
{
int nCount = 0;
int nSeqSize = 3;
if (!maPreview1.IsEmpty())
nSeqSize += 3;
if (!maPreview2.IsEmpty())
nSeqSize += 3;
if (!maPreview3.IsEmpty())
nSeqSize += 3;
if (!maPreview4.IsEmpty())
nSeqSize += 3;
BColor aFillColor = pAttrs->aFillColor;
drawinglayer::primitive2d::Primitive2DContainer aSeq(nSeqSize);
double fTransparence = 0.0;
// Draw background
if ( mbSelected || mbHover )
aFillColor = pAttrs->aHighlightColor;
if (mbHover)
fTransparence = pAttrs->fHighlightTransparence;
aSeq[nCount++] = drawinglayer::primitive2d::Primitive2DReference(
new PolyPolygonSelectionPrimitive2D( B2DPolyPolygon( ::tools::Polygon(maDrawArea,5,5).getB2DPolygon()),
aFillColor,
fTransparence,
0.0,
true));
// Create rounded rectangle border
aSeq[nCount++] = drawinglayer::primitive2d::Primitive2DReference(
new PolygonStrokePrimitive2D( ::tools::Polygon(maThumbnailArea, 5, 5).getB2DPolygon(),
LineAttribute(BColor(0.5, 0.5, 0.5), 2.0)));
// Paint the thumbnails side by side on a 2x2 grid
long nThumbPadding = 4;
Size aThumbSize( ( maThumbnailArea.getWidth() - 3 * nThumbPadding ) / 2, ( maThumbnailArea.getHeight() - 3* nThumbPadding ) / 2 );
// Draw thumbnail
for (int i=0; i<4; ++i)
{
long nPosX = 0;
long nPosY = 0;
BitmapEx* pImage = nullptr;
switch (i)
{
case 0:
pImage = &maPreview1;
break;
case 1:
pImage = &maPreview2;
nPosX = aThumbSize.getWidth() + nThumbPadding;
break;
case 2:
pImage = &maPreview3;
nPosY = aThumbSize.getHeight() + nThumbPadding;
break;
case 3:
pImage = &maPreview4;
nPosX = aThumbSize.getWidth() + nThumbPadding;
nPosY = aThumbSize.getHeight() + nThumbPadding;
break;
}
if (!pImage->IsEmpty())
{
// Check the size of the picture and resize if needed
Size aImageSize = pImage->GetSizePixel();
if (aImageSize.getWidth() > aThumbSize.getWidth() || aImageSize.getHeight() > aThumbSize.getHeight())
{
// Resize the picture and store it for next times
*pImage = TemplateAbstractView::scaleImg( *pImage, aThumbSize.getWidth(), aThumbSize.getHeight() );
aImageSize = pImage->GetSizePixel();
}
float nOffX = (aThumbSize.getWidth() - aImageSize.getWidth()) / 2.0;
float nOffY = (aThumbSize.getHeight() - aImageSize.getHeight()) / 2.0;
float fWidth = aImageSize.Width();
float fHeight = aImageSize.Height();
float fPosX = maThumbnailArea.Left() + nThumbPadding + nPosX + nOffX;
float fPosY = maThumbnailArea.Top() + nThumbPadding + nPosY + nOffY;
B2DPolygon aBounds;
aBounds.append(B2DPoint(fPosX,fPosY));
aBounds.append(B2DPoint(fPosX+fWidth,fPosY));
aBounds.append(B2DPoint(fPosX+fWidth,fPosY+fHeight));
aBounds.append(B2DPoint(fPosX,fPosY+fHeight));
aBounds.setClosed(true);
aSeq[nCount++] = drawinglayer::primitive2d::Primitive2DReference( new PolyPolygonColorPrimitive2D(
B2DPolyPolygon(aBounds), Color(COL_WHITE).getBColor()));
aSeq[nCount++] = drawinglayer::primitive2d::Primitive2DReference( new FillGraphicPrimitive2D(
createScaleTranslateB2DHomMatrix(1.0,1.0,fPosX,fPosY),
FillGraphicAttribute(Graphic(*pImage),
B2DRange(
B2DPoint(0.0,0.0),
B2DPoint(aImageSize.Width(),aImageSize.Height())),
false)
));
// draw thumbnail borders
aSeq[nCount++] = drawinglayer::primitive2d::Primitive2DReference(createBorderLine(aBounds));
}
}
addTextPrimitives(maTitle, pAttrs, maTextPos, aSeq);
pProcessor->process(aSeq);
}
bool TemplateContainerItem::HasMissingPreview( )
{
return maPreview1.IsEmpty() || maPreview2.IsEmpty() || maPreview3.IsEmpty() || maPreview4.IsEmpty();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -81,7 +81,7 @@ void TemplateLocalView::Populate () ...@@ -81,7 +81,7 @@ void TemplateLocalView::Populate ()
{ {
OUString aRegionName(mpDocTemplates->GetFullRegionName(i)); OUString aRegionName(mpDocTemplates->GetFullRegionName(i));
TemplateContainerItem* pItem = new TemplateContainerItem( *this, i+1 ); TemplateContainerItem* pItem = new TemplateContainerItem( i+1 );
pItem->mnRegionId = i; pItem->mnRegionId = i;
pItem->maTitle = aRegionName; pItem->maTitle = aRegionName;
...@@ -147,12 +147,12 @@ void TemplateLocalView::showAllTemplates() ...@@ -147,12 +147,12 @@ void TemplateLocalView::showAllTemplates()
maOpenRegionHdl.Call(nullptr); maOpenRegionHdl.Call(nullptr);
} }
void TemplateLocalView::showRegion(ThumbnailViewItem *pItem) void TemplateLocalView::showRegion(TemplateContainerItem *pItem)
{ {
mnCurRegionId = static_cast<TemplateContainerItem*>(pItem)->mnRegionId+1; mnCurRegionId = pItem->mnRegionId+1;
maCurRegionName = pItem->maTitle; maCurRegionName = pItem->maTitle;
insertItems(reinterpret_cast<TemplateContainerItem*>(pItem)->maTemplates); insertItems((pItem)->maTemplates);
maOpenRegionHdl.Call(nullptr); maOpenRegionHdl.Call(nullptr);
} }
...@@ -169,7 +169,7 @@ void TemplateLocalView::showRegion(const OUString &rName) ...@@ -169,7 +169,7 @@ void TemplateLocalView::showRegion(const OUString &rName)
} }
} }
ThumbnailViewItem* TemplateLocalView::getRegion(OUString const & rName) TemplateContainerItem* TemplateLocalView::getRegion(OUString const & rName)
{ {
for (TemplateContainerItem* pRegion : maRegions) for (TemplateContainerItem* pRegion : maRegions)
if (pRegion->maTitle == rName) if (pRegion->maTitle == rName)
...@@ -333,21 +333,12 @@ sal_uInt16 TemplateLocalView::createRegion(const OUString &rName) ...@@ -333,21 +333,12 @@ sal_uInt16 TemplateLocalView::createRegion(const OUString &rName)
return 0; return 0;
// Insert to the region cache list and to the thumbnail item list // Insert to the region cache list and to the thumbnail item list
TemplateContainerItem* pItem = new TemplateContainerItem( *this, nItemId ); TemplateContainerItem* pItem = new TemplateContainerItem( nItemId );
pItem->mnRegionId = nRegionId; pItem->mnRegionId = nRegionId;
pItem->maTitle = rName; pItem->maTitle = rName;
maRegions.push_back(pItem); maRegions.push_back(pItem);
pItem = new TemplateContainerItem(*this, nItemId);
pItem->mnRegionId = nRegionId;
pItem->maTitle = rName;
AppendItem(pItem);
CalculateItemPositions();
Invalidate();
return pItem->mnId; return pItem->mnId;
} }
...@@ -383,15 +374,13 @@ bool TemplateLocalView::removeRegion(const sal_uInt16 nItemId) ...@@ -383,15 +374,13 @@ bool TemplateLocalView::removeRegion(const sal_uInt16 nItemId)
return false; return false;
// Synchronize view regions ids with SfxDocumentTemplates // Synchronize view regions ids with SfxDocumentTemplates
std::vector<ThumbnailViewItem*>::iterator pViewIt = mItemList.begin(); std::vector<TemplateContainerItem*>::iterator pRegionIter = maRegions.begin();
for ( pViewIt = mItemList.begin(); pViewIt != mItemList.end(); ++pViewIt) for ( ; pRegionIter != maRegions.end(); ++pRegionIter)
{ {
if (static_cast<TemplateContainerItem*>(*pViewIt)->mnRegionId > nRegionId) if ((*pRegionIter)->mnRegionId > nRegionId)
--static_cast<TemplateContainerItem*>(*pViewIt)->mnRegionId; --(*pRegionIter)->mnRegionId;
} }
RemoveItem(nItemId);
return true; return true;
} }
...@@ -401,7 +390,7 @@ bool TemplateLocalView::removeTemplate (const sal_uInt16 nItemId, const sal_uInt ...@@ -401,7 +390,7 @@ bool TemplateLocalView::removeTemplate (const sal_uInt16 nItemId, const sal_uInt
{ {
if (pRegion->mnId == nSrcItemId) if (pRegion->mnId == nSrcItemId)
{ {
TemplateContainerItem *pItem = static_cast<TemplateContainerItem*>(pRegion); TemplateContainerItem *pItem = pRegion;
std::vector<TemplateItemProperties>::iterator pIter; std::vector<TemplateItemProperties>::iterator pIter;
for (pIter = pItem->maTemplates.begin(); pIter != pItem->maTemplates.end(); ++pIter) for (pIter = pItem->maTemplates.begin(); pIter != pItem->maTemplates.end(); ++pIter)
{ {
...@@ -443,9 +432,9 @@ bool TemplateLocalView::moveTemplate (const ThumbnailViewItem *pItem, const sal_ ...@@ -443,9 +432,9 @@ bool TemplateLocalView::moveTemplate (const ThumbnailViewItem *pItem, const sal_
for (TemplateContainerItem* pRegion : maRegions) for (TemplateContainerItem* pRegion : maRegions)
{ {
if (pRegion->mnId == nTargetItem) if (pRegion->mnId == nTargetItem)
pTarget = static_cast<TemplateContainerItem*>(pRegion); pTarget = pRegion;
else if (pRegion->mnId == nSrcItem) else if (pRegion->mnId == nSrcItem)
pSrc = static_cast<TemplateContainerItem*>(pRegion); pSrc = pRegion;
} }
if (pTarget && pSrc) if (pTarget && pSrc)
...@@ -526,7 +515,7 @@ bool TemplateLocalView::moveTemplates(const std::set<const ThumbnailViewItem*, s ...@@ -526,7 +515,7 @@ bool TemplateLocalView::moveTemplates(const std::set<const ThumbnailViewItem*, s
for (TemplateContainerItem* pRegion : maRegions) for (TemplateContainerItem* pRegion : maRegions)
{ {
if (pRegion->mnId == nTargetItem) if (pRegion->mnId == nTargetItem)
pTarget = static_cast<TemplateContainerItem*>(pRegion); pTarget = pRegion;
} }
if (pTarget) if (pTarget)
...@@ -546,7 +535,7 @@ bool TemplateLocalView::moveTemplates(const std::set<const ThumbnailViewItem*, s ...@@ -546,7 +535,7 @@ bool TemplateLocalView::moveTemplates(const std::set<const ThumbnailViewItem*, s
for (TemplateContainerItem* pRegion : maRegions) for (TemplateContainerItem* pRegion : maRegions)
{ {
if (pRegion->mnRegionId == nSrcRegionId) if (pRegion->mnRegionId == nSrcRegionId)
pSrc = static_cast<TemplateContainerItem*>(pRegion); pSrc = pRegion;
} }
if(pSrc) if(pSrc)
...@@ -637,7 +626,7 @@ bool TemplateLocalView::copyFrom(const sal_uInt16 nRegionItemId, const BitmapEx ...@@ -637,7 +626,7 @@ bool TemplateLocalView::copyFrom(const sal_uInt16 nRegionItemId, const BitmapEx
sal_uInt16 nDocId = 0; sal_uInt16 nDocId = 0;
TemplateContainerItem *pRegionItem = TemplateContainerItem *pRegionItem =
static_cast<TemplateContainerItem*>(pRegion); pRegion;
if (!pRegionItem->maTemplates.empty()) if (!pRegionItem->maTemplates.empty())
{ {
...@@ -659,8 +648,7 @@ bool TemplateLocalView::copyFrom(const sal_uInt16 nRegionItemId, const BitmapEx ...@@ -659,8 +648,7 @@ bool TemplateLocalView::copyFrom(const sal_uInt16 nRegionItemId, const BitmapEx
aTemplate.aThumbnail = rThumbnail; aTemplate.aThumbnail = rThumbnail;
aTemplate.aPath = mpDocTemplates->GetPath(nRegionId,nDocId); aTemplate.aPath = mpDocTemplates->GetPath(nRegionId,nDocId);
TemplateContainerItem *pItem = TemplateContainerItem *pItem = pRegion;
static_cast<TemplateContainerItem*>(pRegion);
pItem->maTemplates.push_back(aTemplate); pItem->maTemplates.push_back(aTemplate);
...@@ -776,16 +764,13 @@ bool TemplateLocalView::renameItem(ThumbnailViewItem* pItem, const OUString& sNe ...@@ -776,16 +764,13 @@ bool TemplateLocalView::renameItem(ThumbnailViewItem* pItem, const OUString& sNe
sal_uInt16 nRegionId = 0; sal_uInt16 nRegionId = 0;
sal_uInt16 nDocId = USHRT_MAX; sal_uInt16 nDocId = USHRT_MAX;
TemplateViewItem* pDocItem = dynamic_cast<TemplateViewItem*>( pItem ); TemplateViewItem* pDocItem = dynamic_cast<TemplateViewItem*>( pItem );
TemplateContainerItem* pContainerItem = dynamic_cast<TemplateContainerItem*>( pItem );
if ( pDocItem ) if ( pDocItem )
{ {
nRegionId = pDocItem->mnRegionId; nRegionId = pDocItem->mnRegionId;
nDocId = pDocItem->mnDocId; nDocId = pDocItem->mnDocId;
} }
else if ( pContainerItem )
{
nRegionId = pContainerItem->mnRegionId;
}
return mpDocTemplates->SetName( sNewTitle, nRegionId, nDocId ); return mpDocTemplates->SetName( sNewTitle, nRegionId, nDocId );
} }
......
...@@ -60,7 +60,7 @@ VCL_BUILDER_DECL_FACTORY(TemplateRemoteView) ...@@ -60,7 +60,7 @@ VCL_BUILDER_DECL_FACTORY(TemplateRemoteView)
rRet = VclPtr<TemplateRemoteView>::Create(pParent, WB_VSCROLL, false); rRet = VclPtr<TemplateRemoteView>::Create(pParent, WB_VSCROLL, false);
} }
void TemplateRemoteView::showRegion(ThumbnailViewItem * /*pItem*/) void TemplateRemoteView::showRegion(TemplateContainerItem * /*pItem*/)
{ {
//TODO: //TODO:
} }
......
...@@ -1034,7 +1034,7 @@ void SfxTemplateManagerDlg::OnTemplateImportCategory(const OUString& sCategory) ...@@ -1034,7 +1034,7 @@ void SfxTemplateManagerDlg::OnTemplateImportCategory(const OUString& sCategory)
if (aFiles.hasElements()) if (aFiles.hasElements())
{ {
//Import to the selected regions //Import to the selected regions
TemplateContainerItem* pContItem = const_cast<TemplateContainerItem*>(static_cast<const TemplateContainerItem*>(mpLocalView->getRegion(sCategory))); TemplateContainerItem* pContItem = mpLocalView->getRegion(sCategory);
if(pContItem) if(pContItem)
{ {
OUString aTemplateList; OUString aTemplateList;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment