[Libreoffice-commits] core.git: icon-themes/galaxy include/sfx2 sfx2/source

Akshay Deep akshaydeepiitr at gmail.com
Mon Jun 6 07:06:08 UTC 2016


 icon-themes/galaxy/res/templatestar.png      |binary
 include/sfx2/templateabstractview.hxx        |    4 +++
 include/sfx2/templateviewitem.hxx            |    6 ++++
 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(+), 1 deletion(-)

New commits:
commit a6ea18a9cc83a85f4bf4fce78b7dbef3d1a419c6
Author: Akshay Deep <akshaydeepiitr at gmail.com>
Date:   Thu Jun 2 16:06:12 2016 +0530

    Mark Default Templates in Template Manager
    
    Change-Id: I1dff486605efce09e862d2924b24949601ae0f17
    Reviewed-on: https://gerrit.libreoffice.org/25816
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

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 5a7dddd..53641a7 100644
--- a/include/sfx2/templateabstractview.hxx
+++ b/include/sfx2/templateabstractview.hxx
@@ -112,6 +112,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 );
@@ -122,6 +124,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 180444e..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,6 +37,8 @@ public:
 private:
 
     OUString maPath;
+    BitmapEx maDefaultBitmap;
+    bool mbIsDefaultTemplate;
 };
 
 #endif // INCLUDED_SFX2_TEMPLATEVIEWITEM_HXX
diff --git a/sfx2/source/control/templateabstractview.cxx b/sfx2/source/control/templateabstractview.cxx
index cf0f497..a9f358b 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)
 {
@@ -126,6 +129,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
@@ -245,6 +251,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 54b22b3..14181cfe 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -855,7 +855,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();
     }


More information about the Libreoffice-commits mailing list