[Libreoffice-commits] .: Branch 'feature/template-dialog' - 9 commits - sfx2/inc sfx2/source

Rafael Dominguez rdominguez at kemper.freedesktop.org
Sun Jun 24 10:31:34 PDT 2012


 sfx2/inc/sfx2/templatefolderview.hxx       |    5 
 sfx2/inc/sfx2/templateview.hxx             |    2 
 sfx2/inc/sfx2/templateviewitem.hxx         |    5 
 sfx2/inc/templatedlg.hxx                   |   11 ++
 sfx2/source/control/templatefolderview.cxx |   59 ++++++++++
 sfx2/source/control/templateview.cxx       |   18 +++
 sfx2/source/doc/templatedlg.cxx            |  157 ++++++++++++++++++++++++++++-
 7 files changed, 255 insertions(+), 2 deletions(-)

New commits:
commit f7ef4c3808de41cd42ef9198f27b5f2ff84799c2
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Jun 24 12:52:42 2012 -0430

    Display/Hide search edit box when clicking the toolbox button.
    
    Change-Id: I553219699b0d132c115767d70511f11dd887bf8f

diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx
index 0ad84cb..d606fd4 100644
--- a/sfx2/inc/templatedlg.hxx
+++ b/sfx2/inc/templatedlg.hxx
@@ -15,6 +15,7 @@
 #include <vcl/dialog.hxx>
 #include <vcl/button.hxx>
 
+class Edit;
 class TemplateFolderView;
 class ThumbnailViewItem;
 class ToolBox;
@@ -70,6 +71,7 @@ private:
     PushButton aButtonDraws;
     ImageButton maButtonSelMode;
 
+    Edit *mpSearchEdit;
     ToolBox *mpViewBar;
     ToolBox *mpActionBar;
     ToolBox *mpTemplateBar;
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 23d5230..b1b6395 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -18,6 +18,7 @@
 #include <sfx2/thumbnailviewitem.hxx>
 #include <tools/urlobj.hxx>
 #include <unotools/moduleoptions.hxx>
+#include <vcl/edit.hxx>
 #include <vcl/toolbox.hxx>
 
 #include <com/sun/star/beans/PropertyValue.hpp>
@@ -34,6 +35,7 @@
 #define MAX_LINE_COUNT 2
 
 #define PADDING_TOOLBAR_VIEW    15
+#define PADDING_DLG_BORDER      10
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::beans;
@@ -47,6 +49,7 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
       aButtonSheets(this,SfxResId(BTN_SELECT_SHEETS)),
       aButtonDraws(this,SfxResId(BTN_SELECT_DRAWS)),
       maButtonSelMode(this,SfxResId(BTN_SELECTION_MODE)),
+      mpSearchEdit(new Edit(this,WB_HIDE | WB_BORDER)),
       mpViewBar( new ToolBox(this, SfxResId(TBX_ACTION_VIEW))),
       mpActionBar( new ToolBox(this, SfxResId(TBX_ACTION_ACTION))),
       mpTemplateBar( new ToolBox(this, SfxResId(TBX_ACTION_TEMPLATES))),
@@ -87,6 +90,13 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
     aViewPos.setY(aActionPos.Y() + aActionSize.getHeight() + PADDING_TOOLBAR_VIEW);
     maView->SetPosPixel(aViewPos);
 
+    // Set search box position and size
+    Size aSearchSize = mpSearchEdit->CalcMinimumSize();
+    aSearchSize.setWidth(aWinSize.getWidth() - 2*PADDING_DLG_BORDER);
+
+    mpSearchEdit->SetSizePixel(aSearchSize);
+    mpSearchEdit->SetPosPixel(Point(PADDING_DLG_BORDER,aActionPos.Y()+aActionSize.getHeight()));
+
     maView->SetStyle(WB_TABSTOP | WB_VSCROLL);
     maView->SetColCount(MAX_COLUMN_COUNT);
     maView->SetLineCount(MAX_LINE_COUNT);
@@ -341,6 +351,22 @@ void SfxTemplateManagerDlg::OnTemplateImport ()
 
 void SfxTemplateManagerDlg::OnTemplateSearch ()
 {
+    Point aPos = maView->GetPosPixel();
+    bool bVisible = mpSearchEdit->IsVisible();
+
+    if (bVisible)
+    {
+        aPos.setY(aPos.getY() - mpSearchEdit->GetSizePixel().getHeight());
+        mpActionBar->SetItemState(TBI_TEMPLATE_SEARCH,STATE_NOCHECK);
+    }
+    else
+    {
+        aPos.setY(aPos.getY() + mpSearchEdit->GetSizePixel().getHeight());
+        mpActionBar->SetItemState(TBI_TEMPLATE_SEARCH,STATE_CHECK);
+    }
+
+    maView->SetPosPixel(aPos);
+    mpSearchEdit->Show(!bVisible);
 }
 
 void SfxTemplateManagerDlg::OnTemplateAction ()
commit 9cc086f46250156167f68cab81c42296b045438d
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Jun 24 10:00:17 2012 -0430

    Delete selected templates when clicking delete toolbar button.
    
    Change-Id: I4ad2ea913ab7a8f68b6010cedc8a2a2a72eea0bd

diff --git a/sfx2/inc/sfx2/templatefolderview.hxx b/sfx2/inc/sfx2/templatefolderview.hxx
index 2558025..5ae7385 100644
--- a/sfx2/inc/sfx2/templatefolderview.hxx
+++ b/sfx2/inc/sfx2/templatefolderview.hxx
@@ -45,6 +45,8 @@ public:
 
     void setTemplateStateHdl (const Link &aLink) { maTemplateStateHdl = aLink; }
 
+    bool removeTemplate (const sal_uInt16 nItemId);
+
     void copyFrom (TemplateFolderViewItem *pItem, const rtl::OUString &rPath);
 
 private:
diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx
index 3f6419d..caef6bd 100644
--- a/sfx2/source/control/templatefolderview.cxx
+++ b/sfx2/source/control/templatefolderview.cxx
@@ -342,6 +342,42 @@ void TemplateFolderView::filterTemplatesByApp (const FILTER_APPLICATION &eApp)
     }
 }
 
