diff options
author | Norbert Thiebaud <nthiebaud@gmail.com> | 2016-11-05 13:28:17 -0500 |
---|---|---|
committer | Norbert Thiebaud <nthiebaud@gmail.com> | 2016-11-05 13:42:40 -0500 |
commit | db380aab1063e8a5e40111c40ee9f7921aa82601 (patch) | |
tree | f5057dfb205a7d7409251742888dfeaf4bfbee61 /extensions | |
parent | ee2144aafc5b4be14630f723be9a2bb674671412 (diff) |
Reverts a commit series that cripple windows ci.
Revert "SvxShadowTabPage::Construct was removed"
f9a2c1c12ecad833c63b894c89d6008907477eb5.
Revert "replace OColorPopup with SvxColorWindow"
f300754bb1c6a347c92bb9548be7a65237176542.
Revert "drop AutoColorInvalid/SID_ATTR_AUTO_COLOR_INVALID"
347c2c334589b18cc62af292674bb3df1dd54b71.
Revert "replace last ColorLB use with a listbox of colors"
604b35bf55351751a396e34dcca3f85e75860fd5.
Revert "simplify, its just a vector of colors"
351a97ce6bda3075677b59fa1387ba3d1ab17d7a.
Revert "replace user draw with an Image of the color"
df738e0f8ceedb4bad756960be14d9c41adc165d.
Revert "strip down to the used pieces"
commit 08d6cd788f2584ce10ab8fa10665245e953c59d9.
Revert "move now combined ColorLB to location of last user"
a19b18ad7c9eb0197c10e6d7e451ec4542e4bc9e.
Revert "fold ColorListBox and ColorLB together"
a989a0b1f2b425f05b58d0e44ce2de31c842ed65.
Revert "move ColorListBox beside sole thing that uses it"
760a198e697f3070a5e0e029e4eff7be220eb9cd.
Revert "extensions leaks out details of Color Selector, patch it up"
8bea644d6117a49405e6426dc97214220fc869d1.
Revert "inherit FillAttrLB from ListBox not ColorListBox"
d2ce812f1d3a7a2aad89ca0bd11948b63d2db7b0.
Revert "unify color selectors"
43bc3031483d172eccd72c3804e2d4fc2ef37de4.
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/source/propctrlr/commoncontrol.cxx | 5 | ||||
-rw-r--r-- | extensions/source/propctrlr/commoncontrol.hxx | 19 | ||||
-rw-r--r-- | extensions/source/propctrlr/standardcontrol.cxx | 109 | ||||
-rw-r--r-- | extensions/source/propctrlr/standardcontrol.hxx | 24 |
4 files changed, 121 insertions, 36 deletions
diff --git a/extensions/source/propctrlr/commoncontrol.cxx b/extensions/source/propctrlr/commoncontrol.cxx index 6e9cb6be093d..745880465b52 100644 --- a/extensions/source/propctrlr/commoncontrol.cxx +++ b/extensions/source/propctrlr/commoncontrol.cxx @@ -104,11 +104,6 @@ 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 0d46aaa5bcce..05771dd061f3 100644 --- a/extensions/source/propctrlr/commoncontrol.hxx +++ b/extensions/source/propctrlr/commoncontrol.hxx @@ -32,7 +32,6 @@ class NotifyEvent; class Control; class ListBox; -class SvxColorListBox; class Edit; namespace pcr @@ -91,7 +90,6 @@ 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 ); @@ -152,9 +150,8 @@ namespace pcr inline void impl_checkDisposed_throw(); private: VclPtr<TControlWindow> m_pControlWindow; - void implSetModifyHandler(const Edit&); - void implSetModifyHandler(const ListBox&); - void implSetModifyHandler(const SvxColorListBox&); + void implSetModifyHandler(std::true_type); + void implSetModifyHandler(std::false_type); }; @@ -168,7 +165,7 @@ namespace pcr { if ( _bDoSetHandlers ) { - implSetModifyHandler(*m_pControlWindow); + implSetModifyHandler(std::is_base_of<::Edit,TControlWindow>()); m_pControlWindow->SetGetFocusHdl( LINK( this, CommonBehaviourControlHelper, GetFocusHdl ) ); m_pControlWindow->SetLoseFocusHdl( LINK( this, CommonBehaviourControlHelper, LoseFocusHdl ) ); } @@ -176,24 +173,18 @@ namespace pcr } template< class TControlInterface, class TControlWindow > - inline void CommonBehaviourControl< TControlInterface, TControlWindow >::implSetModifyHandler(const Edit&) + inline void CommonBehaviourControl< TControlInterface, TControlWindow >::implSetModifyHandler(std::true_type) { m_pControlWindow->SetModifyHdl( LINK( this, CommonBehaviourControlHelper, EditModifiedHdl ) ); } template< class TControlInterface, class TControlWindow > - inline void CommonBehaviourControl< TControlInterface, TControlWindow >::implSetModifyHandler(const ListBox&) + inline void CommonBehaviourControl< TControlInterface, TControlWindow >::implSetModifyHandler(std::false_type) { 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 7d422966aff4..ca2412f9dbad 100644 --- a/extensions/source/propctrlr/standardcontrol.cxx +++ b/extensions/source/propctrlr/standardcontrol.cxx @@ -657,50 +657,141 @@ 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; - _rValue >>= nColor; - ::Color aRgbCol((ColorData)nColor); - getTypedControlWindow()->SelectEntry(std::make_pair(aRgbCol, MakeHexStr(nColor, 8))); + 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(); + } } else getTypedControlWindow()->SetNoSelection(); } + Any SAL_CALL OColorControl::getValue() throw (RuntimeException, std::exception) { Any aPropValue; - if (!getTypedControlWindow()->IsNoSelection()) + if ( getTypedControlWindow()->GetSelectEntryCount() > 0 ) { - ::Color aRgbCol = getTypedControlWindow()->GetSelectEntryColor(); - aPropValue <<= (css::util::Color)aRgbCol.GetColor(); + 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(); + } } 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(); - // fire a commit - notifyModifiedValue(); + if ( !getTypedControlWindow()->IsTravelSelect() ) + // 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 d3f64e703276..ab026d6e2ec4 100644 --- a/extensions/source/propctrlr/standardcontrol.hxx +++ b/extensions/source/propctrlr/standardcontrol.hxx @@ -34,7 +34,6 @@ #include <vcl/combobox.hxx> #include <svtools/calendar.hxx> #include <svtools/fmtfield.hxx> -#include <svx/colorbox.hxx> #include <set> @@ -61,18 +60,18 @@ namespace pcr TListboxWindow::SetSelectHdl( LINK(this, ListLikeControlWithModifyHandler, OnSelect) ); } - void SetModifyHdl( const Link<TListboxWindow&,void>& _rLink ) { aModifyHdl = _rLink;; } + void SetModifyHdl( const Link<ListBox&,void>& _rLink ) { aModifyHdl = _rLink;; } private: - DECL_LINK(OnSelect, TListboxWindow&, void); - Link<TListboxWindow&,void> aModifyHdl; + DECL_LINK(OnSelect, ListBox&, void); + Link<ListBox&,void> aModifyHdl; }; template< class LISTBOX_WINDOW > - void ListLikeControlWithModifyHandler< LISTBOX_WINDOW >::LinkStubOnSelect(void * instance, LISTBOX_WINDOW& data) { + void ListLikeControlWithModifyHandler< LISTBOX_WINDOW >::LinkStubOnSelect(void * instance, ListBox& data) { return static_cast<ListLikeControlWithModifyHandler< LISTBOX_WINDOW > *>(instance)->OnSelect(data); } template< class LISTBOX_WINDOW > - void ListLikeControlWithModifyHandler< LISTBOX_WINDOW >::OnSelect(LISTBOX_WINDOW& rListBox) + void ListLikeControlWithModifyHandler< LISTBOX_WINDOW >::OnSelect(ListBox& rListBox) { aModifyHdl.Call(rListBox); } @@ -261,11 +260,14 @@ namespace pcr //= OColorControl - typedef CommonBehaviourControl < css::inspection::XPropertyControl - , ListLikeControlWithModifyHandler<SvxColorListBox> + typedef CommonBehaviourControl < css::inspection::XStringListControl + , ListLikeControlWithModifyHandler< ColorListBox > > OColorControl_Base; class OColorControl : public OColorControl_Base { + private: + ::std::set< OUString > m_aNonColorEntries; + public: OColorControl( vcl::Window* pParent, WinBits nWinStyle ); @@ -274,6 +276,12 @@ 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; |