23#include <config_features.h>
24#include <config_feature_opencl.h>
25#include <config_feature_desktop.h>
26#include <config_gpgme.h>
28#include <officecfg/Office/Common.hxx>
29#include <officecfg/Office/Writer.hxx>
31#include <svx/dialogs.hrc>
32#include <svx/svxids.hrc>
57#if HAVE_FEATURE_OPENCL
69#include <com/sun/star/awt/XContainerWindowEventHandler.hpp>
70#include <com/sun/star/awt/ContainerWindowProvider.hpp>
71#include <com/sun/star/awt/XControl.hpp>
72#include <com/sun/star/awt/PosSize.hpp>
73#include <com/sun/star/frame/Desktop.hpp>
74#include <com/sun/star/frame/ModuleManager.hpp>
75#include <com/sun/star/frame/UnknownModuleException.hpp>
76#include <com/sun/star/lang/XMultiServiceFactory.hpp>
77#include <com/sun/star/linguistic2/LinguProperties.hpp>
78#include <com/sun/star/setup/UpdateCheck.hpp>
85#include <officecfg/Office/OptionsDialog.hxx>
142struct ModuleToGroupNameMap_Impl
144 std::u16string_view m_pModule;
145 OUString m_sGroupName;
146 sal_uInt16 m_nNodeId;
152 {
u"ProductName", OUString(), SID_GENERAL_OPTIONS },
153 {
u"LanguageSettings", OUString(), SID_LANGUAGE_OPTIONS },
154 {
u"Internet", OUString(), SID_INET_DLG },
155 {
u"LoadSave", OUString(), SID_FILTER_DLG },
156 {
u"Writer", OUString(), SID_SW_EDITOPTIONS },
157 {
u"WriterWeb", OUString(), SID_SW_ONLINEOPTIONS },
158 {
u"Math", OUString(), SID_SM_EDITOPTIONS },
159 {
u"Calc", OUString(), SID_SC_EDITOPTIONS },
160 {
u"Impress", OUString(), SID_SD_EDITOPTIONS },
161 {
u"Draw", OUString(), SID_SD_GRAPHIC_OPTIONS },
162 {
u"Charts", OUString(), SID_SCH_EDITOPTIONS },
163 {
u"Base", OUString(), SID_SB_STARBASEOPTIONS },
166static void setGroupName( std::u16string_view rModule,
const OUString& rGroupName )
168 for (ModuleToGroupNameMap_Impl& rEntry :
ModuleMap)
170 if ( rEntry.m_pModule == rModule )
172 rEntry.m_sGroupName = rGroupName;
178static OUString
getGroupName( std::u16string_view rModule,
bool bForced )
181 for (
const ModuleToGroupNameMap_Impl& rEntry :
ModuleMap)
183 if ( rEntry.m_pModule == rModule )
185 sGroupName = rEntry.m_sGroupName;
190 if ( sGroupName.isEmpty() && bForced )
192 if ( rModule ==
u"Writer" )
194 else if ( rModule ==
u"WriterWeb" )
196 else if ( rModule ==
u"Calc" )
198 else if ( rModule ==
u"Impress" )
200 else if ( rModule ==
u"Draw" )
202 else if ( rModule ==
u"Math" )
204 else if ( rModule ==
u"Base" )
212 for (ModuleToGroupNameMap_Impl& rEntry :
ModuleMap)
213 rEntry.m_sGroupName.clear();
218 sal_uInt16 nNodeId = 0xFFFF;
219 for (
const ModuleToGroupNameMap_Impl& rEntry :
ModuleMap)
221 if ( rEntry.m_pModule == rModule )
223 nNodeId = rEntry.m_nNodeId;
233bool MailMergeCfgIsEmailSupported()
235 std::optional<bool> b = officecfg::Office::Writer::MailMergeWizard::EMailSupported::get();
260#if HAVE_FEATURE_DESKTOP
275#if HAVE_FEATURE_OPENCL
280#if HAVE_FEATURE_SCRIPTING
285 return fnCreate ? (*fnCreate)( pPage, pController, &
rSet ) :
nullptr;
290struct OptionsMapping_Impl
292 const char* m_pGroupName;
293 const char* m_pPageName;
294 sal_uInt16 m_nPageId;
302 {
"ProductName",
nullptr, SID_GENERAL_OPTIONS },
316 {
"LanguageSettings",
nullptr, SID_LANGUAGE_OPTIONS },
322 {
"Internet",
nullptr, SID_INET_DLG },
325 {
"LoadSave",
nullptr, SID_FILTER_DLG },
327 {
"LoadSave",
"VBAProperties", SID_OPTFILTER_MSOFFICE },
330 {
"Writer",
nullptr, SID_SW_EDITOPTIONS },
331 {
"Writer",
"General", RID_SW_TP_OPTLOAD_PAGE },
332 {
"Writer",
"View", RID_SW_TP_CONTENT_OPT },
333 {
"Writer",
"FormattingAids", RID_SW_TP_OPTSHDWCRSR },
334 {
"Writer",
"Grid", RID_SVXPAGE_GRID },
335 {
"Writer",
"BasicFontsWestern", RID_SW_TP_STD_FONT },
336 {
"Writer",
"BasicFontsAsian", RID_SW_TP_STD_FONT_CJK },
337 {
"Writer",
"BasicFontsCTL", RID_SW_TP_STD_FONT_CTL },
338 {
"Writer",
"Print", RID_SW_TP_OPTPRINT_PAGE },
339 {
"Writer",
"Table", RID_SW_TP_OPTTABLE_PAGE },
340 {
"Writer",
"Changes", RID_SW_TP_REDLINE_OPT },
341 {
"Writer",
"Comparison", RID_SW_TP_COMPARISON_OPT },
342 {
"Writer",
"Compatibility", RID_SW_TP_OPTCOMPATIBILITY_PAGE },
343 {
"Writer",
"AutoCaption", RID_SW_TP_OPTCAPTION_PAGE },
344 {
"Writer",
"MailMerge", RID_SW_TP_MAILCONFIG },
345 {
"WriterWeb",
nullptr, SID_SW_ONLINEOPTIONS },
346 {
"WriterWeb",
"View", RID_SW_TP_HTML_CONTENT_OPT },
347 {
"WriterWeb",
"FormattingAids", RID_SW_TP_HTML_OPTSHDWCRSR },
348 {
"WriterWeb",
"Grid", RID_SW_TP_HTML_OPTGRID_PAGE },
349 {
"WriterWeb",
"Print", RID_SW_TP_HTML_OPTPRINT_PAGE },
350 {
"WriterWeb",
"Table", RID_SW_TP_HTML_OPTTABLE_PAGE },
351 {
"WriterWeb",
"Background", RID_SW_TP_BACKGROUND },
352 {
"Math",
nullptr, SID_SM_EDITOPTIONS },
353 {
"Math",
"Settings", SID_SM_TP_PRINTOPTIONS },
354 {
"Calc",
nullptr, SID_SC_EDITOPTIONS },
355 {
"Calc",
"General", SID_SC_TP_LAYOUT },
356 {
"Calc",
"View", SID_SC_TP_CONTENT },
357 {
"Calc",
"Calculate", SID_SC_TP_CALC },
358 {
"Calc",
"Formula", SID_SC_TP_FORMULA },
359 {
"Calc",
"SortLists", SID_SC_TP_USERLISTS },
360 {
"Calc",
"Changes", SID_SC_TP_CHANGES },
361 {
"Calc",
"Compatibility", SID_SC_TP_COMPATIBILITY },
362 {
"Calc",
"Grid", SID_SC_TP_GRID },
363 {
"Calc",
"Print", RID_SC_TP_PRINT },
364 {
"Impress",
nullptr, SID_SD_EDITOPTIONS },
365 {
"Impress",
"General", SID_SI_TP_MISC },
366 {
"Impress",
"View", SID_SI_TP_CONTENTS },
367 {
"Impress",
"Grid", SID_SI_TP_SNAP },
368 {
"Impress",
"Print", SID_SI_TP_PRINT },
369 {
"Draw",
nullptr, SID_SD_GRAPHIC_OPTIONS },
370 {
"Draw",
"General", SID_SD_TP_MISC },
371 {
"Draw",
"View", SID_SD_TP_CONTENTS },
372 {
"Draw",
"Grid", SID_SD_TP_SNAP },
373 {
"Draw",
"Print", SID_SD_TP_PRINT },
374 {
"Charts",
nullptr, SID_SCH_EDITOPTIONS },
376 {
"Base",
nullptr, SID_SB_STARBASEOPTIONS },
377 {
"Base",
"Connections", SID_SB_CONNECTIONPOOLING },
378 {
"Base",
"Databases", SID_SB_DBREGISTEROPTIONS },
379 {
nullptr,
nullptr, 0 }
392 _rGroupName = OUString::createFromAscii(
OptionsMap_Impl[nIdx].m_pGroupName );
394 _rPageName = OUString::createFromAscii(
OptionsMap_Impl[nIdx].m_pPageName );
405 bool bIsHidden =
false;
406 OUString sGroupName, sPageName;
409 if ( sPageName.isEmpty() )
412 bIsHidden = _rOptOptions.
IsPageHidden( sPageName, sGroupName );
444 , xOkPB(m_xBuilder->weld_button(
"ok"))
445 , xApplyPB(m_xBuilder->weld_button(
"apply"))
446 , xBackPB(m_xBuilder->weld_button(
"revert"))
447 , xTreeLB(m_xBuilder->weld_tree_view(
"pages"))
448 , xTabBox(m_xBuilder->weld_container(
"box"))
451 , bForgetSelection(false)
452 , bIsFromExtensionManager(fromExtensionManager)
453 , bIsForSetDocumentLanguage(false)
454 , bNeedsRestart(false)
457 Size aSize(
xTreeLB->get_approximate_digit_width() * 82,
xTreeLB->get_height_rows(30));
458#if HAVE_FEATURE_GPGME
482 if (bActivateLastSelection)
498 std::unique_ptr<weld::TreeIter> xEntry =
xTreeLB->make_iterator();
499 bool bEntry =
xTreeLB->get_iter_first(*xEntry);
504 if (
xTreeLB->get_iter_depth(*xEntry))
509 pPageInfo->
m_xPage->FillUserData();
510 OUString aPageData(pPageInfo->
m_xPage->GetUserData());
511 if ( !aPageData.isEmpty() )
533 bEntry =
xTreeLB->iter_next(*xEntry);
537 bEntry =
xTreeLB->get_iter_first(*xEntry);
540 if (!
xTreeLB->get_iter_depth(*xEntry))
545 bEntry =
xTreeLB->iter_next(*xEntry);
551 sal_uInt16 nId,
const OUString& rPageName, sal_uInt16 nGroup )
553 std::unique_ptr<weld::TreeIter> xParent =
xTreeLB->make_iterator();
554 if (!
xTreeLB->get_iter_first(*xParent))
556 xTreeLB->iter_nth_sibling(*xParent, nGroup);
560 xTreeLB->insert(xParent.get(), -1, &rPageName, &
sId,
nullptr,
nullptr,
false,
nullptr);
568 sal_uInt16 nDialogId )
576 std::unique_ptr<weld::TreeIter> xEntry =
xTreeLB->make_iterator();
577 bool bEntry =
xTreeLB->get_iter_first(*xEntry);
580 if (!
xTreeLB->get_iter_depth(*xEntry))
582 bEntry =
xTreeLB->iter_next(*xEntry);
601 xTreeLB->iter_parent(*xParent);
603 weld::fromId<OptionsGroupInfo*>(
xTreeLB->get_id(*xParent));
612 ResetCurrentPageFromConfig();
617 std::unique_ptr<weld::TreeIter> xEntry =
xTreeLB->make_iterator();
618 bool bEntry =
xTreeLB->get_iter_first(*xEntry);
621 if (
xTreeLB->get_iter_depth(*xEntry))
624 if ( pPageInfo->
m_xPage && !pPageInfo->
m_xPage->HasExchangeSupport() )
626 std::unique_ptr<weld::TreeIter> xParent =
xTreeLB->make_iterator(xEntry.get());
627 xTreeLB->iter_parent(*xParent);
629 weld::fromId<OptionsGroupInfo*>(
xTreeLB->get_id(*xParent));
644 bEntry =
xTreeLB->iter_next(*xEntry);
651 if (pHelp && xCurrentPageEntry && xTreeLB->get_iter_depth(*xCurrentPageEntry))
653 OptionsPageInfo* pPageInfo = weld::fromId<OptionsPageInfo*>(xTreeLB->get_id(*xCurrentPageEntry));
656 OUString sHelpId(pPageInfo->
m_xPage->GetHelpId());
666 bool bOkPressed = &rButton == xOkPB.get();
670 if (xCurrentPageEntry && xTreeLB->get_iter_depth(*xCurrentPageEntry))
672 OptionsPageInfo* pPageInfo = weld::fromId<OptionsPageInfo*>(xTreeLB->get_id(*xCurrentPageEntry));
675 std::unique_ptr<weld::TreeIter> xParent = xTreeLB->make_iterator(xCurrentPageEntry.get());
676 xTreeLB->iter_parent(*xParent);
678 pGroupInfo = weld::fromId<OptionsGroupInfo*>(xTreeLB->get_id(*xParent));
680 && pPageInfo->
m_xPage->HasExchangeSupport() )
683 if ( nLeave == DeactivateRC::KeepPage )
686 assert(xTreeLB->is_selected(*xCurrentPageEntry));
709 auto xInItemSet = pGroupInfo->
m_pShell
718 ResetCurrentPageFromConfig();
720 xCurrentPageEntry.reset();
737 pParent, eRestartReason);
738 if (bRestart && !bOkPressed)
744 std::unique_ptr<weld::TreeIter> xEntry =
xTreeLB->make_iterator();
745 bool bEntry =
xTreeLB->get_iter_first(*xEntry);
748 if (!
xTreeLB->get_iter_depth(*xEntry))
759 bEntry =
xTreeLB->iter_next(*xEntry);
795 std::unique_ptr<weld::TreeIter> xEntry;
801 if ( sLastURL.isEmpty() )
809 std::unique_ptr<weld::TreeIter> xTemp =
xTreeLB->make_iterator();
810 bool bTemp =
xTreeLB->get_iter_first(*xTemp);
814 if (
xTreeLB->get_iter_depth(*xTemp) &&
xTreeLB->get_id(*xTemp).toInt64())
826 || ( !pPageInfo->
m_nPageId && sLastURL == sPageURL ) )
828 xEntry =
xTreeLB->make_iterator(xTemp.get());
832 bTemp =
xTreeLB->iter_next(*xTemp);
838 xEntry =
xTreeLB->make_iterator();
839 if (!
xTreeLB->get_iter_first(*xEntry) || !
xTreeLB->iter_next(*xEntry))
846 std::unique_ptr<weld::TreeIter> xParent(
xTreeLB->make_iterator(xEntry.get()));
847 xTreeLB->iter_parent(*xParent);
849 xTreeLB->scroll_to_row(*xParent);
850 xTreeLB->scroll_to_row(*xEntry);
871 std::unique_ptr<weld::TreeIter> xEntry(
xTreeLB->make_iterator());
873 if (!
xTreeLB->get_cursor(xEntry.get()))
879 std::unique_ptr<weld::TreeIter> xParent(
xTreeLB->make_iterator(xEntry.get()));
880 bool bParent =
xTreeLB->iter_parent(*xParent);
891 if (pOptPageInfo && pOptPageInfo->
m_xPage && pOptPageInfo->
m_xPage->IsVisible())
894 xTreeLB->iter_parent(*xCurParent);
901 if ( nLeave == DeactivateRC::KeepPage )
909 pOptPageInfo->
m_xPage->set_visible(
false);
911 else if ( pOptPageInfo && pOptPageInfo->
m_xExtPage )
944 pPageInfo->
m_xExtPage = std::make_unique<ExtensionsTabPage>(
951 pPageInfo->
m_xPage->HasExchangeSupport())
955 pPageInfo->
m_xPage->set_visible(
true);
964 OUString sTitleText =
sTitle
965 +
" - " +
xTreeLB->get_text(*xParent)
966 +
" - " +
xTreeLB->get_text(*xEntry);
986 pNewPage = pPageInfo->
m_xPage.get();
989 OUString sHelpId(pNewPage ? pNewPage->
GetHelpId() : OUString());
990 if (sHelpId.isEmpty())
998 std::optional<SfxItemSet> pRet;
1001 case SID_GENERAL_OPTIONS:
1006 SID_HTML_MODE, SID_HTML_MODE,
1007 SID_ATTR_METRIC, SID_ATTR_METRIC,
1008 SID_AUTOSPELL_CHECK, SID_AUTOSPELL_CHECK,
1009 SID_ATTR_QUICKLAUNCHER, SID_ATTR_QUICKLAUNCHER,
1010 SID_ATTR_YEAR2000, SID_ATTR_YEAR2000> );
1023 if( SfxItemState::DEFAULT <= pDispatch->QueryState( SID_ATTR_YEAR2000, pItem ) )
1026 pRet->Put(
SfxUInt16Item( SID_ATTR_YEAR2000, officecfg::Office::Common::DateFormat::TwoDigitYear::get() ) );
1029 pRet->Put(
SfxUInt16Item( SID_ATTR_YEAR2000, officecfg::Office::Common::DateFormat::TwoDigitYear::get() ) );
1033 pRet->Put(
SfxBoolItem(SID_PRINTER_NOTFOUND_WARN, officecfg::Office::Common::Print::Warning::NotFound::get()));
1035 SfxPrinterChangeFlags nFlag = officecfg::Office::Common::Print::Warning::PaperSize::get() ? SfxPrinterChangeFlags::CHG_SIZE : SfxPrinterChangeFlags::NONE;
1036 nFlag |= officecfg::Office::Common::Print::Warning::PaperOrientation::get() ? SfxPrinterChangeFlags::CHG_ORIENTATION : SfxPrinterChangeFlags::NONE;
1037 pRet->Put(
SfxFlagItem( SID_PRINTER_CHANGESTODOC,
static_cast<int>(nFlag) ));
1041 case SID_LANGUAGE_OPTIONS :
1046 SID_ATTR_CHAR_CJK_LANGUAGE, SID_ATTR_CHAR_CJK_LANGUAGE,
1047 SID_ATTR_CHAR_CTL_LANGUAGE, SID_ATTR_CHAR_CTL_LANGUAGE,
1048 SID_SET_DOCUMENT_LANGUAGE, SID_SET_DOCUMENT_LANGUAGE,
1049 SID_ATTR_LANGUAGE, SID_ATTR_LANGUAGE,
1050 SID_AUTOSPELL_CHECK, SID_AUTOSPELL_CHECK,
1051 SID_OPT_LOCALE_CHANGED, SID_OPT_LOCALE_CHANGED>);
1056 sal_Int16 nMinLead = 2,
1060 nMinLead = xProp->getHyphMinLeading();
1061 nMinTrail = xProp->getHyphMinTrailing();
1071 if(SfxItemState::DEFAULT <= pDispatch->QueryState(SID_ATTR_LANGUAGE, pLangItem))
1072 pRet->Put(*pLangItem, SID_ATTR_LANGUAGE);
1073 if(SfxItemState::DEFAULT <= pDispatch->QueryState(SID_ATTR_CHAR_CJK_LANGUAGE, pLangItem))
1074 pRet->Put(*pLangItem, SID_ATTR_CHAR_CJK_LANGUAGE);
1075 if(SfxItemState::DEFAULT <= pDispatch->QueryState(SID_ATTR_CHAR_CTL_LANGUAGE, pLangItem))
1076 pRet->Put(*pLangItem, SID_ATTR_CHAR_CTL_LANGUAGE);
1080 if(SfxItemState::DEFAULT <= pDispatch->QueryState(SID_AUTOSPELL_CHECK, pItem))
1082 pRet->Put(std::unique_ptr<SfxPoolItem>(pItem->
Clone()));
1089 bVal = xProp->getIsSpellAuto();
1092 pRet->Put(
SfxBoolItem(SID_AUTOSPELL_CHECK, bVal));
1102 SID_SAVEREL_INET, SID_SAVEREL_FSYS,
1103 SID_INET_NOPROXY, SID_INET_FTP_PROXY_PORT,
1104 SID_SECURE_URL, SID_SECURE_URL> );
1107 case SID_FILTER_DLG:
1111 SID_ATTR_WARNALIENFORMAT, SID_ATTR_WARNALIENFORMAT,
1112 SID_ATTR_DOCINFO, SID_ATTR_AUTOSAVEMINUTE,
1113 SID_SAVEREL_INET, SID_SAVEREL_FSYS,
1114 SID_ATTR_PRETTYPRINTING, SID_ATTR_PRETTYPRINTING> );
1118 case SID_SB_STARBASEOPTIONS:
1120 svl::Items<SID_SB_POOLING_ENABLED, SID_SB_DB_REGISTER> );
1125 case SID_SCH_EDITOPTIONS:
1127 pRet.emplace(
SfxGetpApp()->GetPool(), svl::Items<SID_SCH_EDITOPTIONS, SID_SCH_EDITOPTIONS> );
1139 case SID_GENERAL_OPTIONS:
1151 sal_uInt16 nY2K = USHRT_MAX;
1155 if( USHRT_MAX != nY2K )
1161 SfxCallMode::ASYNCHRON, { pYearItem });
1163 officecfg::Office::Common::DateFormat::TwoDigitYear::set(nY2K, batch);
1168 officecfg::Office::Common::Print::Warning::NotFound::set(pWarnItem->GetValue(), batch);
1172 bool bPaperSizeWarning = bool(
static_cast<SfxPrinterChangeFlags>(pFlag->GetValue()) & SfxPrinterChangeFlags::CHG_SIZE);
1173 officecfg::Office::Common::Print::Warning::PaperSize::set(bPaperSizeWarning, batch);
1174 bool bPaperOrientationWarning = bool(
static_cast<SfxPrinterChangeFlags>(pFlag->GetValue()) & SfxPrinterChangeFlags::CHG_ORIENTATION);
1175 officecfg::Office::Common::Print::Warning::PaperOrientation::set(bPaperOrientationWarning, batch);
1179 bool bHelpTips = officecfg::Office::Common::Help::Tip::get();
1182 bool bExtendedHelp = officecfg::Office::Common::Help::ExtendedTip::get();
1189 case SID_LANGUAGE_OPTIONS :
1195 case SID_FILTER_DLG:
1199 case SID_SB_STARBASEOPTIONS:
1204 case SID_SCH_EDITOPTIONS:
1210 SAL_WARN(
"cui.options",
"Unhandled option in ApplyItemSet");
1218 bool bSaveSpellCheck =
false;
1221 Reference< XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
1222 Reference< XLinguProperties > xProp = LinguProperties::create( xContext );
1225 xProp->setHyphMinLeading(
static_cast<sal_Int16
>(pHyphenItem->GetMinLead()) );
1226 xProp->setHyphMinTrailing(
static_cast<sal_Int16
>(pHyphenItem->GetMinTrail()) );
1227 bSaveSpellCheck =
true;
1235 if(SfxItemState::SET ==
rSet.
GetItemState( SID_ATTR_LANGUAGE,
false, &pItem ))
1238 bSaveSpellCheck =
true;
1240 if(SfxItemState::SET ==
rSet.
GetItemState( SID_ATTR_CHAR_CTL_LANGUAGE,
false, &pItem ))
1243 bSaveSpellCheck =
true;
1245 if(SfxItemState::SET ==
rSet.
GetItemState( SID_ATTR_CHAR_CJK_LANGUAGE,
false, &pItem ))
1248 bSaveSpellCheck =
true;
1251 if( SfxItemState::SET ==
rSet.
GetItemState(SID_AUTOSPELL_CHECK,
false, &pItem ))
1255 SfxCallMode::ASYNCHRON|SfxCallMode::RECORD, { pItem });
1257 xProp->setIsSpellAuto( bOnlineSpelling );
1260 if( bSaveSpellCheck )
1264 pDispatch->
Execute(SID_SPELLCHECKER_CHANGED, SfxCallMode::ASYNCHRON);
1268 if( SfxItemState::SET ==
rSet.
GetItemState(SID_OPT_LOCALE_CHANGED,
false, &pItem ))
1271 while ( _pViewFrame )
1274 SfxCallMode::ASYNCHRON, { pItem });
1282 OUString sIdentifier;
1283 Reference < XFrame > xCurrentFrame( _xFrame );
1284 Reference < XModuleManager2 > xModuleManager = ModuleManager::create(::comphelper::getProcessComponentContext());
1285 if ( !xCurrentFrame.is() )
1288 xCurrentFrame = xDesktop->getCurrentFrame();
1291 if ( xCurrentFrame.is() )
1295 sIdentifier = xModuleManager->identify( xCurrentFrame );
1297 catch ( css::frame::UnknownModuleException& )
1299 SAL_INFO(
"cui.options",
"unknown module" );
1303 TOOLS_WARN_EXCEPTION(
"cui.options",
"getActiveModule_Impl(): exception of XModuleManager::identify()" );
1313 sal_uInt16 nGroup = 0;
1322 nGroup =
AddGroup(
CuiResId(SID_GENERAL_OPTIONS_RES[0].
first),
nullptr,
nullptr, SID_GENERAL_OPTIONS );
1323 const sal_uInt16 nEnd =
static_cast<sal_uInt16
>(std::size(SID_GENERAL_OPTIONS_RES));
1325 for (sal_uInt16
i = 1;
i < nEnd; ++
i)
1328 nPageId = SID_GENERAL_OPTIONS_RES[
i].second;
1337 Reference < XInterface > xService( setup::UpdateCheck::create( ::comphelper::getProcessComponentContext() ) );
1338 if( ! xService.is() )
1341 catch ( css::uno::DeploymentException& )
1350 if( ! officecfg::Office::Common::Misc::ExperimentalMode::get() )
1363 for (
size_t i = 1;
i < std::size(SID_FILTER_DLG_RES); ++
i )
1365 nPageId =
static_cast<sal_uInt16
>(SID_FILTER_DLG_RES[
i].second);
1375 nGroup =
AddGroup(
CuiResId(SID_LANGUAGE_OPTIONS_RES[0].
first),
nullptr,
nullptr, SID_LANGUAGE_OPTIONS );
1376 for (
size_t i = 1;
i < std::size(SID_LANGUAGE_OPTIONS_RES); ++
i)
1378 nPageId =
static_cast<sal_uInt16
>(SID_LANGUAGE_OPTIONS_RES[
i].second);
1385 if( ! officecfg::Office::Common::Misc::ExperimentalMode::get() )
1404 if ( aFactory ==
"com.sun.star.text.TextDocument"
1405 || aFactory ==
"com.sun.star.text.WebDocument"
1406 || aFactory ==
"com.sun.star.text.GlobalDocument" )
1411 if ( aFactory ==
"com.sun.star.text.WebDocument" )
1416 for (
size_t i = 1;
i < std::size(SID_SW_EDITOPTIONS_RES); ++
i )
1418 nPageId =
static_cast<sal_uInt16
>(SID_SW_EDITOPTIONS_RES[
i].second);
1423 ( RID_SW_TP_MAILCONFIG !=
nPageId || MailMergeCfgIsEmailSupported() ) )
1427 AddTabPage( RID_SW_TP_OPTTEST_PAGE,
"Internal Test", nGroup );
1434 nGroup =
AddGroup(
CuiResId(SID_SW_ONLINEOPTIONS_RES[0].
first), pSwMod, pSwMod, SID_SW_ONLINEOPTIONS );
1435 for(
size_t i = 1;
i < std::size(SID_SW_ONLINEOPTIONS_RES); ++
i )
1437 nPageId =
static_cast<sal_uInt16
>(SID_SW_ONLINEOPTIONS_RES[
i].second);
1442 AddTabPage( RID_SW_TP_OPTTEST_PAGE,
"Internal Test", nGroup );
1451 if ( aFactory ==
"com.sun.star.sheet.SpreadsheetDocument" )
1458 const sal_uInt16
nCount =
static_cast<sal_uInt16
>(std::size(SID_SC_EDITOPTIONS_RES));
1459 for ( sal_uInt16
i = 1;
i <
nCount; ++
i )
1461 nPageId =
static_cast<sal_uInt16
>(SID_SC_EDITOPTIONS_RES[
i].second);
1475 if ( aFactory ==
"com.sun.star.presentation.PresentationDocument" )
1481 const sal_uInt16
nCount =
static_cast<sal_uInt16
>(std::size(SID_SD_EDITOPTIONS_RES));
1482 for ( sal_uInt16
i = 1;
i <
nCount; ++
i )
1484 nPageId =
static_cast<sal_uInt16
>(SID_SD_EDITOPTIONS_RES[
i].second);
1497 if ( aFactory ==
"com.sun.star.drawing.DrawingDocument" )
1502 nGroup =
AddGroup(
CuiResId(SID_SD_GRAPHIC_OPTIONS_RES[0].
first), pSdMod, pSdMod, SID_SD_GRAPHIC_OPTIONS );
1503 const sal_uInt16
nCount =
static_cast<sal_uInt16
>(std::size(SID_SD_GRAPHIC_OPTIONS_RES));
1504 for ( sal_uInt16
i = 1;
i <
nCount; ++
i )
1506 nPageId =
static_cast<sal_uInt16
>(SID_SD_GRAPHIC_OPTIONS_RES[
i].second);
1519 if ( aFactory ==
"com.sun.star.formula.FormulaProperties" )
1526 for (
size_t i = 1;
i < std::size(SID_SM_EDITOPTIONS_RES); ++
i )
1528 nPageId =
static_cast<sal_uInt16
>(SID_SM_EDITOPTIONS_RES[
i].second);
1544 nGroup =
AddGroup(
CuiResId(SID_SB_STARBASEOPTIONS_RES[0].
first),
nullptr,
nullptr, SID_SB_STARBASEOPTIONS );
1545 for (
size_t i = 1;
i < std::size(SID_SB_STARBASEOPTIONS_RES); ++
i )
1547 nPageId =
static_cast<sal_uInt16
>(SID_SB_STARBASEOPTIONS_RES[
i].second);
1557 nGroup =
AddGroup(
CuiResId(SID_SCH_EDITOPTIONS_RES[0].
first),
nullptr,
nullptr, SID_SCH_EDITOPTIONS );
1558 for (
size_t i = 1;
i < std::size(SID_SCH_EDITOPTIONS_RES); ++
i )
1560 nPageId =
static_cast<sal_uInt16
>(SID_SCH_EDITOPTIONS_RES[
i].second);
1573 for (
size_t i = 1;
i < std::size(SID_INET_DLG_RES); ++
i )
1575 nPageId =
static_cast<sal_uInt16
>(SID_INET_DLG_RES[
i].second);
1608 if ( j->m_sId == pNode->
m_sId )
1616 std::unique_ptr<Module> pModule;
1619 if ( rExtensionId.empty() )
1631 Reference < XFrame > xCurrentFrame( rFrame );
1633 Reference < XModuleManager2 > xModuleManager = ModuleManager::create(xContext);
1635 if ( !xCurrentFrame.is() )
1637 Reference < XDesktop2 > xDesktop = Desktop::create( xContext );
1638 xCurrentFrame = xDesktop->getCurrentFrame();
1641 if ( xCurrentFrame.is() )
1645 sModule = xModuleManager->identify( xCurrentFrame );
1647 catch ( css::frame::UnknownModuleException& )
1649 SAL_INFO(
"cui.options",
"unknown module" );
1653 TOOLS_WARN_EXCEPTION(
"cui.options",
"OfaTreeOptionsDialog::GetModuleIdentifier(): exception of XModuleManager::identify()");
1660 std::u16string_view rModuleIdentifier )
1662 std::unique_ptr<Module> pModule;
1664 officecfg::Office::OptionsDialog::Modules::get());
1667 for (
const OUString& rModule : seqNames )
1669 if ( rModuleIdentifier == rModule )
1672 pModule.reset(
new Module);
1673 pModule->m_bActive =
true;
1676 xSet->getByName( rModule ) >>= xModAccess;
1677 if ( xModAccess.is() )
1681 xModAccess->getByName(
"Nodes" ) >>= xNodeAccess;
1682 if ( xNodeAccess.is() )
1687 for (
const OUString& rNode : xTemp)
1689 xNodeAccess->getByName( rNode ) >>= xAccess;
1692 xAccess->getByName(
"Index" ) >>=
nIndex;
1695 pModule->m_aNodeList.push_back(
1700 std::vector<OrderedEntry *>::size_type
y = 0;
1701 for ( ;
y < pModule->m_aNodeList.size(); ++
y )
1703 sal_Int32 nNodeIdx = pModule->m_aNodeList[
y]->m_nIndex;
1704 if ( nNodeIdx < 0 || nNodeIdx >
nIndex )
1708 pModule->m_aNodeList.insert(
1709 pModule->m_aNodeList.begin() +
y,
1723 Module* pModule, std::u16string_view rExtensionId)
1728 officecfg::Office::OptionsDialog::Nodes::get());
1732 for ( OUString
const & sGroupName : seqNames )
1735 xSet->getByName( sGroupName ) >>= xNodeAccess;
1737 if ( xNodeAccess.is() )
1739 OUString sNodeId, sLabel, sPageURL;
1740 bool bAllModules =
false;
1742 sNodeId = sGroupName;
1743 xNodeAccess->getByName(
"Label" ) >>= sLabel;
1744 xNodeAccess->getByName(
"OptionsPage" ) >>= sPageURL;
1745 xNodeAccess->getByName(
"AllModules" ) >>= bAllModules;
1747 if ( sLabel.isEmpty() )
1748 sLabel = sGroupName;
1749 OUString sTemp =
getGroupName( sLabel, !rExtensionId.empty() );
1750 if ( !sTemp.isEmpty() )
1752 std::unique_ptr<OptionsNode> pNode(
new OptionsNode(sNodeId, sLabel, bAllModules));
1754 if ( rExtensionId.empty() && !
isNodeActive( pNode.get(), pModule ) )
1760 xNodeAccess->getByName(
"Leaves" ) >>= xLeavesSet;
1761 if ( xLeavesSet.is() )
1764 for ( OUString
const & leafName : seqLeaves )
1767 xLeavesSet->getByName( leafName ) >>= xLeaveAccess;
1769 if ( xLeaveAccess.is() )
1771 OUString
sId, sLeafLabel, sEventHdl, sLeafURL, sLeafGrpId;
1772 sal_Int32 nLeafGrpIdx = 0;
1774 xLeaveAccess->getByName(
"Id" ) >>=
sId;
1775 xLeaveAccess->getByName(
"Label" ) >>= sLeafLabel;
1776 xLeaveAccess->getByName(
"OptionsPage" ) >>= sLeafURL;
1777 xLeaveAccess->getByName(
"EventHandlerService" ) >>= sEventHdl;
1778 xLeaveAccess->getByName(
"GroupId" ) >>= sLeafGrpId;
1779 xLeaveAccess->getByName(
"GroupIndex" ) >>= nLeafGrpIdx;
1781 if ( rExtensionId.empty() ||
sId == rExtensionId )
1783 std::unique_ptr<OptionsLeaf> pLeaf(
new OptionsLeaf(
1784 sLeafLabel, sLeafURL, sEventHdl, sLeafGrpId, nLeafGrpIdx ));
1786 if ( !sLeafGrpId.isEmpty() )
1788 bool bAlreadyOpened =
false;
1789 if ( !pNode->m_aGroupedLeaves.empty() )
1791 for (
auto & rGroup : pNode->m_aGroupedLeaves)
1793 if ( !rGroup.empty() &&
1794 rGroup[0]->m_sGroupId == sLeafGrpId )
1796 std::vector<std::unique_ptr<OptionsLeaf>>::size_type l = 0;
1797 for ( ; l < rGroup.size(); ++l )
1799 if ( rGroup[l]->m_nGroupIndex >= nLeafGrpIdx )
1802 rGroup.insert( rGroup.begin() + l, std::move(pLeaf) );
1803 bAlreadyOpened =
true;
1808 if ( !bAlreadyOpened )
1810 std::vector< std::unique_ptr<OptionsLeaf> > aGroupedLeaves;
1811 aGroupedLeaves.push_back( std::move(pLeaf) );
1812 pNode->m_aGroupedLeaves.push_back( std::move(aGroupedLeaves) );
1816 pNode->m_aLeaves.push_back( std::move(pLeaf) );
1823 if ( !pNode->m_aLeaves.empty() || !pNode->m_aGroupedLeaves.empty() )
1825 pModule ? aNodeList.push_back( std::move(pNode) ) : aOutNodeList.push_back( std::move(pNode) );
1830 if ( pModule && !aNodeList.empty() )
1834 OUString sNodeId =
i->m_sId;
1835 for (
auto j = aNodeList.begin(); j != aNodeList.end(); ++j )
1837 if ( (*j)->m_sId == sNodeId )
1839 aOutNodeList.push_back( std::move(*j) );
1840 aNodeList.erase( j );
1846 for (
auto &
i: aNodeList )
1847 aOutNodeList.push_back( std::move(
i) );
1849 return aOutNodeList;
1854 sal_uInt16 nRet = 0;
1856 std::unique_ptr<weld::TreeIter> xEntry = rTreeLB.
make_iterator();
1862 OUString sTemp(rTreeLB.
get_text(*xEntry));
1863 if (sTemp == rGroupName)
1877 if ( USHRT_MAX == nGrpId )
1889 for (
auto const& node : rNodeList)
1891 if ( !node->m_aLeaves.empty() || !node->m_aGroupedLeaves.empty() )
1893 for (
auto const & j: node->m_aGroupedLeaves )
1895 for (
size_t k = 0; k < j.size(); ++k )
1901 for (
auto const & j: node->m_aLeaves )
1917 std::unique_ptr< SvxDicListChgClamp > pClamp;
1925 return SfxOkDialogController::run();
1931 OUString aEvtHdl,
const Reference< awt::XContainerWindowProvider >& rProvider )
1932 : m_pContainer(pParent)
1933 , m_sPageURL(
std::move(aPageURL))
1934 , m_sEventHdl(
std::move(aEvtHdl))
1935 , m_xWinProvider(rProvider)
1976 Reference < XMultiServiceFactory >
xFactory( ::comphelper::getProcessServiceFactory() );
1983 Reference<awt::XWindowPeer> xParent(
m_xPageParent, UNO_QUERY);
1988 Reference< awt::XControl > xPageControl(
m_xPage, UNO_QUERY );
1989 if ( xPageControl.is() )
1991 Reference< awt::XWindowPeer > xWinPeer( xPageControl->getPeer() );
1992 if ( xWinPeer.is() )
2003 TOOLS_WARN_EXCEPTION(
"cui.options",
"ExtensionsTabPage::CreateDialogWithHandler(): exception of XDialogProvider2::createDialogWithHandler()");
2018 TOOLS_WARN_EXCEPTION(
"cui.options",
"ExtensionsTabPage::DispatchAction(): exception of XDialogEventHandler::callHandlerMethod()" );
2034 xPageParent->Show(
true, ShowFlags::NoActivate);
2056 m_xPage->setPosSize(0, 0, aWindowRect.Width, aWindowRect.Height, awt::PosSize::POSSIZE);
SfxApplication * SfxGetpApp()
Reference< XExecutableDialog > m_xDialog
std::map< OUString, std::shared_ptr< NoAutoUnloadModule > > ModuleMap
OUString GetHelpId() const
sal_uInt16 GetValue() const
bool DispatchAction(const OUString &rAction)
css::uno::Reference< css::awt::XWindow > m_xPageParent
ExtensionsTabPage(weld::Container *pParent, OUString rPageURL, OUString aEvtHdl, const css::uno::Reference< css::awt::XContainerWindowProvider > &rProvider)
css::uno::Reference< css::awt::XWindow > m_xPage
void CreateDialogWithHandler()
css::uno::Reference< css::awt::XContainerWindowProvider > m_xWinProvider
weld::Container * m_pContainer
css::uno::Reference< css::awt::XContainerWindowEventHandler > m_xEventHdl
virtual bool Start(const OUString &rHelpId, weld::Widget *pWidget=nullptr)
static void EnableQuickHelp()
static bool IsQuickHelpEnabled()
static void DisableBalloonHelp()
static void EnableBalloonHelp()
static void DisableQuickHelp()
static bool IsBalloonHelpEnabled()
INetProtocol GetProtocol() const
static css::uno::Reference< css::linguistic2::XSearchableDictionaryList > GetDictionaryList()
static css::uno::Reference< css::linguistic2::XLinguProperties > GetLinguPropertySet()
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
virtual ~OfaTreeOptionsDialog() override
std::unique_ptr< weld::Button > xBackPB
OfaTreeOptionsDialog(weld::Window *pParent, bool fromExtensionManager)
std::unique_ptr< weld::TreeIter > xCurrentPageEntry
static void ApplyItemSet(sal_uInt16 nId, const SfxItemSet &rSet)
svtools::RestartReason eRestartReason
std::unique_ptr< weld::Button > xApplyPB
static void ApplyLanguageOptions(const SfxItemSet &rSet)
void SetNeedsRestart(svtools::RestartReason eReason)
bool bIsForSetDocumentLanguage
void InsertNodes(const VectorOfNodes &rNodeList)
static OUString getCurrentFactory_Impl(const css::uno::Reference< css::frame::XFrame > &_xFrame)
css::uno::Reference< css::frame::XFrame > m_xFrame
static std::unique_ptr< Module > LoadModule(std::u16string_view rModuleIdentifier)
OptionsPageInfo * AddTabPage(sal_uInt16 nId, const OUString &rPageName, sal_uInt16 nGroup)
void ActivatePage(sal_uInt16 nResId)
void InitItemSets(OptionsGroupInfo &rGroupInfo)
static LastPageSaver * pLastPageSaver
virtual short run() override
void LoadExtensionOptions(std::u16string_view rExtensionId)
static VectorOfNodes LoadNodes(Module *pModule, std::u16string_view rExtensionId)
void Initialize(const css::uno::Reference< css::frame::XFrame > &_xFrame)
bool bIsFromExtensionManager
sal_uInt16 AddGroup(const OUString &rGroupName, SfxShell *pCreateShell, SfxModule *pCreateModule, sal_uInt16 nDialogId)
std::unique_ptr< weld::Container > xTabBox
std::unique_ptr< weld::Button > xOkPB
void ResetCurrentPageFromConfig()
std::optional< SfxItemSet > CreateItemSet(sal_uInt16 nId)
void ActivateLastSelection()
static OUString GetModuleIdentifier(const css::uno::Reference< css::frame::XFrame > &xFrame)
css::uno::Reference< css::awt::XContainerWindowProvider > m_xContainerWinProvider
std::unique_ptr< weld::TreeView > xTreeLB
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static void GetOptions(SfxItemSet &)
static void SetOptions(const SfxItemSet &)
static SfxModule * GetModule(SfxToolsModule nSharedLib)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *)
const SfxPoolItem * Execute(sal_uInt16 nSlot, SfxCallMode nCall=SfxCallMode::SLOT, const SfxPoolItem **pArgs=nullptr, sal_uInt16 nModi=0, const SfxPoolItem **pInternalArgs=nullptr)
const SfxPoolItem * ExecuteList(sal_uInt16 nSlot, SfxCallMode nCall, std::initializer_list< SfxPoolItem const * > args, std::initializer_list< SfxPoolItem const * > internalargs=std::initializer_list< SfxPoolItem const * >())
sal_uInt8 & GetMinTrail()
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
virtual std::unique_ptr< SfxTabPage > CreateTabPage(sal_uInt16 nId, weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rSet)
virtual SfxPoolItem * Clone(SfxItemPool *pPool=nullptr) const=0
virtual void ApplyItemSet(sal_uInt16 nId, const SfxItemSet &rSet)
virtual std::optional< SfxItemSet > CreateItemSet(sal_uInt16 nId)
static SAL_WARN_UNUSED_RESULT SfxViewFrame * Current()
static SAL_WARN_UNUSED_RESULT SfxViewFrame * GetNext(const SfxViewFrame &rPrev, const SfxObjectShell *pDoc=nullptr, bool bOnlyVisible=true)
SfxDispatcher * GetDispatcher()
static SAL_WARN_UNUSED_RESULT SfxViewFrame * GetFirst(const SfxObjectShell *pDoc=nullptr, bool bOnlyVisible=true)
constexpr tools::Long Height() const
void setHeight(tools::Long nHeight)
constexpr tools::Long Width() const
static bool IsCTLFontEnabled()
bool IsModuleInstalled(EModule eModule) const
bool IsPageHidden(std::u16string_view _rPage, std::u16string_view _rGroup) const
bool IsGroupHidden(std::u16string_view _rGroup) const
css::uno::Any GetUserItem(const OUString &sName) const
void SetUserItem(const OUString &sName, const css::uno::Any &aValue)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static vcl::Window * GetWindow(const css::uno::Reference< css::awt::XWindow > &rxWindow)
static std::shared_ptr< ConfigurationChanges > create()
static void GetOptions(SfxItemSet &_rFillItems)
static void SetOptions(const SfxItemSet &_rSourceItems)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *_rAttrSet)
static void SetOptions(const SfxItemSet &_rSourceItems)
static void GetOptions(SfxItemSet &_rFillItems)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rSet)
static void storeConfigItems()
virtual css::uno::Reference< css::awt::XWindow > CreateChildFrame()=0
virtual std::unique_ptr< TreeIter > make_iterator(const TreeIter *pOrig=nullptr) const=0
virtual OUString get_text(int row, int col=-1) const=0
virtual bool get_iter_first(TreeIter &rIter) const=0
virtual bool iter_next(TreeIter &rIter) const=0
virtual int get_iter_depth(const TreeIter &rIter) const=0
OUString CuiResId(TranslateId aKey)
#define DBG_ASSERT(sCon, aError)
#define TOOLS_WARN_EXCEPTION(area, stream)
virtual tools::Long GetValue() const override
Reference< XSingleServiceFactory > xFactory
constexpr OUStringLiteral HID_OFADLG_TREELISTBOX
#define LINK(Instance, Class, Member)
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
bool IsJapaneseFindEnabled()
bool IsAsianTypographyEnabled()
SvxChartColorTable GetDefaultColors()
COMPHELPER_DLLPUBLIC OUString getExpandedUri(css::uno::Reference< css::uno::XComponentContext > const &context, OUString const &uri)
Reference< XComponentContext > getProcessComponentContext()
constexpr OUStringLiteral first
bool SaveDictionaries(const uno::Reference< XSearchableDictionaryList > &xDicList)
static constexpr auto Items
int GetMinimumEditHeight()
OUString toId(const void *pValue)
#define RID_SVXPAGE_OPTIONS_CTL
#define RID_SFXPAGE_LINGU
#define OFA_TP_LANGUAGES_FOR_SET_DOCUMENT_LANGUAGE
#define RID_SVXPAGE_BASICIDE_OPTIONS
#define RID_SVXPAGE_OPENCL
#define RID_SVXPAGE_INET_SECURITY
#define RID_SVXPAGE_LANGTOOL_OPTIONS
#define RID_SVXPAGE_ONLINEUPDATE
#define RID_SVXPAGE_ASIAN_LAYOUT
#define RID_SVX_FONT_SUBSTITUTION
#define RID_SVXPAGE_JSEARCH_OPTIONS
#define RID_SVXPAGE_INET_PROXY
#define RID_SVXPAGE_PERSONALIZATION
#define RID_SVXPAGE_OPTIONS_JAVA
#define RID_SVXPAGE_COLORCONFIG
#define RID_SVXPAGE_ACCESSIBILITYCONFIG
#define RID_OFAPAGE_HTMLOPT
#define RID_SVXPAGE_INET_MAIL
#define RID_SVXPAGE_COLOR
#define RID_OPTPAGE_CHART_DEFCOLORS
#define RID_OFAPAGE_MSFILTEROPT2
#define RID_SFXPAGE_GENERAL
#define RID_SVXPAGE_DEEPL_OPTIONS
#define RID_SFXPAGE_PRINTOPTIONS
OUString m_sLastPageURL_ExtMgr
OUString m_sLastPageURL_Tools
std::vector< std::unique_ptr< OrderedEntry > > m_aNodeList
std::unique_ptr< SfxItemSet > m_pOutItemSet
OptionsGroupInfo(SfxShell *pSh, SfxModule *pMod, sal_uInt16 nId)
std::optional< SfxItemSet > m_pInItemSet
std::unique_ptr< ExtensionsTabPage > m_xExtPage
std::unique_ptr< SfxTabPage > m_xPage
OptionsPageInfo(sal_uInt16 nId)
std::unique_ptr< SfxTabPage >(* CreateTabPage)(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
static void deleteGroupNames()
static bool isNodeActive(OptionsNode const *pNode, Module *pModule)
IMPL_LINK_NOARG(OfaTreeOptionsDialog, ShowPageHdl_Impl, weld::TreeView &, void)
constexpr OUStringLiteral VIEWOPT_DATANAME
static void lcl_insertLeaf(OfaTreeOptionsDialog *pDlg, OptionsNode const *pNode, OptionsLeaf const *pLeaf, const weld::TreeView &rTreeLB)
static OUString getGroupName(std::u16string_view rModule, bool bForced)
static void SetViewOptUserItem(SvtViewOptions &rOpt, const OUString &rData)
static sal_uInt16 getGroupNodeId(std::u16string_view rModule)
static std::unique_ptr< SfxTabPage > CreateGeneralTabPage(sal_uInt16 nId, weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rSet)
static OUString GetViewOptUserItem(const SvtViewOptions &rOpt)
static bool lcl_isOptionHidden(sal_uInt16 _nPageId, const SvtOptionsDialogOptions &_rOptOptions)
IMPL_LINK(OfaTreeOptionsDialog, ApplyHdl_Impl, weld::Button &, rButton, void)
static void setGroupName(std::u16string_view rModule, const OUString &rGroupName)
static bool lcl_getStringFromID(sal_uInt16 _nPageId, OUString &_rGroupName, OUString &_rPageName)
OptionsMapping_Impl const OptionsMap_Impl[]
static sal_uInt16 lcl_getGroupId(std::u16string_view rGroupName, const weld::TreeView &rTreeLB)
std::vector< std::unique_ptr< OptionsNode > > VectorOfNodes
WinBits const WB_DIALOGCONTROL
WinBits const WB_CHILDDLGCTRL