Kaydet (Commit) 31ba2cb2 authored tarafından David Tardon's avatar David Tardon

add convenience functions to handle dirs

Change-Id: I81c94565e09e0d839d95bf4f09b029838bb37ad5
üst ccb51e13
...@@ -31,6 +31,9 @@ public: ...@@ -31,6 +31,9 @@ public:
explicit DirectoryStream(const com::sun::star::uno::Reference<com::sun::star::ucb::XContent> &xContent); explicit DirectoryStream(const com::sun::star::uno::Reference<com::sun::star::ucb::XContent> &xContent);
virtual ~DirectoryStream(); virtual ~DirectoryStream();
static DirectoryStream *createForParent(const com::sun::star::uno::Reference<com::sun::star::ucb::XContent> &xContent);
static bool isDirectory(const com::sun::star::uno::Reference<com::sun::star::ucb::XContent> &xContent);
virtual bool isStructured() SAL_OVERRIDE; virtual bool isStructured() SAL_OVERRIDE;
virtual unsigned subStreamCount() SAL_OVERRIDE; virtual unsigned subStreamCount() SAL_OVERRIDE;
virtual const char *subStreamName(unsigned id) SAL_OVERRIDE; virtual const char *subStreamName(unsigned id) SAL_OVERRIDE;
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
* For further information visit http://libwpd.sourceforge.net * For further information visit http://libwpd.sourceforge.net
*/ */
#include <com/sun/star/container/XChild.hpp>
#include <com/sun/star/io/XInputStream.hpp> #include <com/sun/star/io/XInputStream.hpp>
#include <com/sun/star/sdbc/XResultSet.hpp> #include <com/sun/star/sdbc/XResultSet.hpp>
#include <com/sun/star/sdbc/XRow.hpp> #include <com/sun/star/sdbc/XRow.hpp>
...@@ -38,6 +39,7 @@ ...@@ -38,6 +39,7 @@
#include <writerperfect/DirectoryStream.hxx> #include <writerperfect/DirectoryStream.hxx>
#include <writerperfect/WPXSvInputStream.hxx> #include <writerperfect/WPXSvInputStream.hxx>
namespace container = com::sun::star::container;
namespace io = com::sun::star::io; namespace io = com::sun::star::io;
namespace sdbc = com::sun::star::sdbc; namespace sdbc = com::sun::star::sdbc;
namespace ucb = com::sun::star::ucb; namespace ucb = com::sun::star::ucb;
...@@ -112,6 +114,45 @@ DirectoryStream::~DirectoryStream() ...@@ -112,6 +114,45 @@ DirectoryStream::~DirectoryStream()
delete m_pImpl; delete m_pImpl;
} }
DirectoryStream *DirectoryStream::createForParent(const com::sun::star::uno::Reference<com::sun::star::ucb::XContent> &xContent) try
{
if (!xContent.is())
return 0;
DirectoryStream *pDir(0);
const uno::Reference<container::XChild> xChild(xContent, uno::UNO_QUERY);
if (xChild.is())
{
const uno::Reference<ucb::XContent> xDirContent(xChild->getParent(), uno::UNO_QUERY);
if (xDirContent.is())
{
pDir = new writerperfect::DirectoryStream(xDirContent);
if (!pDir->isStructured())
pDir = 0;
}
}
return pDir;
}
catch (...)
{
return 0;
}
bool DirectoryStream::isDirectory(const com::sun::star::uno::Reference<com::sun::star::ucb::XContent> &xContent) try
{
if (!xContent.is())
return false;
ucbhelper::Content aContent(xContent, uno::Reference<ucb::XCommandEnvironment>(), comphelper::getProcessComponentContext());
return aContent.isFolder();
}
catch (...)
{
return false;
}
bool DirectoryStream::isStructured() bool DirectoryStream::isStructured()
{ {
return true; return true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment