Kaydet (Commit) 83cefb5c authored tarafından Caolán McNamara's avatar Caolán McNamara

support comboboxtext id values

Change-Id: Ibebdaab5b073a55cb646687890bc16d5f55c0341
Reviewed-on: https://gerrit.libreoffice.org/55460Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst cf7b97d1
...@@ -49,6 +49,17 @@ class VclExpander; ...@@ -49,6 +49,17 @@ class VclExpander;
class VclMultiLineEdit; class VclMultiLineEdit;
namespace xmlreader { class XmlReader; } namespace xmlreader { class XmlReader; }
struct ComboBoxTextItem
{
OUString m_sItem;
OString m_sId;
ComboBoxTextItem(const OUString& rItem, const OString& rId)
: m_sItem(rItem)
, m_sId(rId)
{
}
};
class VCL_DLLPUBLIC VclBuilder class VCL_DLLPUBLIC VclBuilder
{ {
public: public:
...@@ -361,7 +372,7 @@ private: ...@@ -361,7 +372,7 @@ private:
void handleRow(xmlreader::XmlReader &reader, const OString &rID); void handleRow(xmlreader::XmlReader &reader, const OString &rID);
void handleTabChild(vcl::Window *pParent, xmlreader::XmlReader &reader); void handleTabChild(vcl::Window *pParent, xmlreader::XmlReader &reader);
void handleMenu(xmlreader::XmlReader &reader, const OString &rID); void handleMenu(xmlreader::XmlReader &reader, const OString &rID);
std::vector<OUString> handleItems(xmlreader::XmlReader &reader) const; std::vector<ComboBoxTextItem> handleItems(xmlreader::XmlReader &reader) const;
void handleSizeGroup(xmlreader::XmlReader &reader); void handleSizeGroup(xmlreader::XmlReader &reader);
......
...@@ -713,7 +713,6 @@ void OutputDevice::SetTextFillColor() ...@@ -713,7 +713,6 @@ void OutputDevice::SetTextFillColor()
void OutputDevice::SetTextFillColor( const Color& rColor ) void OutputDevice::SetTextFillColor( const Color& rColor )
{ {
Color aColor( rColor ); Color aColor( rColor );
bool bTransFill = ImplIsColorTransparent( aColor ); bool bTransFill = ImplIsColorTransparent( aColor );
......
...@@ -2639,11 +2639,11 @@ void VclBuilder::handleAtkObject(xmlreader::XmlReader &reader, vcl::Window *pWin ...@@ -2639,11 +2639,11 @@ void VclBuilder::handleAtkObject(xmlreader::XmlReader &reader, vcl::Window *pWin
} }
} }
std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) const std::vector<ComboBoxTextItem> VclBuilder::handleItems(xmlreader::XmlReader &reader) const
{ {
int nLevel = 1; int nLevel = 1;
std::vector<OUString> aItems; std::vector<ComboBoxTextItem> aItems;
sal_Int32 nItemIndex = 0; sal_Int32 nItemIndex = 0;
while(true) while(true)
...@@ -2663,7 +2663,7 @@ std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) cons ...@@ -2663,7 +2663,7 @@ std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) cons
if (name.equals("item")) if (name.equals("item"))
{ {
bool bTranslated = false; bool bTranslated = false;
OString sContext; OString sContext, sId;
while (reader.nextAttribute(&nsId, &name)) while (reader.nextAttribute(&nsId, &name))
{ {
...@@ -2676,6 +2676,11 @@ std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) cons ...@@ -2676,6 +2676,11 @@ std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) cons
name = reader.getAttributeValue(false); name = reader.getAttributeValue(false);
sContext = OString(name.begin, name.length); sContext = OString(name.begin, name.length);
} }
else if (name.equals("id"))
{
name = reader.getAttributeValue(false);
sId = OString(name.begin, name.length);
}
} }
reader.nextItem( reader.nextItem(
...@@ -2695,7 +2700,7 @@ std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) cons ...@@ -2695,7 +2700,7 @@ std::vector<OUString> VclBuilder::handleItems(xmlreader::XmlReader &reader) cons
if (m_pStringReplace) if (m_pStringReplace)
sFinalValue = (*m_pStringReplace)(sFinalValue); sFinalValue = (*m_pStringReplace)(sFinalValue);
aItems.push_back(sFinalValue); aItems.emplace_back(sFinalValue, sId);
++nItemIndex; ++nItemIndex;
} }
} }
...@@ -3021,7 +3026,7 @@ void VclBuilder::insertMenuObject(PopupMenu *pParent, PopupMenu *pSubMenu, const ...@@ -3021,7 +3026,7 @@ void VclBuilder::insertMenuObject(PopupMenu *pParent, PopupMenu *pSubMenu, const
/// Insert items to a ComboBox or a ListBox. /// Insert items to a ComboBox or a ListBox.
/// They have no common ancestor that would have 'InsertEntry()', so use a template. /// They have no common ancestor that would have 'InsertEntry()', so use a template.
template<typename T> bool insertItems(vcl::Window *pWindow, VclBuilder::stringmap &rMap, const std::vector<OUString> &rItems) template<typename T> bool insertItems(vcl::Window *pWindow, VclBuilder::stringmap &rMap, const std::vector<ComboBoxTextItem> &rItems)
{ {
T *pContainer = dynamic_cast<T*>(pWindow); T *pContainer = dynamic_cast<T*>(pWindow);
if (!pContainer) if (!pContainer)
...@@ -3029,7 +3034,11 @@ template<typename T> bool insertItems(vcl::Window *pWindow, VclBuilder::stringma ...@@ -3029,7 +3034,11 @@ template<typename T> bool insertItems(vcl::Window *pWindow, VclBuilder::stringma
sal_uInt16 nActiveId = extractActive(rMap); sal_uInt16 nActiveId = extractActive(rMap);
for (auto const& item : rItems) for (auto const& item : rItems)
pContainer->InsertEntry(item); {
sal_Int32 nPos = pContainer->InsertEntry(item.m_sItem);
if (!item.m_sId.isEmpty())
pContainer->SetEntryData(nPos, new OUString(OUString::fromUtf8(item.m_sId)));
}
if (nActiveId < rItems.size()) if (nActiveId < rItems.size())
pContainer->SelectEntryPos(nActiveId); pContainer->SelectEntryPos(nActiveId);
...@@ -3090,7 +3099,7 @@ VclPtr<vcl::Window> VclBuilder::handleObject(vcl::Window *pParent, xmlreader::Xm ...@@ -3090,7 +3099,7 @@ VclPtr<vcl::Window> VclBuilder::handleObject(vcl::Window *pParent, xmlreader::Xm
stringmap aProperties, aPangoAttributes; stringmap aProperties, aPangoAttributes;
stringmap aAtkAttributes; stringmap aAtkAttributes;
std::vector<OUString> aItems; std::vector<ComboBoxTextItem> aItems;
if (!sCustomProperty.isEmpty()) if (!sCustomProperty.isEmpty())
aProperties[OString("customproperty")] = sCustomProperty; aProperties[OString("customproperty")] = sCustomProperty;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment