summaryrefslogtreecommitdiff
path: root/sc/source/ui/condformat
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-11-15 23:37:42 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-11-15 23:39:29 +0100
commit29206b09ca6bf2dfc5596b91fc80a0c1b62dcd6b (patch)
tree472e659bdf1b488e518f29ff749163ae0a72af23 /sc/source/ui/condformat
parentee1af6790434bd9364334ffe14cdba21979b6381 (diff)
ui part for conditional date formats
Change-Id: I96893aaa016e6947d354aac4d7bc88da693095da
Diffstat (limited to 'sc/source/ui/condformat')
-rw-r--r--sc/source/ui/condformat/condformatdlg.cxx12
-rw-r--r--sc/source/ui/condformat/condformatdlgentry.cxx145
-rw-r--r--sc/source/ui/condformat/condformathelper.cxx5
3 files changed, 107 insertions, 55 deletions
diff --git a/sc/source/ui/condformat/condformatdlg.cxx b/sc/source/ui/condformat/condformatdlg.cxx
index 8ef887c3a928..5212f6259ff4 100644
--- a/sc/source/ui/condformat/condformatdlg.cxx
+++ b/sc/source/ui/condformat/condformatdlg.cxx
@@ -91,6 +91,9 @@ ScCondFormatList::ScCondFormatList(Window* pParent, const ResId& rResId, ScDocum
break;
case condformat::ICONSET:
break;
+ case condformat::DATE:
+ maEntries.push_back(new ScDateFrmtEntry( this, mpDoc, static_cast<const ScCondDateFormatEntry*>( pEntry ) ) );
+ break;
}
}
}
@@ -249,6 +252,7 @@ IMPL_LINK(ScCondFormatList, TypeListHdl, ListBox*, pBox)
{
case condformat::entry::FORMULA:
case condformat::entry::CONDITION:
+ case condformat::entry::DATE:
break;
case condformat::entry::COLORSCALE2:
case condformat::entry::COLORSCALE3:
@@ -275,6 +279,14 @@ IMPL_LINK(ScCondFormatList, TypeListHdl, ListBox*, pBox)
static_cast<ScCondFormatDlg*>(GetParent())->InvalidateRefData();
itr->SetActive();
break;
+ case 3:
+ if(itr->GetType() == condformat::entry::DATE)
+ return 0;
+
+ maEntries.replace( itr, new ScDateFrmtEntry( this, mpDoc ));
+ static_cast<ScCondFormatDlg*>(GetParent())->InvalidateRefData();
+ itr->SetActive();
+ break;
}
RecalcAll();
return 0;
diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx
index 817da0b999dc..05e93355371a 100644
--- a/sc/source/ui/condformat/condformatdlgentry.cxx
+++ b/sc/source/ui/condformat/condformatdlgentry.cxx
@@ -254,7 +254,6 @@ ScConditionFrmtEntry::ScConditionFrmtEntry( Window* pParent, ScDocument* pDoc, c
void ScConditionFrmtEntry::Init()
{
- maLbStyle.SetSeparatorPos(0);
maEdVal1.SetGetFocusHdl( LINK( GetParent()->GetParent(), ScCondFormatDlg, RangeGetFocusHdl ) );
maEdVal2.SetGetFocusHdl( LINK( GetParent()->GetParent(), ScCondFormatDlg, RangeGetFocusHdl ) );
maEdVal1.SetLoseFocusHdl( LINK( GetParent()->GetParent(), ScCondFormatDlg, RangeLoseFocusHdl ) );
@@ -266,6 +265,7 @@ void ScConditionFrmtEntry::Init()
maEdVal1.SetModifyHdl( LINK( this, ScCondFrmtEntry, EdModifyHdl ) );
maEdVal2.SetModifyHdl( LINK( this, ScCondFrmtEntry, EdModifyHdl ) );
+ maLbStyle.SetSeparatorPos(0);
SfxStyleSheetIterator aStyleIter( mpDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
{
@@ -402,9 +402,11 @@ void ScConditionFrmtEntry::SetInactive()
Deselect();
}
-IMPL_LINK_NOARG(ScConditionFrmtEntry, StyleSelectHdl)
+namespace {
+
+void StyleSelect( ListBox& rLbStyle, ScDocument* pDoc, SvxFontPrevWindow& rWdPreview )
{
- if(maLbStyle.GetSelectEntryPos() == 0)
+ if(rLbStyle.GetSelectEntryPos() == 0)
{
// call new style dialog
SfxUInt16Item aFamilyItem( SID_STYLE_FAMILY, SFX_STYLE_FAMILY_PARA );
@@ -430,26 +432,32 @@ IMPL_LINK_NOARG(ScConditionFrmtEntry, StyleSelectHdl)
// Find the new style and add it into the style list boxes
rtl::OUString aNewStyle;
- SfxStyleSheetIterator aStyleIter( mpDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
+ SfxStyleSheetIterator aStyleIter( pDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
{
rtl::OUString aName = pStyle->GetName();
- if ( maLbStyle.GetEntryPos(aName) == LISTBOX_ENTRY_NOTFOUND ) // all lists contain the same entries
+ if ( rLbStyle.GetEntryPos(aName) == LISTBOX_ENTRY_NOTFOUND ) // all lists contain the same entries
{
- maLbStyle.InsertEntry(aName);
- maLbStyle.SelectEntry(aName);
+ rLbStyle.InsertEntry(aName);
+ rLbStyle.SelectEntry(aName);
}
}
}
- rtl::OUString aStyleName = maLbStyle.GetSelectEntry();
- SfxStyleSheetBase* pStyleSheet = mpDoc->GetStyleSheetPool()->Find( aStyleName, SFX_STYLE_FAMILY_PARA );
+ rtl::OUString aStyleName = rLbStyle.GetSelectEntry();
+ SfxStyleSheetBase* pStyleSheet = pDoc->GetStyleSheetPool()->Find( aStyleName, SFX_STYLE_FAMILY_PARA );
if(pStyleSheet)
{
const SfxItemSet& rSet = pStyleSheet->GetItemSet();
- maWdPreview.Init( rSet );
+ rWdPreview.Init( rSet );
}
+}
+}
+
+IMPL_LINK_NOARG(ScConditionFrmtEntry, StyleSelectHdl)
+{
+ StyleSelect( maLbStyle, mpDoc, maWdPreview );
return 0;
}
@@ -495,51 +503,7 @@ void ScFormulaFrmtEntry::Init()
IMPL_LINK_NOARG(ScFormulaFrmtEntry, StyleSelectHdl)
{
- if(maLbStyle.GetSelectEntryPos() == 0)
- {
- // call new style dialog
- SfxUInt16Item aFamilyItem( SID_STYLE_FAMILY, SFX_STYLE_FAMILY_PARA );
- SfxStringItem aRefItem( SID_STYLE_REFERENCE, ScGlobal::GetRscString(STR_STYLENAME_STANDARD) );
-
- // unlock the dispatcher so SID_STYLE_NEW can be executed
- // (SetDispatcherLock would affect all Calc documents)
- ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
- SfxDispatcher* pDisp = pViewShell->GetDispatcher();
- sal_Bool bLocked = pDisp->IsLocked();
- if (bLocked)
- pDisp->Lock(false);
-
- // Execute the "new style" slot, complete with undo and all necessary updates.
- // The return value (SfxUInt16Item) is ignored, look for new styles instead.
- pDisp->Execute( SID_STYLE_NEW, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD | SFX_CALLMODE_MODAL,
- &aFamilyItem,
- &aRefItem,
- 0L );
-
- if (bLocked)
- pDisp->Lock(sal_True);
-
- // Find the new style and add it into the style list boxes
- rtl::OUString aNewStyle;
- SfxStyleSheetIterator aStyleIter( mpDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
- for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
- {
- rtl::OUString aName = pStyle->GetName();
- if ( maLbStyle.GetEntryPos(aName) == LISTBOX_ENTRY_NOTFOUND ) // all lists contain the same entries
- {
- maLbStyle.InsertEntry(aName);
- maLbStyle.SelectEntry(aName);
- }
- }
- }
-
- rtl::OUString aStyleName = maLbStyle.GetSelectEntry();
- SfxStyleSheetBase* pStyleSheet = mpDoc->GetStyleSheetPool()->Find( aStyleName, SFX_STYLE_FAMILY_PARA );
- if(pStyleSheet)
- {
- const SfxItemSet& rSet = pStyleSheet->GetItemSet();
- maWdPreview.Init( rSet );
- }
+ StyleSelect( maLbStyle, mpDoc, maWdPreview );
return 0;
}
@@ -1169,4 +1133,75 @@ IMPL_LINK_NOARG( ScDataBarFrmtEntry, OptionBtnHdl )
return 0;
}
+ScDateFrmtEntry::ScDateFrmtEntry( Window* pParent, ScDocument* pDoc, const ScCondDateFormatEntry* pFormat ):
+ ScCondFrmtEntry( pParent, pDoc, ScAddress() ),
+ maLbDateEntry( this, ScResId( LB_DATE_TYPE ) ),
+ maFtStyle( this, ScResId( FT_STYLE ) ),
+ maLbStyle( this, ScResId( LB_STYLE ) ),
+ maWdPreview( this, ScResId( WD_PREVIEW ) )
+{
+ Init();
+ FreeResource();
+
+ if(pFormat)
+ {
+ sal_Int32 nPos = static_cast<sal_Int32>(pFormat->GetDateType());
+ maLbDateEntry.SelectEntryPos(nPos);
+ }
+}
+
+void ScDateFrmtEntry::Init()
+{
+ maLbDateEntry.SelectEntryPos(0);
+ maLbType.SelectEntryPos(3);
+
+ maLbStyle.SetSeparatorPos(0);
+ SfxStyleSheetIterator aStyleIter( mpDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
+ for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
+ {
+ rtl::OUString aName = pStyle->GetName();
+ maLbStyle.InsertEntry( aName );
+ }
+ maLbStyle.SetSelectHdl( LINK( this, ScDateFrmtEntry, StyleSelectHdl ) );
+}
+
+void ScDateFrmtEntry::SetActive()
+{
+ maLbDateEntry.Show();
+ maFtStyle.Show();
+ maWdPreview.Show();
+
+ Select();
+}
+
+void ScDateFrmtEntry::SetInactive()
+{
+ maLbDateEntry.Show();
+ maFtStyle.Show();
+ maWdPreview.Show();
+
+ Deselect();
+}
+
+ScFormatEntry* ScDateFrmtEntry::GetEntry() const
+{
+ ScCondDateFormatEntry* pNewEntry = new ScCondDateFormatEntry(mpDoc);
+ condformat::ScCondFormatDateType eType = static_cast<condformat::ScCondFormatDateType>(maLbDateEntry.GetSelectEntryPos());
+ pNewEntry->SetDateType(eType);
+ pNewEntry->SetStyleName(maLbStyle.GetSelectEntry());
+ return pNewEntry;
+}
+
+rtl::OUString ScDateFrmtEntry::GetExpressionString()
+{
+ return ScCondFormatHelper::GetExpression(DATE, 0);
+}
+
+IMPL_LINK_NOARG( ScDateFrmtEntry, StyleSelectHdl )
+{
+ StyleSelect( maLbStyle, mpDoc, maWdPreview );
+
+ return 0;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/condformat/condformathelper.cxx b/sc/source/ui/condformat/condformathelper.cxx
index 09eaa24859df..67a175dfb837 100644
--- a/sc/source/ui/condformat/condformathelper.cxx
+++ b/sc/source/ui/condformat/condformathelper.cxx
@@ -27,6 +27,8 @@ rtl::OUString getTextForType(ScCondFormatEntryType eType)
return ScGlobal::GetRscString(STR_COND_FORMULA);
case ICONSET:
return ScGlobal::GetRscString(STR_COND_ICONSET);
+ case DATE:
+ return ScGlobal::GetRscString(STR_COND_DATE);
default:
break;
}
@@ -136,6 +138,9 @@ rtl::OUString ScCondFormatHelper::GetExpression(const ScConditionalFormat& rForm
case condformat::ICONSET:
aBuffer.append(getTextForType(ICONSET));
break;
+ case condformat::DATE:
+ aBuffer.append(getTextForType(DATE));
+ break;
}
}
return aBuffer.makeStringAndClear();