+bool TemplateFolderView::removeTemplate (const sal_uInt16 nItemId)
+{
+    sal_uInt16 nRegionId = mpItemView->getRegionId();
+    sal_uInt16 nItemRegionId = nRegionId + 1;
+    sal_uInt16 nTemplateId = nItemId - 1;
+
+    if (!mpDocTemplates->Delete(nRegionId,nTemplateId))
+        return false;
+
+    for (size_t i = 0, n = mItemList.size(); i < n; ++i)
+    {
+        if (mItemList[i]->mnId == nItemRegionId)
+        {
+
+            TemplateFolderViewItem *pItem = static_cast<TemplateFolderViewItem*>(mItemList[i]);
+            std::vector<TemplateViewItem*>::iterator pIter;
+            for (pIter = pItem->maTemplates.begin(); pIter != pItem->maTemplates.end(); ++pIter)
+            {
+                if ((*pIter)->mnId == nItemId)
+                {
+                    delete *pIter;
+
+                    pItem->maTemplates.erase(pIter);
+
+                    mpItemView->RemoveItem(nItemId);
+                    break;
+                }
+            }
+
+            break;
+        }
+    }
+
+    return true;
+}
+
 void TemplateFolderView::copyFrom (TemplateFolderViewItem *pItem, const rtl::OUString &rPath)
 {
     sal_uInt16 nId = 0;
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 16f398a..23d5230 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -381,6 +381,14 @@ void SfxTemplateManagerDlg::OnTemplateMove ()
 
 void SfxTemplateManagerDlg::OnTemplateDelete ()
 {
+    std::set<const ThumbnailViewItem*>::const_iterator pIter;
+    for (pIter = maSelTemplates.begin(); pIter != maSelTemplates.end();)
+    {
+        if (maView->removeTemplate((*pIter)->mnId))
+            maSelTemplates.erase(pIter++);
+        else
+            ++pIter;
+    }
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 64f9aa20e2c46385f528bebebcf32680dd39dab6
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Jun 24 08:33:30 2012 -0430

    Set correct handler to keep track of folder item state.
    
    Change-Id: I4d2d30515f22f04ce259689b3ad210c149b1191a

diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 492d40a..16f398a 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -91,7 +91,7 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
     maView->SetColCount(MAX_COLUMN_COUNT);
     maView->SetLineCount(MAX_LINE_COUNT);
 
-    maView->setItemStateHdl(LINK(this,SfxTemplateManagerDlg,TVTemplateStateHdl));
+    maView->setItemStateHdl(LINK(this,SfxTemplateManagerDlg,TVFolderStateHdl));
     maView->setTemplateStateHdl(LINK(this,SfxTemplateManagerDlg,TVTemplateStateHdl));
 
     aButtonAll.SetClickHdl(LINK(this,SfxTemplateManagerDlg,ViewAllHdl));
commit 496c8232c4f97e5feb507ec1dda5d9454825737d
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Jun 24 08:25:32 2012 -0430

    Import multiple templates from filesystem to selected folders.
    
    Change-Id: I285d2e429592bb170db6500d6751b6ef9bfad1db

diff --git a/sfx2/inc/sfx2/templatefolderview.hxx b/sfx2/inc/sfx2/templatefolderview.hxx
index 6433777..2558025 100644
--- a/sfx2/inc/sfx2/templatefolderview.hxx
+++ b/sfx2/inc/sfx2/templatefolderview.hxx
@@ -13,6 +13,7 @@
 #include <sfx2/thumbnailview.hxx>
 
 class SfxDocumentTemplates;
+class TemplateFolderViewItem;
 class TemplateView;
 
 enum FILTER_APPLICATION
@@ -44,6 +45,8 @@ public:
 
     void setTemplateStateHdl (const Link &aLink) { maTemplateStateHdl = aLink; }
 
+    void copyFrom (TemplateFolderViewItem *pItem, const rtl::OUString &rPath);
+
 private:
 
     virtual void OnSelectionMode (bool bMode);
diff --git a/sfx2/inc/sfx2/templateview.hxx b/sfx2/inc/sfx2/templateview.hxx
index f54f707..b3c6b6a 100644
--- a/sfx2/inc/sfx2/templateview.hxx
+++ b/sfx2/inc/sfx2/templateview.hxx
@@ -30,6 +30,8 @@ public:
 
     virtual void Paint (const Rectangle &rRect);
 
+    void InsertItem (const TemplateViewItem *pItem);
+
     void InsertItems (const std::vector<TemplateViewItem*> &rTemplates);
 
 protected:
diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx
index 104ae15..3f6419d 100644
--- a/sfx2/source/control/templatefolderview.cxx
+++ b/sfx2/source/control/templatefolderview.cxx
@@ -342,6 +342,28 @@ void TemplateFolderView::filterTemplatesByApp (const FILTER_APPLICATION &eApp)
     }
 }
 
+void TemplateFolderView::copyFrom (TemplateFolderViewItem *pItem, const rtl::OUString &rPath)
+{
+    sal_uInt16 nId = 0;
+    sal_uInt16 nRegionId = pItem->mnId - 1;
+    String aPath(rPath);
+
+    if (!mItemList.empty())
+        nId = (mItemList.back())->mnId+1;
+
+    if (mpDocTemplates->CopyFrom(nRegionId,nId,aPath))
+    {
+        TemplateViewItem *pTemplate = new TemplateViewItem(*mpItemView,mpItemView);
+        pTemplate->mnId = nId;
+        pTemplate->maText = mpDocTemplates->GetName(nRegionId,nId);
+        pTemplate->maPreview1 = lcl_fetchThumbnail(rPath,128,128);
+        pTemplate->setPath(rPath);
+        pTemplate->setFileType(SvFileInformationManager::GetDescription(INetURLObject(rPath)));
+
+        pItem->maTemplates.push_back(pTemplate);
+    }
+}
+
 void TemplateFolderView::OnSelectionMode (bool bMode)
 {
     if (mpItemView->IsVisible())
diff --git a/sfx2/source/control/templateview.cxx b/sfx2/source/control/templateview.cxx
index 74088cc..eb81867 100644
--- a/sfx2/source/control/templateview.cxx
+++ b/sfx2/source/control/templateview.cxx
@@ -90,6 +90,23 @@ void TemplateView::Paint (const Rectangle &rRect)
     mpProcessor->process(aSeq);
 }
 
+void TemplateView::InsertItem (const TemplateViewItem *pItem)
+{
+    TemplateViewItem *pCloneItem = new TemplateViewItem(*this,this);
+
+    pCloneItem->mnId = pItem->mnId;
+    pCloneItem->maText = pItem->maText;
+    pCloneItem->setPath(pItem->getPath());
+    pCloneItem->setFileType(pItem->getFileType());
+    pCloneItem->maPreview1 = pItem->maPreview1;
+
+    mItemList.push_back(pCloneItem);
+
+    CalculateItemPositions();
+
+    Invalidate();
+}
+
 void TemplateView::InsertItems (const std::vector<TemplateViewItem*> &rTemplates)
 {
     for (size_t i = 0, n = rTemplates.size(); i < n; ++i )
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index ca97f85..492d40a 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -13,6 +13,7 @@
 #include <sfx2/filedlghelper.hxx>
 #include <sfx2/sfxresid.hxx>
 #include <sfx2/templatefolderview.hxx>
+#include <sfx2/templatefolderviewitem.hxx>
 #include <sfx2/templateviewitem.hxx>
 #include <sfx2/thumbnailviewitem.hxx>
 #include <tools/urlobj.hxx>
@@ -318,15 +319,22 @@ void SfxTemplateManagerDlg::OnTemplateImport ()
     aFileDlg.AddFilter( sFilterName, sFilterExt );
     aFileDlg.SetCurrentFilter( sFilterName );
 
-    aFileDlg.Execute();
+    ErrCode nCode = aFileDlg.Execute();
 
-    if ( aFileDlg.GetError() == ERRCODE_NONE )
+    if ( nCode == ERRCODE_NONE )
     {
         com::sun::star::uno::Sequence< ::rtl::OUString > aFiles = aFileDlg.GetSelectedFiles();
 
         if (aFiles.hasElements())
         {
+            std::set<const ThumbnailViewItem*>::const_iterator pIter;
+            for (pIter = maSelFolders.begin(); pIter != maSelFolders.end(); ++pIter)
+            {
+                TemplateFolderViewItem *pFolder = (TemplateFolderViewItem*)(*pIter);
 
+                for (size_t i = 0, n = aFiles.getLength(); i < n; ++i)
+                    maView->copyFrom(pFolder,aFiles[i]);
+            }
         }
     }
 }
commit 199b2f8023e4c1e9242d3b83f62027ee81cbaa3e
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Jun 24 08:23:15 2012 -0430

    Keep track of selected folders in TemplateManager dialog.
    
    Change-Id: I9348d73ec70dc0ab222682736640bbe0ca28bf6f

diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx
index 75dd36f..0ad84cb 100644
--- a/sfx2/inc/templatedlg.hxx
+++ b/sfx2/inc/templatedlg.hxx
@@ -77,6 +77,7 @@ private:
 
     int mnSelectionCount;
     std::set<const ThumbnailViewItem*> maSelTemplates;
+    std::set<const ThumbnailViewItem*> maSelFolders;
 
     com::sun::star::uno::Reference< com::sun::star::frame::XComponentLoader > mxDesktop;
 };
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 83bc005..ca97f85 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -215,6 +215,15 @@ IMPL_LINK_NOARG(SfxTemplateManagerDlg,TBXTemplateHdl)
 
 IMPL_LINK(SfxTemplateManagerDlg, TVFolderStateHdl, const ThumbnailViewItem*, pItem)
 {
+    if (pItem->isSelected())
+    {
+        maSelFolders.insert(pItem);
+    }
+    else
+    {
+        maSelFolders.erase(pItem);
+    }
+
     return 0;
 }
 
commit 4de494c8e73f35a66647c31ce61cb01f5d9353cd
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Jun 24 02:20:13 2012 -0430

    Display file picker dialog when clicking import template toolbox button.
    
    Change-Id: Id4eba9076163f2d2b2916ad253236c0c377da37c

diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index bb60bd5..83bc005 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -10,11 +10,13 @@
 #include "templatedlg.hxx"
 
 #include <comphelper/processfactory.hxx>
+#include <sfx2/filedlghelper.hxx>
 #include <sfx2/sfxresid.hxx>
 #include <sfx2/templatefolderview.hxx>
 #include <sfx2/templateviewitem.hxx>
 #include <sfx2/thumbnailviewitem.hxx>
 #include <tools/urlobj.hxx>
+#include <unotools/moduleoptions.hxx>
 #include <vcl/toolbox.hxx>
 
 #include <com/sun/star/beans/PropertyValue.hpp>
@@ -22,6 +24,7 @@
 #include <com/sun/star/frame/XStorable.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
 
 #include "doc.hrc"
 #include "templatedlg.hrc"
@@ -252,6 +255,71 @@ void SfxTemplateManagerDlg::OnTemplateCreate ()
 
 void SfxTemplateManagerDlg::OnTemplateImport ()
 {
+    sal_Int16 nDialogType =
+        com::sun::star::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE;
+
+    sfx2::FileDialogHelper aFileDlg(nDialogType, SFXWB_MULTISELECTION);
+
+    // add "All" filter
+    aFileDlg.AddFilter( String(SfxResId( STR_SFX_FILTERNAME_ALL) ),
+                        DEFINE_CONST_UNICODE(FILEDIALOG_FILTER_ALL) );
+
+    // add template filter
+    rtl::OUString sFilterExt;
+    rtl::OUString sFilterName( SfxResId( STR_TEMPLATE_FILTER ).toString() );
+
+    // add filters of modules which are installed
+    SvtModuleOptions aModuleOpt;
+    if ( aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SWRITER ) )
+        sFilterExt += "*.ott;*.stw;*.oth";
+
+    if ( aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SCALC ) )
+    {
+        if ( !sFilterExt.isEmpty() )
+            sFilterExt += ";";
+
+        sFilterExt += "*.ots;*.stc";
+    }
+
+    if ( aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SIMPRESS ) )
+    {
+        if ( !sFilterExt.isEmpty() )
+            sFilterExt += ";";
+
+        sFilterExt += "*.otp;*.sti";
+    }
+
+    if ( aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SDRAW ) )
+    {
+        if ( !sFilterExt.isEmpty() )
+            sFilterExt += ";";
+
+        sFilterExt += "*.otg;*.std";
+    }
+
+    if ( !sFilterExt.isEmpty() )
+        sFilterExt += ";";
+
+    sFilterExt += "*.vor";
+
+    sFilterName += " (";
+    sFilterName += sFilterExt;
+    sFilterName += ")";
+
+    aFileDlg.AddFilter( sFilterName, sFilterExt );
+    aFileDlg.SetCurrentFilter( sFilterName );
+
+    aFileDlg.Execute();
+
+    if ( aFileDlg.GetError() == ERRCODE_NONE )
+    {
+        com::sun::star::uno::Sequence< ::rtl::OUString > aFiles = aFileDlg.GetSelectedFiles();
+
+        if (aFiles.hasElements())
+        {
+
+        }
+    }
 }
 
 void SfxTemplateManagerDlg::OnTemplateSearch ()
commit 6cf42f89b1f4908405d75d6ed1072be57d914cdc
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Jun 23 23:16:06 2012 -0430

    Open template for editing when clicking on the edit toolbox button.
    
    Change-Id: If965e52694a856bdd8827486682ce9531786a149

diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 8b3bfad..bb60bd5 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -12,10 +12,14 @@
 #include <comphelper/processfactory.hxx>
 #include <sfx2/sfxresid.hxx>
 #include <sfx2/templatefolderview.hxx>
+#include <sfx2/templateviewitem.hxx>
 #include <sfx2/thumbnailviewitem.hxx>
+#include <tools/urlobj.hxx>
 #include <vcl/toolbox.hxx>
 
+#include <com/sun/star/beans/PropertyValue.hpp>
 #include <com/sun/star/frame/XComponentLoader.hpp>
+#include <com/sun/star/frame/XStorable.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 
@@ -28,6 +32,7 @@
 #define PADDING_TOOLBAR_VIEW    15
 
 using namespace ::com::sun::star;
+using namespace ::com::sun::star::beans;
 using namespace ::com::sun::star::frame;
 
 SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
@@ -259,6 +264,26 @@ void SfxTemplateManagerDlg::OnTemplateAction ()
 
 void SfxTemplateManagerDlg::OnTemplateEdit ()
 {
+    uno::Sequence< PropertyValue > aArgs(1);
+    aArgs[0].Name = "AsTemplate";
+    aArgs[0].Value <<= sal_False;
+
+    uno::Reference< XStorable > xStorable;
+    std::set<const ThumbnailViewItem*>::const_iterator pIter;
+    for (pIter = maSelTemplates.begin(); pIter != maSelTemplates.end(); ++pIter)
+    {
+        const TemplateViewItem *pItem = static_cast<const TemplateViewItem*>(*pIter);
+
+        try
+        {
+            xStorable = uno::Reference< XStorable >(
+                        mxDesktop->loadComponentFromURL(pItem->getPath(),rtl::OUString("_blank"), 0, aArgs ),
+                        uno::UNO_QUERY );
+        }
+        catch( const uno::Exception& )
+        {
+        }
+    }
 }
 
 void SfxTemplateManagerDlg::OnTemplateProperties ()
commit 3c5b59e3864ce231acd9697ed6a48155f74a34a6
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Jun 23 23:15:18 2012 -0430

    Read and set template path attribute in TemplateViewItem.
    
    Change-Id: Id9cca6d8a716d7f99904db8cba21d7f4c1fe2074

diff --git a/sfx2/inc/sfx2/templateviewitem.hxx b/sfx2/inc/sfx2/templateviewitem.hxx
index f9797f4..ffb72cd 100644
--- a/sfx2/inc/sfx2/templateviewitem.hxx
+++ b/sfx2/inc/sfx2/templateviewitem.hxx
@@ -20,6 +20,10 @@ public:
 
     virtual ~TemplateViewItem ();
 
+    void setPath (const rtl::OUString &rPath) { maPath = rPath; }
+
+    const rtl::OUString& getPath () const { return maPath; }
+
     void setAuthor (const rtl::OUString &rAuthor) { maAuthor = rAuthor; }
 
     const rtl::OUString& getAuthor () const { return maAuthor; }
@@ -34,6 +38,7 @@ public:
 
 private:
 
+    rtl::OUString maPath;
     rtl::OUString maAuthor;
     rtl::OUString maKeywords;
     rtl::OUString maFileType;
diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx
index ac2fa43..104ae15 100644
--- a/sfx2/source/control/templatefolderview.cxx
+++ b/sfx2/source/control/templatefolderview.cxx
@@ -283,6 +283,7 @@ void TemplateFolderView::Populate ()
                 TemplateViewItem *pTemplateItem = new TemplateViewItem(*mpItemView,mpItemView);
                 pTemplateItem->mnId = j+1;
                 pTemplateItem->maText = mpDocTemplates->GetName(i,j);
+                pTemplateItem->setPath(aURL);
                 pTemplateItem->setFileType(aType);
                 pTemplateItem->maPreview1 = lcl_fetchThumbnail(aURL,128,128);
 
diff --git a/sfx2/source/control/templateview.cxx b/sfx2/source/control/templateview.cxx
index 6ff1c1f..74088cc 100644
--- a/sfx2/source/control/templateview.cxx
+++ b/sfx2/source/control/templateview.cxx
@@ -99,6 +99,7 @@ void TemplateView::InsertItems (const std::vector<TemplateViewItem*> &rTemplates
 
         pItem->mnId = pCur->mnId;
         pItem->maText = pCur->maText;
+        pItem->setPath(pCur->getPath());
         pItem->setFileType(pCur->getFileType());
         pItem->maPreview1 = pCur->maPreview1;
 
commit 9ab2176b43647eedd4fcc1c47c747214433a7e1c
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Jun 23 22:20:11 2012 -0430

    Create an instance of com.sun.star.frame.Desktop service.
    
    Change-Id: Iac9891502eed15ab60674f12d4efe1728937c22a

diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx
index 256f8ce..75dd36f 100644
--- a/sfx2/inc/templatedlg.hxx
+++ b/sfx2/inc/templatedlg.hxx
@@ -19,6 +19,12 @@ class TemplateFolderView;
 class ThumbnailViewItem;
 class ToolBox;
 
+namespace com {
+    namespace sun { namespace star { namespace frame {
+        class XComponentLoader;
+    }   }   }
+}
+
 class SfxTemplateManagerDlg : public ModalDialog
 {
 public:
@@ -71,6 +77,8 @@ private:
 
     int mnSelectionCount;
     std::set<const ThumbnailViewItem*> maSelTemplates;
+
+    com::sun::star::uno::Reference< com::sun::star::frame::XComponentLoader > mxDesktop;
 };
 
 #endif // TEMPLATEDLG_HXX
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index d490ff5..8b3bfad 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -9,11 +9,16 @@
 
 #include "templatedlg.hxx"
 
+#include <comphelper/processfactory.hxx>
 #include <sfx2/sfxresid.hxx>
 #include <sfx2/templatefolderview.hxx>
 #include <sfx2/thumbnailviewitem.hxx>
 #include <vcl/toolbox.hxx>
 
+#include <com/sun/star/frame/XComponentLoader.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+
 #include "doc.hrc"
 #include "templatedlg.hrc"
 
@@ -22,6 +27,9 @@
 
 #define PADDING_TOOLBAR_VIEW    15
 
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::frame;
+
 SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
     : ModalDialog(parent, SfxResId(DLG_TEMPLATE_MANAGER)),
       aButtonAll(this,SfxResId(BTN_SELECT_ALL)),
@@ -34,7 +42,8 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
       mpActionBar( new ToolBox(this, SfxResId(TBX_ACTION_ACTION))),
       mpTemplateBar( new ToolBox(this, SfxResId(TBX_ACTION_TEMPLATES))),
       maView(new TemplateFolderView(this,SfxResId(TEMPLATE_VIEW))),
-      mnSelectionCount(0)
+      mnSelectionCount(0),
+      mxDesktop(comphelper::getProcessServiceFactory()->createInstance( "com.sun.star.frame.Desktop" ),uno::UNO_QUERY )
 {
     maButtonSelMode.SetStyle(maButtonSelMode.GetStyle() | WB_TOGGLE);
 


More information about the Libreoffice-commits mailing list