Use officecfg instead of SvxLanguageToolOptions
Change-Id: Ia9add4ff3ebe20ba491e33de1e9a2644a48ef7a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148548 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
parent
92598f5a5e
commit
9aca8e1333
10 changed files with 100 additions and 343 deletions
|
@ -18,11 +18,14 @@
|
|||
*/
|
||||
|
||||
#include "optlanguagetool.hxx"
|
||||
#include <svtools/languagetoolcfg.hxx>
|
||||
#include <officecfg/Office/Linguistic.hxx>
|
||||
#include <sal/log.hxx>
|
||||
#include <dialmgr.hxx>
|
||||
#include <strings.hrc>
|
||||
|
||||
using LanguageToolCfg = officecfg::Office::Linguistic::GrammarChecking::LanguageTool;
|
||||
constexpr OUStringLiteral LANGUAGETOOL_DEFAULT_URL = u"https://api.languagetool.org/v2";
|
||||
|
||||
OptLanguageToolTabPage::OptLanguageToolTabPage(weld::Container* pPage,
|
||||
weld::DialogController* pController,
|
||||
const SfxItemSet& rSet)
|
||||
|
@ -36,8 +39,7 @@ OptLanguageToolTabPage::OptLanguageToolTabPage(weld::Container* pPage,
|
|||
, m_xApiSettingsFrame(m_xBuilder->weld_frame("apisettings"))
|
||||
{
|
||||
m_xActivateBox->connect_toggled(LINK(this, OptLanguageToolTabPage, CheckHdl));
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
EnableControls(rLanguageOpts.getEnabled());
|
||||
EnableControls(LanguageToolCfg::IsEnabled::get());
|
||||
|
||||
// tdf#150494 Set default values as placeholder text
|
||||
m_xBaseURLED->set_placeholder_text(CuiResId(RID_LANGUAGETOOL_LEAVE_EMPTY));
|
||||
|
@ -49,11 +51,15 @@ OptLanguageToolTabPage::~OptLanguageToolTabPage() {}
|
|||
|
||||
void OptLanguageToolTabPage::EnableControls(bool bEnable)
|
||||
{
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
rLanguageOpts.setEnabled(bEnable);
|
||||
if (bEnable != LanguageToolCfg::IsEnabled::get())
|
||||
{
|
||||
auto batch(comphelper::ConfigurationChanges::create());
|
||||
LanguageToolCfg::IsEnabled::set(bEnable, batch);
|
||||
batch->commit();
|
||||
}
|
||||
m_xApiSettingsFrame->set_visible(bEnable);
|
||||
m_xActivateBox->set_active(bEnable);
|
||||
m_xSSLDisableVerificationBox->set_active(rLanguageOpts.getSSLVerification() != true);
|
||||
m_xSSLDisableVerificationBox->set_active(!LanguageToolCfg::SSLCertVerify::get());
|
||||
}
|
||||
|
||||
IMPL_LINK_NOARG(OptLanguageToolTabPage, CheckHdl, weld::Toggleable&, void)
|
||||
|
@ -63,36 +69,35 @@ IMPL_LINK_NOARG(OptLanguageToolTabPage, CheckHdl, weld::Toggleable&, void)
|
|||
|
||||
void OptLanguageToolTabPage::Reset(const SfxItemSet*)
|
||||
{
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
|
||||
// tdf#150494 If no URL has been set, use the default URL
|
||||
OUString aBaseURL = rLanguageOpts.getBaseURL();
|
||||
OUString aBaseURL = LanguageToolCfg::BaseURL::get().value_or("");
|
||||
if (aBaseURL.isEmpty())
|
||||
m_xBaseURLED->set_text(LANGUAGETOOL_DEFAULT_URL);
|
||||
else
|
||||
m_xBaseURLED->set_text(rLanguageOpts.getBaseURL());
|
||||
m_xBaseURLED->set_text(aBaseURL);
|
||||
|
||||
m_xUsernameED->set_text(rLanguageOpts.getUsername());
|
||||
m_xApiKeyED->set_text(rLanguageOpts.getApiKey());
|
||||
m_xRestProtocol->set_text(rLanguageOpts.getRestProtocol());
|
||||
m_xSSLDisableVerificationBox->set_active(rLanguageOpts.getSSLVerification() != true);
|
||||
m_xUsernameED->set_text(LanguageToolCfg::Username::get().value_or(""));
|
||||
m_xApiKeyED->set_text(LanguageToolCfg::ApiKey::get().value_or(""));
|
||||
m_xRestProtocol->set_text(LanguageToolCfg::RestProtocol::get().value_or(""));
|
||||
m_xSSLDisableVerificationBox->set_active(!LanguageToolCfg::SSLCertVerify::get());
|
||||
}
|
||||
|
||||
bool OptLanguageToolTabPage::FillItemSet(SfxItemSet*)
|
||||
{
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
auto batch(comphelper::ConfigurationChanges::create());
|
||||
|
||||
// tdf#150494 If no URL has been set, then save the default URL
|
||||
OUString aBaseURL = m_xBaseURLED->get_text();
|
||||
if (aBaseURL.isEmpty())
|
||||
rLanguageOpts.setBaseURL(LANGUAGETOOL_DEFAULT_URL);
|
||||
LanguageToolCfg::BaseURL::set(LANGUAGETOOL_DEFAULT_URL, batch);
|
||||
else
|
||||
rLanguageOpts.setBaseURL(aBaseURL);
|
||||
LanguageToolCfg::BaseURL::set(aBaseURL, batch);
|
||||
|
||||
rLanguageOpts.setUsername(m_xUsernameED->get_text());
|
||||
rLanguageOpts.setApiKey(m_xApiKeyED->get_text());
|
||||
rLanguageOpts.setRestProtocol(m_xRestProtocol->get_text());
|
||||
rLanguageOpts.setSSLVerification(m_xSSLDisableVerificationBox->get_active() != true);
|
||||
LanguageToolCfg::Username::set(m_xUsernameED->get_text(), batch);
|
||||
LanguageToolCfg::ApiKey::set(m_xApiKeyED->get_text(), batch);
|
||||
LanguageToolCfg::RestProtocol::set(m_xRestProtocol->get_text(), batch);
|
||||
LanguageToolCfg::SSLCertVerify::set(!m_xSSLDisableVerificationBox->get_active(), batch);
|
||||
batch->commit();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,8 +20,6 @@
|
|||
#include <sfx2/tabdlg.hxx>
|
||||
#include <rtl/ustring.hxx>
|
||||
|
||||
inline constexpr OUStringLiteral LANGUAGETOOL_DEFAULT_URL = u"https://api.languagetool.org/v2";
|
||||
|
||||
class OptLanguageToolTabPage : public SfxTabPage
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -144,7 +144,6 @@
|
|||
#include <svtools/ctrltool.hxx>
|
||||
#include <svtools/langtab.hxx>
|
||||
#include <svtools/deeplcfg.hxx>
|
||||
#include <svtools/languagetoolcfg.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
#ifdef IOS
|
||||
#include <vcl/sysdata.hxx>
|
||||
|
@ -196,6 +195,7 @@
|
|||
#include "lokclipboard.hxx"
|
||||
#include <officecfg/Office/Common.hxx>
|
||||
#include <officecfg/Office/Impress.hxx>
|
||||
#include <officecfg/Office/Linguistic.hxx>
|
||||
#include <unotools/optionsdlg.hxx>
|
||||
#include <svl/ctloptions.hxx>
|
||||
#include <svtools/accessibilityoptions.hxx>
|
||||
|
@ -7372,26 +7372,29 @@ void setLanguageToolConfig()
|
|||
OUString aBaseUrl = OStringToOUString(pBaseUrlString, RTL_TEXTENCODING_UTF8);
|
||||
try
|
||||
{
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
rLanguageOpts.setBaseURL(aBaseUrl);
|
||||
rLanguageOpts.setEnabled(true);
|
||||
using LanguageToolCfg = officecfg::Office::Linguistic::GrammarChecking::LanguageTool;
|
||||
auto batch(comphelper::ConfigurationChanges::create());
|
||||
|
||||
LanguageToolCfg::BaseURL::set(aBaseUrl, batch);
|
||||
LanguageToolCfg::IsEnabled::set(true, batch);
|
||||
if (pSSLVerification)
|
||||
{
|
||||
OUString aSSLVerification = OStringToOUString(pSSLVerification, RTL_TEXTENCODING_UTF8);
|
||||
rLanguageOpts.setSSLVerification(aSSLVerification == "true");
|
||||
LanguageToolCfg::SSLCertVerify::set(aSSLVerification == "true", batch);
|
||||
}
|
||||
if (pRestProtocol)
|
||||
{
|
||||
OUString aRestProtocol = OStringToOUString(pRestProtocol, RTL_TEXTENCODING_UTF8);
|
||||
rLanguageOpts.setRestProtocol(aRestProtocol);
|
||||
LanguageToolCfg::RestProtocol::set(aRestProtocol, batch);
|
||||
}
|
||||
if (pUsername && pApikey)
|
||||
{
|
||||
OUString aUsername = OStringToOUString(pUsername, RTL_TEXTENCODING_UTF8);
|
||||
OUString aApiKey = OStringToOUString(pApikey, RTL_TEXTENCODING_UTF8);
|
||||
rLanguageOpts.setUsername(aUsername);
|
||||
rLanguageOpts.setApiKey(aApiKey);
|
||||
LanguageToolCfg::Username::set(aUsername, batch);
|
||||
LanguageToolCfg::ApiKey::set(aApiKey, batch);
|
||||
}
|
||||
batch->commit();
|
||||
|
||||
css::uno::Reference<css::linguistic2::XLinguServiceManager2> xLangSrv =
|
||||
css::linguistic2::LinguServiceManager::create(xContext);
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
/* -*- 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 .
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include <unotools/configitem.hxx>
|
||||
#include <com/sun/star/uno/Sequence.hxx>
|
||||
#include <svtools/svtdllapi.h>
|
||||
|
||||
using namespace utl;
|
||||
using namespace com::sun::star::uno;
|
||||
|
||||
struct LanguageToolOptions_Impl;
|
||||
|
||||
class SVT_DLLPUBLIC SvxLanguageToolOptions final : public utl::ConfigItem
|
||||
{
|
||||
public:
|
||||
SvxLanguageToolOptions();
|
||||
virtual ~SvxLanguageToolOptions() override;
|
||||
|
||||
virtual void Notify(const css::uno::Sequence<OUString>& _rPropertyNames) override;
|
||||
static SvxLanguageToolOptions& Get();
|
||||
|
||||
const OUString& getBaseURL() const;
|
||||
void setBaseURL(const OUString& rVal);
|
||||
|
||||
const OUString& getRestProtocol() const;
|
||||
void setRestProtocol(const OUString& rVal);
|
||||
|
||||
const OUString& getUsername() const;
|
||||
void setUsername(const OUString& rVal);
|
||||
|
||||
OUString getLocaleListURL() const;
|
||||
OUString getCheckerURL() const;
|
||||
|
||||
const OUString& getApiKey() const;
|
||||
void setApiKey(const OUString& rVal);
|
||||
|
||||
bool getEnabled() const;
|
||||
void setEnabled(bool enabled);
|
||||
|
||||
bool getSSLVerification() const;
|
||||
void setSSLVerification(bool enabled);
|
||||
|
||||
private:
|
||||
std::unique_ptr<LanguageToolOptions_Impl> pImpl;
|
||||
void Load(const css::uno::Sequence<OUString>& rPropertyNames);
|
||||
virtual void ImplCommit() override;
|
||||
static const Sequence<OUString>& GetPropertyNames();
|
||||
};
|
|
@ -41,6 +41,10 @@ $(eval $(call gb_Library_use_externals,LanguageTool,\
|
|||
curl \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_custom_headers,LanguageTool,\
|
||||
officecfg/registry \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_add_exception_objects,LanguageTool,\
|
||||
lingucomponent/source/spellcheck/languagetool/languagetoolimp \
|
||||
))
|
||||
|
|
|
@ -34,13 +34,14 @@
|
|||
#include <set>
|
||||
#include <string.h>
|
||||
|
||||
#include <officecfg/Office/Linguistic.hxx>
|
||||
|
||||
#include <curl/curl.h>
|
||||
#include <boost/property_tree/ptree.hpp>
|
||||
#include <boost/property_tree/json_parser.hpp>
|
||||
#include <algorithm>
|
||||
#include <string_view>
|
||||
#include <sal/log.hxx>
|
||||
#include <svtools/languagetoolcfg.hxx>
|
||||
#include <tools/color.hxx>
|
||||
#include <tools/long.hxx>
|
||||
#include <com/sun/star/text/TextMarkupType.hpp>
|
||||
|
@ -58,6 +59,7 @@ using namespace com::sun::star::linguistic2;
|
|||
namespace
|
||||
{
|
||||
constexpr size_t MAX_SUGGESTIONS_SIZE = 10;
|
||||
using LanguageToolCfg = officecfg::Office::Linguistic::GrammarChecking::LanguageTool;
|
||||
|
||||
PropertyValue lcl_GetLineColorPropertyFromErrorId(const std::string& rErrorId)
|
||||
{
|
||||
|
@ -145,9 +147,8 @@ std::string makeHttpRequest_impl(std::u16string_view aURL, HTTP_METHOD method,
|
|||
(void)curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, WriteCallback);
|
||||
(void)curl_easy_setopt(curl.get(), CURLOPT_WRITEDATA, &response_body);
|
||||
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
// allow unknown or self-signed certificates
|
||||
if (rLanguageOpts.getSSLVerification() == false)
|
||||
if (!LanguageToolCfg::SSLCertVerify::get())
|
||||
{
|
||||
(void)curl_easy_setopt(curl.get(), CURLOPT_SSL_VERIFYPEER, false);
|
||||
(void)curl_easy_setopt(curl.get(), CURLOPT_SSL_VERIFYHOST, false);
|
||||
|
@ -174,8 +175,8 @@ std::string makeDudenHttpRequest(std::u16string_view aURL, const OString& aPostD
|
|||
tools::Long& nStatusCode)
|
||||
{
|
||||
struct curl_slist* pList = nullptr;
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
OString sAccessToken = OUStringToOString(rLanguageOpts.getApiKey(), RTL_TEXTENCODING_UTF8);
|
||||
OString sAccessToken
|
||||
= OUStringToOString(LanguageToolCfg::ApiKey::get().value_or(""), RTL_TEXTENCODING_UTF8);
|
||||
|
||||
pList = curl_slist_append(pList, "Cache-Control: no-cache");
|
||||
pList = curl_slist_append(pList, "Content-Type: application/json");
|
||||
|
@ -194,9 +195,10 @@ std::string makeHttpRequest(std::u16string_view aURL, HTTP_METHOD method, const
|
|||
OString realPostData(aPostData);
|
||||
if (method == HTTP_METHOD::HTTP_POST)
|
||||
{
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
OString apiKey = OUStringToOString(rLanguageOpts.getApiKey(), RTL_TEXTENCODING_UTF8);
|
||||
OString username = OUStringToOString(rLanguageOpts.getUsername(), RTL_TEXTENCODING_UTF8);
|
||||
OString apiKey
|
||||
= OUStringToOString(LanguageToolCfg::ApiKey::get().value_or(""), RTL_TEXTENCODING_UTF8);
|
||||
OString username = OUStringToOString(LanguageToolCfg::Username::get().value_or(""),
|
||||
RTL_TEXTENCODING_UTF8);
|
||||
if (!apiKey.isEmpty() && !username.isEmpty())
|
||||
realPostData += "&username=" + username + "&apiKey=" + apiKey;
|
||||
}
|
||||
|
@ -205,7 +207,7 @@ std::string makeHttpRequest(std::u16string_view aURL, HTTP_METHOD method, const
|
|||
}
|
||||
|
||||
template <typename Func>
|
||||
Sequence<SingleProofreadingError> parseJson(std::string&& json, std::string path, Func f)
|
||||
uno::Sequence<SingleProofreadingError> parseJson(std::string&& json, std::string path, Func f)
|
||||
{
|
||||
std::stringstream aStream(std::move(json)); // Optimized in C++20
|
||||
boost::property_tree::ptree aRoot;
|
||||
|
@ -213,7 +215,7 @@ Sequence<SingleProofreadingError> parseJson(std::string&& json, std::string path
|
|||
|
||||
if (auto tree = aRoot.get_child_optional(path))
|
||||
{
|
||||
Sequence<SingleProofreadingError> aErrors(tree->size());
|
||||
uno::Sequence<SingleProofreadingError> aErrors(tree->size());
|
||||
auto it = tree->begin();
|
||||
for (auto& rError : asNonConstRange(aErrors))
|
||||
{
|
||||
|
@ -292,6 +294,22 @@ void parseProofreadingJSONResponse(ProofreadingResult& rResult, std::string&& aJ
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
OUString getLocaleListURL()
|
||||
{
|
||||
if (auto oURL = LanguageToolCfg::BaseURL::get())
|
||||
if (!oURL->isEmpty())
|
||||
return *oURL + "/languages";
|
||||
return {};
|
||||
}
|
||||
|
||||
OUString getCheckerURL()
|
||||
{
|
||||
if (auto oURL = LanguageToolCfg::BaseURL::get())
|
||||
if (!oURL->isEmpty())
|
||||
return *oURL + "/check";
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
LanguageToolGrammarChecker::LanguageToolGrammarChecker()
|
||||
|
@ -316,17 +334,16 @@ sal_Bool SAL_CALL LanguageToolGrammarChecker::hasLocale(const Locale& rLocale)
|
|||
return false;
|
||||
}
|
||||
|
||||
Sequence<Locale> SAL_CALL LanguageToolGrammarChecker::getLocales()
|
||||
uno::Sequence<Locale> SAL_CALL LanguageToolGrammarChecker::getLocales()
|
||||
{
|
||||
if (m_aSuppLocales.hasElements())
|
||||
return m_aSuppLocales;
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
if (!rLanguageOpts.getEnabled())
|
||||
if (!LanguageToolCfg::IsEnabled::get())
|
||||
{
|
||||
return m_aSuppLocales;
|
||||
}
|
||||
|
||||
OUString localeUrl = rLanguageOpts.getLocaleListURL();
|
||||
OUString localeUrl = getLocaleListURL();
|
||||
if (localeUrl.isEmpty())
|
||||
{
|
||||
return m_aSuppLocales;
|
||||
|
@ -363,7 +380,7 @@ Sequence<Locale> SAL_CALL LanguageToolGrammarChecker::getLocales()
|
|||
ProofreadingResult SAL_CALL LanguageToolGrammarChecker::doProofreading(
|
||||
const OUString& aDocumentIdentifier, const OUString& aText, const Locale& aLocale,
|
||||
sal_Int32 nStartOfSentencePosition, sal_Int32 nSuggestedBehindEndOfSentencePosition,
|
||||
const Sequence<PropertyValue>& aProperties)
|
||||
const uno::Sequence<PropertyValue>& aProperties)
|
||||
{
|
||||
// ProofreadingResult declared here instead of parseHttpJSONResponse because of the early exists.
|
||||
ProofreadingResult xRes;
|
||||
|
@ -372,9 +389,9 @@ ProofreadingResult SAL_CALL LanguageToolGrammarChecker::doProofreading(
|
|||
xRes.aLocale = aLocale;
|
||||
xRes.nStartOfSentencePosition = nStartOfSentencePosition;
|
||||
xRes.nBehindEndOfSentencePosition = nSuggestedBehindEndOfSentencePosition;
|
||||
xRes.aProperties = Sequence<PropertyValue>();
|
||||
xRes.aProperties = {};
|
||||
xRes.xProofreader = this;
|
||||
xRes.aErrors = Sequence<SingleProofreadingError>();
|
||||
xRes.aErrors = {};
|
||||
|
||||
if (aText.isEmpty())
|
||||
{
|
||||
|
@ -388,13 +405,12 @@ ProofreadingResult SAL_CALL LanguageToolGrammarChecker::doProofreading(
|
|||
|
||||
xRes.nStartOfNextSentencePosition = aText.getLength();
|
||||
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
if (rLanguageOpts.getEnabled() == false)
|
||||
if (!LanguageToolCfg::IsEnabled::get())
|
||||
{
|
||||
return xRes;
|
||||
}
|
||||
|
||||
OUString checkerURL = rLanguageOpts.getCheckerURL();
|
||||
OUString checkerURL = getCheckerURL();
|
||||
if (checkerURL.isEmpty())
|
||||
{
|
||||
return xRes;
|
||||
|
@ -424,7 +440,7 @@ ProofreadingResult SAL_CALL LanguageToolGrammarChecker::doProofreading(
|
|||
|
||||
OString langTag(LanguageTag::convertToBcp47(aLocale, false).toUtf8());
|
||||
OString postData = encodeTextForLanguageTool(aText);
|
||||
const bool bDudenProtocol = rLanguageOpts.getRestProtocol() == "duden";
|
||||
const bool bDudenProtocol = LanguageToolCfg::RestProtocol::get().value_or("") == "duden";
|
||||
if (bDudenProtocol)
|
||||
{
|
||||
std::stringstream aStream;
|
||||
|
@ -501,12 +517,12 @@ sal_Bool SAL_CALL LanguageToolGrammarChecker::supportsService(const OUString& Se
|
|||
return cppu::supportsService(this, ServiceName);
|
||||
}
|
||||
|
||||
Sequence<OUString> SAL_CALL LanguageToolGrammarChecker::getSupportedServiceNames()
|
||||
uno::Sequence<OUString> SAL_CALL LanguageToolGrammarChecker::getSupportedServiceNames()
|
||||
{
|
||||
return { SN_GRAMMARCHECKER };
|
||||
}
|
||||
|
||||
void SAL_CALL LanguageToolGrammarChecker::initialize(const Sequence<Any>& /*rArguments*/) {}
|
||||
void SAL_CALL LanguageToolGrammarChecker::initialize(const uno::Sequence<uno::Any>&) {}
|
||||
|
||||
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
|
||||
lingucomponent_LanguageToolGrammarChecker_get_implementation(
|
||||
|
|
|
@ -36,4 +36,8 @@ $(eval $(call gb_CppunitTest_use_ure,linguistic_restprotocol))
|
|||
|
||||
$(eval $(call gb_CppunitTest_use_rdb,linguistic_restprotocol,services))
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_custom_headers,linguistic_restprotocol,\
|
||||
officecfg/registry \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
#include <rtl/strbuf.hxx>
|
||||
#include <osl/socket.hxx>
|
||||
#include <osl/thread.hxx>
|
||||
#include <svtools/languagetoolcfg.hxx>
|
||||
#include <unotest/bootstrapfixturebase.hxx>
|
||||
#include <officecfg/Office/Linguistic.hxx>
|
||||
|
||||
#include <com/sun/star/beans/PropertyValue.hpp>
|
||||
#include <com/sun/star/connection/XAcceptor.hpp>
|
||||
|
@ -138,24 +138,28 @@ private:
|
|||
void TestRestProtocol::testProofreading()
|
||||
{
|
||||
css::lang::Locale aLocale("en", "US", "");
|
||||
Sequence<::com::sun::star::beans::PropertyValue> aProperties;
|
||||
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
|
||||
rLanguageOpts.setBaseURL("http://127.0.0.1:2022/api");
|
||||
rLanguageOpts.setUsername("hcastro");
|
||||
rLanguageOpts.setApiKey("hcvhcvhcv");
|
||||
rLanguageOpts.setEnabled(true);
|
||||
rLanguageOpts.setSSLVerification(false);
|
||||
rLanguageOpts.setRestProtocol("duden");
|
||||
CPPUNIT_ASSERT_EQUAL(OUString("duden"), rLanguageOpts.getRestProtocol());
|
||||
using LanguageToolCfg = officecfg::Office::Linguistic::GrammarChecking::LanguageTool;
|
||||
auto batch(comphelper::ConfigurationChanges::create());
|
||||
|
||||
LanguageToolCfg::BaseURL::set("http://127.0.0.1:2022/api", batch);
|
||||
LanguageToolCfg::Username::set("hcastro", batch);
|
||||
LanguageToolCfg::ApiKey::set("hcvhcvhcv", batch);
|
||||
LanguageToolCfg::IsEnabled::set(true, batch);
|
||||
LanguageToolCfg::SSLCertVerify::set(false, batch);
|
||||
LanguageToolCfg::RestProtocol::set("duden", batch);
|
||||
|
||||
batch->commit();
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(OUString("duden"), *LanguageToolCfg::RestProtocol::get());
|
||||
|
||||
Reference<::com::sun::star::linguistic2::XProofreader> xProofreader(
|
||||
m_xSFactory->createInstance("com.sun.star.linguistic2.Proofreader"), UNO_QUERY);
|
||||
CPPUNIT_ASSERT(xProofreader.is());
|
||||
|
||||
com::sun::star::linguistic2::ProofreadingResult aResult
|
||||
= xProofreader->doProofreading("id", "ths is a tst", aLocale, 0, 0, aProperties);
|
||||
= xProofreader->doProofreading("id", "ths is a tst", aLocale, 0, 0, {});
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(2, aResult.aErrors.getLength());
|
||||
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aResult.aErrors.getLength());
|
||||
}
|
||||
|
||||
void TestRestProtocol::setUp()
|
||||
|
|
|
@ -84,7 +84,6 @@ $(eval $(call gb_Library_add_exception_objects,svt,\
|
|||
svtools/source/config/extcolorcfg \
|
||||
svtools/source/config/fontsubstconfig \
|
||||
svtools/source/config/htmlcfg \
|
||||
svtools/source/config/languagetoolcfg \
|
||||
svtools/source/config/deeplcfg \
|
||||
svtools/source/config/itemholder2 \
|
||||
svtools/source/config/miscopt \
|
||||
|
|
|
@ -1,211 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
|
||||
|
||||
/*
|
||||
* 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 <sal/log.hxx>
|
||||
#include <sal/config.h>
|
||||
#include <svtools/languagetoolcfg.hxx>
|
||||
#include <com/sun/star/uno/Sequence.hxx>
|
||||
#include <tools/debug.hxx>
|
||||
|
||||
using namespace utl;
|
||||
using namespace com::sun::star::uno;
|
||||
|
||||
struct LanguageToolOptions_Impl
|
||||
{
|
||||
OUString sBaseURL;
|
||||
OUString sUsername;
|
||||
OUString sApiKey;
|
||||
OUString sRestProtocol;
|
||||
bool bEnabled;
|
||||
bool bSSLCertVerificatrionEnabled;
|
||||
};
|
||||
|
||||
const Sequence<OUString>& SvxLanguageToolOptions::GetPropertyNames()
|
||||
{
|
||||
static Sequence<OUString> const aNames{
|
||||
"LanguageTool/BaseURL", "LanguageTool/Username", "LanguageTool/ApiKey",
|
||||
"LanguageTool/IsEnabled", "LanguageTool/SSLCertVerify", "LanguageTool/RestProtocol"
|
||||
};
|
||||
return aNames;
|
||||
}
|
||||
|
||||
const OUString& SvxLanguageToolOptions::getBaseURL() const { return pImpl->sBaseURL; }
|
||||
|
||||
void SvxLanguageToolOptions::setBaseURL(const OUString& rVal)
|
||||
{
|
||||
pImpl->sBaseURL = rVal;
|
||||
SetModified();
|
||||
}
|
||||
|
||||
const OUString& SvxLanguageToolOptions::getUsername() const { return pImpl->sUsername; }
|
||||
|
||||
void SvxLanguageToolOptions::setUsername(const OUString& rVal)
|
||||
{
|
||||
pImpl->sUsername = rVal;
|
||||
SetModified();
|
||||
}
|
||||
|
||||
OUString SvxLanguageToolOptions::getLocaleListURL() const
|
||||
{
|
||||
if (pImpl->sBaseURL.isEmpty())
|
||||
return OUString();
|
||||
return pImpl->sBaseURL + "/languages";
|
||||
}
|
||||
|
||||
OUString SvxLanguageToolOptions::getCheckerURL() const
|
||||
{
|
||||
if (pImpl->sBaseURL.isEmpty())
|
||||
return OUString();
|
||||
return pImpl->sBaseURL + "/check";
|
||||
}
|
||||
|
||||
const OUString& SvxLanguageToolOptions::getApiKey() const { return pImpl->sApiKey; }
|
||||
|
||||
const OUString& SvxLanguageToolOptions::getRestProtocol() const { return pImpl->sRestProtocol; }
|
||||
|
||||
void SvxLanguageToolOptions::setApiKey(const OUString& rVal)
|
||||
{
|
||||
pImpl->sApiKey = rVal;
|
||||
SetModified();
|
||||
}
|
||||
|
||||
void SvxLanguageToolOptions::setRestProtocol(const OUString& rVal)
|
||||
{
|
||||
if (pImpl->sRestProtocol != rVal)
|
||||
{
|
||||
pImpl->sRestProtocol = rVal;
|
||||
SetModified();
|
||||
}
|
||||
}
|
||||
|
||||
bool SvxLanguageToolOptions::getEnabled() const { return pImpl->bEnabled; }
|
||||
|
||||
bool SvxLanguageToolOptions::getSSLVerification() const
|
||||
{
|
||||
return pImpl->bSSLCertVerificatrionEnabled;
|
||||
}
|
||||
|
||||
void SvxLanguageToolOptions::setSSLVerification(bool bEnabled)
|
||||
{
|
||||
pImpl->bSSLCertVerificatrionEnabled = bEnabled;
|
||||
SetModified();
|
||||
}
|
||||
|
||||
void SvxLanguageToolOptions::setEnabled(bool bEnabled)
|
||||
{
|
||||
pImpl->bEnabled = bEnabled;
|
||||
SetModified();
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
class theSvxLanguageToolOptions
|
||||
: public rtl::Static<SvxLanguageToolOptions, theSvxLanguageToolOptions>
|
||||
{
|
||||
};
|
||||
}
|
||||
|
||||
SvxLanguageToolOptions& SvxLanguageToolOptions::Get() { return theSvxLanguageToolOptions::get(); }
|
||||
|
||||
SvxLanguageToolOptions::SvxLanguageToolOptions()
|
||||
: ConfigItem("Office.Linguistic/GrammarChecking")
|
||||
, pImpl(new LanguageToolOptions_Impl)
|
||||
{
|
||||
Load(GetPropertyNames());
|
||||
}
|
||||
|
||||
SvxLanguageToolOptions::~SvxLanguageToolOptions() {}
|
||||
void SvxLanguageToolOptions::Notify(const css::uno::Sequence<OUString>&)
|
||||
{
|
||||
Load(GetPropertyNames());
|
||||
}
|
||||
|
||||
void SvxLanguageToolOptions::Load(const css::uno::Sequence<OUString>& aNames)
|
||||
{
|
||||
Sequence<Any> aValues = GetProperties(aNames);
|
||||
const Any* pValues = aValues.getConstArray();
|
||||
DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed");
|
||||
if (aValues.getLength() != aNames.getLength())
|
||||
return;
|
||||
for (int nProp = 0; nProp < aNames.getLength(); nProp++)
|
||||
{
|
||||
if (!pValues[nProp].hasValue())
|
||||
continue;
|
||||
switch (nProp)
|
||||
{
|
||||
case 0:
|
||||
pValues[nProp] >>= pImpl->sBaseURL;
|
||||
break;
|
||||
case 1:
|
||||
pValues[nProp] >>= pImpl->sUsername;
|
||||
break;
|
||||
case 2:
|
||||
pValues[nProp] >>= pImpl->sApiKey;
|
||||
break;
|
||||
case 3:
|
||||
pValues[nProp] >>= pImpl->bEnabled;
|
||||
break;
|
||||
case 4:
|
||||
pValues[nProp] >>= pImpl->bSSLCertVerificatrionEnabled;
|
||||
break;
|
||||
case 5:
|
||||
pValues[nProp] >>= pImpl->sRestProtocol;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SvxLanguageToolOptions::ImplCommit()
|
||||
{
|
||||
const Sequence<OUString>& aNames = GetPropertyNames();
|
||||
Sequence<Any> aValues(aNames.getLength());
|
||||
Any* pValues = aValues.getArray();
|
||||
for (int nProp = 0; nProp < aNames.getLength(); nProp++)
|
||||
{
|
||||
switch (nProp)
|
||||
{
|
||||
case 0:
|
||||
pValues[nProp] <<= pImpl->sBaseURL;
|
||||
break;
|
||||
case 1:
|
||||
pValues[nProp] <<= pImpl->sUsername;
|
||||
break;
|
||||
case 2:
|
||||
pValues[nProp] <<= pImpl->sApiKey;
|
||||
break;
|
||||
case 3:
|
||||
pValues[nProp] <<= pImpl->bEnabled;
|
||||
break;
|
||||
case 4:
|
||||
pValues[nProp] <<= pImpl->bSSLCertVerificatrionEnabled;
|
||||
break;
|
||||
case 5:
|
||||
pValues[nProp] <<= pImpl->sRestProtocol;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
PutProperties(aNames, aValues);
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
|
Loading…
Reference in a new issue