summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-11-04 13:47:35 +0000
committerCaolán McNamara <caolanm@redhat.com>2016-11-04 17:14:26 +0000
commit8bea644d6117a49405e6426dc97214220fc869d1 (patch)
tree3a5574fcbd6062527dbb57bc91a38b58b11e78bc /extensions
parentd2ce812f1d3a7a2aad89ca0bd11948b63d2db7b0 (diff)
extensions leaks out details of Color Selector, patch it up
and rebase it on SvxColorListBox Change-Id: I3afef689ab0dc3c34e465810d82bf21797907558
Diffstat (limited to 'extensions')
-rw-r--r--extensions/source/propctrlr/commoncontrol.cxx5
-rw-r--r--extensions/source/propctrlr/commoncontrol.hxx19
-rw-r--r--extensions/source/propctrlr/standardcontrol.cxx109
-rw-r--r--extensions/source/propctrlr/standardcontrol.hxx24
4 files changed, 36 insertions, 121 deletions
diff --git a/extensions/source/propctrlr/commoncontrol.cxx b/extensions/source/propctrlr/commoncontrol.cxx
index 745880465b52..6e9cb6be093d 100644
--- a/extensions/source/propctrlr/commoncontrol.cxx
+++ b/extensions/source/propctrlr/commoncontrol.cxx
@@ -104,6 +104,11 @@ namespace pcr
setModified();
}
+ IMPL_LINK_NOARG( CommonBehaviourControlHelper, ColorModifiedHdl, SvxColorListBox&, void )
+ {
+ setModified();
+ }
+
IMPL_LINK_NOARG( CommonBehaviourControlHelper, GetFocusHdl, Control&, void )
{
try
diff --git a/extensions/source/propctrlr/commoncontrol.hxx b/extensions/source/propctrlr/commoncontrol.hxx
index 05771dd061f3..0d46aaa5bcce 100644
--- a/extensions/source/propctrlr/commoncontrol.hxx
+++ b/extensions/source/propctrlr/commoncontrol.hxx
@@ -32,6 +32,7 @@
class NotifyEvent;
class Control;
class ListBox;
+class SvxColorListBox;
class Edit;
namespace pcr
@@ -90,6 +91,7 @@ namespace pcr
/// may be used by derived classes, they forward the event to the PropCtrListener
DECL_LINK( ModifiedHdl, ListBox&, void );
+ DECL_LINK( ColorModifiedHdl, SvxColorListBox&, void );
DECL_LINK( EditModifiedHdl, Edit&, void );
DECL_LINK( GetFocusHdl, Control&, void );
DECL_LINK( LoseFocusHdl, Control&, void );
@@ -150,8 +152,9 @@ namespace pcr
inline void impl_checkDisposed_throw();
private:
VclPtr<TControlWindow> m_pControlWindow;
- void implSetModifyHandler(std::true_type);
- void implSetModifyHandler(std::false_type);
+ void implSetModifyHandler(const Edit&);
+ void implSetModifyHandler(const ListBox&);
+ void implSetModifyHandler(const SvxColorListBox&);
};
@@ -165,7 +168,7 @@ namespace pcr
{
if ( _bDoSetHandlers )
{
- implSetModifyHandler(std::is_base_of<::Edit,TControlWindow>());
+ implSetModifyHandler(*m_pControlWindow);
m_pControlWindow->SetGetFocusHdl( LINK( this, CommonBehaviourControlHelper, GetFocusHdl ) );
m_pControlWindow->SetLoseFocusHdl( LINK( this, CommonBehaviourControlHelper, LoseFocusHdl ) );
}
@@ -173,18 +176,24 @@ namespace pcr
}
template< class TControlInterface, class TControlWindow >
- inline void CommonBehaviourControl< TControlInterface, TControlWindow >::implSetModifyHandler(std::true_type)
+ inline void CommonBehaviourControl< TControlInterface, TControlWindow >::implSetModifyHandler(const Edit&)
{
m_pControlWindow->SetModifyHdl( LINK( this, CommonBehaviourControlHelper, EditModifiedHdl ) );
}
template< class TControlInterface, class TControlWindow >
- inline void CommonBehaviourControl< TControlInterface, TControlWindow >::implSetModifyHandler(std::false_type)
+ inline void CommonBehaviourControl< TControlInterface, TControlWindow >::implSetModifyHandler(const ListBox&)
{
m_pControlWindow->SetModifyHdl( LINK( this, CommonBehaviourControlHelper, ModifiedHdl ) );
}
template< class TControlInterface, class TControlWindow >
+ inline void CommonBehaviourControl< TControlInterface, TControlWindow >::implSetModifyHandler(const SvxColorListBox&)
+ {
+ m_pControlWindow->SetModifyHdl( LINK( this, CommonBehaviourControlHelper, ColorModifiedHdl ) );
+ }
+
+ template< class TControlInterface, class TControlWindow >
inline void CommonBehaviourControl< TControlInterface, TControlWindow >::impl_checkDisposed_throw()
{
if ( ComponentBaseClass::rBHelper.bDisposed )
diff --git a/extensions/source/propctrlr/standardcontrol.cxx b/extensions/source/propctrlr/standardcontrol.cxx
index ca2412f9dbad..7d422966aff4 100644
--- a/extensions/source/propctrlr/standardcontrol.cxx
+++ b/extensions/source/propctrlr/standardcontrol.cxx
@@ -657,141 +657,50 @@ namespace pcr
return aStr.makeStringAndClear();
}
-
OColorControl::OColorControl(vcl::Window* pParent, WinBits nWinStyle)
- :OColorControl_Base( PropertyControlType::ColorListBox, pParent, nWinStyle )
+ : OColorControl_Base(PropertyControlType::ColorListBox, pParent, nWinStyle)
{
- // initialize the color listbox
- XColorListRef pColorList;
- SfxObjectShell* pDocSh = SfxObjectShell::Current();
- const SfxPoolItem* pItem = pDocSh ? pDocSh->GetItem( SID_COLOR_TABLE ) : nullptr;
- if ( pItem )
- {
- DBG_ASSERT(dynamic_cast< const SvxColorListItem* >(pItem) != nullptr, "OColorControl::OColorControl: invalid color item!");
- pColorList = static_cast<const SvxColorListItem*>( pItem )->GetColorList();
- }
-
- if ( !pColorList.is() )
- pColorList = XColorList::GetStdColorList();
-
-
- DBG_ASSERT(pColorList.is(), "OColorControl::OColorControl: no color table!");
-
- if ( pColorList.is() )
- {
- for (long i = 0; i < pColorList->Count(); ++i)
- {
- const XColorEntry* pEntry = pColorList->GetColor(i);
- getTypedControlWindow()->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
- }
- }
-
- getTypedControlWindow()->SetDropDownLineCount( LB_DEFAULT_COUNT );
- if ( ( nWinStyle & WB_READONLY ) != 0 )
- {
- getTypedControlWindow()->SetReadOnly();
- getTypedControlWindow()->Enable();
- }
}
-
void SAL_CALL OColorControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException, std::exception)
{
if ( _rValue.hasValue() )
{
css::util::Color nColor = COL_TRANSPARENT;
- if ( _rValue >>= nColor )
- {
- ::Color aRgbCol((ColorData)nColor);
-
- getTypedControlWindow()->SelectEntry( aRgbCol );
- if ( !getTypedControlWindow()->IsEntrySelected( aRgbCol ) )
- { // the given color is not part of the list -> insert a new entry with the hex code of the color
- OUString aStr("0x");
- aStr += MakeHexStr(nColor,8);
- getTypedControlWindow()->InsertEntry( aRgbCol, aStr );
- getTypedControlWindow()->SelectEntry( aRgbCol );
- }
- }
- else
- {
- OUString sNonColorValue;
- if ( !( _rValue >>= sNonColorValue ) )
- throw IllegalTypeException();
- getTypedControlWindow()->SelectEntry( sNonColorValue );
- if ( !getTypedControlWindow()->IsEntrySelected( sNonColorValue ) )
- getTypedControlWindow()->SetNoSelection();
- }
+ _rValue >>= nColor;
+ ::Color aRgbCol((ColorData)nColor);
+ getTypedControlWindow()->SelectEntry(std::make_pair(aRgbCol, MakeHexStr(nColor, 8)));
}
else
getTypedControlWindow()->SetNoSelection();
}
-
Any SAL_CALL OColorControl::getValue() throw (RuntimeException, std::exception)
{
Any aPropValue;
- if ( getTypedControlWindow()->GetSelectEntryCount() > 0 )
+ if (!getTypedControlWindow()->IsNoSelection())
{
- OUString sSelectedEntry = getTypedControlWindow()->GetSelectEntry();
- if ( m_aNonColorEntries.find( sSelectedEntry ) != m_aNonColorEntries.end() )
- aPropValue <<= sSelectedEntry;
- else
- {
- ::Color aRgbCol = getTypedControlWindow()->GetSelectEntryColor();
- aPropValue <<= (css::util::Color)aRgbCol.GetColor();
- }
+ ::Color aRgbCol = getTypedControlWindow()->GetSelectEntryColor();
+ aPropValue <<= (css::util::Color)aRgbCol.GetColor();
}
return aPropValue;
}
-
Type SAL_CALL OColorControl::getValueType() throw (RuntimeException, std::exception)
{
return ::cppu::UnoType<sal_Int32>::get();
}
-
- void SAL_CALL OColorControl::clearList() throw (RuntimeException, std::exception)
- {
- getTypedControlWindow()->Clear();
- }
-
-
- void SAL_CALL OColorControl::prependListEntry( const OUString& NewEntry ) throw (RuntimeException, std::exception)
- {
- getTypedControlWindow()->InsertEntry( NewEntry, 0 );
- m_aNonColorEntries.insert( NewEntry );
- }
-
-
- void SAL_CALL OColorControl::appendListEntry( const OUString& NewEntry ) throw (RuntimeException, std::exception)
- {
- getTypedControlWindow()->InsertEntry( NewEntry );
- m_aNonColorEntries.insert( NewEntry );
- }
-
- Sequence< OUString > SAL_CALL OColorControl::getListEntries( ) throw (RuntimeException, std::exception)
- {
- if ( !m_aNonColorEntries.empty() )
- return Sequence< OUString >(&(*m_aNonColorEntries.begin()),m_aNonColorEntries.size());
- return Sequence< OUString >();
- }
-
-
void OColorControl::setModified()
{
OColorControl_Base::setModified();
- if ( !getTypedControlWindow()->IsTravelSelect() )
- // fire a commit
- notifyModifiedValue();
+ // fire a commit
+ notifyModifiedValue();
}
-
//= OListboxControl
-
OListboxControl::OListboxControl( vcl::Window* pParent, WinBits nWinStyle)
:OListboxControl_Base( PropertyControlType::ListBox, pParent, nWinStyle )
{
diff --git a/extensions/source/propctrlr/standardcontrol.hxx b/extensions/source/propctrlr/standardcontrol.hxx
index ab026d6e2ec4..d3f64e703276 100644
--- a/extensions/source/propctrlr/standardcontrol.hxx
+++ b/extensions/source/propctrlr/standardcontrol.hxx
@@ -34,6 +34,7 @@
#include <vcl/combobox.hxx>
#include <svtools/calendar.hxx>
#include <svtools/fmtfield.hxx>
+#include <svx/colorbox.hxx>
#include <set>
@@ -60,18 +61,18 @@ namespace pcr
TListboxWindow::SetSelectHdl( LINK(this, ListLikeControlWithModifyHandler, OnSelect) );
}
- void SetModifyHdl( const Link<ListBox&,void>& _rLink ) { aModifyHdl = _rLink;; }
+ void SetModifyHdl( const Link<TListboxWindow&,void>& _rLink ) { aModifyHdl = _rLink;; }
private:
- DECL_LINK(OnSelect, ListBox&, void);
- Link<ListBox&,void> aModifyHdl;
+ DECL_LINK(OnSelect, TListboxWindow&, void);
+ Link<TListboxWindow&,void> aModifyHdl;
};
template< class LISTBOX_WINDOW >
- void ListLikeControlWithModifyHandler< LISTBOX_WINDOW >::LinkStubOnSelect(void * instance, ListBox& data) {
+ void ListLikeControlWithModifyHandler< LISTBOX_WINDOW >::LinkStubOnSelect(void * instance, LISTBOX_WINDOW& data) {
return static_cast<ListLikeControlWithModifyHandler< LISTBOX_WINDOW > *>(instance)->OnSelect(data);
}
template< class LISTBOX_WINDOW >
- void ListLikeControlWithModifyHandler< LISTBOX_WINDOW >::OnSelect(ListBox& rListBox)
+ void ListLikeControlWithModifyHandler< LISTBOX_WINDOW >::OnSelect(LISTBOX_WINDOW& rListBox)
{
aModifyHdl.Call(rListBox);
}
@@ -260,14 +261,11 @@ namespace pcr
//= OColorControl
- typedef CommonBehaviourControl < css::inspection::XStringListControl
- , ListLikeControlWithModifyHandler< ColorListBox >
+ typedef CommonBehaviourControl < css::inspection::XPropertyControl
+ , ListLikeControlWithModifyHandler<SvxColorListBox>
> OColorControl_Base;
class OColorControl : public OColorControl_Base
{
- private:
- ::std::set< OUString > m_aNonColorEntries;
-
public:
OColorControl( vcl::Window* pParent, WinBits nWinStyle );
@@ -276,12 +274,6 @@ namespace pcr
virtual void SAL_CALL setValue( const css::uno::Any& _value ) throw (css::beans::IllegalTypeException, css::uno::RuntimeException, std::exception) override;
virtual css::uno::Type SAL_CALL getValueType() throw (css::uno::RuntimeException, std::exception) override;
- // XStringListControl
- virtual void SAL_CALL clearList( ) throw (css::uno::RuntimeException, std::exception) override;
- virtual void SAL_CALL prependListEntry( const OUString& NewEntry ) throw (css::uno::RuntimeException, std::exception) override;
- virtual void SAL_CALL appendListEntry( const OUString& NewEntry ) throw (css::uno::RuntimeException, std::exception) override;
- virtual css::uno::Sequence< OUString > SAL_CALL getListEntries( ) throw (css::uno::RuntimeException, std::exception) override;
-
protected:
// CommonBehaviourControlHelper::setModified
virtual void setModified() override;