diff options
author | Kohei Yoshida <kyoshida@novell.com> | 2009-12-29 13:58:51 -0500 |
---|---|---|
committer | Kohei Yoshida <kyoshida@novell.com> | 2009-12-29 13:58:51 -0500 |
commit | 20049d18a5997b0c02283af9c7697bea3560c1a9 (patch) | |
tree | c695fc375a37cf3fec88983b4909e35ffddd80d9 | |
parent | 2605839fcb9701ebf3b9f1b773ad91cb3b669f78 (diff) |
Close the loaded document properly.
-rw-r--r-- | source/main.cxx | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/source/main.cxx b/source/main.cxx index 9e4cd8c..5006947 100644 --- a/source/main.cxx +++ b/source/main.cxx @@ -6,17 +6,24 @@ #include <vector> #include <algorithm> +#include <unistd.h> #include <dirent.h> #include <sys/stat.h> #include <com/sun/star/lang/DisposedException.hpp> #include <com/sun/star/frame/XDesktop.hpp> +#include <com/sun/star/sheet/XSpreadsheetDocument.hpp> +#include <com/sun/star/util/XCloseable.hpp> using ::com::sun::star::uno::Reference; +using ::com::sun::star::uno::UNO_QUERY_THROW; using ::com::sun::star::frame::XDesktop; using ::com::sun::star::lang::DisposedException; +using ::com::sun::star::sheet::XSpreadsheetDocument; using ::rtl::OUString; +using namespace ::com::sun::star; + using namespace std; using namespace test; @@ -69,15 +76,19 @@ struct PrintFilePath : public ::std::unary_function<void, OUString> } }; -class LoadFile : public ::std::unary_function<void, OUString> +class ProcessFile : public ::std::unary_function<void, OUString> { public: - explicit LoadFile(const Reference<XDesktop>& xDesktop) : + explicit ProcessFile(const Reference<XDesktop>& xDesktop) : mxDesktop(xDesktop) {} void operator() (const OUString& r) const { - loadComponent(mxDesktop, r); + cout << "loading " << rtl::OUStringToOString(r, RTL_TEXTENCODING_UTF8).getStr() << endl; + Reference<XSpreadsheetDocument> xDoc = loadComponent(mxDesktop, r); + sleep(2); + Reference<util::XCloseable> xCloseable(xDoc, UNO_QUERY_THROW); + xCloseable->close(true); } private: @@ -101,15 +112,18 @@ int main() cout << "control xls inport directory: " << aXclImportPath << endl; for_each(aFilePaths.begin(), aFilePaths.end(), PrintFilePath()); - Reference<XDesktop> xDesktop = bootstrap(); - for_each(aFilePaths.begin(), aFilePaths.end(), LoadFile(xDesktop)); - try { + Reference<XDesktop> xDesktop = bootstrap(); + for_each(aFilePaths.begin(), aFilePaths.end(), ProcessFile(xDesktop)); xDesktop->terminate(); } catch (const DisposedException&) { info("terminate has been called, but the desktop instance has already been disposed of."); } + catch (const uno::Exception&) + { + error("exception caught"); + } } |