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-11-03 16:37:10 +0100
commitdc1656a71acca3a20ba99c162ae5169f15b362fc (patch)
tree190f1c35dfbdff58c675039055c27bc2d44e37dc
parent155044c76e5baa2c6d5193a0a8bb5165daae8095 (diff)
LOK: initial Document::getCommandValues() for RowColumnHeaders
Only the row info and for the entire tiled rendering area as a start. (cherry picked from commit a7ce5f83343f8f6ba8a59b05820b3a2066c0ce9a) Conflicts: sc/inc/docuno.hxx 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 a3c4872ea00b..3c813c71ddcd 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -1221,7 +1221,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 1bf14d860629..369758d29dc6 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 8123a0ecea8b..8daa69998625 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -421,6 +421,9 @@ public:
/// @see vcl::ITiledRenderable::isMimeTypeSupported().
virtual bool isMimeTypeSupported() SAL_OVERRIDE;
+
+ /// @see vcl::ITiledRenderable::getRowColumnHeaders().
+ virtual OUString getRowColumnHeaders() SAL_OVERRIDE;
};
class ScDrawPagesObj : public cppu::WeakImplHelper2<
diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx
index d7e2a2dbf12e..5b0852041108 100644
--- a/sc/source/ui/inc/tabview.hxx
+++ b/sc/source/ui/inc/tabview.hxx
@@ -520,6 +520,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 66ac7ec63ff6..9049b5dc2c5f 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -855,6 +855,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 b5d308be1aab..f177bbe704f1 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>
@@ -2302,4 +2303,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: */