[Libreoffice-commits] .: Branch 'feature/calc-xml-source' - sc/inc sc/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Fri Sep 28 17:22:06 PDT 2012
sc/inc/scabstdlg.hxx | 2 -
sc/source/ui/attrdlg/scdlgfact.cxx | 4 +-
sc/source/ui/attrdlg/scdlgfact.hxx | 2 -
sc/source/ui/inc/xmlsourcedlg.hxx | 14 +++++++++
sc/source/ui/view/cellsh1.cxx | 2 -
sc/source/ui/xmlsource/xmlsourcedlg.cxx | 46 ++++++++++++++++++++++++++++++--
6 files changed, 62 insertions(+), 8 deletions(-)
New commits:
commit 6072c41d03ab3742c282e1b633380e552a684d25
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Fri Sep 28 20:22:23 2012 -0400
Use file picker dialog to pick the source xml file.
Change-Id: Ie927d8a83fa93e3f61c2c2133fe655854667854c
diff --git a/sc/inc/scabstdlg.hxx b/sc/inc/scabstdlg.hxx
index 9623615..5c04cec 100644
--- a/sc/inc/scabstdlg.hxx
+++ b/sc/inc/scabstdlg.hxx
@@ -537,7 +537,7 @@ public:
virtual SfxAbstractTabDialog * CreateScSortDlg( Window* pParent, //add for ScSortDlg
const SfxItemSet* pArgSet,int nId ) = 0;
- virtual AbstractScXMLSourceDlg* CreateScXMLSourceDlg(Window* pParent, int nId) = 0;
+ virtual AbstractScXMLSourceDlg* CreateScXMLSourceDlg(Window* pParent, ScDocument* pDoc, int nId) = 0;
// for tabpage
virtual CreateTabPage GetTabPageCreatorFunc( sal_uInt16 nId ) = 0;
diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx
index 9257a9e..d437807 100644
--- a/sc/source/ui/attrdlg/scdlgfact.cxx
+++ b/sc/source/ui/attrdlg/scdlgfact.cxx
@@ -1596,9 +1596,9 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScSortDlg( Window*
return 0;
}
-AbstractScXMLSourceDlg* ScAbstractDialogFactory_Impl::CreateScXMLSourceDlg(Window* pParent, int nId)
+AbstractScXMLSourceDlg* ScAbstractDialogFactory_Impl::CreateScXMLSourceDlg(Window* pParent, ScDocument* pDoc, int nId)
{
- ScXMLSourceDlg* pDlg = (nId == RID_SCDLG_XML_SOURCE) ? new ScXMLSourceDlg(pParent) : NULL;
+ ScXMLSourceDlg* pDlg = (nId == RID_SCDLG_XML_SOURCE) ? new ScXMLSourceDlg(pParent, pDoc) : NULL;
return pDlg ? new AbstractScXMLSourceDlg_Impl(pDlg) : NULL;
}
diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx b/sc/source/ui/attrdlg/scdlgfact.hxx
index 73b35d9..c250582 100644
--- a/sc/source/ui/attrdlg/scdlgfact.hxx
+++ b/sc/source/ui/attrdlg/scdlgfact.hxx
@@ -610,7 +610,7 @@ public:
virtual SfxAbstractTabDialog * CreateScSortDlg( Window* pParent, //add for ScSortDlg
const SfxItemSet* pArgSet,int nId );
- virtual AbstractScXMLSourceDlg* CreateScXMLSourceDlg(Window* pParent, int nId);
+ virtual AbstractScXMLSourceDlg* CreateScXMLSourceDlg(Window* pParent, ScDocument* pDoc, int nId);
// For TabPage
virtual CreateTabPage GetTabPageCreatorFunc( sal_uInt16 nId );
diff --git a/sc/source/ui/inc/xmlsourcedlg.hxx b/sc/source/ui/inc/xmlsourcedlg.hxx
index 2213d42..5a54c70 100644
--- a/sc/source/ui/inc/xmlsourcedlg.hxx
+++ b/sc/source/ui/inc/xmlsourcedlg.hxx
@@ -15,6 +15,10 @@
#include "vcl/fixed.hxx"
#include "svtools/svtreebx.hxx"
+#include <boost/scoped_ptr.hpp>
+
+class ScDocument;
+
class ScXMLSourceTree : public SvTreeListBox
{
Image maImgElemDefault;
@@ -37,9 +41,17 @@ class ScXMLSourceDlg : public ModalDialog
Image maImgFileOpen;
+ ScDocument* mpDoc;
+
public:
- ScXMLSourceDlg(Window* pParent);
+ ScXMLSourceDlg(Window* pParent, ScDocument* pDoc);
virtual ~ScXMLSourceDlg();
+
+private:
+
+ void SelectSourceFile();
+
+ DECL_LINK(BtnPressedHdl, Button*);
};
#endif
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 074f69a..4a3c6c8 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -2451,7 +2451,7 @@ void ScCellShell::ExecuteXMLSourceDialog()
boost::scoped_ptr<AbstractScXMLSourceDlg> pDlg(
pFact->CreateScXMLSourceDlg(
- pTabViewShell->GetDialogParent(), RID_SCDLG_XML_SOURCE));
+ pTabViewShell->GetDialogParent(), GetViewData()->GetDocument(), RID_SCDLG_XML_SOURCE));
if (!pDlg)
return;
diff --git a/sc/source/ui/xmlsource/xmlsourcedlg.cxx b/sc/source/ui/xmlsource/xmlsourcedlg.cxx
index 378ba5f..e44f5c0 100644
--- a/sc/source/ui/xmlsource/xmlsourcedlg.cxx
+++ b/sc/source/ui/xmlsource/xmlsourcedlg.cxx
@@ -11,6 +11,14 @@
#include "xmlsourcedlg.hrc"
#include "scresid.hxx"
+#include "document.hxx"
+
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
+#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
+
+using namespace com::sun::star;
+
ScXMLSourceTree::ScXMLSourceTree(Window* pParent, const ResId& rResId) :
SvTreeListBox(pParent, rResId),
@@ -30,7 +38,7 @@ ScXMLSourceTree::ScXMLSourceTree(Window* pParent, const ResId& rResId) :
Expand(pPar);
}
-ScXMLSourceDlg::ScXMLSourceDlg(Window* pParent) :
+ScXMLSourceDlg::ScXMLSourceDlg(Window* pParent, ScDocument* pDoc) :
ModalDialog(pParent, ScResId(RID_SCDLG_XML_SOURCE)),
maFlSourceFile(this, ScResId(FL_SOURCE_FILE)),
maBtnSelectSource(this, ScResId(BTN_SELECT_SOURCE_FILE)),
@@ -38,14 +46,48 @@ ScXMLSourceDlg::ScXMLSourceDlg(Window* pParent) :
maFtMapXmlDoc(this, ScResId(FL_MAP_XML_TO_DOCUMENT)),
maLbTree(this, ScResId(LB_SOURCE_TREE)),
maBtnCancel(this, ScResId(BTN_CANCEL)),
- maImgFileOpen(ScResId(IMG_FILE_OPEN))
+ maImgFileOpen(ScResId(IMG_FILE_OPEN)),
+ mpDoc(pDoc)
{
maBtnSelectSource.SetModeImage(maImgFileOpen);
FreeResource();
+
+ maBtnSelectSource.SetClickHdl(LINK(this, ScXMLSourceDlg, BtnPressedHdl));
}
ScXMLSourceDlg::~ScXMLSourceDlg()
{
}
+void ScXMLSourceDlg::SelectSourceFile()
+{
+ uno::Reference<lang::XMultiServiceFactory> xServiceMgr = mpDoc->GetServiceManager();
+ if (!xServiceMgr.is())
+ return;
+
+ uno::Reference<ui::dialogs::XFilePicker> xFilePicker(
+ xServiceMgr->createInstance("com.sun.star.ui.dialogs.FilePicker"), uno::UNO_QUERY);
+
+ if (!xFilePicker.is())
+ return;
+
+ if (xFilePicker->execute() != ui::dialogs::ExecutableDialogResults::OK)
+ // File picker dialog cancelled.
+ return;
+
+ uno::Sequence<OUString> aFiles = xFilePicker->getFiles();
+ if (!aFiles.getLength())
+ return;
+
+ // There should only be one file returned from the file picker.
+ maFtSourceFile.SetText(aFiles[0]);
+}
+
+IMPL_LINK(ScXMLSourceDlg, BtnPressedHdl, Button*, pBtn)
+{
+ if (pBtn == &maBtnSelectSource)
+ SelectSourceFile();
+ return 0;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list