27#include <com/sun/star/uno/Any.hxx>
28#include <com/sun/star/uno/Sequence.hxx>
47#define PROPERTYNAME_URL DYNAMICMENU_PROPERTYNAME_URL
48#define PROPERTYNAME_TITLE DYNAMICMENU_PROPERTYNAME_TITLE
49#define PROPERTYNAME_IMAGEIDENTIFIER DYNAMICMENU_PROPERTYNAME_IMAGEIDENTIFIER
50#define PROPERTYNAME_TARGETNAME DYNAMICMENU_PROPERTYNAME_TARGETNAME
52#define PROPERTYCOUNT 4
68 if( lSetupEntries.empty() || lSetupEntries.rbegin()->sURL != rEntry.
sURL )
69 lSetupEntries.push_back( rEntry );
77 std::vector< SvtDynMenuEntry >
GetList()
const
79 sal_Int32 nSetupCount =
static_cast<sal_Int32
>(lSetupEntries.size());
80 sal_Int32 nUserCount =
static_cast<sal_Int32
>(lUserEntries.size());
82 std::vector< SvtDynMenuEntry > lResult ( nSetupCount+nUserCount );
83 OUString sSeparator (
"private:separator" );
85 for(
const auto& pList : {&lSetupEntries, &lUserEntries} )
87 for(
const auto& rItem : *pList )
90 if( rItem.sURL == sSeparator )
92 entry.
sURL = sSeparator;
98 lResult[nStep] = entry;
106 std::vector< SvtDynMenuEntry > lSetupEntries;
107 std::vector< SvtDynMenuEntry > lUserEntries;
116 css::uno::Reference<css::container::XHierarchicalNameAccess>
const & xHierarchyAccess,
117 sal_uInt32& nNewCount, sal_uInt32& nWizardCount );
122 SvtDynMenu aWizardMenu;
128 sal_uInt32 nNewCount = 0;
129 sal_uInt32 nWizardCount = 0;
137 DBG_ASSERT( !(lNames.getLength()!=lValues.getLength()),
"SvtDynamicMenuOptions_Impl::SvtDynamicMenuOptions_Impl()\nI miss some values of configuration keys!\n" );
162 sal_uInt32 nItem = 0;
163 sal_uInt32 nPosition = 0;
167 for( nItem=0; nItem<nNewCount; ++nItem )
170 lValues[nPosition] >>= aItem.
sURL;
172 lValues[nPosition] >>= aItem.
sTitle;
178 aNewMenu.AppendSetupEntry( aItem );
185 for( nItem=0; nItem<nWizardCount; ++nItem )
188 lValues[nPosition] >>= aItem.
sURL;
190 lValues[nPosition] >>= aItem.
sTitle;
196 aWizardMenu.AppendSetupEntry( aItem );
199 std::vector< SvtDynMenuEntry > lReturn;
203 lReturn = aNewMenu.GetList();
207 lReturn = aWizardMenu.GetList();
225 css::uno::Reference<css::container::XHierarchicalNameAccess>
const & xHierarchyAccess,
226 sal_uInt32& nNewCount, sal_uInt32& nWizardCount )
233 nNewCount = lNewItems.getLength();
234 nWizardCount = lWizardItems.getLength();
284 std::u16string_view sSetNode )
286 struct CountWithPrefixSort
288 bool operator() ( std::u16string_view s1, std::u16string_view s2 )
const
300 struct SelectByPrefix
302 bool operator() ( std::u16string_view s )
const
309 std::vector< OUString > lTemp;
310 sal_Int32 nSourceCount = lSource.getLength();
311 sal_Int32 nDestinationStep = lDestination.getLength();
313 lDestination.realloc( (nSourceCount*
PROPERTYCOUNT)+nDestinationStep );
314 auto plDestination = lDestination.getArray();
317 lTemp.insert( lTemp.end(), lSource.begin(), lSource.end() );
320 std::stable_sort( lTemp.begin(), lTemp.end(), CountWithPrefixSort() );
322 std::stable_partition( lTemp.begin(), lTemp.end(), SelectByPrefix() );
326 for(
const auto& rItem : lTemp )
css::uno::Sequence< css::uno::Any > GetProperties(const css::uno::Sequence< OUString > &rNames)
css::uno::Sequence< OUString > GetNodeNames(const OUString &rNode)
static SAL_DLLPRIVATE css::uno::Reference< css::container::XHierarchicalNameAccess > acquireTree(utl::ConfigItem const &item)
#define DBG_ASSERT(sCon, aError)
std::vector< HistoryItem > GetList(EHistoryType eHistory)
sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix=10)
constexpr bool starts_with(std::basic_string_view< charT, traits > sv, std::basic_string_view< charT, traits > x) noexcept