summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/inc/sc.hrc3
-rw-r--r--sc/source/ui/condformat/condformatdlg.cxx142
-rw-r--r--sc/source/ui/inc/condformatdlg.hrc1
-rw-r--r--sc/source/ui/inc/condformatdlg.hxx11
-rw-r--r--sc/source/ui/src/condformatdlg.src153
5 files changed, 197 insertions, 113 deletions
diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc
index 2d2c3f975666..e09ea162cd0e 100644
--- a/sc/inc/sc.hrc
+++ b/sc/inc/sc.hrc
@@ -1234,8 +1234,9 @@
#define RID_SCDLG_SORTKEY (SC_DIALOGS_START + 157)
#define RID_SCDLG_COLORSCALE (SC_DIALOGS_START + 158)
#define RID_SCDLG_DATABAR (SC_DIALOGS_START + 159)
+#define RID_COND_ENTRY (SC_DIALOGS_START + 160)
-#define SC_DIALOGS_END (SC_DIALOGS_START + 160)
+#define SC_DIALOGS_END (SC_DIALOGS_START + 161)
#ifndef STD_MASKCOLOR
#define STD_MASKCOLOR Color { Red = 0xFF00; Green = 0x0000; Blue = 0xFF00; }
diff --git a/sc/source/ui/condformat/condformatdlg.cxx b/sc/source/ui/condformat/condformatdlg.cxx
index eedb99a7b071..436beb895163 100644
--- a/sc/source/ui/condformat/condformatdlg.cxx
+++ b/sc/source/ui/condformat/condformatdlg.cxx
@@ -29,6 +29,8 @@
#include "condformatdlg.hxx"
#include "condformatdlg.hrc"
+#include <vcl/vclevent.hxx>
+
#include "anyrefdg.hxx"
#include "document.hxx"
#include "conditio.hxx"
@@ -36,8 +38,9 @@
#include <iostream>
ScCondFrmtEntry::ScCondFrmtEntry(Window* pParent):
- Control(pParent, ScResId( CTRL_ENTRY ) ),
+ Control(pParent, ScResId( RID_COND_ENTRY ) ),
mbActive(false),
+ meType(CONDITION),
maLbType( this, ScResId( LB_TYPE ) ),
maFtCondNr( this, ScResId( FT_COND_NR ) ),
maFtCondition( this, ScResId( FT_CONDITION ) ),
@@ -54,19 +57,13 @@ ScCondFrmtEntry::ScCondFrmtEntry(Window* pParent):
SwitchToType(COLLAPSED);
FreeResource();
+ maClickHdl = LINK( pParent, ScCondFormatList, EntrySelectHdl );
+
maLbType.SelectEntryPos(1);
maLbCondType.SelectEntryPos(0);
maEdVal2.Hide();
}
-long ScCondFrmtEntry::GetHeight() const
-{
- if(mbActive)
- return 100;
- else
- return 10;
-}
-
namespace {
rtl::OUString getTextForType(ScCondFormatEntryType eType)
@@ -83,21 +80,54 @@ rtl::OUString getTextForType(ScCondFormatEntryType eType)
break;
}
+ return rtl::OUString("");
+}
+
+rtl::OUString getExpression(sal_Int32 nIndex)
+{
+ switch(nIndex)
+ {
+ case 0:
+ return rtl::OUString("=");
+ case 1:
+ return rtl::OUString("<");
+ case 2:
+ return rtl::OUString(">");
+ case 5:
+ return rtl::OUString("!=");
+ default:
+ return rtl::OUString("not yet supported");
+ }
return rtl::OUString();
}
}
+long ScCondFrmtEntry::Notify( NotifyEvent& rNEvt )
+{
+ if( rNEvt.GetType() == EVENT_MOUSEBUTTONDOWN )
+ {
+ std::cout << "ButtonDown " << std::endl;
+ ImplCallEventListenersAndHandler( VCLEVENT_WINDOW_MOUSEBUTTONDOWN, maClickHdl, this );
+ }
+ Control::Notify(rNEvt);
+}
+
void ScCondFrmtEntry::SwitchToType( ScCondFormatEntryType eType )
{
switch(eType)
{
case COLLAPSED:
- maLbType.Hide();
- maFtCondition.SetText(getTextForType(meType));
- maFtCondition.Show();
- maEdVal2.Hide();
- maEdVal1.Hide();
+ {
+ maLbType.Hide();
+ rtl::OUStringBuffer maCondText(getTextForType(meType));
+ maCondText.append(rtl::OUString(" "));
+ maCondText.append(getExpression(maLbCondType.GetSelectEntryPos()));
+ maFtCondition.SetText(maCondText.makeStringAndClear());
+ maFtCondition.Show();
+ maEdVal2.Hide();
+ maEdVal1.Hide();
+ }
break;
default:
maLbType.Show();
@@ -111,36 +141,33 @@ void ScCondFrmtEntry::SwitchToType( ScCondFormatEntryType eType )
void ScCondFrmtEntry::Select()
{
- mbActive = !mbActive;
+ Size aSize = GetSizePixel();
+ aSize.Height() = 130;
+ SetSizePixel(aSize);
+ SetControlBackground(Color(COL_RED));
+ SwitchToType(meType);
+}
- if(mbActive)
- {
- Size aSize = GetSizePixel();
- aSize.Height() += 120;
- SetSizePixel(aSize);
- SetControlBackground(Color(COL_RED));
- SwitchToType(meType);
- }
- else
- {
- Size aSize = GetSizePixel();
- aSize.Height() = 60;
- SetSizePixel(aSize);
- SetControlBackground(GetSettings().GetStyleSettings().GetDialogColor());
- SwitchToType(COLLAPSED);
- }
+void ScCondFrmtEntry::Deselect()
+{
+ Size aSize = GetSizePixel();
+ aSize.Height() = 40;
+ SetSizePixel(aSize);
+ SetControlBackground(GetSettings().GetStyleSettings().GetDialogColor());
+ SwitchToType(COLLAPSED);
}
ScCondFormatList::ScCondFormatList(Window* pParent, const ResId& rResId):
Control(pParent, rResId),
mbHasScrollBar(false),
- mpScrollBar(NULL),
+ mpScrollBar(new ScrollBar(this, WB_VERT )),
mnTopIndex(0)
{
+ mpScrollBar->SetScrollHdl( LINK( this, ScCondFormatList, ScrollHdl ) );
+ mpScrollBar->EnableDrag();
maEntries.push_back( new ScCondFrmtEntry(this) );
maEntries.push_back( new ScCondFrmtEntry(this) );
maEntries.push_back( new ScCondFrmtEntry(this) );
- maEntries[1].Select();
RecalcAll();
FreeResource();
@@ -148,10 +175,43 @@ ScCondFormatList::ScCondFormatList(Window* pParent, const ResId& rResId):
void ScCondFormatList::RecalcAll()
{
+ sal_Int32 nTotalHeight = 0;
+ for(EntryContainer::iterator itr = maEntries.begin(); itr != maEntries.end(); ++itr)
+ {
+ nTotalHeight += itr->GetSizePixel().Height();
+ }
+
+ Size aCtrlSize = GetOutputSize();
+ long nSrcBarSize = GetSettings().GetStyleSettings().GetScrollBarSize();
+ if(nTotalHeight > GetSizePixel().Height())
+ {
+ mbHasScrollBar = true;
+ mpScrollBar->SetPosSizePixel(Point(aCtrlSize.Width() -nSrcBarSize, 0),
+ Size(nSrcBarSize, aCtrlSize.Height()) );
+ std::cout << "Need ScrollBar" << std::endl;
+ mpScrollBar->SetRangeMax(nTotalHeight);
+ mpScrollBar->SetVisibleSize(aCtrlSize.Height());
+ mpScrollBar->Show();
+ }
+ else
+ {
+ std::cout << "Don't need ScrollBar" << std::endl;
+
+ mbHasScrollBar = false;
+ mpScrollBar->Hide();
+ }
+
Point aPoint(0,0);
for(EntryContainer::iterator itr = maEntries.begin(); itr != maEntries.end(); ++itr)
{
itr->SetPosPixel(aPoint);
+ Size aSize = itr->GetSizePixel();
+ if(mbHasScrollBar)
+ aSize.Width() = aCtrlSize.Width() - nSrcBarSize;
+ else
+ aSize.Width() = aCtrlSize.Width();
+ itr->SetSizePixel(aSize);
+
aPoint.Y() += itr->GetSizePixel().Height();
}
}
@@ -183,6 +243,22 @@ IMPL_LINK_NOARG( ScCondFormatList, AddBtnHdl )
return 0;
}
+IMPL_LINK( ScCondFormatList, EntrySelectHdl, ScCondFrmtEntry*, pEntry )
+{
+ for(EntryContainer::iterator itr = maEntries.begin(); itr != maEntries.end(); ++itr)
+ {
+ itr->Deselect();
+ }
+ pEntry->Select();
+ RecalcAll();
+ return 0;
+}
+
+IMPL_LINK_NOARG( ScCondFormatList, ScrollHdl )
+{
+
+ return 0;
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/condformatdlg.hrc b/sc/source/ui/inc/condformatdlg.hrc
index 89eb53cd86b2..38cfe89cb845 100644
--- a/sc/source/ui/inc/condformatdlg.hrc
+++ b/sc/source/ui/inc/condformatdlg.hrc
@@ -35,7 +35,6 @@
#define BTN_REMOVE 11
#define CTRL_LIST 12
-#define CTRL_ENTRY 13
#define LB_TYPE 14
#define FT_COND_NR 15
diff --git a/sc/source/ui/inc/condformatdlg.hxx b/sc/source/ui/inc/condformatdlg.hxx
index b88fe2419741..4b1dc5aa1969 100644
--- a/sc/source/ui/inc/condformatdlg.hxx
+++ b/sc/source/ui/inc/condformatdlg.hxx
@@ -36,6 +36,7 @@
#include "rangelst.hxx"
#include <boost/ptr_container/ptr_vector.hpp>
+#include <boost/scoped_ptr.hpp>
class ScDocument;
class ScConditionalFormat;
@@ -54,6 +55,8 @@ private:
bool mbActive;
ScCondFormatEntryType meType;
+ Link maClickHdl;
+
//general ui elements
ListBox maLbType;
FixedText maFtCondNr;
@@ -75,8 +78,10 @@ private:
public:
ScCondFrmtEntry( Window* pParent );
- long GetHeight() const;
+ virtual long Notify( NotifyEvent& rNEvt );
+
void Select();
+ void Deselect();
};
class ScCondFormatList : public Control
@@ -86,7 +91,7 @@ private:
EntryContainer maEntries;
bool mbHasScrollBar;
- ScrollBar* mpScrollBar;
+ boost::scoped_ptr<ScrollBar> mpScrollBar;
long mnTopIndex;
void RecalcAll();
@@ -94,6 +99,8 @@ public:
ScCondFormatList( Window* pParent, const ResId& rResId );
DECL_LINK( AddBtnHdl, void* );
+ DECL_LINK( ScrollHdl, void* );
+ DECL_LINK( EntrySelectHdl, ScCondFrmtEntry* );
};
diff --git a/sc/source/ui/src/condformatdlg.src b/sc/source/ui/src/condformatdlg.src
index 83c7d3ac42be..29f32067b277 100644
--- a/sc/source/ui/src/condformatdlg.src
+++ b/sc/source/ui/src/condformatdlg.src
@@ -67,85 +67,86 @@ ModalDialog RID_SCDLG_CONDFORMAT
Pos = MAP_APPFONT( 5, 20 );
Size = MAP_APPFONT( 190, 120 );
- Control CTRL_ENTRY
- {
- Pos = MAP_APPFONT( 0, 0 );
- Size = MAP_APPFONT( 190, 40 );
- Border = TRUE;
+ };
+};
- FixedText FT_COND_NR
- {
- Pos = MAP_APPFONT( 2, 2 );
- Size = MAP_APPFONT( 30, 10 );
- Text [ en-US ] = "Condition";
- };
+Control RID_COND_ENTRY
+{
+ Pos = MAP_APPFONT( 0, 0 );
+ Size = MAP_APPFONT( 190, 40 );
+ Border = TRUE;
- FixedText FT_CONDITION
- {
- Pos = MAP_APPFONT( 40, 2 );
- Size = MAP_APPFONT( 30, 10 );
- };
+ FixedText FT_COND_NR
+ {
+ Pos = MAP_APPFONT( 2, 2 );
+ Size = MAP_APPFONT( 30, 10 );
+ Text [ en-US ] = "Condition";
+ };
- ListBox LB_TYPE
- {
- Pos = MAP_APPFONT( 5, 15 );
- Size = MAP_APPFONT( 40, 14 );
- Border = TRUE;
- DropDown = TRUE;
- StringList [ en-US ] =
- {
- "All Cells";
- "Cell value is";
- "Formula is";
- };
- };
- ListBox LB_CELLIS_TYPE
- {
- Pos = MAP_APPFONT( 50, 15 );
- Size = MAP_APPFONT( 30, 14 );
- Border = TRUE;
- DropDown = TRUE;
- StringList [ en-US ] =
- {
- "equal to";
- "less than";
- "greater than";
- "less than or equal to";
- "greater than or equal to";
- "not equal to";
- "between";
- "not between";
- };
- };
- FixedText FT_STYLE
- {
- Pos = MAP_APPFONT( 10, 32 );
- Size = MAP_APPFONT( 35, 14 );
- Text [ en-US ] = "Apply Style";
- };
- Edit ED_VAL1
- {
- Pos = MAP_APPFONT( 90, 15 );
- Size = MAP_APPFONT( 70, 14 );
- Border = TRUE;
- };
- Edit ED_VAL2
- {
- Pos = MAP_APPFONT( 130, 15 );
- Size = MAP_APPFONT( 30, 14 );
- Border = TRUE;
- };
- ListBox LB_STYLE
- {
- Pos = MAP_APPFONT( 50, 32 );
- Size = MAP_APPFONT( 30, 14 );
- Border = TRUE;
- DropDown = TRUE;
- StringList [ en-US ] =
- {
- "New Style...";
- };
- };
+ FixedText FT_CONDITION
+ {
+ Pos = MAP_APPFONT( 40, 2 );
+ Size = MAP_APPFONT( 90, 10 );
+ };
+
+ ListBox LB_TYPE
+ {
+ Pos = MAP_APPFONT( 5, 15 );
+ Size = MAP_APPFONT( 40, 14 );
+ Border = TRUE;
+ DropDown = TRUE;
+ StringList [ en-US ] =
+ {
+ "All Cells";
+ "Cell value is";
+ "Formula is";
+ };
+ };
+ ListBox LB_CELLIS_TYPE
+ {
+ Pos = MAP_APPFONT( 50, 15 );
+ Size = MAP_APPFONT( 30, 14 );
+ Border = TRUE;
+ DropDown = TRUE;
+ StringList [ en-US ] =
+ {
+ "equal to";
+ "less than";
+ "greater than";
+ "less than or equal to";
+ "greater than or equal to";
+ "not equal to";
+ "between";
+ "not between";
+ };
+ };
+ FixedText FT_STYLE
+ {
+ Pos = MAP_APPFONT( 10, 32 );
+ Size = MAP_APPFONT( 35, 14 );
+ Text [ en-US ] = "Apply Style";
+ };
+ Edit ED_VAL1
+ {
+ Pos = MAP_APPFONT( 90, 15 );
+ Size = MAP_APPFONT( 70, 14 );
+ Border = TRUE;
+ };
+ Edit ED_VAL2
+ {
+ Pos = MAP_APPFONT( 130, 15 );
+ Size = MAP_APPFONT( 30, 14 );
+ Border = TRUE;
+ };
+ ListBox LB_STYLE
+ {
+ Pos = MAP_APPFONT( 50, 32 );
+ Size = MAP_APPFONT( 30, 14 );
+ Border = TRUE;
+ DropDown = TRUE;
+ StringList [ en-US ] =
+ {
+ "New Style...";
};
};
};