weld CuiAboutConfigValueDialog

Change-Id: I91f5fb2bcd7eb365214278d9683d71c78ad45617
Reviewed-on: https://gerrit.libreoffice.org/68547
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/cui/source/options/optaboutconfig.cxx b/cui/source/options/optaboutconfig.cxx
index 2cde3cd..5947c50 100644
--- a/cui/source/options/optaboutconfig.cxx
+++ b/cui/source/options/optaboutconfig.cxx
@@ -77,13 +77,11 @@ struct UserData
    {}
};

VCL_BUILDER_FACTORY_ARGS(CuiCustomMultilineEdit,WB_LEFT|WB_VCENTER|WB_BORDER|WB_3DLOOK)

void CuiCustomMultilineEdit::KeyInput( const KeyEvent& rKeyEvent )
IMPL_LINK(CuiAboutConfigValueDialog, KeyInputHdl, const KeyEvent&, rKeyEvent, bool)
{
    bool bValid = false;
    bool bNonSpace = rKeyEvent.GetKeyCode().GetCode() != KEY_SPACE;
    if( bNumericOnly && bNonSpace )
    if (m_bNumericOnly && bNonSpace )
    {
        const vcl::KeyCode& rKeyCode = rKeyEvent.GetKeyCode();
        sal_uInt16 nGroup = rKeyCode.GetGroup();
@@ -132,13 +130,9 @@ void CuiCustomMultilineEdit::KeyInput( const KeyEvent& rKeyEvent )
    }
    else
        bValid = true;
    if( bValid )
        Edit::KeyInput( rKeyEvent );
}

Size CuiCustomMultilineEdit::GetOptimalSize() const
{
    return LogicToPixel(Size(150, GetTextHeight()), MapMode(MapUnit::MapAppFont));
    //if value return true to claim that it has been handled
    return !bValid;
}

CuiAboutConfigTabPage::CuiAboutConfigTabPage( vcl::Window* pParent/*, const SfxItemSet& rItemSet*/ ) :
@@ -540,27 +534,21 @@ std::vector< OUString > CuiAboutConfigTabPage::commaStringToSequence( const OUSt
    return tempVector;
}

CuiAboutConfigValueDialog::CuiAboutConfigValueDialog( vcl::Window* pWindow,
                                                      const OUString& rValue,
                                                      int limit ) :
    ModalDialog( pWindow, "AboutConfigValueDialog", "cui/ui/aboutconfigvaluedialog.ui" ),
    m_pEDValue( get<CuiCustomMultilineEdit>("valuebox") )
CuiAboutConfigValueDialog::CuiAboutConfigValueDialog(weld::Window* pWindow,
                                                     const OUString& rValue,
                                                     int limit)
    : GenericDialogController(pWindow, "cui/ui/aboutconfigvaluedialog.ui", "AboutConfigValueDialog")
    , m_bNumericOnly(limit != 0)
    , m_xEDValue(m_xBuilder->weld_entry("valuebox"))
{
    m_pEDValue->bNumericOnly = ( limit !=0 );
    m_pEDValue->SetMaxTextLen( limit == 0 ? EDIT_NOLIMIT : limit);
    m_pEDValue->SetText( rValue );

    if (limit)
        m_xEDValue->set_max_length(limit);
    m_xEDValue->set_text(rValue);
    m_xEDValue->connect_key_press(LINK(this, CuiAboutConfigValueDialog, KeyInputHdl));
}

CuiAboutConfigValueDialog::~CuiAboutConfigValueDialog()
{
    disposeOnce();
}

void CuiAboutConfigValueDialog::dispose()
{
    m_pEDValue.clear();
    ModalDialog::dispose();
}

IMPL_LINK_NOARG( CuiAboutConfigTabPage, ResetBtnHdl_Impl, Button*, void )
@@ -636,11 +624,11 @@ IMPL_LINK_NOARG( CuiAboutConfigTabPage, StandardHdl_Impl, Button*, void )
                else if( sPropertyType == "hyper" )
                    limit = HYPER_LEN_LIMIT;

                VclPtrInstance<CuiAboutConfigValueDialog> pValueDialog(nullptr, sDialogValue, limit);
                CuiAboutConfigValueDialog aValueDialog(GetFrameWeld(), sDialogValue, limit);

                if( pValueDialog->Execute() == RET_OK )
                if (aValueDialog.run() == RET_OK )
                {
                    sNewValue = pValueDialog->getValue();
                    sNewValue = aValueDialog.getValue();
                    bSaveChanges = true;
                    if ( sPropertyType == "short")
                    {
diff --git a/cui/source/options/optaboutconfig.hxx b/cui/source/options/optaboutconfig.hxx
index 7d10212e..eed7400 100644
--- a/cui/source/options/optaboutconfig.hxx
+++ b/cui/source/options/optaboutconfig.hxx
@@ -26,19 +26,6 @@ class CuiAboutConfigValueDialog;
struct Prop_Impl;
struct UserData;

class CuiCustomMultilineEdit : public Edit
{
public:
    bool bNumericOnly;
    CuiCustomMultilineEdit( vcl::Window* pParent, WinBits nStyle )
        : Edit( pParent, nStyle )
        , bNumericOnly(false)
    {}

    virtual void KeyInput( const KeyEvent& rKeyEvent ) override;
    virtual Size GetOptimalSize() const override;
};

class CuiAboutConfigTabPage : public ModalDialog
{
private:
@@ -80,19 +67,21 @@ public:
   void FillItemSet();
};

class CuiAboutConfigValueDialog : public ModalDialog
class CuiAboutConfigValueDialog : public weld::GenericDialogController
{
private:
    VclPtr<CuiCustomMultilineEdit> m_pEDValue;
    bool m_bNumericOnly;
    std::unique_ptr<weld::Entry> m_xEDValue;

    DECL_LINK(KeyInputHdl, const KeyEvent&, bool);

public:
    CuiAboutConfigValueDialog( vcl::Window* pWindow, const OUString& rValue , int limit);
    CuiAboutConfigValueDialog(weld::Window* pWindow, const OUString& rValue , int limit);
    virtual ~CuiAboutConfigValueDialog() override;
    virtual void dispose() override;

    OUString getValue()
    {
        return m_pEDValue->GetText();
        return m_xEDValue->get_text();
    }
};

diff --git a/cui/uiconfig/ui/aboutconfigvaluedialog.ui b/cui/uiconfig/ui/aboutconfigvaluedialog.ui
index 6fb99a2..cb96b0e 100644
--- a/cui/uiconfig/ui/aboutconfigvaluedialog.ui
+++ b/cui/uiconfig/ui/aboutconfigvaluedialog.ui
@@ -1,14 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="cui">
  <requires lib="gtk+" version="3.18"/>
  <requires lib="LibreOffice" version="1.0"/>
  <object class="GtkDialog" id="AboutConfigValueDialog">
    <property name="can_focus">False</property>
    <property name="border_width">6</property>
    <property name="title" translatable="yes" context="aboutconfigvaluedialog|AboutConfigValueDialog">Name</property>
    <property name="resizable">False</property>
    <property name="modal">True</property>
    <property name="default_width">0</property>
    <property name="default_height">0</property>
    <property name="type_hint">dialog</property>
    <child>
      <placeholder/>
    </child>
    <child internal-child="vbox">
      <object class="GtkBox" id="dialog-vbox1">
        <property name="can_focus">False</property>
@@ -83,8 +87,10 @@
              <object class="GtkLabel" id="label1">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes" context="aboutconfigvaluedialog|label1">Value:</property>
                <property name="use_underline">True</property>
                <property name="mnemonic_widget">valuebox</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="expand">False</property>
@@ -93,11 +99,11 @@
              </packing>
            </child>
            <child>
              <object class="cuilo-CuiCustomMultilineEdit" id="valuebox">
              <object class="GtkEntry" id="valuebox">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="hexpand">True</property>
                <property name="wrap_mode">char</property>
                <property name="width_chars">50</property>
              </object>
              <packing>
                <property name="expand">False</property>
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index b92d8e1..c2e95ce 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -166,9 +166,6 @@
    <glade-widget-class title="Address MultiLine Edit" name="swuilo-AddressMultiLineEdit"
                        generic-name="AddressMultiLineEdit" parent="GtkTextView"
                        icon-name="widget-gtk-textview"/>
    <glade-widget-class title="Cui Custom MultiLine Edit" name="cuilo-CuiCustomMultilineEdit"
                        generic-name="CuiCustomMultiLineEdit" parent="GtkTextView"
                        icon-name="widget-gtk-textview"/>
    <glade-widget-class title="SvtValueSet" name="svtlo-ValueSet"
                        generic-name="Set of Value Options" parent="GtkDrawingArea"
                        icon-name="widget-gtk-drawingarea"/>
diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py
index de3671f..53d47c4 100755
--- a/solenv/bin/native-code.py
+++ b/solenv/bin/native-code.py
@@ -434,7 +434,6 @@ custom_widgets = [
    'ConditionEdit',
    'ContentListBox',
    'ContextVBox',
    'CuiCustomMultilineEdit',
    'CustomAnimationList',
    'CustomPropertiesControl',
    'DataTreeListBox',
diff --git a/solenv/sanitizers/ui/cui.suppr b/solenv/sanitizers/ui/cui.suppr
index b0ca8cd..925d8f0 100644
--- a/solenv/sanitizers/ui/cui.suppr
+++ b/solenv/sanitizers/ui/cui.suppr
@@ -16,8 +16,6 @@ cui/uiconfig/ui/aboutconfigdialog.ui://GtkLabel[@id='property'] orphan-label
cui/uiconfig/ui/aboutconfigdialog.ui://GtkLabel[@id='type'] orphan-label
cui/uiconfig/ui/aboutconfigdialog.ui://GtkLabel[@id='value'] orphan-label
cui/uiconfig/ui/aboutconfigdialog.ui://svtlo-SvSimpleTableContainer[@id='preferences'] no-labelled-by
cui/uiconfig/ui/aboutconfigvaluedialog.ui://GtkLabel[@id='label1'] orphan-label
cui/uiconfig/ui/aboutconfigvaluedialog.ui://cuilo-CuiCustomMultilineEdit[@id='valuebox'] no-labelled-by
cui/uiconfig/ui/acorexceptpage.ui://GtkEntry[@id='abbrev'] no-labelled-by
cui/uiconfig/ui/acorexceptpage.ui://GtkEntry[@id='double'] no-labelled-by
cui/uiconfig/ui/applyautofmtpage.ui://GtkLabel[@id='label1'] orphan-label