[Libreoffice-commits] .: 9 commits - sfx2/inc sfx2/source

Rafael Dominguez rdominguez at kemper.freedesktop.org
Wed Aug 15 04:48:12 PDT 2012


 sfx2/inc/sfx2/templateinfodlg.hxx             |    4 
 sfx2/inc/sfx2/templatelocalview.hxx           |   14 +++
 sfx2/inc/templatedlg.hxx                      |    8 +
 sfx2/source/control/templatelocalview.cxx     |   42 ++++++++-
 sfx2/source/control/templatelocalviewitem.cxx |   52 ++++++-----
 sfx2/source/dialog/templateinfodlg.cxx        |    8 +
 sfx2/source/doc/objserv.cxx                   |    2 
 sfx2/source/doc/templatedlg.cxx               |  119 ++++++++++++++++++++++----
 sfx2/source/doc/templatedlg.hrc               |    6 +
 sfx2/source/doc/templatedlg.src               |   17 +++
 10 files changed, 234 insertions(+), 38 deletions(-)

New commits:
commit f7ca0e46532ba10d91d0e814938423e5995fdf91
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Tue Aug 14 22:42:21 2012 -0430

    Dont draw thumbnail border if theres no thumbnail to paint.
    
    Change-Id: I6ca934ccf2e1fa34e60cae3feb1564c87e69254b

diff --git a/sfx2/source/control/templatelocalviewitem.cxx b/sfx2/source/control/templatelocalviewitem.cxx
index f337df8..7ba1183 100644
--- a/sfx2/source/control/templatelocalviewitem.cxx
+++ b/sfx2/source/control/templatelocalviewitem.cxx
@@ -39,7 +39,10 @@ void TemplateLocalViewItem::Paint (drawinglayer::processor2d::BaseProcessor2D *p
                                     const ThumbnailItemAttributes *pAttrs)
 {
     int nCount = 0;
-    int nSeqSize = 7;
+    int nSeqSize = 2;
+
+    if (!maPreview1.IsEmpty())
+        nSeqSize += 5;
 
     if (!maPreview2.IsEmpty())
         nSeqSize += 5;
@@ -91,28 +94,31 @@ void TemplateLocalViewItem::Paint (drawinglayer::processor2d::BaseProcessor2D *p
                                                                B2DPoint(fPosX,fPosY)));
     }
 
-    aSeq[nCount++] = Primitive2DReference( new FillBitmapPrimitive2D(
-                                        createScaleTranslateB2DHomMatrix(fScaleX,fScaleY,aPos.X(),aPos.Y()),
-                                        FillBitmapAttribute(maPreview1,
-                                                            B2DPoint(0,0),
-                                                            B2DVector(aImageSize.Width(),aImageSize.Height()),
-                                                            false)
-                                        ));
-
-    // draw thumbnail borders
-    float fWidth = aImageSize.Width()*fScaleX;
-    float fHeight = aImageSize.Height()*fScaleY;
-    float fPosX = aPos.getX();
-    float fPosY = aPos.getY();
-
-    aSeq[nCount++] = Primitive2DReference(createBorderLine(B2DPoint(fPosX,fPosY),
-                                                           B2DPoint(fPosX+fWidth,fPosY)));
-    aSeq[nCount++] = Primitive2DReference(createBorderLine(B2DPoint(fPosX+fWidth,fPosY),
-                                                           B2DPoint(fPosX+fWidth,fPosY+fHeight)));
-    aSeq[nCount++] = Primitive2DReference(createBorderLine(B2DPoint(fPosX+fWidth,fPosY+fHeight),
-                                                           B2DPoint(fPosX,fPosY+fHeight)));
-    aSeq[nCount++] = Primitive2DReference(createBorderLine(B2DPoint(fPosX,fPosY+fHeight),
-                                                           B2DPoint(fPosX,fPosY)));
+    if (!maPreview1.IsEmpty())
+    {
+        aSeq[nCount++] = Primitive2DReference( new FillBitmapPrimitive2D(
+                                            createScaleTranslateB2DHomMatrix(fScaleX,fScaleY,aPos.X(),aPos.Y()),
+                                            FillBitmapAttribute(maPreview1,
+                                                                B2DPoint(0,0),
+                                                                B2DVector(aImageSize.Width(),aImageSize.Height()),
+                                                                false)
+                                            ));
+
+        // draw thumbnail borders
+        float fWidth = aImageSize.Width()*fScaleX;
+        float fHeight = aImageSize.Height()*fScaleY;
+        float fPosX = aPos.getX();
+        float fPosY = aPos.getY();
+
+        aSeq[nCount++] = Primitive2DReference(createBorderLine(B2DPoint(fPosX,fPosY),
+                                                               B2DPoint(fPosX+fWidth,fPosY)));
+        aSeq[nCount++] = Primitive2DReference(createBorderLine(B2DPoint(fPosX+fWidth,fPosY),
+                                                               B2DPoint(fPosX+fWidth,fPosY+fHeight)));
+        aSeq[nCount++] = Primitive2DReference(createBorderLine(B2DPoint(fPosX+fWidth,fPosY+fHeight),
+                                                               B2DPoint(fPosX,fPosY+fHeight)));
+        aSeq[nCount++] = Primitive2DReference(createBorderLine(B2DPoint(fPosX,fPosY+fHeight),
+                                                               B2DPoint(fPosX,fPosY)));
+    }
 
     // Draw centered text below thumbnail
     aPos = maTextPos;
commit 223506761c5cf01c2a114afc2156e94f80464dce
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Tue Aug 14 22:16:50 2012 -0430

    Disable general manager actions while in save mode.
    
    Change-Id: I46496f75b7a9f441c989f8a750ecc675781162af

diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx
index 75fc4cf..7d6940c 100644
--- a/sfx2/inc/templatedlg.hxx
+++ b/sfx2/inc/templatedlg.hxx
@@ -41,6 +41,8 @@ public:
 
     ~SfxTemplateManagerDlg ();
 
+    void setSaveMode (bool bMode);
+
     void setDocumentModel (const com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rModel);
 
     DECL_LINK(ViewAllHdl, void*);
@@ -138,6 +140,7 @@ private:
     std::set<const ThumbnailViewItem*> maSelTemplates;
     std::set<const ThumbnailViewItem*> maSelFolders;
 
+    bool mbIsSaveMode;  ///< Flag that indicates if we are in save mode or not.
     com::sun::star::uno::Reference< com::sun::star::frame::XModel > m_xModel;
     com::sun::star::uno::Reference< com::sun::star::frame::XComponentLoader > mxDesktop;
 };
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index 5f6bd77..6a25743 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -805,6 +805,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
             {
                 SfxTemplateManagerDlg aDlg(NULL);
                 aDlg.setDocumentModel(GetModel());
+                aDlg.setSaveMode(true);
                 aDlg.Execute();
             }
             else
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index a4a39cd..9e17da4 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -114,6 +114,7 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
       mpSearchView(new TemplateSearchView(this)),
       maView(new TemplateLocalView(this,SfxResId(TEMPLATE_VIEW))),
       mpOnlineView(new TemplateOnlineView(this, WB_VSCROLL,false)),
+      mbIsSaveMode(false),
       mxDesktop(comphelper::getProcessServiceFactory()->createInstance( "com.sun.star.frame.Desktop" ),uno::UNO_QUERY )
 {
     maButtonSelMode.SetStyle(maButtonSelMode.GetStyle() | WB_TOGGLE);
@@ -271,6 +272,24 @@ SfxTemplateManagerDlg::~SfxTemplateManagerDlg ()
     delete mpTemplateDefaultMenu;
 }
 
