Kaydet (Commit) 1b8f3315 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

separate color scale with 2 and 3 entries

Change-Id: Idd3cd7467850ee32cb1380fce307395f21076071
üst 7bc0c2bd
...@@ -78,7 +78,7 @@ ScCondFormatList::ScCondFormatList(Window* pParent, const ResId& rResId, ScDocum ...@@ -78,7 +78,7 @@ ScCondFormatList::ScCondFormatList(Window* pParent, const ResId& rResId, ScDocum
maEntries.push_back(new ScConditionFrmtEntry( this, mpDoc, maPos, static_cast<const ScCondFormatEntry*>( pEntry ) ) ); maEntries.push_back(new ScConditionFrmtEntry( this, mpDoc, maPos, static_cast<const ScCondFormatEntry*>( pEntry ) ) );
break; break;
case condformat::COLORSCALE: case condformat::COLORSCALE:
maEntries.push_back(new ScColorScaleFrmtEntry( this, mpDoc, maPos, static_cast<const ScColorScaleFormat*>( pEntry ) ) ); maEntries.push_back(new ScColorScale3FrmtEntry( this, mpDoc, maPos, static_cast<const ScColorScaleFormat*>( pEntry ) ) );
break; break;
case condformat::DATABAR: case condformat::DATABAR:
maEntries.push_back(new ScDataBarFrmtEntry( this, mpDoc, maPos, static_cast<const ScDataBarFormat*>( pEntry ) ) ); maEntries.push_back(new ScDataBarFrmtEntry( this, mpDoc, maPos, static_cast<const ScDataBarFormat*>( pEntry ) ) );
...@@ -94,7 +94,7 @@ ScCondFormatList::ScCondFormatList(Window* pParent, const ResId& rResId, ScDocum ...@@ -94,7 +94,7 @@ ScCondFormatList::ScCondFormatList(Window* pParent, const ResId& rResId, ScDocum
maEntries.push_back(new ScConditionFrmtEntry( this, mpDoc, maPos )); maEntries.push_back(new ScConditionFrmtEntry( this, mpDoc, maPos ));
break; break;
case condformat::dialog::COLORSCALE: case condformat::dialog::COLORSCALE:
maEntries.push_back(new ScColorScaleFrmtEntry( this, mpDoc, maPos )); maEntries.push_back(new ScColorScale3FrmtEntry( this, mpDoc, maPos ));
break; break;
case condformat::dialog::DATABAR: case condformat::dialog::DATABAR:
maEntries.push_back(new ScDataBarFrmtEntry( this, mpDoc, maPos )); maEntries.push_back(new ScDataBarFrmtEntry( this, mpDoc, maPos ));
...@@ -182,6 +182,34 @@ void ScCondFormatList::DoScroll(long nDelta) ...@@ -182,6 +182,34 @@ void ScCondFormatList::DoScroll(long nDelta)
IMPL_LINK(ScCondFormatList, ColFormatTypeHdl, ListBox*, pBox) IMPL_LINK(ScCondFormatList, ColFormatTypeHdl, ListBox*, pBox)
{ {
EntryContainer::iterator itr = maEntries.begin();
for(; itr != maEntries.end(); ++itr)
{
if(itr->IsSelected())
break;
}
if(itr == maEntries.end())
return 0;;
sal_Int32 nPos = pBox->GetSelectEntryPos();
switch(nPos)
{
case 0:
if(itr->GetType() != condformat::entry::COLORSCALE2)
maEntries.replace( itr, new ScColorScale2FrmtEntry( this, mpDoc, maPos ) );
break;
case 1:
if(itr->GetType() != condformat::entry::COLORSCALE3)
maEntries.replace( itr, new ScColorScale3FrmtEntry( this, mpDoc, maPos ) );
break;
case 2:
if(itr->GetType() != condformat::entry::DATABAR)
maEntries.replace( itr, new ScDataBarFrmtEntry( this, mpDoc, maPos ) );
break;
default:
break;
}
itr->SetActive();
RecalcAll(); RecalcAll();
return 0; return 0;
} }
...@@ -201,7 +229,7 @@ IMPL_LINK(ScCondFormatList, TypeListHdl, ListBox*, pBox) ...@@ -201,7 +229,7 @@ IMPL_LINK(ScCondFormatList, TypeListHdl, ListBox*, pBox)
switch(nPos) switch(nPos)
{ {
case 0: case 0:
maEntries.replace( itr, new ScColorScaleFrmtEntry(this, mpDoc, maPos)); maEntries.replace( itr, new ScColorScale3FrmtEntry(this, mpDoc, maPos));
itr->SetActive(); itr->SetActive();
break; break;
case 1: case 1:
......
...@@ -151,6 +151,7 @@ ScConditionFrmtEntry::ScConditionFrmtEntry( Window* pParent, ScDocument* pDoc, c ...@@ -151,6 +151,7 @@ ScConditionFrmtEntry::ScConditionFrmtEntry( Window* pParent, ScDocument* pDoc, c
{ {
FreeResource(); FreeResource();
maLbType.SelectEntryPos(1);
Init(); Init();
...@@ -378,6 +379,7 @@ ScFormulaFrmtEntry::ScFormulaFrmtEntry( Window* pParent, ScDocument* pDoc, const ...@@ -378,6 +379,7 @@ ScFormulaFrmtEntry::ScFormulaFrmtEntry( Window* pParent, ScDocument* pDoc, const
Init(); Init();
FreeResource(); FreeResource();
maLbType.SelectEntryPos(2);
if(pFormat) if(pFormat)
{ {
...@@ -584,7 +586,168 @@ ScColorScaleEntry* createColorScaleEntry( const ListBox& rType, const ColorListB ...@@ -584,7 +586,168 @@ ScColorScaleEntry* createColorScaleEntry( const ListBox& rType, const ColorListB
} }
ScColorScaleFrmtEntry::ScColorScaleFrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat ): ScColorScale2FrmtEntry::ScColorScale2FrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat ):
ScCondFrmtEntry( pParent, pDoc, rPos ),
maLbColorFormat( this, ScResId( LB_COLOR_FORMAT ) ),
maLbColScale2( this, ScResId( LB_COL_SCALE2 ) ),
maLbEntryTypeMin( this, ScResId( LB_TYPE_COL_SCALE ) ),
maLbEntryTypeMax( this, ScResId( LB_TYPE_COL_SCALE ) ),
maEdMin( this, ScResId( ED_COL_SCALE ) ),
maEdMax( this, ScResId( ED_COL_SCALE ) ),
maLbColMin( this, ScResId( LB_COL) ),
maLbColMax( this, ScResId( LB_COL) )
{
maLbType.SelectEntryPos(0);
maLbColorFormat.SelectEntryPos(0);
if(pFormat)
{
ScColorScaleFormat::const_iterator itr = pFormat->begin();
SetColorScaleEntryTypes(*itr, maLbEntryTypeMin, maEdMin, maLbColMin);
++itr;
SetColorScaleEntryTypes(*itr, maLbEntryTypeMax, maEdMax, maLbColMax);
}
else
{
maLbEntryTypeMin.SelectEntryPos(0);
maLbEntryTypeMax.SelectEntryPos(1);
}
FreeResource();
maLbColorFormat.SetSelectHdl( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) );
Init();
}
void ScColorScale2FrmtEntry::Init()
{
maLbEntryTypeMin.SetSelectHdl( LINK( this, ScColorScale2FrmtEntry, EntryTypeHdl ) );
maLbEntryTypeMax.SetSelectHdl( LINK( this, ScColorScale2FrmtEntry, EntryTypeHdl ) );
SfxObjectShell* pDocSh = SfxObjectShell::Current();
const SfxPoolItem* pItem = NULL;
XColorListRef pColorTable;
DBG_ASSERT( pDocSh, "DocShell not found!" );
/*
Point aPointLb = maLbEntryTypeMiddle.GetPosPixel();
Point aPointEd = maEdMiddle.GetPosPixel();
Point aPointCol = maLbColMiddle.GetPosPixel();
const long nMovePos = maLbEntryTypeMiddle.GetSizePixel().Width() * 1.2;
aPointLb.X() += nMovePos;
aPointEd.X() += nMovePos;
aPointCol.X() += nMovePos;
maLbEntryTypeMiddle.SetPosPixel(aPointLb);
maEdMiddle.SetPosPixel(aPointEd);
maLbColMiddle.SetPosPixel(aPointCol);
aPointLb.X() += nMovePos;
aPointEd.X() += nMovePos;
aPointCol.X() += nMovePos;
maLbEntryTypeMax.SetPosPixel(aPointLb);
maEdMax.SetPosPixel(aPointEd);
maLbColMax.SetPosPixel(aPointCol);
*/
if ( pDocSh )
{
pItem = pDocSh->GetItem( SID_COLOR_TABLE );
if ( pItem != NULL )
pColorTable = ( (SvxColorListItem*)pItem )->GetColorList();
}
if ( pColorTable.is() )
{
// filling the line color box
maLbColMin.SetUpdateMode( false );
maLbColMax.SetUpdateMode( false );
for ( long i = 0; i < pColorTable->Count(); ++i )
{
XColorEntry* pEntry = pColorTable->GetColor(i);
maLbColMin.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
maLbColMax.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
if(pEntry->GetColor() == Color(COL_LIGHTRED))
maLbColMin.SelectEntryPos(i);
if(pEntry->GetColor() == Color(COL_LIGHTBLUE))
maLbColMax.SelectEntryPos(i);
}
maLbColMin.SetUpdateMode( sal_True );
maLbColMax.SetUpdateMode( sal_True );
}
EntryTypeHdl(&maLbEntryTypeMin);
EntryTypeHdl(&maLbEntryTypeMax);
}
ScFormatEntry* ScColorScale2FrmtEntry::createColorscaleEntry() const
{
ScColorScaleFormat* pColorScale = new ScColorScaleFormat(mpDoc);
pColorScale->AddEntry(createColorScaleEntry(maLbEntryTypeMin, maLbColMin, maEdMin, mpDoc, maPos));
pColorScale->AddEntry(createColorScaleEntry(maLbEntryTypeMax, maLbColMax, maEdMax, mpDoc, maPos));
return pColorScale;
}
ScFormatEntry* ScColorScale2FrmtEntry::GetEntry() const
{
return createColorscaleEntry();
}
void ScColorScale2FrmtEntry::SetActive()
{
maLbColScale2.Show();
maLbEntryTypeMin.Show();
maLbEntryTypeMax.Show();
maEdMin.Show();
maEdMax.Show();
maLbColMin.Show();
maLbColMax.Show();
Select();
}
void ScColorScale2FrmtEntry::SetInactive()
{
maLbColScale2.Hide();
maLbEntryTypeMin.Hide();
maLbEntryTypeMax.Hide();
maEdMin.Hide();
maEdMax.Hide();
maLbColMin.Hide();
maLbColMax.Hide();
Deselect();
}
IMPL_LINK( ScColorScale2FrmtEntry, EntryTypeHdl, ListBox*, pBox )
{
bool bEnableEdit = true;
sal_Int32 nPos = pBox->GetSelectEntryPos();
if(nPos == 0 || nPos == 1)
{
bEnableEdit = false;
}
Edit* pEd = NULL;
if(pBox == &maLbEntryTypeMin)
pEd = &maEdMin;
else if(pBox == &maLbEntryTypeMax)
pEd = &maEdMax;
if(bEnableEdit)
pEd->Enable();
else
pEd->Disable();
return 0;
}
ScColorScale3FrmtEntry::ScColorScale3FrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat ):
ScCondFrmtEntry( pParent, pDoc, rPos ), ScCondFrmtEntry( pParent, pDoc, rPos ),
maLbColorFormat( this, ScResId( LB_COLOR_FORMAT ) ), maLbColorFormat( this, ScResId( LB_COLOR_FORMAT ) ),
maLbColScale2( this, ScResId( LB_COL_SCALE2 ) ), maLbColScale2( this, ScResId( LB_COL_SCALE2 ) ),
...@@ -599,6 +762,7 @@ ScColorScaleFrmtEntry::ScColorScaleFrmtEntry( Window* pParent, ScDocument* pDoc, ...@@ -599,6 +762,7 @@ ScColorScaleFrmtEntry::ScColorScaleFrmtEntry( Window* pParent, ScDocument* pDoc,
maLbColMiddle( this, ScResId( LB_COL) ), maLbColMiddle( this, ScResId( LB_COL) ),
maLbColMax( this, ScResId( LB_COL) ) maLbColMax( this, ScResId( LB_COL) )
{ {
maLbType.SelectEntryPos(0);
if(pFormat) if(pFormat)
{ {
if(pFormat->size() == 2) if(pFormat->size() == 2)
...@@ -630,11 +794,11 @@ ScColorScaleFrmtEntry::ScColorScaleFrmtEntry( Window* pParent, ScDocument* pDoc, ...@@ -630,11 +794,11 @@ ScColorScaleFrmtEntry::ScColorScaleFrmtEntry( Window* pParent, ScDocument* pDoc,
Init(); Init();
} }
void ScColorScaleFrmtEntry::Init() void ScColorScale3FrmtEntry::Init()
{ {
maLbEntryTypeMin.SetSelectHdl( LINK( this, ScColorScaleFrmtEntry, EntryTypeHdl ) ); maLbEntryTypeMin.SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) );
maLbEntryTypeMax.SetSelectHdl( LINK( this, ScColorScaleFrmtEntry, EntryTypeHdl ) ); maLbEntryTypeMax.SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) );
maLbEntryTypeMiddle.SetSelectHdl( LINK( this, ScColorScaleFrmtEntry, EntryTypeHdl ) ); maLbEntryTypeMiddle.SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) );
SfxObjectShell* pDocSh = SfxObjectShell::Current(); SfxObjectShell* pDocSh = SfxObjectShell::Current();
const SfxPoolItem* pItem = NULL; const SfxPoolItem* pItem = NULL;
...@@ -696,7 +860,7 @@ void ScColorScaleFrmtEntry::Init() ...@@ -696,7 +860,7 @@ void ScColorScaleFrmtEntry::Init()
EntryTypeHdl(&maLbEntryTypeMax); EntryTypeHdl(&maLbEntryTypeMax);
} }
ScFormatEntry* ScColorScaleFrmtEntry::createColorscaleEntry() const ScFormatEntry* ScColorScale3FrmtEntry::createColorscaleEntry() const
{ {
ScColorScaleFormat* pColorScale = new ScColorScaleFormat(mpDoc); ScColorScaleFormat* pColorScale = new ScColorScaleFormat(mpDoc);
pColorScale->AddEntry(createColorScaleEntry(maLbEntryTypeMin, maLbColMin, maEdMin, mpDoc, maPos)); pColorScale->AddEntry(createColorScaleEntry(maLbEntryTypeMin, maLbColMin, maEdMin, mpDoc, maPos));
...@@ -706,12 +870,12 @@ ScFormatEntry* ScColorScaleFrmtEntry::createColorscaleEntry() const ...@@ -706,12 +870,12 @@ ScFormatEntry* ScColorScaleFrmtEntry::createColorscaleEntry() const
return pColorScale; return pColorScale;
} }
ScFormatEntry* ScColorScaleFrmtEntry::GetEntry() const ScFormatEntry* ScColorScale3FrmtEntry::GetEntry() const
{ {
return createColorscaleEntry(); return createColorscaleEntry();
} }
void ScColorScaleFrmtEntry::SetActive() void ScColorScale3FrmtEntry::SetActive()
{ {
maLbColScale2.Show(); maLbColScale2.Show();
maLbColScale3.Show(); maLbColScale3.Show();
...@@ -731,7 +895,7 @@ void ScColorScaleFrmtEntry::SetActive() ...@@ -731,7 +895,7 @@ void ScColorScaleFrmtEntry::SetActive()
Select(); Select();
} }
void ScColorScaleFrmtEntry::SetInactive() void ScColorScale3FrmtEntry::SetInactive()
{ {
maLbColScale2.Hide(); maLbColScale2.Hide();
maLbColScale3.Hide(); maLbColScale3.Hide();
...@@ -751,7 +915,7 @@ void ScColorScaleFrmtEntry::SetInactive() ...@@ -751,7 +915,7 @@ void ScColorScaleFrmtEntry::SetInactive()
Deselect(); Deselect();
} }
IMPL_LINK( ScColorScaleFrmtEntry, EntryTypeHdl, ListBox*, pBox ) IMPL_LINK( ScColorScale3FrmtEntry, EntryTypeHdl, ListBox*, pBox )
{ {
bool bEnableEdit = true; bool bEnableEdit = true;
sal_Int32 nPos = pBox->GetSelectEntryPos(); sal_Int32 nPos = pBox->GetSelectEntryPos();
...@@ -841,6 +1005,7 @@ ScDataBarFrmtEntry::ScDataBarFrmtEntry( Window* pParent, ScDocument* pDoc, const ...@@ -841,6 +1005,7 @@ ScDataBarFrmtEntry::ScDataBarFrmtEntry( Window* pParent, ScDocument* pDoc, const
maBtOptions( this, ScResId( BTN_OPTIONS ) ) maBtOptions( this, ScResId( BTN_OPTIONS ) )
{ {
maLbColorFormat.SelectEntryPos(2); maLbColorFormat.SelectEntryPos(2);
maLbType.SelectEntryPos(0);
if(pFormat) if(pFormat)
{ {
mpDataBarData.reset(new ScDataBarFormatData(*pFormat->GetDataBarData())); mpDataBarData.reset(new ScDataBarFormatData(*pFormat->GetDataBarData()));
......
#include "colorscale.hxx" #include "colorscale.hxx"
#include "conditio.hxx" #include "conditio.hxx"
namespace condformat {
namespace entry {
enum ScCondFrmtEntryType
{
CONDITION,
FORMULA,
COLORSCALE2,
COLORSCALE3,
DATABAR
};
}
}
class ScCondFrmtEntry : public Control class ScCondFrmtEntry : public Control
{ {
private: private:
...@@ -41,6 +58,8 @@ public: ...@@ -41,6 +58,8 @@ public:
virtual ScFormatEntry* GetEntry() const = 0; virtual ScFormatEntry* GetEntry() const = 0;
virtual void SetActive() = 0; virtual void SetActive() = 0;
virtual void SetInactive() = 0; virtual void SetInactive() = 0;
virtual condformat::entry::ScCondFrmtEntryType GetType() = 0;
}; };
class ScConditionFrmtEntry : public ScCondFrmtEntry class ScConditionFrmtEntry : public ScCondFrmtEntry
...@@ -65,6 +84,8 @@ public: ...@@ -65,6 +84,8 @@ public:
virtual ScFormatEntry* GetEntry() const; virtual ScFormatEntry* GetEntry() const;
virtual void SetActive(); virtual void SetActive();
virtual void SetInactive(); virtual void SetInactive();
virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::CONDITION; }
}; };
class ScFormulaFrmtEntry : public ScCondFrmtEntry class ScFormulaFrmtEntry : public ScCondFrmtEntry
...@@ -84,9 +105,41 @@ public: ...@@ -84,9 +105,41 @@ public:
virtual ScFormatEntry* GetEntry() const; virtual ScFormatEntry* GetEntry() const;
virtual void SetActive(); virtual void SetActive();
virtual void SetInactive(); virtual void SetInactive();
virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::FORMULA; }
};
class ScColorScale2FrmtEntry : public ScCondFrmtEntry
{
//color format ui elements
ListBox maLbColorFormat;
//color scale ui elements
ListBox maLbColScale2;
ListBox maLbEntryTypeMin;
ListBox maLbEntryTypeMax;
Edit maEdMin;
Edit maEdMax;
ColorListBox maLbColMin;
ColorListBox maLbColMax;
ScFormatEntry* createColorscaleEntry() const;
void Init();
DECL_LINK( EntryTypeHdl, ListBox* );
public:
ScColorScale2FrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat = NULL );
virtual ScFormatEntry* GetEntry() const;
virtual void SetActive();
virtual void SetInactive();
virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::COLORSCALE2; }
}; };
class ScColorScaleFrmtEntry : public ScCondFrmtEntry class ScColorScale3FrmtEntry : public ScCondFrmtEntry
{ {
//color format ui elements //color format ui elements
...@@ -114,10 +167,11 @@ class ScColorScaleFrmtEntry : public ScCondFrmtEntry ...@@ -114,10 +167,11 @@ class ScColorScaleFrmtEntry : public ScCondFrmtEntry
DECL_LINK( EntryTypeHdl, ListBox* ); DECL_LINK( EntryTypeHdl, ListBox* );
public: public:
ScColorScaleFrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat = NULL ); ScColorScale3FrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat = NULL );
virtual ScFormatEntry* GetEntry() const; virtual ScFormatEntry* GetEntry() const;
virtual void SetActive(); virtual void SetActive();
virtual void SetInactive(); virtual void SetInactive();
virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::COLORSCALE3; }
}; };
class ScDataBarFrmtEntry : public ScCondFrmtEntry class ScDataBarFrmtEntry : public ScCondFrmtEntry
...@@ -146,5 +200,7 @@ public: ...@@ -146,5 +200,7 @@ public:
virtual ScFormatEntry* GetEntry() const; virtual ScFormatEntry* GetEntry() const;
virtual void SetActive(); virtual void SetActive();
virtual void SetInactive(); virtual void SetInactive();
virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::DATABAR; }
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment