libreoffice-online/kit/Kit.hpp
Jan Holesovsky ea2b77ce07 android: Make the LOK document accessible from the JNI.
For some operations like printing to PDF, we need to have access to the
LOK API to perform eg. saveAs().  iOS is using an extern for that, but
given that it is needed for Android too, let's introduce a proper getter
for that.

Change-Id: Ie2340a4ee0bdf9dc46e799e2567a828172d9a67d
2019-05-31 09:20:34 +02:00

143 lines
3.5 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef INCLUDED_LOOLKIT_HPP
#define INCLUDED_LOOLKIT_HPP
#include <map>
#include <string>
#include <common/Util.hpp>
#define LOK_USE_UNSTABLE_API
#include <LibreOfficeKit/LibreOfficeKit.hxx>
#if MOBILEAPP
#include "ClientSession.hpp"
#include "DocumentBroker.hpp"
#include "Socket.hpp"
#endif
void lokit_main(
#if !MOBILEAPP
const std::string& childRoot,
const std::string& jailId,
const std::string& sysTemplate,
const std::string& loTemplate,
const std::string& loSubPath,
bool noCapabilities,
bool noSeccomp,
bool queryVersionInfo,
bool displayVersion
#else
const std::string& documentUri,
int docBrokerSocket
#endif
);
bool globalPreinit(const std::string& loTemplate);
/// Wrapper around private Document::ViewCallback().
void documentViewCallback(const int type, const char* p, void* data);
class DocumentManagerInterface;
/// Descriptor class used to link a LOK
/// callback to a specific view.
struct CallbackDescriptor
{
CallbackDescriptor(DocumentManagerInterface* const doc,
const int viewId) :
_doc(doc),
_viewId(viewId)
{
}
DocumentManagerInterface* getDoc() const
{
return _doc;
}
int getViewId() const
{
return _viewId;
}
private:
DocumentManagerInterface* const _doc;
const int _viewId;
};
/// User Info container used to store user information
/// till the end of process lifecycle - including
/// after any child session goes away
struct UserInfo
{
UserInfo()
{
}
UserInfo(const std::string& userId,
const std::string& userName,
const std::string& userExtraInfo,
bool readOnly) :
_userId(userId),
_userName(userName),
_userExtraInfo(userExtraInfo),
_readOnly(readOnly)
{
}
const std::string& getUserId() const
{
return _userId;
}
const std::string& getUserName() const
{
return _userName;
}
const std::string& getUserExtraInfo() const
{
return _userExtraInfo;
}
bool isReadOnly() const
{
return _readOnly;
}
private:
std::string _userId;
std::string _userName;
std::string _userExtraInfo;
bool _readOnly;
};
/// Check the ForkCounter, and if non-zero, fork more of them accordingly.
/// @param limit If non-zero, set the ForkCounter to this limit.
void forkLibreOfficeKit(const std::string& childRoot,
const std::string& sysTemplate,
const std::string& loTemplate,
const std::string& loSubPath,
int limit = 0);
/// Anonymize the basename of filenames, preserving the path and extension.
std::string anonymizeUrl(const std::string& url);
/// Anonymize usernames.
std::string anonymizeUsername(const std::string& username);
/// For the mobile, we need access to the document to perform eg. saveAs() for printing.
std::shared_ptr<lok::Document> getLOKDocument();
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */