23#include <ooo/vba/msforms/fmMultiSelect.hpp>
28ScVbaListBox::ScVbaListBox(
const uno::Reference< XHelperInterface >& xParent,
const uno::Reference< uno::XComponentContext >& xContext,
const uno::Reference< css::uno::XInterface >& xControl,
const uno::Reference< frame::XModel >& xModel, std::unique_ptr<ov::AbstractGeometryAttributes> pGeomHelper )
41 uno::Reference< XPropValue > xPropVal(
Selected(
nIndex ), uno::UNO_QUERY_THROW );
42 xPropVal->setValue(
uno::Any(
true ) );
48 uno::Sequence< sal_Int16 > sSelection;
49 m_xProps->getPropertyValue(
"SelectedItems" ) >>= sSelection;
50 if ( !sSelection.hasElements() )
58 uno::Sequence< sal_Int16 > sSelection;
59 uno::Sequence< OUString > sItems;
60 m_xProps->getPropertyValue(
"SelectedItems" ) >>= sSelection;
61 m_xProps->getPropertyValue(
"StringItemList" ) >>= sItems;
63 throw uno::RuntimeException(
"Attribute use invalid." );
65 if ( sSelection.hasElements() )
66 aRet <<= sItems[ sSelection[ 0 ] ];
75 throw uno::RuntimeException(
"Attribute use invalid." );
78 uno::Sequence< OUString > sList;
79 m_xProps->getPropertyValue(
"StringItemList" ) >>= sList;
82 throw uno::RuntimeException(
"Attribute use invalid." );
84 uno::Sequence< sal_Int16 > nSelectedIndices {
nValue };
85 uno::Sequence< sal_Int16 > nOldSelectedIndices;
86 m_xProps->getPropertyValue(
"SelectedItems" ) >>= nOldSelectedIndices;
88 if ( nSelectedIndices != nOldSelectedIndices )
109 bool bMultiSelect =
false;
110 m_xProps->getPropertyValue(
"MultiSelection" ) >>= bMultiSelect;
112 return bMultiSelect ? msforms::fmMultiSelect::fmMultiSelectMulti : msforms::fmMultiSelect::fmMultiSelectSingle;
118 bool bBoolVal =
false;
119 switch ( _multiselect )
121 case msforms::fmMultiSelect::fmMultiSelectMulti:
122 case msforms::fmMultiSelect::fmMultiSelectExtended:
125 case msforms::fmMultiSelect::fmMultiSelectSingle:
129 throw lang::IllegalArgumentException();
136css::uno::Any SAL_CALL
139 uno::Sequence< OUString > sList;
140 m_xProps->getPropertyValue(
"StringItemList" ) >>= sList;
141 sal_Int16
nLength =
static_cast< sal_Int16
>( sList.getLength() );
144 sal_Int16
nIndex =
static_cast< sal_Int16
>(
index );
145 if( nIndex < 0 || nIndex >=
nLength )
146 throw uno::RuntimeException(
"Error Number." );
178 if( !(
value >>= bValue) )
179 throw uno::RuntimeException(
"Invalid type. need boolean." );
180 uno::Sequence< sal_Int16 > nList;
181 m_xProps->getPropertyValue(
"SelectedItems" ) >>= nList;
182 sal_Int16
nLength =
static_cast<sal_Int16
>( nList.getLength() );
190 auto pList = nList.getArray();
193 pList[
i] = nList[
i + 1];
227 uno::Sequence< sal_Int16 > nList;
228 m_xProps->getPropertyValue(
"SelectedItems" ) >>= nList;
230 bool bRet = std::find(std::cbegin(nList), std::cend(nList),
nIndex) != std::cend(nList);
262 return "ScVbaListBox";
265uno::Sequence< OUString >
270 "ooo.vba.msforms.ScVbaListBox"
void removeItem(const css::uno::Any &index)
void setRowSource(std::u16string_view _rowsource)
::sal_Int32 getListCount()
css::uno::Any List(const css::uno::Any &pvargIndex, const css::uno::Any &pvarColumn)
void AddItem(const css::uno::Any &pvargItem, const css::uno::Any &pvargIndex)
virtual void SAL_CALL setRowSource(const OUString &_rowsource) override
virtual sal_Int32 SAL_CALL getMultiSelect() override
virtual void SAL_CALL setValue(const css::uno::Any &_value) override
virtual void SAL_CALL Clear() override
virtual OUString SAL_CALL getText() override
ScVbaListBox(const css::uno::Reference< ov::XHelperInterface > &xParent, const css::uno::Reference< css::uno::XComponentContext > &xContext, const css::uno::Reference< css::uno::XInterface > &xControl, const css::uno::Reference< css::frame::XModel > &xModel, std::unique_ptr< ov::AbstractGeometryAttributes > pGeomHelper)
virtual css::uno::Any SAL_CALL getValue() override
virtual css::uno::Any SAL_CALL List(const css::uno::Any &pvargIndex, const css::uno::Any &pvarColumn) override
virtual css::uno::Any getValueEvent() override
virtual css::uno::Reference< ov::msforms::XNewFont > SAL_CALL getFont() override
virtual css::uno::Any SAL_CALL getListIndex() override
virtual css::uno::Any SAL_CALL Selected(::sal_Int32 index) override
ListControlHelper maListHelper
virtual void setValueEvent(const css::uno::Any &value) override
virtual css::uno::Sequence< OUString > getServiceNames() override
virtual void SAL_CALL setRowSource(const OUString &_rowsource) override
virtual void SAL_CALL setMultiSelect(sal_Int32 _multiselect) override
virtual void SAL_CALL setText(const OUString &_text) override
virtual ::sal_Int32 SAL_CALL getListCount() override
virtual OUString getServiceImplName() override
virtual void SAL_CALL removeItem(const css::uno::Any &index) override
virtual void SAL_CALL AddItem(const css::uno::Any &pvargItem, const css::uno::Any &pvargIndex) override
virtual void SAL_CALL setListIndex(const css::uno::Any &_value) override
Sequence< OUString > aServiceNames
sal_Int32 findValue(const css::uno::Sequence< T1 > &_rList, const T2 &_rValue)
OUString getAnyAsString(const uno::Any &pvargItem)
Reference< XModel > xModel
cppu::ImplInheritanceHelper< ScVbaControl, ov::msforms::XListBox, css::script::XDefaultProperty > ListBoxImpl_BASE