de0bc0a2c3
Currently SfxObjectShell::CheckIsReadonly() has a hack for the LOK case to show the signatures dialog read-only, as only that is async. The next step to get rid of this hack is to make SfxMedium::SignContents_Impl() async, now that SfxObjectShell::SignDocumentContent() is async. This requires all callers of SfxMedium::SignContents_Impl() to be async, most notably SfxObjectShell::SignScriptingContent() has to be converted as well. Note that no lifecycle problem is expected here for the callback, since the object shell and its medium is typically around for as long as the document is loaded. Change-Id: I57f2c747f8448b9adc0398f874ede36211fed817 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172934 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
75 lines
2.4 KiB
C++
75 lines
2.4 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/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
#include <docsignature.hxx>
|
|
#include <scriptdocument.hxx>
|
|
|
|
#include <sfx2/objsh.hxx>
|
|
#include <sfx2/signaturestate.hxx>
|
|
|
|
#include <osl/diagnose.h>
|
|
|
|
|
|
namespace basctl
|
|
{
|
|
using ::com::sun::star::uno::Reference;
|
|
using ::com::sun::star::frame::XModel;
|
|
|
|
// DocumentSignature
|
|
|
|
DocumentSignature::DocumentSignature (ScriptDocument const& rDocument) :
|
|
m_pShell(nullptr)
|
|
{
|
|
if (!rDocument.isDocument())
|
|
return;
|
|
|
|
Reference<XModel> xDocument(rDocument.getDocument());
|
|
// find object shell for document
|
|
SfxObjectShell* pShell = SfxObjectShell::GetFirst();
|
|
while ( pShell )
|
|
{
|
|
if ( pShell->GetModel() == xDocument )
|
|
break;
|
|
pShell = SfxObjectShell::GetNext( *pShell );
|
|
}
|
|
m_pShell = pShell;
|
|
}
|
|
|
|
bool DocumentSignature::supportsSignatures() const
|
|
{
|
|
return ( m_pShell != nullptr );
|
|
}
|
|
|
|
void DocumentSignature::signScriptingContent(weld::Window* pDialogParent) const
|
|
{
|
|
OSL_PRECOND( supportsSignatures(), "DocumentSignature::signScriptingContent: signatures not supported by this document!" );
|
|
if ( m_pShell )
|
|
m_pShell->SignScriptingContent(pDialogParent, [](bool /*bSigned*/){});
|
|
}
|
|
|
|
SignatureState DocumentSignature::getScriptingSignatureState() const
|
|
{
|
|
if ( m_pShell )
|
|
return m_pShell->GetScriptingSignatureState();
|
|
return SignatureState::NOSIGNATURES;
|
|
}
|
|
|
|
} // namespace basctl
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|