[Libreoffice-commits] core.git: 2 commits - include/vcl solenv/clang-format svtools/source toolkit/source vcl/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Sat Aug 31 11:13:18 UTC 2019


 solenv/clang-format/blacklist        |    2 
 svtools/source/inc/unoiface.hxx      |   63 ------
 svtools/source/uno/unoiface.cxx      |  257 ----------------------------
 toolkit/source/awt/vclxtoolkit.cxx   |  320 ++++++++++++++++++++++++++++++++++-
 vcl/source/control/roadmap.cxx       |    2 
 vcl/source/control/roadmapwizard.cxx |    2 
 6 files changed, 320 insertions(+), 326 deletions(-)

New commits:
commit 4a52aae51d73fcc8c321da5b6920cb60bd1f1925
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Aug 30 20:19:30 2019 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Sat Aug 31 13:12:44 2019 +0200

    roadmap.hxx only used by vcl and toolkit now
    
    Change-Id: I2a00687fbc53b2b5f2b8ad94e4813e778eb15f21
    Reviewed-on: https://gerrit.libreoffice.org/78323
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/vcl/roadmap.hxx b/include/vcl/toolkit/roadmap.hxx
similarity index 100%
rename from include/vcl/roadmap.hxx
rename to include/vcl/toolkit/roadmap.hxx
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist
index 4b3e8a60c84f..eafeb2fc651b 100644
--- a/solenv/clang-format/blacklist
+++ b/solenv/clang-format/blacklist
@@ -7901,7 +7901,6 @@ include/vcl/prntypes.hxx
 include/vcl/ptrstyle.hxx
 include/vcl/quickselectionengine.hxx
 include/vcl/region.hxx
-include/vcl/roadmap.hxx
 include/vcl/roadmapwizard.hxx
 include/vcl/salctype.hxx
 include/vcl/salgtype.hxx
@@ -7943,6 +7942,7 @@ include/vcl/timer.hxx
 include/vcl/toolbox.hxx
 include/vcl/toolkit/group.hxx
 include/vcl/toolkit/morebtn.hxx
+include/vcl/toolkit/roadmap.hxx
 include/vcl/toolkit/tabdlg.hxx
 include/vcl/toolkit/unowrap.hxx
 include/vcl/transfer.hxx
diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx
index 79073b719b2c..06f157d80b66 100644
--- a/toolkit/source/awt/vclxtoolkit.cxx
+++ b/toolkit/source/awt/vclxtoolkit.cxx
@@ -71,7 +71,6 @@
 #include <vcl/sysdata.hxx>
 #include <vcl/textrectinfo.hxx>
 #include <vcl/vclmedit.hxx>
-#include <vcl/roadmap.hxx>
 
 #include <toolkit/awt/vclxwindows.hxx>
 #include <toolkit/awt/vclxsystemdependentwindow.hxx>
@@ -99,13 +98,11 @@
 #include <vcl/field.hxx>
 #include <vcl/fixed.hxx>
 #include <vcl/floatwin.hxx>
-#include <vcl/toolkit/group.hxx>
 #include <vcl/scheduler.hxx>
 #include <vcl/imgctrl.hxx>
 #include <vcl/longcurr.hxx>
 #include <vcl/lstbox.hxx>
 #include <vcl/menubtn.hxx>
-#include <vcl/toolkit/morebtn.hxx>
 #include <vcl/msgbox.hxx>
 #include <vcl/scrbar.hxx>
 #include <vcl/spin.hxx>
@@ -115,13 +112,16 @@
 #include <vcl/svapp.hxx>
 #include <vcl/syschild.hxx>
 #include <vcl/tabctrl.hxx>
-#include <vcl/toolkit/tabdlg.hxx>
 #include <vcl/tabpage.hxx>
 #include <vcl/toolbox.hxx>
 #include <vcl/virdev.hxx>
 #include <vcl/window.hxx>
 #include <vcl/wrkwin.hxx>
 #include <vcl/throbber.hxx>
+#include <vcl/toolkit/group.hxx>
+#include <vcl/toolkit/morebtn.hxx>
+#include <vcl/toolkit/roadmap.hxx>
+#include <vcl/toolkit/tabdlg.hxx>
 #if HAVE_FEATURE_OPENGL
 #include <vcl/opengl/OpenGLWrapper.hxx>
 #endif
diff --git a/vcl/source/control/roadmap.cxx b/vcl/source/control/roadmap.cxx
index e7f0cfedbeb9..d171d3baf8af 100644
--- a/vcl/source/control/roadmap.cxx
+++ b/vcl/source/control/roadmap.cxx
@@ -20,7 +20,7 @@
 #include <vector>
 #include <algorithm>
 #include <vcl/event.hxx>
-#include <vcl/roadmap.hxx>
+#include <vcl/toolkit/roadmap.hxx>
 #include <vcl/settings.hxx>
 #include <tools/color.hxx>
 #include <rtl/ustring.hxx>
diff --git a/vcl/source/control/roadmapwizard.cxx b/vcl/source/control/roadmapwizard.cxx
index eb1294a95b68..ea0f1efa0026 100644
--- a/vcl/source/control/roadmapwizard.cxx
+++ b/vcl/source/control/roadmapwizard.cxx
@@ -19,7 +19,7 @@
 
 
 #include <vcl/roadmapwizard.hxx>
-#include <vcl/roadmap.hxx>
+#include <vcl/toolkit/roadmap.hxx>
 #include <tools/debug.hxx>
 #include <osl/diagnose.h>
 
commit d688a8a5a59f9a152229f005964697218b31c621
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Aug 30 20:15:17 2019 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Sat Aug 31 13:12:35 2019 +0200

    move SVTXRoadmap to toolkit
    
    Change-Id: If1ef35fe778b67ab028fdadb3804f437e127aa67
    Reviewed-on: https://gerrit.libreoffice.org/78322
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/svtools/source/inc/unoiface.hxx b/svtools/source/inc/unoiface.hxx
index 1cccc09369cc..41d47405fb4e 100644
--- a/svtools/source/inc/unoiface.hxx
+++ b/svtools/source/inc/unoiface.hxx
@@ -30,7 +30,6 @@
 #include <com/sun/star/awt/XTextArea.hpp>
 #include <com/sun/star/awt/XTextComponent.hpp>
 #include <com/sun/star/awt/XTextLayoutConstrains.hpp>
-#include <com/sun/star/beans/XPropertyChangeListener.hpp>
 #include <tools/lineend.hxx>
 #include <vcl/fmtfield.hxx>
 
@@ -212,68 +211,6 @@ protected:
 };
 
 
-//  class SVTXRoadmap
-
-
-namespace vcl
-{
-    class ORoadmap;
-}
-
-struct RMItemData
-{
-    bool            b_Enabled;
-    sal_Int32           n_ID;
-    OUString     Label;
-};
-
-typedef ::cppu::ImplInheritanceHelper  <   VCLXGraphicControl
-                                        ,   css::container::XContainerListener
-                                        ,   css::beans::XPropertyChangeListener
-                                        ,   css::awt::XItemEventBroadcaster
-                                        >   SVTXRoadmap_Base;
-class SVTXRoadmap final : public SVTXRoadmap_Base
-{
-public:
-    SVTXRoadmap();
-
-    void SAL_CALL disposing( const css::lang::EventObject& Source ) override { VCLXWindow::disposing( Source ); }
-
-    // css::awt::XVclWindowPeer
-    void SAL_CALL setProperty( const OUString& PropertyName, const css::uno::Any& Value ) override;
-
-    css::uno::Any SAL_CALL getProperty( const OUString& PropertyName ) override;
-
-    // XContainerListener
-    void SAL_CALL elementInserted( const css::container::ContainerEvent& rEvent ) override;
-    void SAL_CALL elementRemoved( const css::container::ContainerEvent& rEvent ) override;
-    void SAL_CALL elementReplaced( const css::container::ContainerEvent& rEvent ) override;
-
-    // XItemEventBroadcaster
-    virtual void SAL_CALL addItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override;
-    virtual void SAL_CALL removeItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override;
-
-    // XPropertyChangeListener
-    virtual void SAL_CALL propertyChange( const css::beans::PropertyChangeEvent& evt ) override;
-
-private:
-
-    // VCLXGraphicControl overridables
-    virtual void    ImplSetNewImage() override;
-
-    static void     ImplGetPropertyIds( std::vector< sal_uInt16 > &aIds );
-    virtual void    GetPropertyIds( std::vector< sal_uInt16 > &aIds ) override { return ImplGetPropertyIds( aIds ); }
-
-    static RMItemData GetRMItemData( const css::container::ContainerEvent& _rEvent );
-
-    virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) override;
-
-    virtual ~SVTXRoadmap() override;
-
-    ItemListenerMultiplexer     maItemListeners;
-};
-
-
 //  class SVTXNumericField
 
 class SVTXNumericField : public css::awt::XNumericField, public SVTXFormattedField
diff --git a/svtools/source/uno/unoiface.cxx b/svtools/source/uno/unoiface.cxx
index 39b95fbee5b0..5d45cb8362e9 100644
--- a/svtools/source/uno/unoiface.cxx
+++ b/svtools/source/uno/unoiface.cxx
@@ -26,7 +26,6 @@
 #include <svtools/svmedit.hxx>
 #include <unoiface.hxx>
 #include <svtools/filectrl.hxx>
-#include <vcl/roadmap.hxx>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
 #include <com/sun/star/awt/LineEndFormat.hpp>
@@ -116,11 +115,6 @@ SAL_DLLPUBLIC_EXPORT vcl::Window* CreateWindow( VCLXWindow** ppNewComp, const cs
         *ppNewComp = newComp;
         newComp->SetFormatter( static_cast<FormatterBase*>(static_cast<DateField*>(pWindow)) );
     }
-    else if (aServiceName.equalsIgnoreAsciiCase("roadmap") )
-    {
-        pWindow = VclPtr< ::vcl::ORoadmap>::Create( pParent, WB_TABSTOP );
-        *ppNewComp = new SVTXRoadmap;
-    }
     else if ( aServiceName.equalsIgnoreAsciiCase( "ProgressBar" ) )
     {
         if ( pParent )
@@ -1397,257 +1391,6 @@ void SVTXFormattedField::ImplGetPropertyIds( std::vector< sal_uInt16 > &rIds )
 }
 
 
-//  class SVTXRoadmap
-
-using namespace svt;
-
-SVTXRoadmap::SVTXRoadmap() : maItemListeners( *this )
-{
-}
-
-SVTXRoadmap::~SVTXRoadmap()
-{
-}
-
-void SVTXRoadmap::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
-{
-    switch ( rVclWindowEvent.GetId() )
-    {
-        case VclEventId::RoadmapItemSelected:
-        {
-            SolarMutexGuard aGuard;
-            VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
-            if ( pField )
-            {
-                sal_Int16 CurItemID = pField->GetCurrentRoadmapItemID();
-                css::awt::ItemEvent aEvent;
-                aEvent.Selected = CurItemID;
-                aEvent.Highlighted = CurItemID;
-                aEvent.ItemId = CurItemID;
-                maItemListeners.itemStateChanged( aEvent );
-            }
-        }
-        break;
-        default:
-            SVTXRoadmap_Base::ProcessWindowEvent( rVclWindowEvent );
-            break;
-    }
-}
-
-
-void SVTXRoadmap::propertyChange( const css::beans::PropertyChangeEvent& evt )
-{
-    SolarMutexGuard aGuard;
-    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
-    if ( !pField )
-        return;
-
-    css::uno::Reference< css::uno::XInterface > xRoadmapItem = evt.Source;
-    sal_Int32 nID = 0;
-    css::uno::Reference< css::beans::XPropertySet > xPropertySet( xRoadmapItem, css::uno::UNO_QUERY );
-    css::uno::Any aValue = xPropertySet->getPropertyValue("ID");
-    aValue >>= nID;
-
-    OUString sPropertyName = evt.PropertyName;
-    if ( sPropertyName == "Enabled" )
-    {
-        bool bEnable = false;
-        evt.NewValue >>= bEnable;
-        pField->EnableRoadmapItem( static_cast<vcl::RoadmapTypes::ItemId>(nID) , bEnable );
-    }
-    else if ( sPropertyName == "Label" )
-    {
-        OUString sLabel;
-        evt.NewValue >>= sLabel;
-        pField->ChangeRoadmapItemLabel( static_cast<vcl::RoadmapTypes::ItemId>(nID) , sLabel );
-    }
-    else if  ( sPropertyName == "ID" )
-    {
-        sal_Int32 nNewID = 0;
-        evt.NewValue >>= nNewID;
-        evt.OldValue >>= nID;
-        pField->ChangeRoadmapItemID( static_cast<vcl::RoadmapTypes::ItemId>(nID), static_cast<vcl::RoadmapTypes::ItemId>(nNewID) );
-    }
-//    else
-        // TODO handle Interactive appropriately
-}
-
-
-void SVTXRoadmap::addItemListener( const css::uno::Reference< css::awt::XItemListener >& l )
-{
-    maItemListeners.addInterface( l );
-}
-
-void SVTXRoadmap::removeItemListener( const css::uno::Reference< css::awt::XItemListener >& l )
-{
-    maItemListeners.removeInterface( l );
-}
-
-RMItemData SVTXRoadmap::GetRMItemData( const css::container::ContainerEvent& _rEvent )
-{
-    RMItemData aCurRMItemData;
-    css::uno::Reference< css::uno::XInterface > xRoadmapItem;
-    _rEvent.Element >>= xRoadmapItem;
-    css::uno::Reference< css::beans::XPropertySet > xPropertySet( xRoadmapItem, css::uno::UNO_QUERY );
-    if ( xPropertySet.is() )
-    {
-        css::uno::Any aValue = xPropertySet->getPropertyValue("Label");
-        aValue >>= aCurRMItemData.Label;
-        aValue = xPropertySet->getPropertyValue("ID");
-        aValue >>= aCurRMItemData.n_ID;
-        aValue = xPropertySet->getPropertyValue("Enabled");
-        aValue >>= aCurRMItemData.b_Enabled;
-    }
-    else
-    {
-        aCurRMItemData.b_Enabled = false;
-        aCurRMItemData.n_ID = 0;
-    }
-    return aCurRMItemData;
-}
-
-void SVTXRoadmap::elementInserted( const css::container::ContainerEvent& _rEvent )
-{
-    SolarMutexGuard aGuard;
-    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
-    if ( pField )
-    {
-        RMItemData CurItemData = GetRMItemData(  _rEvent );
-        sal_Int32 InsertIndex = 0;
-        _rEvent.Accessor >>= InsertIndex;
-        pField->InsertRoadmapItem( InsertIndex, CurItemData.Label, static_cast<vcl::RoadmapTypes::ItemId>(CurItemData.n_ID), CurItemData.b_Enabled );
-    }
-}
-
-void SVTXRoadmap::elementRemoved( const css::container::ContainerEvent& _rEvent )
-{
-    SolarMutexGuard aGuard;
-    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
-    if ( pField )
-    {
-        sal_Int32 DelIndex = 0;
-        _rEvent.Accessor >>= DelIndex;
-        pField->DeleteRoadmapItem(DelIndex);
-    }
-}
-
-void SVTXRoadmap::elementReplaced( const css::container::ContainerEvent& _rEvent )
-{
-    SolarMutexGuard aGuard;
-    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
-    if ( pField )
-    {
-        RMItemData CurItemData = GetRMItemData(  _rEvent );
-        sal_Int32 ReplaceIndex = 0;
-        _rEvent.Accessor >>= ReplaceIndex;
-        pField->ReplaceRoadmapItem( ReplaceIndex, CurItemData.Label, static_cast<vcl::RoadmapTypes::ItemId>(CurItemData.n_ID), CurItemData.b_Enabled );
-    }
-}
-
-
-void SVTXRoadmap::setProperty( const OUString& PropertyName, const css::uno::Any& Value)
-{
-    SolarMutexGuard aGuard;
-
-    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
-    if ( pField )
-    {
-        sal_uInt16 nPropType = GetPropertyId( PropertyName );
-        switch (nPropType)
-        {
-            case BASEPROPERTY_COMPLETE:
-            {
-                bool b = false;
-                Value >>= b;
-                pField->SetRoadmapComplete( b);
-            }
-            break;
-
-            case BASEPROPERTY_ACTIVATED:
-            {
-                bool b = false;
-                Value >>= b;
-                pField->SetRoadmapInteractive( b);
-            }
-            break;
-
-            case BASEPROPERTY_CURRENTITEMID:
-            {
-                sal_Int32 nId = 0;
-                Value >>= nId;
-                pField->SelectRoadmapItemByID( static_cast<vcl::RoadmapTypes::ItemId>(nId) );
-            }
-            break;
-
-            case BASEPROPERTY_TEXT:
-            {
-                OUString aStr;
-                Value >>= aStr;
-                pField->SetText( aStr );
-                pField->Invalidate();
-            }
-            break;
-
-            default:
-                SVTXRoadmap_Base::setProperty( PropertyName, Value );
-                break;
-        }
-
-    }
-    else
-        SVTXRoadmap_Base::setProperty( PropertyName, Value );
-}
-
-
-css::uno::Any SVTXRoadmap::getProperty( const OUString& PropertyName )
-{
-    SolarMutexGuard aGuard;
-
-    css::uno::Any aReturn;
-
-    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
-    if ( pField )
-    {
-        sal_uInt16 nPropType = GetPropertyId( PropertyName );
-        switch (nPropType)
-        {
-            case BASEPROPERTY_COMPLETE:
-                aReturn <<= pField->IsRoadmapComplete();
-                break;
-            case BASEPROPERTY_ACTIVATED:
-                aReturn <<= pField->IsRoadmapInteractive();
-                break;
-            case BASEPROPERTY_CURRENTITEMID:
-                aReturn <<= pField->GetCurrentRoadmapItemID();
-                break;
-            default:
-                aReturn = SVTXRoadmap_Base::getProperty(PropertyName);
-                break;
-        }
-    }
-    return aReturn;
-}
-
-void SVTXRoadmap::ImplSetNewImage()
-{
-    OSL_PRECOND( GetWindow(), "SVTXRoadmap::ImplSetNewImage: window is required to be not-NULL!" );
-    VclPtr< ::vcl::ORoadmap > pButton = GetAs< ::vcl::ORoadmap >();
-    pButton->SetRoadmapBitmap( GetImage().GetBitmapEx() );
-}
-
-void SVTXRoadmap::ImplGetPropertyIds( std::vector< sal_uInt16 > &rIds )
-{
-    PushPropertyIds( rIds,
-                     BASEPROPERTY_COMPLETE,
-                     BASEPROPERTY_ACTIVATED,
-                     BASEPROPERTY_CURRENTITEMID,
-                     BASEPROPERTY_TEXT,
-                     0);
-    VCLXWindow::ImplGetPropertyIds( rIds, true );
-    VCLXGraphicControl::ImplGetPropertyIds( rIds );
-}
-
-
 //  class SVTXNumericField
 
 SVTXNumericField::SVTXNumericField()
diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx
index 7ede778ef9f5..79073b719b2c 100644
--- a/toolkit/source/awt/vclxtoolkit.cxx
+++ b/toolkit/source/awt/vclxtoolkit.cxx
@@ -38,6 +38,8 @@
 #include <com/sun/star/uno/XComponentContext.hpp>
 #include <com/sun/star/uno/XInterface.hpp>
 #include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/datatransfer/clipboard/SystemClipboard.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
 #include <com/sun/star/awt/XToolkitExperimental.hpp>
@@ -69,6 +71,7 @@
 #include <vcl/sysdata.hxx>
 #include <vcl/textrectinfo.hxx>
 #include <vcl/vclmedit.hxx>
+#include <vcl/roadmap.hxx>
 
 #include <toolkit/awt/vclxwindows.hxx>
 #include <toolkit/awt/vclxsystemdependentwindow.hxx>
@@ -79,6 +82,7 @@
 #include <toolkit/awt/vclxtopwindow.hxx>
 #include <toolkit/awt/vclxwindow.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
+#include <toolkit/helper/property.hxx>
 #include <toolkit/helper/servicenames.hxx>
 
 #include <toolkit/helper/macros.hxx>
@@ -1082,6 +1086,311 @@ public:
     }
 };
 
+//  class SVTXRoadmap
+
+struct RMItemData
+{
+    bool            b_Enabled;
+    sal_Int32           n_ID;
+    OUString     Label;
+};
+
+typedef ::cppu::ImplInheritanceHelper  <   VCLXGraphicControl
+                                        ,   css::container::XContainerListener
+                                        ,   css::beans::XPropertyChangeListener
+                                        ,   css::awt::XItemEventBroadcaster
+                                        >   SVTXRoadmap_Base;
+class SVTXRoadmap final : public SVTXRoadmap_Base
+{
+public:
+    SVTXRoadmap();
+
+    void SAL_CALL disposing( const css::lang::EventObject& Source ) override { VCLXWindow::disposing( Source ); }
+
+    // css::awt::XVclWindowPeer
+    void SAL_CALL setProperty( const OUString& PropertyName, const css::uno::Any& Value ) override;
+
+    css::uno::Any SAL_CALL getProperty( const OUString& PropertyName ) override;
+
+    // XContainerListener
+    void SAL_CALL elementInserted( const css::container::ContainerEvent& rEvent ) override;
+    void SAL_CALL elementRemoved( const css::container::ContainerEvent& rEvent ) override;
+    void SAL_CALL elementReplaced( const css::container::ContainerEvent& rEvent ) override;
+
+    // XItemEventBroadcaster
+    virtual void SAL_CALL addItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override;
+    virtual void SAL_CALL removeItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override;
+
+    // XPropertyChangeListener
+    virtual void SAL_CALL propertyChange( const css::beans::PropertyChangeEvent& evt ) override;
+
+private:
+
+    // VCLXGraphicControl overridables
+    virtual void    ImplSetNewImage() override;
+
+    static void     ImplGetPropertyIds( std::vector< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::vector< sal_uInt16 > &aIds ) override { return ImplGetPropertyIds( aIds ); }
+
+    static RMItemData GetRMItemData( const css::container::ContainerEvent& _rEvent );
+
+    virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) override;
+
+    virtual ~SVTXRoadmap() override;
+
+    ItemListenerMultiplexer     maItemListeners;
+};
+
+
+
+//  class SVTXRoadmap
+
+SVTXRoadmap::SVTXRoadmap() : maItemListeners( *this )
+{
+}
+
+SVTXRoadmap::~SVTXRoadmap()
+{
+}
+
+void SVTXRoadmap::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+    switch ( rVclWindowEvent.GetId() )
+    {
+        case VclEventId::RoadmapItemSelected:
+        {
+            SolarMutexGuard aGuard;
+            VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
+            if ( pField )
+            {
+                sal_Int16 CurItemID = pField->GetCurrentRoadmapItemID();
+                css::awt::ItemEvent aEvent;
+                aEvent.Selected = CurItemID;
+                aEvent.Highlighted = CurItemID;
+                aEvent.ItemId = CurItemID;
+                maItemListeners.itemStateChanged( aEvent );
+            }
+        }
+        break;
+        default:
+            SVTXRoadmap_Base::ProcessWindowEvent( rVclWindowEvent );
+            break;
+    }
+}
+
+void SVTXRoadmap::propertyChange( const css::beans::PropertyChangeEvent& evt )
+{
+    SolarMutexGuard aGuard;
+    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
+    if ( !pField )
+        return;
+
+    css::uno::Reference< css::uno::XInterface > xRoadmapItem = evt.Source;
+    sal_Int32 nID = 0;
+    css::uno::Reference< css::beans::XPropertySet > xPropertySet( xRoadmapItem, css::uno::UNO_QUERY );
+    css::uno::Any aValue = xPropertySet->getPropertyValue("ID");
+    aValue >>= nID;
+
+    OUString sPropertyName = evt.PropertyName;
+    if ( sPropertyName == "Enabled" )
+    {
+        bool bEnable = false;
+        evt.NewValue >>= bEnable;
+        pField->EnableRoadmapItem( static_cast<vcl::RoadmapTypes::ItemId>(nID) , bEnable );
+    }
+    else if ( sPropertyName == "Label" )
+    {
+        OUString sLabel;
+        evt.NewValue >>= sLabel;
+        pField->ChangeRoadmapItemLabel( static_cast<vcl::RoadmapTypes::ItemId>(nID) , sLabel );
+    }
+    else if  ( sPropertyName == "ID" )
+    {
+        sal_Int32 nNewID = 0;
+        evt.NewValue >>= nNewID;
+        evt.OldValue >>= nID;
+        pField->ChangeRoadmapItemID( static_cast<vcl::RoadmapTypes::ItemId>(nID), static_cast<vcl::RoadmapTypes::ItemId>(nNewID) );
+    }
+//    else
+        // TODO handle Interactive appropriately
+}
+
+void SVTXRoadmap::addItemListener( const css::uno::Reference< css::awt::XItemListener >& l )
+{
+    maItemListeners.addInterface( l );
+}
+
+void SVTXRoadmap::removeItemListener( const css::uno::Reference< css::awt::XItemListener >& l )
+{
+    maItemListeners.removeInterface( l );
+}
+
+RMItemData SVTXRoadmap::GetRMItemData( const css::container::ContainerEvent& _rEvent )
+{
+    RMItemData aCurRMItemData;
+    css::uno::Reference< css::uno::XInterface > xRoadmapItem;
+    _rEvent.Element >>= xRoadmapItem;
+    css::uno::Reference< css::beans::XPropertySet > xPropertySet( xRoadmapItem, css::uno::UNO_QUERY );
+    if ( xPropertySet.is() )
+    {
+        css::uno::Any aValue = xPropertySet->getPropertyValue("Label");
+        aValue >>= aCurRMItemData.Label;
+        aValue = xPropertySet->getPropertyValue("ID");
+        aValue >>= aCurRMItemData.n_ID;
+        aValue = xPropertySet->getPropertyValue("Enabled");
+        aValue >>= aCurRMItemData.b_Enabled;
+    }
+    else
+    {
+        aCurRMItemData.b_Enabled = false;
+        aCurRMItemData.n_ID = 0;
+    }
+    return aCurRMItemData;
+}
+
+void SVTXRoadmap::elementInserted( const css::container::ContainerEvent& _rEvent )
+{
+    SolarMutexGuard aGuard;
+    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
+    if ( pField )
+    {
+        RMItemData CurItemData = GetRMItemData(  _rEvent );
+        sal_Int32 InsertIndex = 0;
+        _rEvent.Accessor >>= InsertIndex;
+        pField->InsertRoadmapItem( InsertIndex, CurItemData.Label, static_cast<vcl::RoadmapTypes::ItemId>(CurItemData.n_ID), CurItemData.b_Enabled );
+    }
+}
+
+void SVTXRoadmap::elementRemoved( const css::container::ContainerEvent& _rEvent )
+{
+    SolarMutexGuard aGuard;
+    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
+    if ( pField )
+    {
+        sal_Int32 DelIndex = 0;
+        _rEvent.Accessor >>= DelIndex;
+        pField->DeleteRoadmapItem(DelIndex);
+    }
+}
+
+void SVTXRoadmap::elementReplaced( const css::container::ContainerEvent& _rEvent )
+{
+    SolarMutexGuard aGuard;
+    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
+    if ( pField )
+    {
+        RMItemData CurItemData = GetRMItemData(  _rEvent );
+        sal_Int32 ReplaceIndex = 0;
+        _rEvent.Accessor >>= ReplaceIndex;
+        pField->ReplaceRoadmapItem( ReplaceIndex, CurItemData.Label, static_cast<vcl::RoadmapTypes::ItemId>(CurItemData.n_ID), CurItemData.b_Enabled );
+    }
+}
+
+void SVTXRoadmap::setProperty( const OUString& PropertyName, const css::uno::Any& Value)
+{
+    SolarMutexGuard aGuard;
+
+    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
+    if ( pField )
+    {
+        sal_uInt16 nPropType = GetPropertyId( PropertyName );
+        switch (nPropType)
+        {
+            case BASEPROPERTY_COMPLETE:
+            {
+                bool b = false;
+                Value >>= b;
+                pField->SetRoadmapComplete( b);
+            }
+            break;
+
+            case BASEPROPERTY_ACTIVATED:
+            {
+                bool b = false;
+                Value >>= b;
+                pField->SetRoadmapInteractive( b);
+            }
+            break;
+
+            case BASEPROPERTY_CURRENTITEMID:
+            {
+                sal_Int32 nId = 0;
+                Value >>= nId;
+                pField->SelectRoadmapItemByID( static_cast<vcl::RoadmapTypes::ItemId>(nId) );
+            }
+            break;
+
+            case BASEPROPERTY_TEXT:
+            {
+                OUString aStr;
+                Value >>= aStr;
+                pField->SetText( aStr );
+                pField->Invalidate();
+            }
+            break;
+
+            default:
+                SVTXRoadmap_Base::setProperty( PropertyName, Value );
+                break;
+        }
+
+    }
+    else
+        SVTXRoadmap_Base::setProperty( PropertyName, Value );
+}
+
+
+css::uno::Any SVTXRoadmap::getProperty( const OUString& PropertyName )
+{
+    SolarMutexGuard aGuard;
+
+    css::uno::Any aReturn;
+
+    VclPtr<::vcl::ORoadmap> pField = GetAs< vcl::ORoadmap >();
+    if ( pField )
+    {
+        sal_uInt16 nPropType = GetPropertyId( PropertyName );
+        switch (nPropType)
+        {
+            case BASEPROPERTY_COMPLETE:
+                aReturn <<= pField->IsRoadmapComplete();
+                break;
+            case BASEPROPERTY_ACTIVATED:
+                aReturn <<= pField->IsRoadmapInteractive();
+                break;
+            case BASEPROPERTY_CURRENTITEMID:
+                aReturn <<= pField->GetCurrentRoadmapItemID();
+                break;
+            default:
+                aReturn = SVTXRoadmap_Base::getProperty(PropertyName);
+                break;
+        }
+    }
+    return aReturn;
+}
+
+void SVTXRoadmap::ImplSetNewImage()
+{
+    OSL_PRECOND( GetWindow(), "SVTXRoadmap::ImplSetNewImage: window is required to be not-NULL!" );
+    VclPtr< ::vcl::ORoadmap > pButton = GetAs< ::vcl::ORoadmap >();
+    pButton->SetRoadmapBitmap( GetImage().GetBitmapEx() );
+}
+
+void SVTXRoadmap::ImplGetPropertyIds( std::vector< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_COMPLETE,
+                     BASEPROPERTY_ACTIVATED,
+                     BASEPROPERTY_CURRENTITEMID,
+                     BASEPROPERTY_TEXT,
+                     0);
+    VCLXWindow::ImplGetPropertyIds( rIds, true );
+    VCLXGraphicControl::ImplGetPropertyIds( rIds );
+}
+
+
+
+
 vcl::Window* VCLXToolkit::ImplCreateWindow( VCLXWindow** ppNewComp,
     const css::awt::WindowDescriptor& rDescriptor,
     vcl::Window* pParent, WinBits nWinBits, MessBoxStyle nMessBoxStyle )
@@ -1485,6 +1794,11 @@ vcl::Window* VCLXToolkit::ImplCreateWindow( VCLXWindow** ppNewComp,
                     pNewWindow = VclPtr<Throbber>::Create( pParent, nWinBits );
                     *ppNewComp = new ::toolkit::AnimatedImagesPeer;
                 }
+                else if (aServiceName == "roadmap")
+                {
+                    pNewWindow = VclPtr<::vcl::ORoadmap>::Create( pParent, WB_TABSTOP );
+                    *ppNewComp = new SVTXRoadmap;
+                }
             break;
             default:
                 OSL_ENSURE( false, "VCLXToolkit::ImplCreateWindow: unknown window type!" );


More information about the Libreoffice-commits mailing list