summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-10-30 11:18:19 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-10-30 12:35:56 +0100
commita7ce5f83343f8f6ba8a59b05820b3a2066c0ce9a (patch)
tree1696769691eb0b0acba8d1c0eb02badac9a61599
parent5aee8e8cf48cf6c5fe5a4065554e96597e39e73d (diff)
LOK: initial Document::getCommandValues() for RowColumnHeaders
Only the row info and for the entire tiled rendering area as a start. Change-Id: Idbccd805b355e8d151ab7025ac1cf0c686cb237b
-rw-r--r--desktop/source/lib/init.cxx18
-rw-r--r--include/vcl/ITiledRenderable.hxx8
-rw-r--r--sc/inc/docuno.hxx3
-rw-r--r--sc/source/ui/inc/tabview.hxx2
-rw-r--r--sc/source/ui/unoobj/docuno.cxx13
-rw-r--r--sc/source/ui/view/tabview.cxx29
6 files changed, 72 insertions, 1 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 8e3b88ed1187..32b01012d4ed 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -1135,7 +1135,23 @@ static char* doc_getCommandValues(LibreOfficeKitDocument* pThis, const char* pCo
{
return getStyles(pThis, pCommand);
}
- else {
+ else if (OString(pCommand) == ".uno:ViewRowColumnHeaders")
+ {
+ ITiledRenderable* pDoc = getTiledRenderable(pThis);
+ if (!pDoc)
+ {
+ gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+ return 0;
+ }
+
+ OUString aHeaders = pDoc->getRowColumnHeaders();
+ OString aString = OUStringToOString(aHeaders, RTL_TEXTENCODING_UTF8);
+ char* pMemory = static_cast<char*>(malloc(aString.getLength() + 1));
+ strcpy(pMemory, aString.getStr());
+ return pMemory;
+ }
+ else
+ {
gImpl->maLastExceptionMsg = "Unknown command, no values returned";
return NULL;
}
diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx
index 8ae719edf752..48a13ffc1275 100644
--- a/include/vcl/ITiledRenderable.hxx
+++ b/include/vcl/ITiledRenderable.hxx
@@ -148,6 +148,14 @@ public:
return OUString();
}
+ /**
+ * Get position and content of row/column headers of Calc documents.
+ */
+ virtual OUString getRowColumnHeaders()
+ {
+ return OUString();
+ }
+
/// Sets the clipboard of the component.
virtual void setClipboard(const css::uno::Reference<css::datatransfer::clipboard::XClipboard>& xClipboard) = 0;
diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
index ea924a8bb3b4..e2a2dbc13349 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -404,6 +404,9 @@ public:
/// @see vcl::ITiledRenderable::isMimeTypeSupported().
virtual bool isMimeTypeSupported() override;
+
+ /// @see vcl::ITiledRenderable::getRowColumnHeaders().
+ virtual OUString getRowColumnHeaders() override;
};
class ScDrawPagesObj : public cppu::WeakImplHelper<
diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx
index 24be8c0c43b4..51cb7c1c82fe 100644
--- a/sc/source/ui/inc/tabview.hxx
+++ b/sc/source/ui/inc/tabview.hxx
@@ -517,6 +517,8 @@ public:
void EnableAutoSpell( bool bEnable );
void ResetAutoSpell();
void SetAutoSpellData( SCCOL nPosX, SCROW nPosY, const std::vector<editeng::MisspellRanges>* pRanges );
+ /// @see ScModelObj::getRowColumnHeaders().
+ OUString getRowColumnHeaders();
};
#endif
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index c6070f1dfe82..27fe63882596 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -869,6 +869,19 @@ bool ScModelObj::isMimeTypeSupported()
return EditEngine::HasValidData(aDataHelper.GetTransferable());
}
+OUString ScModelObj::getRowColumnHeaders()
+{
+ ScViewData* pViewData = ScDocShell::GetViewData();
+ if (!pViewData)
+ return OUString();
+
+ ScTabView* pTabView = pViewData->GetView();
+ if (!pTabView)
+ return OUString();
+
+ return pTabView->getRowColumnHeaders();
+}
+
void ScModelObj::initializeForTiledRendering()
{
SolarMutexGuard aGuard;
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
index 6e390531885c..aa50aafed23b 100644
--- a/sc/source/ui/view/tabview.cxx
+++ b/sc/source/ui/view/tabview.cxx
@@ -50,6 +50,7 @@
#include <string>
#include <algorithm>
+#include <boost/property_tree/json_parser.hpp>
#include <basegfx/tools/zoomtools.hxx>
@@ -2278,4 +2279,32 @@ void ScTabView::SetAutoSpellData( SCCOL nPosX, SCROW nPosY, const std::vector<ed
}
}
+OUString ScTabView::getRowColumnHeaders()
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ if (!pDoc)
+ return OUString();
+
+ SCCOL nEndCol = 0;
+ SCROW nEndRow = 0;
+ pDoc->GetTiledRenderingArea(aViewData.GetTabNo(), nEndCol, nEndRow);
+
+ boost::property_tree::ptree aRows;
+ for (SCROW nRow = 0; nRow < nEndRow; ++nRow)
+ {
+ boost::property_tree::ptree aRow;
+ sal_uInt16 nSize = pRowBar[SC_SPLIT_BOTTOM]->GetEntrySize(nRow);
+ aRow.put("size", OString::number(nSize).getStr());
+ OUString aText = pRowBar[SC_SPLIT_BOTTOM]->GetEntryText(nRow);
+ aRow.put("text", aText.toUtf8().getStr());
+ aRows.push_back(std::make_pair("", aRow));
+ }
+
+ boost::property_tree::ptree aTree;
+ aTree.add_child("rows", aRows);
+ std::stringstream aStream;
+ boost::property_tree::write_json(aStream, aTree);
+ return OUString::fromUtf8(aStream.str().c_str());
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */