sfx2/inc/sfx2/templatefolderview.hxx | 2 sfx2/source/control/templatefolderview.cxx | 124 ++++++++++++++++++----------- sfx2/source/doc/templatedlg.cxx | 15 +++ 3 files changed, 94 insertions(+), 47 deletions(-)
New commits: commit fa99c1ea4f6d450cc12998d4513ed8cf77bafcc9 Author: Rafael Dominguez <[email protected]> Date: Thu Jul 5 22:39:50 2012 -0430 Update thumnails for all template operations. Change-Id: I7370e2ec459f64366277217b30875172104a72f6 diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx index ef58cfe..c66148d 100644 --- a/sfx2/source/control/templatefolderview.cxx +++ b/sfx2/source/control/templatefolderview.cxx @@ -297,41 +297,30 @@ void TemplateFolderView::Populate () sal_uInt16 nEntries = mpDocTemplates->GetCount(i); - if (nEntries) + for (sal_uInt16 j = 0; j < nEntries; ++j) { - /// Preview first 2 thumbnails for folder - pItem->maPreview1 = lcl_fetchThumbnail(mpDocTemplates->GetPath(i,0), - THUMBNAIL_MAX_WIDTH*0.75, - THUMBNAIL_MAX_HEIGHT*0.75); + rtl::OUString aName = mpDocTemplates->GetName(i,j); + rtl::OUString aURL = mpDocTemplates->GetPath(i,j); + rtl::OUString aType = SvFileInformationManager::GetDescription(INetURLObject(aURL)); - if ( nEntries > 2 ) - pItem->maPreview2 = lcl_fetchThumbnail(mpDocTemplates->GetPath(i,1), - THUMBNAIL_MAX_WIDTH*0.75, - THUMBNAIL_MAX_HEIGHT*0.75); - - for (sal_uInt16 j = 0; j < nEntries; ++j) + if ((sal_uInt32)aName.getLength() > mpItemAttrs->nMaxTextLenght) { - rtl::OUString aName = mpDocTemplates->GetName(i,j); - rtl::OUString aURL = mpDocTemplates->GetPath(i,j); - rtl::OUString aType = SvFileInformationManager::GetDescription(INetURLObject(aURL)); - - if ((sal_uInt32)aName.getLength() > mpItemAttrs->nMaxTextLenght) - { - aName = aName.copy(0,mpItemAttrs->nMaxTextLenght-3); - aName += "..."; - } + aName = aName.copy(0,mpItemAttrs->nMaxTextLenght-3); + aName += "..."; + } - TemplateViewItem *pTemplateItem = new TemplateViewItem(*mpItemView,mpItemView); - pTemplateItem->mnId = j+1; - pTemplateItem->maText = aName; - pTemplateItem->setPath(aURL); - pTemplateItem->setFileType(aType); - pTemplateItem->maPreview1 = lcl_fetchThumbnail(aURL,THUMBNAIL_MAX_WIDTH,THUMBNAIL_MAX_HEIGHT); + TemplateViewItem *pTemplateItem = new TemplateViewItem(*mpItemView,mpItemView); + pTemplateItem->mnId = j+1; + pTemplateItem->maText = aName; + pTemplateItem->setPath(aURL); + pTemplateItem->setFileType(aType); + pTemplateItem->maPreview1 = lcl_fetchThumbnail(aURL,THUMBNAIL_MAX_WIDTH,THUMBNAIL_MAX_HEIGHT); - pItem->maTemplates.push_back(pTemplateItem); - } + pItem->maTemplates.push_back(pTemplateItem); } + lcl_updateThumbnails(pItem); + mItemList.push_back(pItem); } @@ -486,10 +475,15 @@ bool TemplateFolderView::removeTemplate (const sal_uInt16 nItemId) pItem->maTemplates.erase(pIter); mpItemView->RemoveItem(nItemId); + break; } } + lcl_updateThumbnails(pItem); + + CalculateItemPositions(); + break; } } @@ -609,6 +603,10 @@ void TemplateFolderView::copyFrom (TemplateFolderViewItem *pItem, const rtl::OUS pTemplate->setFileType(SvFileInformationManager::GetDescription(INetURLObject(rPath))); pItem->maTemplates.push_back(pTemplate); + + lcl_updateThumbnails(pItem); + + CalculateItemPositions(); } } @@ -699,7 +697,7 @@ void lcl_updateThumbnails (TemplateFolderViewItem *pItem) } else { - pItem->maPreview1 = lcl_ScaleImg(pItem->maTemplates[i]->maPreview1, + pItem->maPreview2 = lcl_ScaleImg(pItem->maTemplates[i]->maPreview1, THUMBNAIL_MAX_WIDTH*0.75, THUMBNAIL_MAX_HEIGHT*0.75); } commit 23c3e635a2c048692deb327bbc21866d19f1806e Author: Rafael Dominguez <[email protected]> Date: Thu Jul 5 21:11:25 2012 -0430 Update folder thumbnails after moving or copying templates. Change-Id: I25596759c78a8898b5059db9c39b752f80075a2b diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx index 89479cd..ef58cfe 100644 --- a/sfx2/source/control/templatefolderview.cxx +++ b/sfx2/source/control/templatefolderview.cxx @@ -36,6 +36,8 @@ #define INIT_VIEW_COLS 3 #define INIT_VIEW_LINES 1 +void lcl_updateThumbnails (TemplateFolderViewItem *pItem); + BitmapEx lcl_ScaleImg (const BitmapEx &rImg, long width, long height) { BitmapEx aImg = rImg; @@ -576,6 +578,11 @@ bool TemplateFolderView::moveTemplates(std::set<const ThumbnailViewItem *> &rIte if (refresh) { + lcl_updateThumbnails(pSrc); + lcl_updateThumbnails(pTarget); + + CalculateItemPositions(); + Invalidate(); mpItemView->Invalidate(); } @@ -679,4 +686,24 @@ IMPL_LINK_NOARG(TemplateFolderView, OverlayCloseHdl) return 0; } +void lcl_updateThumbnails (TemplateFolderViewItem *pItem) +{ + // Update folder thumbnails + for (size_t i = 0, n = pItem->maTemplates.size(); i < 2 && i < n; ++i) + { + if (i == 0) + { + pItem->maPreview1 = lcl_ScaleImg(pItem->maTemplates[i]->maPreview1, + THUMBNAIL_MAX_WIDTH*0.75, + THUMBNAIL_MAX_HEIGHT*0.75); + } + else + { + pItem->maPreview1 = lcl_ScaleImg(pItem->maTemplates[i]->maPreview1, + THUMBNAIL_MAX_WIDTH*0.75, + THUMBNAIL_MAX_HEIGHT*0.75); + } + } +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 6e21f93b752167b27e78055cffcdfd9898152a8a Author: Rafael Dominguez <[email protected]> Date: Thu Jul 5 20:47:11 2012 -0430 Try to copy templates if moving them fails. Change-Id: I2e7e559ca84ad6155ac73aa324ed3c7f0eda0e4b diff --git a/sfx2/inc/sfx2/templatefolderview.hxx b/sfx2/inc/sfx2/templatefolderview.hxx index dac804b..df9860f 100644 --- a/sfx2/inc/sfx2/templatefolderview.hxx +++ b/sfx2/inc/sfx2/templatefolderview.hxx @@ -61,7 +61,7 @@ public: bool removeTemplate (const sal_uInt16 nItemId); - bool moveTemplates (std::set<const ThumbnailViewItem*> &rItems, const sal_uInt16 nTargetItem); + bool moveTemplates (std::set<const ThumbnailViewItem*> &rItems, const sal_uInt16 nTargetItem, bool bCopy); void copyFrom (TemplateFolderViewItem *pItem, const rtl::OUString &rPath); diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx index 43f8720..89479cd 100644 --- a/sfx2/source/control/templatefolderview.cxx +++ b/sfx2/source/control/templatefolderview.cxx @@ -495,7 +495,8 @@ bool TemplateFolderView::removeTemplate (const sal_uInt16 nItemId) return true; } -bool TemplateFolderView::moveTemplates(std::set<const ThumbnailViewItem *> &rItems, const sal_uInt16 nTargetItem) +bool TemplateFolderView::moveTemplates(std::set<const ThumbnailViewItem *> &rItems, + const sal_uInt16 nTargetItem, bool bCopy) { bool ret = true; bool refresh = false; @@ -516,15 +517,22 @@ bool TemplateFolderView::moveTemplates(std::set<const ThumbnailViewItem *> &rIte if (pTarget && pSrc) { + sal_uInt16 nTargetRegion = pTarget->mnId-1; + sal_uInt16 nTargetIdx = mpDocTemplates->GetCount(nTargetRegion); // Next Idx + std::set<const ThumbnailViewItem*>::iterator aSelIter; - for ( aSelIter = rItems.begin(); aSelIter != rItems.end(); ++aSelIter ) + for ( aSelIter = rItems.begin(); aSelIter != rItems.end(); ++aSelIter, ++nTargetIdx ) { const TemplateViewItem *pViewItem = static_cast<const TemplateViewItem*>(*aSelIter); - sal_uInt16 nTargetRegion = pTarget->mnId-1; - sal_uInt16 nTargetIdx = mpDocTemplates->GetCount(nTargetRegion); // Next Idx + bool bOK; + + if (bCopy) + bOK = mpDocTemplates->Copy(nTargetRegion,nTargetIdx,nSrcRegionId,pViewItem->mnId-1); + else + bOK = mpDocTemplates->Move(nTargetRegion,nTargetIdx,nSrcRegionId,pViewItem->mnId-1); - if (!mpDocTemplates->Move(nTargetRegion,nTargetIdx,nSrcRegionId,pViewItem->mnId-1)) + if (!bOK) { ret = false; continue; @@ -541,19 +549,22 @@ bool TemplateFolderView::moveTemplates(std::set<const ThumbnailViewItem *> &rIte pTarget->maTemplates.push_back(pTemplateItem); - // remove template for overlay and from cached data - - std::vector<TemplateViewItem*>::iterator pIter; - for (pIter = pSrc->maTemplates.begin(); pIter != pSrc->maTemplates.end(); ++pIter) + if (!bCopy) { - if ((*pIter)->mnId == pViewItem->mnId) + // remove template for overlay and from cached data + + std::vector<TemplateViewItem*>::iterator pIter; + for (pIter = pSrc->maTemplates.begin(); pIter != pSrc->maTemplates.end(); ++pIter) { - delete *pIter; + if ((*pIter)->mnId == pViewItem->mnId) + { + delete *pIter; - pSrc->maTemplates.erase(pIter); + pSrc->maTemplates.erase(pIter); - mpItemView->RemoveItem(pViewItem->mnId); - break; + mpItemView->RemoveItem(pViewItem->mnId); + break; + } } } diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 819c3ab..77f9032 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -500,8 +500,14 @@ IMPL_LINK(SfxTemplateManagerDlg, MoveMenuSelectHdl, Menu*, pMenu) { sal_uInt16 nNewRegionId = maView->createRegion(aName); - if (nNewRegionId && !maView->moveTemplates(maSelTemplates,nNewRegionId)) + if (nNewRegionId) { + // Move templates to desired folder if for some reason move fails + // try copying them. + if (!maView->moveTemplates(maSelTemplates,nNewRegionId,false) && + !maView->moveTemplates(maSelTemplates,nNewRegionId,true)) + { + } } } } @@ -519,7 +525,12 @@ IMPL_LINK(SfxTemplateManagerDlg, MoveMenuSelectHdl, Menu*, pMenu) } else { - if (!maView->moveTemplates(maSelTemplates,maView->GetItemId(nMenuId-MNI_MOVE_FOLDER_BASE))) + // Try to move the template, if isnt possible try to copy it. + + sal_uInt16 nItemId = maView->GetItemId(nMenuId-MNI_MOVE_FOLDER_BASE); + + if (!maView->moveTemplates(maSelTemplates,nItemId,false) && + !maView->moveTemplates(maSelTemplates,nItemId,true)) { } } commit 25e1e3cbf6f49d893ba67d2def850167d54b3f58 Author: Rafael Dominguez <[email protected]> Date: Thu Jul 5 20:23:44 2012 -0430 Fix WaE. Change-Id: If7df918d272fcfede7d9b36619937b06a28d485a diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx index 022fb47..43f8720 100644 --- a/sfx2/source/control/templatefolderview.cxx +++ b/sfx2/source/control/templatefolderview.cxx @@ -282,7 +282,7 @@ void TemplateFolderView::Populate () { rtl::OUString aRegionName(mpDocTemplates->GetFullRegionName(i)); - if (aRegionName.getLength() > mpItemAttrs->nMaxTextLenght) + if ((sal_uInt32)aRegionName.getLength() > mpItemAttrs->nMaxTextLenght) { aRegionName = aRegionName.copy(0,mpItemAttrs->nMaxTextLenght-3); aRegionName += "..."; @@ -313,7 +313,7 @@ void TemplateFolderView::Populate () rtl::OUString aURL = mpDocTemplates->GetPath(i,j); rtl::OUString aType = SvFileInformationManager::GetDescription(INetURLObject(aURL)); - if (aName.getLength() > mpItemAttrs->nMaxTextLenght) + if ((sal_uInt32)aName.getLength() > mpItemAttrs->nMaxTextLenght) { aName = aName.copy(0,mpItemAttrs->nMaxTextLenght-3); aName += "..."; @@ -438,7 +438,7 @@ sal_uInt16 TemplateFolderView::createRegion(const rtl::OUString &rName) rtl::OUString aRegionName = rName; - if (aRegionName.getLength() > (sal_Int32)mpItemAttrs->nMaxTextLenght) + if ((sal_uInt32)aRegionName.getLength() > mpItemAttrs->nMaxTextLenght) { aRegionName = aRegionName.copy(0,mpItemAttrs->nMaxTextLenght-3); aRegionName += "..."; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
