icon-themes/galaxy/res/templatestar.png      |binary
 include/sfx2/templateabstractview.hxx        |    4 +++
 include/sfx2/templateviewitem.hxx            |    8 ++++--
 sfx2/source/control/templateabstractview.cxx |   35 +++++++++++++++++++++++++++
 sfx2/source/control/templateview.hrc         |    1 
 sfx2/source/control/templateview.src         |    5 +++
 sfx2/source/control/templateviewitem.cxx     |   26 +++++++++++++++++++-
 sfx2/source/doc/templatedlg.cxx              |    5 +++
 8 files changed, 81 insertions(+), 3 deletions(-)

New commits:
commit 58ac1f9e3f99493e41ad2750ea0c3d2ba7f43d28
Author: Akshay Deep <akshaydeepi...@gmail.com>
Date:   Thu Jun 2 16:06:12 2016 +0530

    Mark Default Templates in Template Manager
    
    Reviewed-on: https://gerrit.libreoffice.org/25816
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de>
    
    Conflicts:
        include/sfx2/templateviewitem.hxx
    
    Change-Id: I1dff486605efce09e862d2924b24949601ae0f17
    Reviewed-on: https://gerrit.libreoffice.org/25974
    Reviewed-by: Akshay Deep <akshaydeepi...@gmail.com>
    Tested-by: Jenkins <c...@libreoffice.org>

diff --git a/icon-themes/galaxy/res/templatestar.png 
b/icon-themes/galaxy/res/templatestar.png
new file mode 100644
index 0000000..96bf3cb
Binary files /dev/null and b/icon-themes/galaxy/res/templatestar.png differ
diff --git a/include/sfx2/templateabstractview.hxx 
b/include/sfx2/templateabstractview.hxx
index c9f1a33..33c9a74 100644
--- a/include/sfx2/templateabstractview.hxx
+++ b/include/sfx2/templateabstractview.hxx
@@ -117,6 +117,8 @@ public:
     long getThumbnailWidth() const  { return mnThumbnailWidth;}
     long getThumbnailHeight() const {return mnThumbnailHeight;}
 
+    void RemoveDefaultTemplateIcon( OUString rPath);
+
     static BitmapEx scaleImg (const BitmapEx &rImg, long width, long height);
 
     static BitmapEx getDefaultThumbnail( const OUString& rPath );
@@ -127,6 +129,8 @@ protected:
 
     virtual void OnItemDblClicked(ThumbnailViewItem *pItem) override;
 
+    bool IsDefaultTemplate(const OUString& rPath);
+
 protected:
 
     sal_uInt16 mnCurRegionId;
diff --git a/include/sfx2/templateviewitem.hxx 
b/include/sfx2/templateviewitem.hxx
index c7e1b93..10d4634 100644
--- a/include/sfx2/templateviewitem.hxx
+++ b/include/sfx2/templateviewitem.hxx
@@ -24,6 +24,10 @@ public:
 
     const OUString& getPath () const { return maPath; }
 
+    void showDefaultIcon(bool bVal) { mbIsDefaultTemplate = bVal; }
+
+    Rectangle getDefaultIconArea() const;
+
     virtual void Paint (drawinglayer::processor2d::BaseProcessor2D *pProcessor,
                         const ThumbnailItemAttributes *pAttrs) override;
 
@@ -33,8 +37,8 @@ public:
 private:
 
     OUString maPath;
-
-    Point maSubTitlePos;
+    BitmapEx maDefaultBitmap;
+    bool mbIsDefaultTemplate;
 };
 
 #endif // INCLUDED_SFX2_TEMPLATEVIEWITEM_HXX
diff --git a/sfx2/source/control/templateabstractview.cxx 
b/sfx2/source/control/templateabstractview.cxx
index 2d6409b..1d78e3f 100644
--- a/sfx2/source/control/templateabstractview.cxx
+++ b/sfx2/source/control/templateabstractview.cxx
@@ -13,9 +13,11 @@
 #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 <unotools/moduleoptions.hxx>
 
 #include <basegfx/polygon/b2dpolygon.hxx>
 #include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
@@ -34,6 +36,7 @@
 
 using namespace basegfx;
 using namespace drawinglayer::primitive2d;
