summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorNorbert Thiebaud <nthiebaud@gmail.com>2016-11-05 13:28:17 -0500
committerNorbert Thiebaud <nthiebaud@gmail.com>2016-11-05 13:42:40 -0500
commitdb380aab1063e8a5e40111c40ee9f7921aa82601 (patch)
treef5057dfb205a7d7409251742888dfeaf4bfbee61 /extensions
parentee2144aafc5b4be14630f723be9a2bb674671412 (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.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, 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;