+void SfxTemplateManagerDlg::setSaveMode(bool bMode)
+{
+    mbIsSaveMode = bMode;
+
+    if (bMode)
+    {
+        mpViewBar->ShowItem(TBI_TEMPLATE_SAVE);
+        mpViewBar->HideItem(TBI_TEMPLATE_IMPORT);
+        mpViewBar->HideItem(TBI_TEMPLATE_REPOSITORY);
+    }
+    else
+    {
+        mpViewBar->HideItem(TBI_TEMPLATE_SAVE);
+        mpViewBar->ShowItem(TBI_TEMPLATE_IMPORT);
+        mpViewBar->ShowItem(TBI_TEMPLATE_REPOSITORY);
+    }
+}
+
 void SfxTemplateManagerDlg::setDocumentModel(const uno::Reference<frame::XModel> &rModel)
 {
     m_xModel = rModel;
@@ -468,7 +487,7 @@ IMPL_LINK(SfxTemplateManagerDlg, TVFolderStateHdl, const ThumbnailViewItem*, pIt
 {
     if (pItem->isSelected())
     {
-        if (maSelFolders.empty())
+        if (maSelFolders.empty() && !mbIsSaveMode)
         {
             mpViewBar->ShowItem(TBI_TEMPLATE_IMPORT);
             mpViewBar->ShowItem(TBI_TEMPLATE_FOLDER_DEL);
@@ -480,7 +499,7 @@ IMPL_LINK(SfxTemplateManagerDlg, TVFolderStateHdl, const ThumbnailViewItem*, pIt
     {
         maSelFolders.erase(pItem);
 
-        if (maSelFolders.empty())
+        if (maSelFolders.empty() && !mbIsSaveMode)
         {
             mpViewBar->HideItem(TBI_TEMPLATE_IMPORT);
             mpViewBar->HideItem(TBI_TEMPLATE_FOLDER_DEL);
@@ -494,17 +513,20 @@ IMPL_LINK(SfxTemplateManagerDlg, TVTemplateStateHdl, const ThumbnailViewItem*, p
 {
     if (pItem->isSelected())
     {
-        if (maSelTemplates.empty())
-        {
-            mpViewBar->Show(false);
-            mpActionBar->Show(false);
-            mpTemplateBar->Show();
-        }
-        else
+        if (!mbIsSaveMode)
         {
-            mpTemplateBar->HideItem(TBI_TEMPLATE_EDIT);
-            mpTemplateBar->HideItem(TBI_TEMPLATE_PROPERTIES);
-            mpTemplateBar->HideItem(TBI_TEMPLATE_DEFAULT);
+            if (maSelTemplates.empty())
+            {
+                mpViewBar->Show(false);
+                mpActionBar->Show(false);
+                mpTemplateBar->Show();
+            }
+            else
+            {
+                mpTemplateBar->HideItem(TBI_TEMPLATE_EDIT);
+                mpTemplateBar->HideItem(TBI_TEMPLATE_PROPERTIES);
+                mpTemplateBar->HideItem(TBI_TEMPLATE_DEFAULT);
+            }
         }
 
         maSelTemplates.insert(pItem);
@@ -515,17 +537,20 @@ IMPL_LINK(SfxTemplateManagerDlg, TVTemplateStateHdl, const ThumbnailViewItem*, p
         {
             maSelTemplates.erase(pItem);
 
-            if (maSelTemplates.empty())
+            if (!mbIsSaveMode)
             {
-                mpTemplateBar->Show(false);
-                mpViewBar->Show();
-                mpActionBar->Show();
-            }
-            else if (maSelTemplates.size() == 1)
-            {
-                mpTemplateBar->ShowItem(TBI_TEMPLATE_EDIT);
-                mpTemplateBar->ShowItem(TBI_TEMPLATE_PROPERTIES);
-                mpTemplateBar->ShowItem(TBI_TEMPLATE_DEFAULT);
+                if (maSelTemplates.empty())
+                {
+                    mpTemplateBar->Show(false);
+                    mpViewBar->Show();
+                    mpActionBar->Show();
+                }
+                else if (maSelTemplates.size() == 1)
+                {
+                    mpTemplateBar->ShowItem(TBI_TEMPLATE_EDIT);
+                    mpTemplateBar->ShowItem(TBI_TEMPLATE_PROPERTIES);
+                    mpTemplateBar->ShowItem(TBI_TEMPLATE_DEFAULT);
+                }
             }
         }
     }
diff --git a/sfx2/source/doc/templatedlg.src b/sfx2/source/doc/templatedlg.src
index 5b33147..db28abc 100644
--- a/sfx2/source/doc/templatedlg.src
+++ b/sfx2/source/doc/templatedlg.src
@@ -215,6 +215,7 @@ ModelessDialog DLG_TEMPLATE_MANAGER
             ToolBoxItem
             {
                 Identifier = TBI_TEMPLATE_SAVE;
+                Hide = TRUE;
                 Text [ en-US ] = "Save";
             };
         };
commit 5fedb166239a69a407459254a68ddfad0e034126
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Tue Aug 14 21:43:30 2012 -0430

    Save template in the currently open overlay.
    
    Change-Id: I8b577ee7ab73384486b4756dd303e595da9210f8

diff --git a/sfx2/inc/sfx2/templatelocalview.hxx b/sfx2/inc/sfx2/templatelocalview.hxx
index 207e1e4..03c4558 100644
--- a/sfx2/inc/sfx2/templatelocalview.hxx
+++ b/sfx2/inc/sfx2/templatelocalview.hxx
@@ -63,6 +63,10 @@ public:
 
     bool exportTo (const sal_uInt16 nItemId, const sal_uInt16 nRegionItemId, const OUString &rName);
 
+    bool saveTemplateAs (sal_uInt16 nItemId,
+                         com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rModel,
+                         const OUString &rName);
+
     bool saveTemplateAs (const TemplateLocalViewItem *pDstItem,
                          com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rModel,
                          const OUString &rName);
diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index ec8b3dc..b1d5092 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -644,6 +644,24 @@ bool TemplateLocalView::exportTo(const sal_uInt16 nItemId, const sal_uInt16 nReg
     return false;
 }
 
+bool TemplateLocalView::saveTemplateAs (sal_uInt16 nItemId,
+                                        com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rModel,
+                                        const OUString &rName)
+{
+    bool bRet = false;
+
+    for (size_t i = 0, n = mItemList.size(); i < n; ++i)
+    {
+        if (mItemList[i]->mnId == nItemId)
+        {
+            bRet = saveTemplateAs((const TemplateLocalViewItem*)mItemList[i],rModel,rName);
+            break;
+        }
+    }
+
+    return bRet;
+}
+
 bool TemplateLocalView::saveTemplateAs(const TemplateLocalViewItem *pDstItem,
                                        com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rModel,
                                        const OUString &rName)
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index c99cec3..a4a39cd 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -1126,6 +1126,8 @@ void SfxTemplateManagerDlg::OnTemplateSaveAs()
 
             if (maView->isOverlayVisible())
             {
+                if (!maView->saveTemplateAs(maView->getOverlayRegionId()+1,m_xModel,aName))
+                    aFolderList = maView->getOverlayName();
             }
             else
             {
commit e7721a2312b6bc81dbb33919feb065f33e2e61f6
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Tue Aug 14 21:17:51 2012 -0430

    Save a template to selected folders.
    
    Change-Id: I16969fa0b28ff5f1e5abe7e58ad8522c03b3ea4e

diff --git a/sfx2/inc/sfx2/templatelocalview.hxx b/sfx2/inc/sfx2/templatelocalview.hxx
index d595196..207e1e4 100644
--- a/sfx2/inc/sfx2/templatelocalview.hxx
+++ b/sfx2/inc/sfx2/templatelocalview.hxx
@@ -18,6 +18,12 @@
 class SfxDocumentTemplates;
 class TemplateLocalViewItem;
 
+namespace com {
+    namespace sun { namespace star { namespace frame {
+        class XModel;
+    }   }   }
+}
+
 class SFX2_DLLPUBLIC TemplateLocalView : public TemplateAbstractView
 {
 public:
@@ -57,6 +63,10 @@ public:
 
     bool exportTo (const sal_uInt16 nItemId, const sal_uInt16 nRegionItemId, const OUString &rName);
 
+    bool saveTemplateAs (const TemplateLocalViewItem *pDstItem,
+                         com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rModel,
+                         const OUString &rName);
+
 private:
 
     virtual void OnItemDblClicked (ThumbnailViewItem *pRegionItem);
diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx
index 17596d9..75fc4cf 100644
--- a/sfx2/inc/templatedlg.hxx
+++ b/sfx2/inc/templatedlg.hxx
@@ -29,6 +29,7 @@ class ToolBox;
 namespace com {
     namespace sun { namespace star { namespace frame {
         class XComponentLoader;
+        class XModel;
     }   }   }
 }
 
@@ -40,6 +41,8 @@ public:
 
     ~SfxTemplateManagerDlg ();
 
+    void setDocumentModel (const com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rModel);
+
     DECL_LINK(ViewAllHdl, void*);
     DECL_LINK(ViewDocsHdl, void*);
     DECL_LINK(ViewPresentsHdl, void*);
@@ -135,6 +138,7 @@ private:
     std::set<const ThumbnailViewItem*> maSelTemplates;
     std::set<const ThumbnailViewItem*> maSelFolders;
 
+    com::sun::star::uno::Reference< com::sun::star::frame::XModel > m_xModel;
     com::sun::star::uno::Reference< com::sun::star::frame::XComponentLoader > mxDesktop;
 };
 
diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index 4e47e1f..ec8b3dc 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -22,10 +22,15 @@
 
 #include <com/sun/star/embed/ElementModes.hpp>
 #include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/frame/DocumentTemplates.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/frame/XDocumentTemplates.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
 
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::frame;
+
 void lcl_updateThumbnails (TemplateLocalViewItem *pItem);
 
 class FolderFilter_Application
@@ -639,6 +644,23 @@ bool TemplateLocalView::exportTo(const sal_uInt16 nItemId, const sal_uInt16 nReg
     return false;
 }
 
+bool TemplateLocalView::saveTemplateAs(const TemplateLocalViewItem *pDstItem,
+                                       com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rModel,
+                                       const OUString &rName)
+{
+    uno::Reference< frame::XStorable > xStorable(rModel, uno::UNO_QUERY_THROW );
+
+    uno::Reference< frame::XDocumentTemplates > xTemplates(
+                    frame::DocumentTemplates::create(comphelper::getProcessComponentContext()) );
+
+    sal_uInt16 nRegionId = pDstItem->mnId-1;
+
+    if (!xTemplates->storeTemplate(mpDocTemplates->GetRegionName(nRegionId),rName, xStorable ))
+        return false;
+
+    return true;
+}
+
 void TemplateLocalView::OnItemDblClicked (ThumbnailViewItem *pRegionItem)
 {
     // Fill templates
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index 352245a..5f6bd77 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -804,6 +804,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
             if ( aMiscOptions.IsExperimentalMode() )
             {
                 SfxTemplateManagerDlg aDlg(NULL);
+                aDlg.setDocumentModel(GetModel());
                 aDlg.Execute();
             }
             else
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index f392feb..c99cec3 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -271,6 +271,11 @@ SfxTemplateManagerDlg::~SfxTemplateManagerDlg ()
     delete mpTemplateDefaultMenu;
 }
 
+void SfxTemplateManagerDlg::setDocumentModel(const uno::Reference<frame::XModel> &rModel)
+{
+    m_xModel = rModel;
+}
+
 IMPL_LINK_NOARG(SfxTemplateManagerDlg,ViewAllHdl)
 {
     mpCurView->filterTemplatesByApp(FILTER_APP_NONE);
@@ -1101,6 +1106,8 @@ void SfxTemplateManagerDlg::OnRepositoryDelete()
 
 void SfxTemplateManagerDlg::OnTemplateSaveAs()
 {
+    assert(m_xModel);
+
     if (!maView->isOverlayVisible() && maSelFolders.empty())
     {
         ErrorBox(this, WB_OK,SfxResId(STR_MSG_ERROR_SELECT_FOLDER).toString()).Execute();
@@ -1115,6 +1122,32 @@ void SfxTemplateManagerDlg::OnTemplateSaveAs()
 
         if (!aName.isEmpty())
         {
+            OUString aFolderList;
+
+            if (maView->isOverlayVisible())
+            {
+            }
+            else
+            {
+                std::set<const ThumbnailViewItem*>::const_iterator pIter;
+                for (pIter = maSelFolders.begin(); pIter != maSelFolders.end(); ++pIter)
+                {
+                    TemplateLocalViewItem *pItem = (TemplateLocalViewItem*)(*pIter);
+                    if (!maView->saveTemplateAs(pItem,m_xModel,aName))
+                    {
+                        if (aFolderList.isEmpty())
+                            aFolderList = (*pIter)->maTitle;
+                        else
+                            aFolderList = aFolderList + "\n" + (*pIter)->maTitle;
+                    }
+                }
+            }
+
+            maView->reload();
+
+            if (!aFolderList.isEmpty())
+            {
+            }
         }
     }
 }
commit c5b01492200b19875c1976ee6621102a7ebff1ef
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Tue Aug 14 20:39:23 2012 -0430

    Show error message when trying to save without a destination folder
    
    Change-Id: Ib0ac72b5adb8544b2bd488bd3c3701898df2877d

diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 14a8eab..f392feb 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -1103,6 +1103,7 @@ void SfxTemplateManagerDlg::OnTemplateSaveAs()
 {
     if (!maView->isOverlayVisible() && maSelFolders.empty())
     {
+        ErrorBox(this, WB_OK,SfxResId(STR_MSG_ERROR_SELECT_FOLDER).toString()).Execute();
         return;
     }
 
diff --git a/sfx2/source/doc/templatedlg.hrc b/sfx2/source/doc/templatedlg.hrc
index 89a022e..9871199 100644
--- a/sfx2/source/doc/templatedlg.hrc
+++ b/sfx2/source/doc/templatedlg.hrc
@@ -65,6 +65,7 @@
 #define STR_MSG_ERROR_DELETE_FOLDER         283
 #define STR_MSG_ERROR_REPOSITORY_NAME       284
 #define STR_MSG_ERROR_SAVE_SELECT           285
+#define STR_MSG_ERROR_SELECT_FOLDER         286
 
 #define STR_INPUT_TEMPLATE_NEW              288
 
diff --git a/sfx2/source/doc/templatedlg.src b/sfx2/source/doc/templatedlg.src
index 65f7f55..5b33147 100644
--- a/sfx2/source/doc/templatedlg.src
+++ b/sfx2/source/doc/templatedlg.src
@@ -80,6 +80,11 @@ String STR_MSG_ERROR_REPOSITORY_NAME
     Text [ en-US ] = "Failed to create repository \"$1\".\nA repository with this name may already exist.";
 };
 
+String STR_MSG_ERROR_SELECT_FOLDER
+{
+    Text [ en-US ] = "Select the destination folder(s) to save the template.";
+};
+
 String STR_INPUT_TEMPLATE_NEW
 {
     Text [ en-US ] = "Enter template name:";
commit 6072d114977421da17127610e4a1a5103fecb20a
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Tue Aug 14 19:02:27 2012 -0430

    Add save templates command to manager.
    
    Change-Id: Ic538f23f1d8c4ba8f1a47386e1d16337cf2650c9

diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx
index 40fa0bf..17596d9 100644
--- a/sfx2/inc/templatedlg.hxx
+++ b/sfx2/inc/templatedlg.hxx
@@ -82,6 +82,7 @@ private:
     void OnTemplateExport ();
     void OnFolderDelete ();
     void OnRepositoryDelete ();
+    void OnTemplateSaveAs ();
 
     void centerTopButtons ();
 
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 403c767..14a8eab 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -347,6 +347,9 @@ IMPL_LINK_NOARG(SfxTemplateManagerDlg,TBXViewHdl)
         else
             OnRepositoryDelete();
         break;
+    case TBI_TEMPLATE_SAVE:
+        OnTemplateSaveAs();
+        break;
     default:
         break;
     }
@@ -1096,6 +1099,25 @@ void SfxTemplateManagerDlg::OnRepositoryDelete()
     }
 }
 
+void SfxTemplateManagerDlg::OnTemplateSaveAs()
+{
+    if (!maView->isOverlayVisible() && maSelFolders.empty())
+    {
+        return;
+    }
+
+    InputDialog aDlg(SfxResId(STR_INPUT_TEMPLATE_NEW).toString(),this);
+
+    if (aDlg.Execute())
+    {
+        OUString aName = aDlg.getEntryText();
+
+        if (!aName.isEmpty())
+        {
+        }
+    }
+}
+
 void SfxTemplateManagerDlg::centerTopButtons()
 {
     Point aFirstBtnPos = aButtonAll.GetPosPixel();
diff --git a/sfx2/source/doc/templatedlg.hrc b/sfx2/source/doc/templatedlg.hrc
index 0b82219..89a022e 100644
--- a/sfx2/source/doc/templatedlg.hrc
+++ b/sfx2/source/doc/templatedlg.hrc
@@ -38,6 +38,8 @@
 
 #define MNI_ACTION_DEFAULT          27
 
+#define TBI_TEMPLATE_SAVE           28
+
 #define STR_ACTION_REFRESH          263
 #define STR_ACTION_SORT_NAME        264
 
@@ -62,6 +64,9 @@
 #define STR_MSG_ERROR_DELETE_TEMPLATE       282
 #define STR_MSG_ERROR_DELETE_FOLDER         283
 #define STR_MSG_ERROR_REPOSITORY_NAME       284
+#define STR_MSG_ERROR_SAVE_SELECT           285
+
+#define STR_INPUT_TEMPLATE_NEW              288
 
 #define IMG_ACTION_SORT             304
 #define IMG_ACTION_REFRESH          305
diff --git a/sfx2/source/doc/templatedlg.src b/sfx2/source/doc/templatedlg.src
index 60d0580..65f7f55 100644
--- a/sfx2/source/doc/templatedlg.src
+++ b/sfx2/source/doc/templatedlg.src
@@ -80,6 +80,11 @@ String STR_MSG_ERROR_REPOSITORY_NAME
     Text [ en-US ] = "Failed to create repository \"$1\".\nA repository with this name may already exist.";
 };
 
+String STR_INPUT_TEMPLATE_NEW
+{
+    Text [ en-US ] = "Enter template name:";
+};
+
 ModelessDialog DLG_TEMPLATE_MANAGER
 {
     OutputSize = TRUE;
@@ -201,6 +206,12 @@ ModelessDialog DLG_TEMPLATE_MANAGER
                 Hide = TRUE;
                 Text [ en-US ] = "Delete";
             };
+
+            ToolBoxItem
+            {
+                Identifier = TBI_TEMPLATE_SAVE;
+                Text [ en-US ] = "Save";
+            };
         };
     };
 
commit e626da3c527812adcd23916489cf95f995c6ec6f
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Tue Aug 14 19:01:52 2012 -0430

    Show empty folders when display all templates.
    
    Change-Id: Id78a18b00213a3963be583c2ae1b3534eb27df57

diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index 53624b9..4e47e1f 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -63,7 +63,7 @@ public:
             }
         }
 
-        return nVisCount;
+        return meApp != FILTER_APP_NONE ? nVisCount : true ;
     }
 
     bool isValid (const rtl::OUString &rType) const
commit 1e8ad45394fed750f893a3de0f83ff75fd8aa14e
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Tue Aug 14 17:05:39 2012 -0430

    Hide commands that are only for one selected template.
    
    Change-Id: Ib785e13402ec56bdc30a554c4fef6c81803db90f

diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 04bbddc..403c767 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -493,7 +493,11 @@ IMPL_LINK(SfxTemplateManagerDlg, TVTemplateStateHdl, const ThumbnailViewItem*, p
             mpTemplateBar->Show();
         }
         else
+        {
+            mpTemplateBar->HideItem(TBI_TEMPLATE_EDIT);
+            mpTemplateBar->HideItem(TBI_TEMPLATE_PROPERTIES);
             mpTemplateBar->HideItem(TBI_TEMPLATE_DEFAULT);
+        }
 
         maSelTemplates.insert(pItem);
     }
@@ -510,7 +514,11 @@ IMPL_LINK(SfxTemplateManagerDlg, TVTemplateStateHdl, const ThumbnailViewItem*, p
                 mpActionBar->Show();
             }
             else if (maSelTemplates.size() == 1)
+            {
+                mpTemplateBar->ShowItem(TBI_TEMPLATE_EDIT);
+                mpTemplateBar->ShowItem(TBI_TEMPLATE_PROPERTIES);
                 mpTemplateBar->ShowItem(TBI_TEMPLATE_DEFAULT);
+            }
         }
     }
 
commit 7f2dd9ce821923f4f1bb3fe5034c902cc76c372a
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Tue Aug 14 16:49:02 2012 -0430

    Close dialog when clicking the close button.
    
    Change-Id: Idc07559a2635a3fb19cfba07e564c90fad913c12

diff --git a/sfx2/inc/sfx2/templateinfodlg.hxx b/sfx2/inc/sfx2/templateinfodlg.hxx
index 8fe7998..db5c11d 100644
--- a/sfx2/inc/sfx2/templateinfodlg.hxx
+++ b/sfx2/inc/sfx2/templateinfodlg.hxx
@@ -30,6 +30,10 @@ public:
 
     void loadDocument (const OUString &rURL);
 
+protected:
+
+    DECL_LINK (CloseHdl, void*);
+
 private:
 
     PushButton maBtnClose;
diff --git a/sfx2/source/dialog/templateinfodlg.cxx b/sfx2/source/dialog/templateinfodlg.cxx
index 40e3f14..b12d3b3 100644
--- a/sfx2/source/dialog/templateinfodlg.cxx
+++ b/sfx2/source/dialog/templateinfodlg.cxx
@@ -42,6 +42,8 @@ SfxTemplateInfoDlg::SfxTemplateInfoDlg (Window *pParent)
       mpPreviewView(new Window(this)),
       mpInfoView(new svtools::ODocumentInfoPreview(this,WB_LEFT | WB_VSCROLL | WB_READONLY | WB_BORDER | WB_3DLOOK))
 {
+    maBtnClose.SetClickHdl(LINK(this,SfxTemplateInfoDlg,CloseHdl));
+
     Size aWinSize = GetOutputSizePixel();
     aWinSize.setHeight( aWinSize.getHeight() - 3*DLG_BORDER_SIZE - maBtnClose.GetOutputHeightPixel() );
     aWinSize.setWidth( (aWinSize.getWidth() - 3*DLG_BORDER_SIZE)/2 );
@@ -127,4 +129,10 @@ void SfxTemplateInfoDlg::loadDocument(const OUString &rURL)
     }
 }
 
+IMPL_LINK_NOARG (SfxTemplateInfoDlg, CloseHdl)
+{
+    Close();
+    return 0;
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list