summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kyoshida@novell.com>2009-12-29 13:58:51 -0500
committerKohei Yoshida <kyoshida@novell.com>2009-12-29 13:58:51 -0500
commit20049d18a5997b0c02283af9c7697bea3560c1a9 (patch)
treec695fc375a37cf3fec88983b4909e35ffddd80d9
parent2605839fcb9701ebf3b9f1b773ad91cb3b669f78 (diff)
Close the loaded document properly.
-rw-r--r--source/main.cxx26
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");
+ }
}