+using namespace ::com::sun::star::uno;
 
 bool ViewFilter_Application::isFilteredExtension(FILTER_APPLICATION filter, 
const OUString &rExt)
 {
@@ -149,6 +152,9 @@ void TemplateAbstractView::insertItems(const 
std::vector<TemplateItemProperties>
         pChild->setHelpText(pCur->aRegionName);
         pChild->maPreview1 = pCur->aThumbnail;
 
+        if(IsDefaultTemplate(pCur->aPath))
+            pChild->showDefaultIcon(true);
+
         if ( pCur->aThumbnail.IsEmpty() )
         {
             // Use the default thumbnail if we have nothing else
@@ -268,6 +274,35 @@ BitmapEx TemplateAbstractView::scaleImg (const BitmapEx 
&rImg, long width, long
     return aImg;
 }
 
+bool TemplateAbstractView::IsDefaultTemplate(const OUString& rPath)
+{
+    SvtModuleOptions aModOpt;
+    std::vector<OUString> aList;
+    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( OUString rPath)
+{
+    for (ThumbnailViewItem* pItem : mItemList)
+    {
+        TemplateViewItem* pViewItem = dynamic_cast<TemplateViewItem*>(pItem);
+        if(pViewItem->getPath().match(rPath))
+        {
+            pViewItem->showDefaultIcon(false);
+            return;
+        }
+    }
+}
+
 BitmapEx TemplateAbstractView::getDefaultThumbnail( const OUString& rPath )
 {
     BitmapEx aImg;
diff --git a/sfx2/source/control/templateview.hrc 
b/sfx2/source/control/templateview.hrc
index d2073bc..ae679b8 100644
--- a/sfx2/source/control/templateview.hrc
+++ b/sfx2/source/control/templateview.hrc
@@ -14,5 +14,6 @@
 #define IMG_WELCOME                      261
 #define IMG_RECENTDOC_REMOVE             262
 #define IMG_RECENTDOC_REMOVE_HIGHLIGHTED 263
+#define IMG_DEFAULT                      264
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/control/templateview.src 
b/sfx2/source/control/templateview.src
index d769372..a8e984c 100644
--- a/sfx2/source/control/templateview.src
+++ b/sfx2/source/control/templateview.src
@@ -48,4 +48,9 @@ Bitmap IMG_RECENTDOC_REMOVE_HIGHLIGHTED
     File = "recentdoc_remove_highlighted.png";
 };
 
+Bitmap IMG_DEFAULT
+{
+    File = "templatestar.png";
+};
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/control/templateviewitem.cxx 
b/sfx2/source/control/templateviewitem.cxx
index 047fec9..3158a4c 100644
--- a/sfx2/source/control/templateviewitem.cxx
+++ b/sfx2/source/control/templateviewitem.cxx
@@ -15,11 +15,15 @@
 #include <drawinglayer/primitive2d/fillgraphicprimitive2d.hxx>
 #include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
 #include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/discretebitmapprimitive2d.hxx>
 #include <drawinglayer/primitive2d/textlayoutdevice.hxx>
 #include <drawinglayer/primitive2d/textprimitive2d.hxx>
 #include <drawinglayer/processor2d/baseprocessor2d.hxx>
 #include <vcl/button.hxx>
 #include <vcl/graph.hxx>
+#include <sfx2/sfxresid.hxx>
+
+#include <templateview.hrc>
 
 using namespace basegfx;
 using namespace basegfx::tools;
@@ -29,7 +33,9 @@ using namespace drawinglayer::primitive2d;
 TemplateViewItem::TemplateViewItem (ThumbnailView &rView, sal_uInt16 nId)
     : ThumbnailViewItem(rView, nId),
       mnRegionId(USHRT_MAX),
-      mnDocId(USHRT_MAX)
+      mnDocId(USHRT_MAX),
+      maDefaultBitmap(SfxResId(IMG_DEFAULT)),
+      mbIsDefaultTemplate(false)
 {
 }
 
@@ -37,6 +43,16 @@ TemplateViewItem::~TemplateViewItem ()
 {
 }
 
+Rectangle TemplateViewItem::getDefaultIconArea() const
+{
+    Rectangle aArea(getDrawArea());
+    Size aSize(maDefaultBitmap.GetSizePixel());
+
+    return Rectangle(
+            Point(aArea.Left() + THUMBNAILVIEW_ITEM_CORNER, aArea.Top() + 
THUMBNAILVIEW_ITEM_CORNER),
+            aSize);
+}
+
 void TemplateViewItem::Paint(drawinglayer::processor2d::BaseProcessor2D 
*pProcessor,
                                    const ThumbnailItemAttributes *pAttrs)
 {
@@ -90,6 +106,14 @@ void 
TemplateViewItem::Paint(drawinglayer::processor2d::BaseProcessor2D *pProces
     // draw thumbnail borders
     aSeq[3] = 
drawinglayer::primitive2d::Primitive2DReference(createBorderLine(aBounds));
 
+    if(mbIsDefaultTemplate)
+    {
+        Point aIconPos(getDefaultIconArea().TopLeft());
+
+        aSeq[4] = drawinglayer::primitive2d::Primitive2DReference(new 
DiscreteBitmapPrimitive2D( maDefaultBitmap,
+                    B2DPoint(aIconPos.X(), aIconPos.Y())));
+    }
+
     addTextPrimitives(maTitle, pAttrs, maTextPos, aSeq);
 
     pProcessor->process(aSeq);
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 9f71a4d..7bc2dda 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -856,7 +856,12 @@ IMPL_LINK_TYPED(SfxTemplateManagerDlg, DefaultTemplateHdl, 
ThumbnailViewItem*, p
     OUString aServiceName;
     if (lcl_getServiceName(pViewItem->getPath(),aServiceName))
     {
+        OUString sPrevDefault = SfxObjectFactory::GetStandardTemplate( 
aServiceName );
+        if(!sPrevDefault.isEmpty())
+            mpLocalView->RemoveDefaultTemplateIcon(sPrevDefault);
+
         
SfxObjectFactory::SetStandardTemplate(aServiceName,pViewItem->getPath());
+        pViewItem->showDefaultIcon(true);
 
         createDefaultTemplateMenu();
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to