LCOV - code coverage report
Current view: top level - sc/source/ui/condformat - condformatdlgentry.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 1 868 0.1 %
Date: 2014-11-03 Functions: 2 92 2.2 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  */
       9             : 
      10             : #include "condformatdlg.hxx"
      11             : #include "condformatdlgentry.hxx"
      12             : #include "condformatdlg.hrc"
      13             : #include "conditio.hxx"
      14             : 
      15             : #include "document.hxx"
      16             : 
      17             : #include <vcl/vclevent.hxx>
      18             : #include <svl/style.hxx>
      19             : #include <sfx2/dispatch.hxx>
      20             : #include <svl/stritem.hxx>
      21             : #include <svl/intitem.hxx>
      22             : #include <svx/xtable.hxx>
      23             : #include <svx/drawitem.hxx>
      24             : #include <vcl/msgbox.hxx>
      25             : #include <vcl/settings.hxx>
      26             : #include "tokenarray.hxx"
      27             : #include "stlpool.hxx"
      28             : #include "tabvwsh.hxx"
      29             : 
      30             : #include "colorformat.hxx"
      31             : 
      32             : #include "globstr.hrc"
      33             : 
      34             : #include <set>
      35             : 
      36           0 : ScCondFrmtEntry::ScCondFrmtEntry(vcl::Window* pParent, ScDocument* pDoc, const ScAddress& rPos):
      37             :     Control(pParent, ScResId( RID_COND_ENTRY ) ),
      38             :     mbActive(false),
      39             :     maFtCondNr( this, ScResId( FT_COND_NR ) ),
      40             :     maFtCondition( this, ScResId( FT_CONDITION ) ),
      41             :     mnIndex(0),
      42             :     maStrCondition(ScResId( STR_CONDITION ).toString()),
      43             :     maLbType( this, ScResId( LB_TYPE ) ),
      44             :     mpDoc(pDoc),
      45           0 :     maPos(rPos)
      46             : {
      47           0 :     Color aBack(GetSettings().GetStyleSettings().GetWindowColor());
      48             : 
      49           0 :     SetControlBackground(aBack);
      50           0 :     SetBackground(GetControlBackground());
      51             : 
      52           0 :     maFtCondNr.SetControlBackground(aBack);
      53           0 :     maFtCondNr.SetBackground(maFtCondNr.GetControlBackground());
      54             : 
      55           0 :     maFtCondition.SetControlBackground(aBack);
      56           0 :     maFtCondition.SetBackground(maFtCondition.GetControlBackground());
      57             : 
      58           0 :     maLbType.SetSelectHdl( LINK( pParent, ScCondFormatList, TypeListHdl ) );
      59           0 :     maClickHdl = LINK( pParent, ScCondFormatList, EntrySelectHdl );
      60           0 : }
      61             : 
      62           0 : ScCondFrmtEntry::~ScCondFrmtEntry()
      63             : {
      64           0 : }
      65             : 
      66           0 : bool ScCondFrmtEntry::Notify( NotifyEvent& rNEvt )
      67             : {
      68           0 :     if( rNEvt.GetType() == EVENT_MOUSEBUTTONDOWN )
      69             :     {
      70           0 :         ImplCallEventListenersAndHandler( VCLEVENT_WINDOW_MOUSEBUTTONDOWN, maClickHdl, this );
      71             :     }
      72           0 :     return Control::Notify(rNEvt);
      73             : }
      74             : 
      75           0 : void ScCondFrmtEntry::SetIndex(sal_Int32 nIndex)
      76             : {
      77           0 :     mnIndex = nIndex;
      78           0 :     OUStringBuffer aBuffer(maStrCondition);
      79           0 :     aBuffer.append(OUString::number(nIndex));
      80           0 :     maFtCondNr.SetText(aBuffer.makeStringAndClear());
      81           0 : }
      82             : 
      83           0 : void ScCondFrmtEntry::SetHeight()
      84             : {
      85           0 :     long nPad = LogicToPixel(Size(42,2), MapMode(MAP_APPFONT)).getHeight();
      86             : 
      87             :     // Calculate maximum height we need from visible widgets
      88           0 :     sal_uInt16 nChildren = GetChildCount();
      89             : 
      90           0 :     long nMaxHeight = 0;
      91           0 :     for(sal_uInt16 i = 0; i < nChildren; i++)
      92             :     {
      93           0 :         vcl::Window *pChild  = GetChild(i);
      94           0 :         if(!pChild || !pChild->IsVisible())
      95           0 :             continue;
      96           0 :         Point aPos = pChild->GetPosPixel();
      97           0 :         Size aSize = pChild->GetSizePixel();
      98           0 :         nMaxHeight = std::max(aPos.Y() + aSize.Height(), nMaxHeight);
      99             :     }
     100           0 :     Size aSize = GetSizePixel();
     101           0 :     if(nMaxHeight > 0)
     102             :     {
     103           0 :         aSize.Height() = nMaxHeight + nPad;
     104           0 :         SetSizePixel(aSize);
     105             :     }
     106           0 : }
     107             : 
     108           0 : void ScCondFrmtEntry::Select()
     109             : {
     110           0 :     maFtCondition.SetText(OUString());
     111           0 :     maFtCondition.Hide();
     112           0 :     maLbType.Show();
     113           0 :     mbActive = true;
     114           0 :     SetHeight();
     115           0 : }
     116             : 
     117           0 : void ScCondFrmtEntry::Deselect()
     118             : {
     119           0 :     OUString maCondText = GetExpressionString();
     120           0 :     maFtCondition.SetText(maCondText);
     121           0 :     maFtCondition.Show();
     122           0 :     maLbType.Hide();
     123           0 :     mbActive = false;
     124           0 :     SetHeight();
     125           0 : }
     126             : 
     127           0 : IMPL_LINK(ScCondFrmtEntry, EdModifyHdl, Edit*, pEdit)
     128             : {
     129           0 :     OUString aFormula = pEdit->GetText();
     130           0 :     ScCompiler aComp( mpDoc, maPos );
     131           0 :     aComp.SetGrammar( mpDoc->GetGrammar() );
     132           0 :     boost::scoped_ptr<ScTokenArray> mpCode(aComp.CompileString(aFormula));
     133           0 :     if(mpCode->GetCodeError())
     134             :     {
     135           0 :         pEdit->SetControlBackground(COL_LIGHTRED);
     136             :     }
     137             :     else
     138             :     {
     139           0 :         pEdit->SetControlBackground(GetSettings().GetStyleSettings().GetWindowColor());
     140             :     }
     141           0 :     return 0;
     142             : }
     143             : 
     144             : //condition
     145             : 
     146             : namespace {
     147             : 
     148           0 : void FillStyleListBox( ScDocument* pDoc, ListBox& rLbStyle )
     149             : {
     150           0 :     rLbStyle.SetSeparatorPos(0);
     151           0 :     std::set<OUString> aStyleNames;
     152           0 :     SfxStyleSheetIterator aStyleIter( pDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
     153           0 :     for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
     154             :     {
     155           0 :         OUString aName = pStyle->GetName();
     156           0 :         aStyleNames.insert(aName);
     157           0 :     }
     158           0 :     for(std::set<OUString>::const_iterator itr = aStyleNames.begin(), itrEnd = aStyleNames.end();
     159             :                         itr != itrEnd; ++itr)
     160             :     {
     161           0 :         rLbStyle.InsertEntry( *itr );
     162           0 :     }
     163           0 : }
     164             : 
     165             : }
     166             : 
     167           0 : ScConditionFrmtEntry::ScConditionFrmtEntry( vcl::Window* pParent, ScDocument* pDoc, ScCondFormatDlg* pDialogParent,
     168             :         const ScAddress& rPos, const ScCondFormatEntry* pFormatEntry ):
     169             :     ScCondFrmtEntry( pParent, pDoc, rPos ),
     170             :     maLbCondType( this, ScResId( LB_CELLIS_TYPE ) ),
     171             :     maEdVal1( this, NULL, NULL, ScResId( ED_VAL1 ) ),
     172             :     maEdVal2( this, NULL, NULL, ScResId( ED_VAL2 ) ),
     173             :     maFtStyle( this, ScResId( FT_STYLE ) ),
     174             :     maLbStyle( this, ScResId( LB_STYLE ) ),
     175             :     maWdPreview( this, ScResId( WD_PREVIEW ) ),
     176           0 :     mbIsInStyleCreate(false)
     177             : {
     178             : 
     179           0 :     FreeResource();
     180           0 :     maLbType.SelectEntryPos(1);
     181             : 
     182           0 :     Init(pDialogParent);
     183             : 
     184           0 :     StartListening(*pDoc->GetStyleSheetPool(), true);
     185             : 
     186           0 :     if(pFormatEntry)
     187             :     {
     188           0 :         OUString aStyleName = pFormatEntry->GetStyle();
     189           0 :         maLbStyle.SelectEntry(aStyleName);
     190           0 :         StyleSelectHdl(NULL);
     191           0 :         ScConditionMode eMode = pFormatEntry->GetOperation();
     192           0 :         maEdVal1.SetText(pFormatEntry->GetExpression(maPos, 0));
     193           0 :         maEdVal2.Hide();
     194           0 :         switch(eMode)
     195             :         {
     196             :             case SC_COND_EQUAL:
     197           0 :                 maLbCondType.SelectEntryPos(0);
     198           0 :                 break;
     199             :             case SC_COND_LESS:
     200           0 :                 maLbCondType.SelectEntryPos(1);
     201           0 :                 break;
     202             :             case SC_COND_GREATER:
     203           0 :                 maLbCondType.SelectEntryPos(2);
     204           0 :                 break;
     205             :             case SC_COND_EQLESS:
     206           0 :                 maLbCondType.SelectEntryPos(3);
     207           0 :                 break;
     208             :             case SC_COND_EQGREATER:
     209           0 :                 maLbCondType.SelectEntryPos(4);
     210           0 :                 break;
     211             :             case SC_COND_NOTEQUAL:
     212           0 :                 maLbCondType.SelectEntryPos(5);
     213           0 :                 break;
     214             :             case SC_COND_BETWEEN:
     215           0 :                 maEdVal2.Show();
     216           0 :                 maEdVal2.SetText(pFormatEntry->GetExpression(maPos, 1));
     217           0 :                 maLbCondType.SelectEntryPos(6);
     218           0 :                 break;
     219             :             case SC_COND_NOTBETWEEN:
     220           0 :                 maEdVal2.Show();
     221           0 :                 maEdVal2.SetText(pFormatEntry->GetExpression(maPos, 1));
     222           0 :                 maLbCondType.SelectEntryPos(7);
     223           0 :                 break;
     224             :             case SC_COND_DUPLICATE:
     225           0 :                 maLbCondType.SelectEntryPos(8);
     226           0 :                 break;
     227             :             case SC_COND_NOTDUPLICATE:
     228           0 :                 maLbCondType.SelectEntryPos(9);
     229           0 :                 break;
     230             :             case SC_COND_DIRECT:
     231             :                 assert(false);
     232             :                 //maLbType.SelectEntryPos(2);
     233           0 :                 break;
     234             :             case SC_COND_TOP10:
     235           0 :                 maLbCondType.SelectEntryPos(10);
     236           0 :                 break;
     237             :             case SC_COND_BOTTOM10:
     238           0 :                 maLbCondType.SelectEntryPos(11);
     239           0 :                 break;
     240             :             case SC_COND_TOP_PERCENT:
     241           0 :                 maLbCondType.SelectEntryPos(12);
     242           0 :                 break;
     243             :             case SC_COND_BOTTOM_PERCENT:
     244           0 :                 maLbCondType.SelectEntryPos(13);
     245           0 :                 break;
     246             :             case SC_COND_ABOVE_AVERAGE:
     247           0 :                 maEdVal1.Hide();
     248           0 :                 maLbCondType.SelectEntryPos(14);
     249           0 :                 break;
     250             :             case SC_COND_BELOW_AVERAGE:
     251           0 :                 maEdVal1.Hide();
     252           0 :                 maLbCondType.SelectEntryPos(15);
     253           0 :                 break;
     254             :             case SC_COND_ABOVE_EQUAL_AVERAGE:
     255           0 :                 maEdVal1.Hide();
     256           0 :                 maLbCondType.SelectEntryPos(16);
     257           0 :                 break;
     258             :             case SC_COND_BELOW_EQUAL_AVERAGE:
     259           0 :                 maEdVal1.Hide();
     260           0 :                 maLbCondType.SelectEntryPos(17);
     261           0 :                 break;
     262             :             case SC_COND_ERROR:
     263           0 :                 maEdVal1.Hide();
     264           0 :                 maLbCondType.SelectEntryPos(18);
     265           0 :                 break;
     266             :             case SC_COND_NOERROR:
     267           0 :                 maEdVal1.Hide();
     268           0 :                 maLbCondType.SelectEntryPos(19);
     269           0 :                 break;
     270             :             case SC_COND_BEGINS_WITH:
     271           0 :                 maLbCondType.SelectEntryPos(20);
     272           0 :                 break;
     273             :             case SC_COND_ENDS_WITH:
     274           0 :                 maLbCondType.SelectEntryPos(21);
     275           0 :                 break;
     276             :             case SC_COND_CONTAINS_TEXT:
     277           0 :                 maLbCondType.SelectEntryPos(22);
     278           0 :                 break;
     279             :             case SC_COND_NOT_CONTAINS_TEXT:
     280           0 :                 maLbCondType.SelectEntryPos(23);
     281           0 :                 break;
     282             :             case SC_COND_NONE:
     283           0 :                 break;
     284           0 :         }
     285             :     }
     286             :     else
     287             :     {
     288           0 :         maLbCondType.SelectEntryPos(0);
     289           0 :         maEdVal2.Hide();
     290           0 :         maLbStyle.SelectEntryPos(1);
     291             :     }
     292           0 :     maLbType.SelectEntryPos(1);
     293           0 : }
     294             : 
     295           0 : void ScConditionFrmtEntry::Init(ScCondFormatDlg* pDialogParent)
     296             : {
     297           0 :     maEdVal1.SetGetFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeGetFocusHdl ) );
     298           0 :     maEdVal2.SetGetFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeGetFocusHdl ) );
     299           0 :     maEdVal1.SetLoseFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeLoseFocusHdl ) );
     300           0 :     maEdVal2.SetLoseFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeLoseFocusHdl ) );
     301             : 
     302           0 :     maEdVal1.SetStyle( maEdVal1.GetStyle() | WB_FORCECTRLBACKGROUND );
     303           0 :     maEdVal2.SetStyle( maEdVal2.GetStyle() | WB_FORCECTRLBACKGROUND );
     304             : 
     305           0 :     maEdVal1.SetModifyHdl( LINK( this, ScCondFrmtEntry, EdModifyHdl ) );
     306           0 :     maEdVal2.SetModifyHdl( LINK( this, ScCondFrmtEntry, EdModifyHdl ) );
     307             : 
     308           0 :     FillStyleListBox( mpDoc, maLbStyle );
     309           0 :     maLbStyle.SetSelectHdl( LINK( this, ScConditionFrmtEntry, StyleSelectHdl ) );
     310             : 
     311           0 :     maLbCondType.SetSelectHdl( LINK( this, ScConditionFrmtEntry, ConditionTypeSelectHdl ) );
     312           0 : }
     313             : 
     314           0 : ScFormatEntry* ScConditionFrmtEntry::createConditionEntry() const
     315             : {
     316             :     ScConditionMode eMode;
     317           0 :     OUString aExpr2;
     318           0 :     switch(maLbCondType.GetSelectEntryPos())
     319             :     {
     320             :         case 0:
     321           0 :             eMode = SC_COND_EQUAL;
     322           0 :             break;
     323             :         case 1:
     324           0 :             eMode = SC_COND_LESS;
     325           0 :             break;
     326             :         case 2:
     327           0 :             eMode = SC_COND_GREATER;
     328           0 :             break;
     329             :         case 3:
     330           0 :             eMode = SC_COND_EQLESS;
     331           0 :             break;
     332             :         case 4:
     333           0 :             eMode = SC_COND_EQGREATER;
     334           0 :             break;
     335             :         case 5:
     336           0 :             eMode = SC_COND_NOTEQUAL;
     337           0 :             break;
     338             :         case 6:
     339           0 :             aExpr2 = maEdVal2.GetText();
     340           0 :             eMode = SC_COND_BETWEEN;
     341           0 :             if(aExpr2.isEmpty())
     342           0 :                 return NULL;
     343           0 :             break;
     344             :         case 7:
     345           0 :             eMode = SC_COND_NOTBETWEEN;
     346           0 :             aExpr2 = maEdVal2.GetText();
     347           0 :             if(aExpr2.isEmpty())
     348           0 :                 return NULL;
     349           0 :             break;
     350             :         case 8:
     351           0 :             eMode = SC_COND_DUPLICATE;
     352           0 :             break;
     353             :         case 9:
     354           0 :             eMode = SC_COND_NOTDUPLICATE;
     355           0 :             break;
     356             :         case 10:
     357           0 :             eMode = SC_COND_TOP10;
     358           0 :             break;
     359             :         case 11:
     360           0 :             eMode = SC_COND_BOTTOM10;
     361           0 :             break;
     362             :         case 12:
     363           0 :             eMode = SC_COND_TOP_PERCENT;
     364           0 :             break;
     365             :         case 13:
     366           0 :             eMode = SC_COND_BOTTOM_PERCENT;
     367           0 :             break;
     368             :         case 14:
     369           0 :             eMode = SC_COND_ABOVE_AVERAGE;
     370           0 :             break;
     371             :         case 15:
     372           0 :             eMode = SC_COND_BELOW_AVERAGE;
     373           0 :             break;
     374             :         case 16:
     375           0 :             eMode = SC_COND_ABOVE_EQUAL_AVERAGE;
     376           0 :             break;
     377             :         case 17:
     378           0 :             eMode = SC_COND_BELOW_EQUAL_AVERAGE;
     379           0 :             break;
     380             :         case 18:
     381           0 :             eMode = SC_COND_ERROR;
     382           0 :             break;
     383             :         case 19:
     384           0 :             eMode = SC_COND_NOERROR;
     385           0 :             break;
     386             :         case 20:
     387           0 :             eMode = SC_COND_BEGINS_WITH;
     388           0 :             break;
     389             :         case 21:
     390           0 :             eMode = SC_COND_ENDS_WITH;
     391           0 :             break;
     392             :         case 22:
     393           0 :             eMode = SC_COND_CONTAINS_TEXT;
     394           0 :             break;
     395             :         case 23:
     396           0 :             eMode = SC_COND_NOT_CONTAINS_TEXT;
     397           0 :             break;
     398             :         default:
     399             :             assert(false); // this cannot happen
     400           0 :             return NULL;
     401             :     }
     402             : 
     403           0 :     OUString aExpr1 = maEdVal1.GetText();
     404             : 
     405           0 :     ScFormatEntry* pEntry = new ScCondFormatEntry(eMode, aExpr1, aExpr2, mpDoc, maPos, maLbStyle.GetSelectEntry());
     406             : 
     407           0 :     return pEntry;
     408             : }
     409             : 
     410           0 : OUString ScConditionFrmtEntry::GetExpressionString()
     411             : {
     412           0 :     return ScCondFormatHelper::GetExpression(CONDITION, maLbCondType.GetSelectEntryPos(), maEdVal1.GetText(), maEdVal2.GetText());
     413             : }
     414             : 
     415           0 : ScFormatEntry* ScConditionFrmtEntry::GetEntry() const
     416             : {
     417           0 :     return createConditionEntry();
     418             : }
     419             : 
     420           0 : void ScConditionFrmtEntry::SetActive()
     421             : {
     422           0 :     maLbCondType.Show();
     423           0 :     maEdVal1.Show();
     424           0 :     if(maLbCondType.GetSelectEntryPos() == 6 || maLbCondType.GetSelectEntryPos() == 7)
     425           0 :         maEdVal2.Show();
     426           0 :     maFtStyle.Show();
     427           0 :     maLbStyle.Show();
     428           0 :     maWdPreview.Show();
     429             : 
     430           0 :     Select();
     431           0 : }
     432             : 
     433           0 : void ScConditionFrmtEntry::SetInactive()
     434             : {
     435           0 :     maLbCondType.Hide();
     436           0 :     maEdVal1.Hide();
     437           0 :     maEdVal2.Hide();
     438           0 :     maFtStyle.Hide();
     439           0 :     maLbStyle.Hide();
     440           0 :     maWdPreview.Hide();
     441             : 
     442           0 :     Deselect();
     443           0 : }
     444             : 
     445             : namespace {
     446             : 
     447           0 : void UpdateStyleList(ListBox& rLbStyle, ScDocument* pDoc)
     448             : {
     449           0 :     OUString aSelectedStyle = rLbStyle.GetSelectEntry();
     450           0 :     for(sal_Int32 i = rLbStyle.GetEntryCount(); i >= 1; --i)
     451             :     {
     452           0 :         rLbStyle.RemoveEntry(i);
     453             :     }
     454           0 :     FillStyleListBox(pDoc, rLbStyle);
     455           0 :     rLbStyle.SelectEntry(aSelectedStyle);
     456           0 : }
     457             : 
     458             : }
     459             : 
     460           0 : void ScConditionFrmtEntry::Notify(SfxBroadcaster&, const SfxHint& rHint)
     461             : {
     462           0 :     const SfxStyleSheetHint* pHint = dynamic_cast<const SfxStyleSheetHint*>(&rHint);
     463           0 :     if(!pHint)
     464           0 :         return;
     465             : 
     466           0 :     sal_uInt16 nHint = pHint->GetHint();
     467           0 :     if(nHint == SFX_STYLESHEET_MODIFIED)
     468             :     {
     469           0 :         if(!mbIsInStyleCreate)
     470           0 :             UpdateStyleList(maLbStyle, mpDoc);
     471             :     }
     472             : }
     473             : 
     474             : namespace {
     475             : 
     476           0 : void StyleSelect( ListBox& rLbStyle, ScDocument* pDoc, SvxFontPrevWindow& rWdPreview )
     477             : {
     478           0 :     if(rLbStyle.GetSelectEntryPos() == 0)
     479             :     {
     480             :         // call new style dialog
     481           0 :         SfxUInt16Item aFamilyItem( SID_STYLE_FAMILY, SFX_STYLE_FAMILY_PARA );
     482           0 :         SfxStringItem aRefItem( SID_STYLE_REFERENCE, ScGlobal::GetRscString(STR_STYLENAME_STANDARD) );
     483             : 
     484             :         // unlock the dispatcher so SID_STYLE_NEW can be executed
     485             :         // (SetDispatcherLock would affect all Calc documents)
     486           0 :         ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
     487           0 :         SfxDispatcher* pDisp = pViewShell->GetDispatcher();
     488           0 :         bool bLocked = pDisp->IsLocked();
     489           0 :         if (bLocked)
     490           0 :             pDisp->Lock(false);
     491             : 
     492             :         // Execute the "new style" slot, complete with undo and all necessary updates.
     493             :         // The return value (SfxUInt16Item) is ignored, look for new styles instead.
     494             :         pDisp->Execute( SID_STYLE_NEW, SfxCallMode::SYNCHRON | SfxCallMode::RECORD | SfxCallMode::MODAL,
     495             :                 &aFamilyItem,
     496             :                 &aRefItem,
     497           0 :                 0L );
     498             : 
     499           0 :         if (bLocked)
     500           0 :             pDisp->Lock(true);
     501             : 
     502             :         // Find the new style and add it into the style list boxes
     503           0 :         SfxStyleSheetIterator aStyleIter( pDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
     504           0 :         bool bFound = false;
     505           0 :         for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle && !bFound; pStyle = aStyleIter.Next() )
     506             :         {
     507           0 :             OUString aName = pStyle->GetName();
     508           0 :             if ( rLbStyle.GetEntryPos(aName) == LISTBOX_ENTRY_NOTFOUND )    // all lists contain the same entries
     509             :             {
     510           0 :                 for( sal_uInt16 i = 1, n = rLbStyle.GetEntryCount(); i <= n && !bFound; ++i)
     511             :                 {
     512           0 :                     OUString aStyleName = ScGlobal::pCharClass->uppercase(OUString(rLbStyle.GetEntry(i)));
     513           0 :                     if( i == n )
     514             :                     {
     515           0 :                         rLbStyle.InsertEntry(aName);
     516           0 :                         rLbStyle.SelectEntry(aName);
     517           0 :                         bFound = true;
     518             :                     }
     519           0 :                     else if( aStyleName > ScGlobal::pCharClass->uppercase(aName) )
     520             :                     {
     521           0 :                         rLbStyle.InsertEntry(aName, i);
     522           0 :                         rLbStyle.SelectEntry(aName);
     523           0 :                         bFound = true;
     524             :                     }
     525           0 :                 }
     526             :             }
     527           0 :         }
     528             :     }
     529             : 
     530           0 :     OUString aStyleName = rLbStyle.GetSelectEntry();
     531           0 :     SfxStyleSheetBase* pStyleSheet = pDoc->GetStyleSheetPool()->Find( aStyleName, SFX_STYLE_FAMILY_PARA );
     532           0 :     if(pStyleSheet)
     533             :     {
     534           0 :         const SfxItemSet& rSet = pStyleSheet->GetItemSet();
     535           0 :         rWdPreview.Init( rSet );
     536           0 :     }
     537           0 : }
     538             : 
     539             : }
     540             : 
     541           0 : IMPL_LINK_NOARG(ScConditionFrmtEntry, StyleSelectHdl)
     542             : {
     543           0 :     mbIsInStyleCreate = true;
     544           0 :     StyleSelect( maLbStyle, mpDoc, maWdPreview );
     545           0 :     mbIsInStyleCreate = false;
     546           0 :     return 0;
     547             : }
     548             : 
     549             : // formula
     550             : 
     551           0 : ScFormulaFrmtEntry::ScFormulaFrmtEntry( vcl::Window* pParent, ScDocument* pDoc, ScCondFormatDlg* pDialogParent, const ScAddress& rPos, const ScCondFormatEntry* pFormat ):
     552             :     ScCondFrmtEntry( pParent, pDoc, rPos ),
     553             :     maFtStyle( this, ScResId( FT_STYLE ) ),
     554             :     maLbStyle( this, ScResId( LB_STYLE ) ),
     555             :     maWdPreview( this, ScResId( WD_PREVIEW ) ),
     556           0 :     maEdFormula( this, NULL, NULL, ScResId( ED_FORMULA ) )
     557             : {
     558           0 :     Init(pDialogParent);
     559             : 
     560           0 :     FreeResource();
     561           0 :     maLbType.SelectEntryPos(2);
     562             : 
     563           0 :     if(pFormat)
     564             :     {
     565           0 :         maEdFormula.SetText(pFormat->GetExpression(rPos, 0, 0, pDoc->GetGrammar()));
     566           0 :         maLbStyle.SelectEntry(pFormat->GetStyle());
     567             :     }
     568             :     else
     569             :     {
     570           0 :         maLbStyle.SelectEntryPos(1);
     571             :     }
     572             : 
     573           0 :     StyleSelectHdl(NULL);
     574           0 : }
     575             : 
     576           0 : void ScFormulaFrmtEntry::Init(ScCondFormatDlg* pDialogParent)
     577             : {
     578           0 :     maEdFormula.SetGetFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeGetFocusHdl ) );
     579           0 :     maEdFormula.SetLoseFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeLoseFocusHdl ) );
     580             : 
     581           0 :     FillStyleListBox( mpDoc, maLbStyle );
     582           0 :     maLbStyle.SetSelectHdl( LINK( this, ScFormulaFrmtEntry, StyleSelectHdl ) );
     583           0 : }
     584             : 
     585           0 : IMPL_LINK_NOARG(ScFormulaFrmtEntry, StyleSelectHdl)
     586             : {
     587           0 :     StyleSelect( maLbStyle, mpDoc, maWdPreview );
     588             : 
     589           0 :     return 0;
     590             : }
     591             : 
     592           0 : ScFormatEntry* ScFormulaFrmtEntry::createFormulaEntry() const
     593             : {
     594           0 :     ScConditionMode eMode = SC_COND_DIRECT;
     595           0 :     OUString aFormula = maEdFormula.GetText();
     596           0 :     if(aFormula.isEmpty())
     597           0 :         return NULL;
     598             : 
     599           0 :     OUString aExpr2;
     600           0 :     ScFormatEntry* pEntry = new ScCondFormatEntry(eMode, aFormula, aExpr2, mpDoc, maPos, maLbStyle.GetSelectEntry());
     601           0 :     return pEntry;
     602             : }
     603             : 
     604           0 : ScFormatEntry* ScFormulaFrmtEntry::GetEntry() const
     605             : {
     606           0 :     return createFormulaEntry();
     607             : }
     608             : 
     609           0 : OUString ScFormulaFrmtEntry::GetExpressionString()
     610             : {
     611           0 :     return ScCondFormatHelper::GetExpression(FORMULA, 0, maEdFormula.GetText());
     612             : }
     613             : 
     614           0 : void ScFormulaFrmtEntry::SetActive()
     615             : {
     616           0 :     maWdPreview.Show();
     617           0 :     maFtStyle.Show();
     618           0 :     maLbStyle.Show();
     619           0 :     maEdFormula.Show();
     620             : 
     621           0 :     Select();
     622           0 : }
     623             : 
     624           0 : void ScFormulaFrmtEntry::SetInactive()
     625             : {
     626           0 :     maWdPreview.Hide();
     627           0 :     maFtStyle.Hide();
     628           0 :     maLbStyle.Hide();
     629           0 :     maEdFormula.Hide();
     630             : 
     631           0 :     Deselect();
     632           0 : }
     633             : 
     634             : //color scale
     635             : 
     636             : namespace {
     637             : 
     638           0 : OUString convertNumberToString(double nVal, ScDocument* pDoc)
     639             : {
     640           0 :     SvNumberFormatter* pNumberFormatter = pDoc->GetFormatTable();
     641           0 :     OUString aText;
     642           0 :     pNumberFormatter->GetInputLineString(nVal, 0, aText);
     643           0 :     return aText;
     644             : }
     645             : 
     646           0 : void SetColorScaleEntryTypes( const ScColorScaleEntry& rEntry, ListBox& rLbType, Edit& rEdit, ColorListBox& rLbCol, ScDocument* pDoc )
     647             : {
     648             :     // entry Automatic is not available for color scales
     649           0 :     sal_Int32 nIndex = static_cast<sal_Int32>(rEntry.GetType());
     650             :     assert(nIndex > 0);
     651           0 :     rLbType.SelectEntryPos(nIndex - 1);
     652           0 :     switch(rEntry.GetType())
     653             :     {
     654             :         case COLORSCALE_MIN:
     655             :         case COLORSCALE_MAX:
     656           0 :             break;
     657             :         case COLORSCALE_PERCENTILE:
     658             :         case COLORSCALE_VALUE:
     659             :         case COLORSCALE_PERCENT:
     660             :             {
     661           0 :                 double nVal = rEntry.GetValue();
     662           0 :                 rEdit.SetText(convertNumberToString(nVal, pDoc));
     663             :             }
     664           0 :             break;
     665             :         case COLORSCALE_FORMULA:
     666           0 :             rEdit.SetText(rEntry.GetFormula(formula::FormulaGrammar::GRAM_DEFAULT));
     667           0 :             break;
     668             :         case COLORSCALE_AUTO:
     669           0 :             abort();
     670             :             break;
     671             :     }
     672           0 :     rLbCol.SelectEntry(rEntry.GetColor());
     673           0 : }
     674             : 
     675           0 : void SetColorScaleEntry( ScColorScaleEntry* pEntry, const ListBox& rType, const Edit& rValue, ScDocument* pDoc, const ScAddress& rPos, bool bDataBar )
     676             : {
     677             : 
     678             :     // color scale does not have the automatic entry
     679           0 :     sal_Int32 nPos = rType.GetSelectEntryPos();
     680           0 :     if(!bDataBar)
     681           0 :         ++nPos;
     682             : 
     683           0 :     pEntry->SetType(static_cast<ScColorScaleEntryType>(nPos));
     684           0 :     switch(nPos)
     685             :     {
     686             :         case COLORSCALE_AUTO:
     687             :         case COLORSCALE_MIN:
     688             :         case COLORSCALE_MAX:
     689           0 :             break;
     690             :         case COLORSCALE_PERCENTILE:
     691             :         case COLORSCALE_VALUE:
     692             :         case COLORSCALE_PERCENT:
     693             :             {
     694           0 :                 sal_uInt32 nIndex = 0;
     695           0 :                 double nVal = 0;
     696           0 :                 SvNumberFormatter* pNumberFormatter = pDoc->GetFormatTable();
     697           0 :                 (void)pNumberFormatter->IsNumberFormat(rValue.GetText(), nIndex, nVal);
     698           0 :                 pEntry->SetValue(nVal);
     699             :             }
     700           0 :             break;
     701             :         case COLORSCALE_FORMULA:
     702           0 :             pEntry->SetFormula(rValue.GetText(), pDoc, rPos);
     703           0 :             break;
     704             :         default:
     705           0 :             break;
     706             :     }
     707           0 : }
     708             : 
     709           0 : ScColorScaleEntry* createColorScaleEntry( const ListBox& rType, const ColorListBox& rColor, const Edit& rValue, ScDocument* pDoc, const ScAddress& rPos )
     710             : {
     711           0 :     ScColorScaleEntry* pEntry = new ScColorScaleEntry();
     712             : 
     713           0 :     SetColorScaleEntry( pEntry, rType, rValue, pDoc, rPos, false );
     714           0 :     Color aColor = rColor.GetSelectEntryColor();
     715           0 :     pEntry->SetColor(aColor);
     716           0 :     return pEntry;
     717             : }
     718             : 
     719             : }
     720             : 
     721           0 : ScColorScale2FrmtEntry::ScColorScale2FrmtEntry( vcl::Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat ):
     722             :     ScCondFrmtEntry( pParent, pDoc, rPos ),
     723             :     maLbColorFormat( this, ScResId( LB_COLOR_FORMAT ) ),
     724             :     maLbEntryTypeMin( this, ScResId( LB_TYPE_COL_SCALE_MIN ) ),
     725             :     maLbEntryTypeMax( this, ScResId( LB_TYPE_COL_SCALE_MAX ) ),
     726             :     maEdMin( this, ScResId( ED_COL_SCALE_MIN ) ),
     727             :     maEdMax( this, ScResId( ED_COL_SCALE_MAX ) ),
     728             :     maLbColMin( this, ScResId( LB_COL_MIN ) ),
     729           0 :     maLbColMax( this, ScResId( LB_COL_MAX ) )
     730             : {
     731             :     // remove the automatic entry from color scales
     732           0 :     maLbEntryTypeMin.RemoveEntry(0);
     733           0 :     maLbEntryTypeMax.RemoveEntry(0);
     734             : 
     735           0 :     maLbType.SelectEntryPos(0);
     736           0 :     maLbColorFormat.SelectEntryPos(0);
     737           0 :     Init();
     738           0 :     if(pFormat)
     739             :     {
     740           0 :         ScColorScaleFormat::const_iterator itr = pFormat->begin();
     741           0 :         SetColorScaleEntryTypes(*itr, maLbEntryTypeMin, maEdMin, maLbColMin, pDoc);
     742           0 :         ++itr;
     743           0 :         SetColorScaleEntryTypes(*itr, maLbEntryTypeMax, maEdMax, maLbColMax, pDoc);
     744             :     }
     745             :     else
     746             :     {
     747           0 :         maLbEntryTypeMin.SelectEntryPos(0);
     748           0 :         maLbEntryTypeMax.SelectEntryPos(1);
     749             :     }
     750           0 :     FreeResource();
     751             : 
     752           0 :     maLbColorFormat.SetSelectHdl( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) );
     753             : 
     754           0 :     EntryTypeHdl(&maLbEntryTypeMin);
     755           0 :     EntryTypeHdl(&maLbEntryTypeMax);
     756           0 : }
     757             : 
     758           0 : void ScColorScale2FrmtEntry::Init()
     759             : {
     760           0 :     maLbEntryTypeMin.SetSelectHdl( LINK( this, ScColorScale2FrmtEntry, EntryTypeHdl ) );
     761           0 :     maLbEntryTypeMax.SetSelectHdl( LINK( this, ScColorScale2FrmtEntry, EntryTypeHdl ) );
     762             : 
     763           0 :     SfxObjectShell*     pDocSh      = SfxObjectShell::Current();
     764           0 :     XColorListRef       pColorTable;
     765             : 
     766             :     DBG_ASSERT( pDocSh, "DocShell not found!" );
     767             : 
     768           0 :     if ( pDocSh )
     769             :     {
     770           0 :         const SfxPoolItem*  pItem = pDocSh->GetItem( SID_COLOR_TABLE );
     771           0 :         if ( pItem != NULL )
     772           0 :             pColorTable = static_cast<const SvxColorListItem*>(pItem) ->GetColorList();
     773             :     }
     774           0 :     if ( pColorTable.is() )
     775             :     {
     776             :         // filling the line color box
     777           0 :         maLbColMin.SetUpdateMode( false );
     778           0 :         maLbColMax.SetUpdateMode( false );
     779             : 
     780           0 :         for ( long i = 0; i < pColorTable->Count(); ++i )
     781             :         {
     782           0 :             XColorEntry* pEntry = pColorTable->GetColor(i);
     783           0 :             maLbColMin.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
     784           0 :             maLbColMax.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
     785             : 
     786           0 :             if(pEntry->GetColor() == Color(COL_LIGHTRED))
     787           0 :                 maLbColMin.SelectEntryPos(i);
     788           0 :             if(pEntry->GetColor() == Color(COL_LIGHTBLUE))
     789           0 :                 maLbColMax.SelectEntryPos(i);
     790             :         }
     791           0 :         maLbColMin.SetUpdateMode( true );
     792           0 :         maLbColMax.SetUpdateMode( true );
     793           0 :     }
     794           0 : }
     795             : 
     796           0 : ScFormatEntry* ScColorScale2FrmtEntry::createColorscaleEntry() const
     797             : {
     798           0 :     ScColorScaleFormat* pColorScale = new ScColorScaleFormat(mpDoc);
     799           0 :     pColorScale->AddEntry(createColorScaleEntry(maLbEntryTypeMin, maLbColMin, maEdMin, mpDoc, maPos));
     800           0 :     pColorScale->AddEntry(createColorScaleEntry(maLbEntryTypeMax, maLbColMax, maEdMax, mpDoc, maPos));
     801           0 :     return pColorScale;
     802             : }
     803             : 
     804           0 : OUString ScColorScale2FrmtEntry::GetExpressionString()
     805             : {
     806           0 :     return ScCondFormatHelper::GetExpression( COLORSCALE, 0 );
     807             : }
     808             : 
     809           0 : ScFormatEntry* ScColorScale2FrmtEntry::GetEntry() const
     810             : {
     811           0 :     return createColorscaleEntry();
     812             : }
     813             : 
     814           0 : void ScColorScale2FrmtEntry::SetActive()
     815             : {
     816           0 :     maLbColorFormat.Show();
     817             : 
     818           0 :     maLbEntryTypeMin.Show();
     819           0 :     maLbEntryTypeMax.Show();
     820             : 
     821           0 :     maEdMin.Show();
     822           0 :     maEdMax.Show();
     823             : 
     824           0 :     maLbColMin.Show();
     825           0 :     maLbColMax.Show();
     826             : 
     827           0 :     Select();
     828           0 : }
     829             : 
     830           0 : void ScColorScale2FrmtEntry::SetInactive()
     831             : {
     832           0 :     maLbColorFormat.Hide();
     833             : 
     834           0 :     maLbEntryTypeMin.Hide();
     835           0 :     maLbEntryTypeMax.Hide();
     836             : 
     837           0 :     maEdMin.Hide();
     838           0 :     maEdMax.Hide();
     839             : 
     840           0 :     maLbColMin.Hide();
     841           0 :     maLbColMax.Hide();
     842             : 
     843           0 :     Deselect();
     844           0 : }
     845             : 
     846           0 : IMPL_LINK( ScColorScale2FrmtEntry, EntryTypeHdl, ListBox*, pBox )
     847             : {
     848           0 :     Edit* pEd = NULL;
     849           0 :     if (pBox == &maLbEntryTypeMin)
     850           0 :         pEd = &maEdMin;
     851           0 :     else if (pBox == &maLbEntryTypeMax)
     852           0 :         pEd = &maEdMax;
     853             : 
     854           0 :     if (!pEd)
     855           0 :         return 0;
     856             : 
     857           0 :     bool bEnableEdit = true;
     858           0 :     sal_Int32 nPos = pBox->GetSelectEntryPos();
     859           0 :     if(nPos < 2)
     860             :     {
     861           0 :         bEnableEdit = false;
     862             :     }
     863             : 
     864           0 :     if (bEnableEdit)
     865           0 :         pEd->Enable();
     866             :     else
     867           0 :         pEd->Disable();
     868             : 
     869           0 :     return 0;
     870             : }
     871             : 
     872           0 : ScColorScale3FrmtEntry::ScColorScale3FrmtEntry( vcl::Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat ):
     873             :     ScCondFrmtEntry( pParent, pDoc, rPos ),
     874             :     maLbColorFormat( this, ScResId( LB_COLOR_FORMAT ) ),
     875             :     maLbEntryTypeMin( this, ScResId( LB_TYPE_COL_SCALE_MIN ) ),
     876             :     maLbEntryTypeMiddle( this, ScResId( LB_TYPE_COL_SCALE_MIDDLE ) ),
     877             :     maLbEntryTypeMax( this, ScResId( LB_TYPE_COL_SCALE_MAX ) ),
     878             :     maEdMin( this, ScResId( ED_COL_SCALE_MIN ) ),
     879             :     maEdMiddle( this, ScResId( ED_COL_SCALE_MIDDLE ) ),
     880             :     maEdMax( this, ScResId( ED_COL_SCALE_MAX ) ),
     881             :     maLbColMin( this, ScResId( LB_COL_MIN ) ),
     882             :     maLbColMiddle( this, ScResId( LB_COL_MIDDLE ) ),
     883           0 :     maLbColMax( this, ScResId( LB_COL_MAX ) )
     884             : {
     885             :     // remove the automatic entry from color scales
     886           0 :     maLbEntryTypeMin.RemoveEntry(0);
     887           0 :     maLbEntryTypeMiddle.RemoveEntry(0);
     888           0 :     maLbEntryTypeMax.RemoveEntry(0);
     889           0 :     maLbColorFormat.SelectEntryPos(1);
     890             : 
     891           0 :     Init();
     892           0 :     maLbType.SelectEntryPos(0);
     893           0 :     if(pFormat)
     894             :     {
     895           0 :         ScColorScaleFormat::const_iterator itr = pFormat->begin();
     896           0 :         SetColorScaleEntryTypes(*itr, maLbEntryTypeMin, maEdMin, maLbColMin, pDoc);
     897             :         assert(pFormat->size() == 3);
     898           0 :         ++itr;
     899           0 :         SetColorScaleEntryTypes(*itr, maLbEntryTypeMiddle, maEdMiddle, maLbColMiddle, pDoc);
     900           0 :         ++itr;
     901           0 :         SetColorScaleEntryTypes(*itr, maLbEntryTypeMax, maEdMax, maLbColMax, pDoc);
     902             :     }
     903             :     else
     904             :     {
     905           0 :         maLbColorFormat.SelectEntryPos(1);
     906           0 :         maLbEntryTypeMin.SelectEntryPos(0);
     907           0 :         maLbEntryTypeMiddle.SelectEntryPos(2);
     908           0 :         maLbEntryTypeMax.SelectEntryPos(1);
     909           0 :         maEdMiddle.SetText(OUString::number(50));
     910             :     }
     911           0 :     FreeResource();
     912             : 
     913           0 :     maLbColorFormat.SetSelectHdl( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) );
     914           0 :     EntryTypeHdl(&maLbEntryTypeMin);
     915           0 :     EntryTypeHdl(&maLbEntryTypeMiddle);
     916           0 :     EntryTypeHdl(&maLbEntryTypeMax);
     917           0 : }
     918             : 
     919           0 : void ScColorScale3FrmtEntry::Init()
     920             : {
     921           0 :     maLbEntryTypeMin.SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) );
     922           0 :     maLbEntryTypeMax.SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) );
     923           0 :     maLbEntryTypeMiddle.SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) );
     924             : 
     925           0 :     SfxObjectShell*     pDocSh      = SfxObjectShell::Current();
     926           0 :     XColorListRef       pColorTable;
     927             : 
     928             :     DBG_ASSERT( pDocSh, "DocShell not found!" );
     929             : 
     930           0 :     if ( pDocSh )
     931             :     {
     932           0 :         const SfxPoolItem* pItem = pDocSh->GetItem( SID_COLOR_TABLE );
     933           0 :         if ( pItem != NULL )
     934           0 :             pColorTable = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
     935             :     }
     936           0 :     if ( pColorTable.is() )
     937             :     {
     938             :         // filling the line color box
     939           0 :         maLbColMin.SetUpdateMode( false );
     940           0 :         maLbColMiddle.SetUpdateMode( false );
     941           0 :         maLbColMax.SetUpdateMode( false );
     942             : 
     943           0 :         for ( long i = 0; i < pColorTable->Count(); ++i )
     944             :         {
     945           0 :             XColorEntry* pEntry = pColorTable->GetColor(i);
     946           0 :             maLbColMin.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
     947           0 :             maLbColMiddle.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
     948           0 :             maLbColMax.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
     949             : 
     950           0 :             if(pEntry->GetColor() == Color(COL_LIGHTRED))
     951           0 :                 maLbColMin.SelectEntryPos(i);
     952           0 :             if(pEntry->GetColor() == Color(COL_GREEN))
     953           0 :                 maLbColMiddle.SelectEntryPos(i);
     954           0 :             if(pEntry->GetColor() == Color(COL_LIGHTBLUE))
     955           0 :                 maLbColMax.SelectEntryPos(i);
     956             :         }
     957           0 :         maLbColMin.SetUpdateMode( true );
     958           0 :         maLbColMiddle.SetUpdateMode( true );
     959           0 :         maLbColMax.SetUpdateMode( true );
     960           0 :     }
     961           0 : }
     962             : 
     963           0 : ScFormatEntry* ScColorScale3FrmtEntry::createColorscaleEntry() const
     964             : {
     965           0 :     ScColorScaleFormat* pColorScale = new ScColorScaleFormat(mpDoc);
     966           0 :     pColorScale->AddEntry(createColorScaleEntry(maLbEntryTypeMin, maLbColMin, maEdMin, mpDoc, maPos));
     967           0 :     if(maLbColorFormat.GetSelectEntryPos() == 1)
     968           0 :         pColorScale->AddEntry(createColorScaleEntry(maLbEntryTypeMiddle, maLbColMiddle, maEdMiddle, mpDoc, maPos));
     969           0 :     pColorScale->AddEntry(createColorScaleEntry(maLbEntryTypeMax, maLbColMax, maEdMax, mpDoc, maPos));
     970           0 :     return pColorScale;
     971             : }
     972             : 
     973           0 : OUString ScColorScale3FrmtEntry::GetExpressionString()
     974             : {
     975           0 :     return ScCondFormatHelper::GetExpression( COLORSCALE, 0 );
     976             : }
     977             : 
     978           0 : ScFormatEntry* ScColorScale3FrmtEntry::GetEntry() const
     979             : {
     980           0 :     return createColorscaleEntry();
     981             : }
     982             : 
     983           0 : void ScColorScale3FrmtEntry::SetActive()
     984             : {
     985           0 :     maLbColorFormat.Show();
     986           0 :     maLbEntryTypeMin.Show();
     987           0 :     maLbEntryTypeMiddle.Show();
     988           0 :     maLbEntryTypeMax.Show();
     989             : 
     990           0 :     maEdMin.Show();
     991           0 :     maEdMiddle.Show();
     992           0 :     maEdMax.Show();
     993             : 
     994           0 :     maLbColMin.Show();
     995           0 :     maLbColMiddle.Show();
     996           0 :     maLbColMax.Show();
     997             : 
     998           0 :     Select();
     999           0 : }
    1000             : 
    1001           0 : void ScColorScale3FrmtEntry::SetInactive()
    1002             : {
    1003           0 :     maLbColorFormat.Hide();
    1004             : 
    1005           0 :     maLbEntryTypeMin.Hide();
    1006           0 :     maLbEntryTypeMiddle.Hide();
    1007           0 :     maLbEntryTypeMax.Hide();
    1008             : 
    1009           0 :     maEdMin.Hide();
    1010           0 :     maEdMiddle.Hide();
    1011           0 :     maEdMax.Hide();
    1012             : 
    1013           0 :     maLbColMin.Hide();
    1014           0 :     maLbColMiddle.Hide();
    1015           0 :     maLbColMax.Hide();
    1016             : 
    1017           0 :     Deselect();
    1018           0 : }
    1019             : 
    1020           0 : IMPL_LINK( ScColorScale3FrmtEntry, EntryTypeHdl, ListBox*, pBox )
    1021             : {
    1022           0 :     Edit* pEd = NULL;
    1023           0 :     if(pBox == &maLbEntryTypeMin)
    1024           0 :         pEd = &maEdMin;
    1025           0 :     else if(pBox == &maLbEntryTypeMiddle)
    1026           0 :         pEd = &maEdMiddle;
    1027           0 :     else if(pBox == &maLbEntryTypeMax)
    1028           0 :         pEd = &maEdMax;
    1029             : 
    1030           0 :     if (!pEd)
    1031           0 :         return 0;
    1032             : 
    1033           0 :     bool bEnableEdit = true;
    1034           0 :     sal_Int32 nPos = pBox->GetSelectEntryPos();
    1035           0 :     if(nPos < 2)
    1036             :     {
    1037           0 :         bEnableEdit = false;
    1038             :     }
    1039             : 
    1040           0 :     if(bEnableEdit)
    1041           0 :         pEd->Enable();
    1042             :     else
    1043           0 :         pEd->Disable();
    1044             : 
    1045           0 :     return 0;
    1046             : }
    1047             : 
    1048           0 : IMPL_LINK_NOARG( ScConditionFrmtEntry, ConditionTypeSelectHdl )
    1049             : {
    1050           0 :     sal_Int32 nSelectPos = maLbCondType.GetSelectEntryPos();
    1051           0 :     if(nSelectPos == 6 || nSelectPos == 7)
    1052             :     {
    1053           0 :         maEdVal1.Show();
    1054           0 :         maEdVal2.Show();
    1055             :     }
    1056           0 :     else if(nSelectPos == 8 || nSelectPos == 9)
    1057             :     {
    1058           0 :         maEdVal2.Hide();
    1059           0 :         maEdVal1.Hide();
    1060             :     }
    1061           0 :     else if(nSelectPos <= 5 || (nSelectPos >= 10 && nSelectPos <= 13)
    1062           0 :             || nSelectPos >= 18)
    1063             :     {
    1064           0 :         maEdVal1.Show();
    1065           0 :         maEdVal2.Hide();
    1066             :     }
    1067             :     else
    1068             :     {
    1069           0 :         maEdVal1.Hide();
    1070           0 :         maEdVal2.Hide();
    1071             :     }
    1072             : 
    1073           0 :     return 0;
    1074             : }
    1075             : 
    1076             : //databar
    1077             : 
    1078             : namespace {
    1079             : 
    1080           0 : void SetDataBarEntryTypes( const ScColorScaleEntry& rEntry, ListBox& rLbType, Edit& rEdit, ScDocument* pDoc )
    1081             : {
    1082           0 :     rLbType.SelectEntryPos(rEntry.GetType());
    1083           0 :     switch(rEntry.GetType())
    1084             :     {
    1085             :         case COLORSCALE_AUTO:
    1086             :         case COLORSCALE_MIN:
    1087             :         case COLORSCALE_MAX:
    1088           0 :             break;
    1089             :         case COLORSCALE_VALUE:
    1090             :         case COLORSCALE_PERCENT:
    1091             :         case COLORSCALE_PERCENTILE:
    1092             :             {
    1093           0 :                 double nVal = rEntry.GetValue();
    1094           0 :                 SvNumberFormatter* pNumberFormatter = pDoc->GetFormatTable();
    1095           0 :                 OUString aText;
    1096           0 :                 pNumberFormatter->GetInputLineString(nVal, 0, aText);
    1097           0 :                 rEdit.SetText(aText);
    1098             :             }
    1099           0 :             break;
    1100             :         case COLORSCALE_FORMULA:
    1101           0 :             rEdit.SetText(rEntry.GetFormula(formula::FormulaGrammar::GRAM_DEFAULT));
    1102           0 :             break;
    1103             :     }
    1104           0 : }
    1105             : 
    1106             : }
    1107             : 
    1108           0 : ScDataBarFrmtEntry::ScDataBarFrmtEntry( vcl::Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScDataBarFormat* pFormat ):
    1109             :     ScCondFrmtEntry( pParent, pDoc, rPos ),
    1110             :     maLbColorFormat( this, ScResId( LB_COLOR_FORMAT ) ),
    1111             :     maLbDataBarMinType( this, ScResId( LB_TYPE_COL_SCALE_MIN ) ),
    1112             :     maLbDataBarMaxType( this, ScResId( LB_TYPE_COL_SCALE_MAX ) ),
    1113             :     maEdDataBarMin( this, ScResId( ED_COL_SCALE_MIN ) ),
    1114             :     maEdDataBarMax( this, ScResId( ED_COL_SCALE_MAX ) ),
    1115           0 :     maBtOptions( this, ScResId( BTN_OPTIONS ) )
    1116             : {
    1117           0 :     maLbColorFormat.SelectEntryPos(2);
    1118           0 :     maLbType.SelectEntryPos(0);
    1119           0 :     if(pFormat)
    1120             :     {
    1121           0 :         mpDataBarData.reset(new ScDataBarFormatData(*pFormat->GetDataBarData()));
    1122           0 :         SetDataBarEntryTypes(*mpDataBarData->mpLowerLimit, maLbDataBarMinType, maEdDataBarMin, pDoc);
    1123           0 :         SetDataBarEntryTypes(*mpDataBarData->mpUpperLimit, maLbDataBarMaxType, maEdDataBarMax, pDoc);
    1124           0 :         DataBarTypeSelectHdl(NULL);
    1125             :     }
    1126             :     else
    1127             :     {
    1128           0 :         maLbDataBarMinType.SelectEntryPos(0);
    1129           0 :         maLbDataBarMaxType.SelectEntryPos(0);
    1130           0 :         DataBarTypeSelectHdl(NULL);
    1131             :     }
    1132           0 :     Init();
    1133             : 
    1134           0 :     maLbColorFormat.SetSelectHdl( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) );
    1135             : 
    1136           0 :     FreeResource();
    1137           0 : }
    1138             : 
    1139           0 : ScFormatEntry* ScDataBarFrmtEntry::GetEntry() const
    1140             : {
    1141           0 :     return createDatabarEntry();
    1142             : }
    1143             : 
    1144           0 : void ScDataBarFrmtEntry::Init()
    1145             : {
    1146           0 :     maLbDataBarMinType.SetSelectHdl( LINK( this, ScDataBarFrmtEntry, DataBarTypeSelectHdl ) );
    1147           0 :     maLbDataBarMaxType.SetSelectHdl( LINK( this, ScDataBarFrmtEntry, DataBarTypeSelectHdl ) );
    1148             : 
    1149           0 :     maBtOptions.SetClickHdl( LINK( this, ScDataBarFrmtEntry, OptionBtnHdl ) );
    1150             : 
    1151           0 :     if(!mpDataBarData)
    1152             :     {
    1153           0 :         mpDataBarData.reset(new ScDataBarFormatData());
    1154           0 :         mpDataBarData->mpUpperLimit.reset(new ScColorScaleEntry());
    1155           0 :         mpDataBarData->mpLowerLimit.reset(new ScColorScaleEntry());
    1156           0 :         mpDataBarData->mpLowerLimit->SetType(COLORSCALE_AUTO);
    1157           0 :         mpDataBarData->mpUpperLimit->SetType(COLORSCALE_AUTO);
    1158           0 :         mpDataBarData->maPositiveColor = COL_LIGHTBLUE;
    1159             :     }
    1160           0 : }
    1161             : 
    1162           0 : ScFormatEntry* ScDataBarFrmtEntry::createDatabarEntry() const
    1163             : {
    1164           0 :     SetColorScaleEntry(mpDataBarData->mpLowerLimit.get(), maLbDataBarMinType, maEdDataBarMin, mpDoc, maPos, true);
    1165           0 :     SetColorScaleEntry(mpDataBarData->mpUpperLimit.get(), maLbDataBarMaxType, maEdDataBarMax, mpDoc, maPos, true);
    1166           0 :     ScDataBarFormat* pDataBar = new ScDataBarFormat(mpDoc);
    1167           0 :     pDataBar->SetDataBarData(new ScDataBarFormatData(*mpDataBarData.get()));
    1168           0 :     return pDataBar;
    1169             : }
    1170             : 
    1171           0 : OUString ScDataBarFrmtEntry::GetExpressionString()
    1172             : {
    1173           0 :     return ScCondFormatHelper::GetExpression( DATABAR, 0 );
    1174             : }
    1175             : 
    1176           0 : void ScDataBarFrmtEntry::SetActive()
    1177             : {
    1178           0 :     maLbColorFormat.Show();
    1179             : 
    1180           0 :     maLbDataBarMinType.Show();
    1181           0 :     maLbDataBarMaxType.Show();
    1182           0 :     maEdDataBarMin.Show();
    1183           0 :     maEdDataBarMax.Show();
    1184           0 :     maBtOptions.Show();
    1185             : 
    1186           0 :     Select();
    1187           0 : }
    1188             : 
    1189           0 : void ScDataBarFrmtEntry::SetInactive()
    1190             : {
    1191           0 :     maLbColorFormat.Hide();
    1192             : 
    1193           0 :     maLbDataBarMinType.Hide();
    1194           0 :     maLbDataBarMaxType.Hide();
    1195           0 :     maEdDataBarMin.Hide();
    1196           0 :     maEdDataBarMax.Hide();
    1197           0 :     maBtOptions.Hide();
    1198             : 
    1199           0 :     Deselect();
    1200           0 : }
    1201             : 
    1202           0 : IMPL_LINK_NOARG( ScDataBarFrmtEntry, DataBarTypeSelectHdl )
    1203             : {
    1204           0 :     sal_Int32 nSelectPos = maLbDataBarMinType.GetSelectEntryPos();
    1205           0 :     if(nSelectPos <= COLORSCALE_MAX)
    1206           0 :         maEdDataBarMin.Disable();
    1207             :     else
    1208           0 :         maEdDataBarMin.Enable();
    1209             : 
    1210           0 :     nSelectPos = maLbDataBarMaxType.GetSelectEntryPos();
    1211           0 :     if(nSelectPos <= COLORSCALE_MAX)
    1212           0 :         maEdDataBarMax.Disable();
    1213             :     else
    1214           0 :         maEdDataBarMax.Enable();
    1215             : 
    1216           0 :     return 0;
    1217             : }
    1218             : 
    1219           0 : IMPL_LINK_NOARG( ScDataBarFrmtEntry, OptionBtnHdl )
    1220             : {
    1221           0 :     SetColorScaleEntry(mpDataBarData->mpLowerLimit.get(), maLbDataBarMinType, maEdDataBarMin, mpDoc, maPos, true);
    1222           0 :     SetColorScaleEntry(mpDataBarData->mpUpperLimit.get(), maLbDataBarMaxType, maEdDataBarMax, mpDoc, maPos, true);
    1223           0 :     ScDataBarSettingsDlg* pDlg = new ScDataBarSettingsDlg(this, *mpDataBarData, mpDoc, maPos);
    1224           0 :     if( pDlg->Execute() == RET_OK)
    1225             :     {
    1226           0 :         mpDataBarData.reset(pDlg->GetData());
    1227           0 :         SetDataBarEntryTypes(*mpDataBarData->mpLowerLimit, maLbDataBarMinType, maEdDataBarMin, mpDoc);
    1228           0 :         SetDataBarEntryTypes(*mpDataBarData->mpUpperLimit, maLbDataBarMaxType, maEdDataBarMax, mpDoc);
    1229           0 :         DataBarTypeSelectHdl(NULL);
    1230             :     }
    1231           0 :     return 0;
    1232             : }
    1233             : 
    1234           0 : ScDateFrmtEntry::ScDateFrmtEntry( vcl::Window* pParent, ScDocument* pDoc, const ScCondDateFormatEntry* pFormat ):
    1235             :     ScCondFrmtEntry( pParent, pDoc, ScAddress() ),
    1236             :     maLbDateEntry( this, ScResId( LB_DATE_TYPE ) ),
    1237             :     maFtStyle( this, ScResId( FT_STYLE ) ),
    1238             :     maLbStyle( this, ScResId( LB_STYLE ) ),
    1239             :     maWdPreview( this, ScResId( WD_PREVIEW ) ),
    1240           0 :     mbIsInStyleCreate(false)
    1241             : {
    1242           0 :     Init();
    1243           0 :     FreeResource();
    1244             : 
    1245           0 :     StartListening(*pDoc->GetStyleSheetPool(), true);
    1246             : 
    1247           0 :     if(pFormat)
    1248             :     {
    1249           0 :         sal_Int32 nPos = static_cast<sal_Int32>(pFormat->GetDateType());
    1250           0 :         maLbDateEntry.SelectEntryPos(nPos);
    1251             : 
    1252           0 :         OUString aStyleName = pFormat->GetStyleName();
    1253           0 :         maLbStyle.SelectEntry(aStyleName);
    1254             :     }
    1255             : 
    1256           0 :     StyleSelectHdl(NULL);
    1257           0 : }
    1258             : 
    1259           0 : void ScDateFrmtEntry::Init()
    1260             : {
    1261           0 :     maLbDateEntry.SelectEntryPos(0);
    1262           0 :     maLbType.SelectEntryPos(3);
    1263             : 
    1264           0 :     FillStyleListBox( mpDoc, maLbStyle );
    1265           0 :     maLbStyle.SetSelectHdl( LINK( this, ScDateFrmtEntry, StyleSelectHdl ) );
    1266           0 :     maLbStyle.SelectEntryPos(1);
    1267           0 : }
    1268             : 
    1269           0 : void ScDateFrmtEntry::SetActive()
    1270             : {
    1271           0 :     maLbDateEntry.Show();
    1272           0 :     maFtStyle.Show();
    1273           0 :     maWdPreview.Show();
    1274           0 :     maLbStyle.Show();
    1275             : 
    1276           0 :     Select();
    1277           0 : }
    1278             : 
    1279           0 : void ScDateFrmtEntry::SetInactive()
    1280             : {
    1281           0 :     maLbDateEntry.Hide();
    1282           0 :     maFtStyle.Hide();
    1283           0 :     maWdPreview.Hide();
    1284           0 :     maLbStyle.Hide();
    1285             : 
    1286           0 :     Deselect();
    1287           0 : }
    1288             : 
    1289           0 : void ScDateFrmtEntry::Notify( SfxBroadcaster&, const SfxHint& rHint )
    1290             : {
    1291           0 :     const SfxStyleSheetHint* pHint = dynamic_cast<const SfxStyleSheetHint*>(&rHint);
    1292           0 :     if(!pHint)
    1293           0 :         return;
    1294             : 
    1295           0 :     sal_uInt16 nHint = pHint->GetHint();
    1296           0 :     if(nHint == SFX_STYLESHEET_MODIFIED)
    1297             :     {
    1298           0 :         if(!mbIsInStyleCreate)
    1299           0 :             UpdateStyleList(maLbStyle, mpDoc);
    1300             :     }
    1301             : }
    1302             : 
    1303           0 : ScFormatEntry* ScDateFrmtEntry::GetEntry() const
    1304             : {
    1305           0 :     ScCondDateFormatEntry* pNewEntry = new ScCondDateFormatEntry(mpDoc);
    1306           0 :     condformat::ScCondFormatDateType eType = static_cast<condformat::ScCondFormatDateType>(maLbDateEntry.GetSelectEntryPos());
    1307           0 :     pNewEntry->SetDateType(eType);
    1308           0 :     pNewEntry->SetStyleName(maLbStyle.GetSelectEntry());
    1309           0 :     return pNewEntry;
    1310             : }
    1311             : 
    1312           0 : OUString ScDateFrmtEntry::GetExpressionString()
    1313             : {
    1314           0 :     return ScCondFormatHelper::GetExpression(DATE, 0);
    1315             : }
    1316             : 
    1317           0 : IMPL_LINK_NOARG( ScDateFrmtEntry, StyleSelectHdl )
    1318             : {
    1319           0 :     mbIsInStyleCreate = true;
    1320           0 :     StyleSelect( maLbStyle, mpDoc, maWdPreview );
    1321           0 :     mbIsInStyleCreate = false;
    1322             : 
    1323           0 :     return 0;
    1324             : }
    1325             : 
    1326           0 : class ScIconSetFrmtDataEntry : public Control
    1327             : {
    1328             :     private:
    1329             :         FixedImage maImgIcon;
    1330             :         FixedText maFtEntry;
    1331             :         Edit maEdEntry;
    1332             :         ListBox maLbEntryType;
    1333             : 
    1334             :     public:
    1335             :         ScIconSetFrmtDataEntry( vcl::Window* pParent, ScIconSetType eType, ScDocument* pDoc,
    1336             :                 sal_Int32 i, const ScColorScaleEntry* pEntry = NULL );
    1337             : 
    1338             :         ScColorScaleEntry* CreateEntry(ScDocument* pDoc, const ScAddress& rPos) const;
    1339             : 
    1340             :         void SetFirstEntry();
    1341             : };
    1342             : 
    1343           0 : ScIconSetFrmtDataEntry::ScIconSetFrmtDataEntry( vcl::Window* pParent, ScIconSetType eType, ScDocument* pDoc, sal_Int32 i, const ScColorScaleEntry* pEntry ):
    1344             :     Control( pParent, ScResId( RID_ICON_SET_ENTRY ) ),
    1345             :     maImgIcon( this, ScResId( IMG_ICON ) ),
    1346             :     maFtEntry( this, ScResId( FT_ICON_SET_ENTRY_TEXT ) ),
    1347             :     maEdEntry( this, ScResId( ED_ICON_SET_ENTRY_VALUE ) ),
    1348           0 :     maLbEntryType( this, ScResId( LB_ICON_SET_ENTRY_TYPE ) )
    1349             : {
    1350           0 :     maImgIcon.SetImage(Image(ScIconSetFormat::getBitmap(eType, i)));
    1351           0 :     if(pEntry)
    1352             :     {
    1353           0 :         switch(pEntry->GetType())
    1354             :         {
    1355             :             case COLORSCALE_VALUE:
    1356           0 :                 maLbEntryType.SelectEntryPos(0);
    1357           0 :                 maEdEntry.SetText(convertNumberToString(pEntry->GetValue(), pDoc));
    1358           0 :                 break;
    1359             :             case COLORSCALE_PERCENTILE:
    1360           0 :                 maLbEntryType.SelectEntryPos(2);
    1361           0 :                 maEdEntry.SetText(convertNumberToString(pEntry->GetValue(), pDoc));
    1362           0 :                 break;
    1363             :             case COLORSCALE_PERCENT:
    1364           0 :                 maLbEntryType.SelectEntryPos(1);
    1365           0 :                 maEdEntry.SetText(convertNumberToString(pEntry->GetValue(), pDoc));
    1366           0 :                 break;
    1367             :             case COLORSCALE_FORMULA:
    1368           0 :                 maLbEntryType.SelectEntryPos(3);
    1369           0 :                 maEdEntry.SetText(pEntry->GetFormula(formula::FormulaGrammar::GRAM_DEFAULT));
    1370           0 :                 break;
    1371             :             default:
    1372             :                 assert(false);
    1373             :         }
    1374             :     }
    1375             :     else
    1376             :     {
    1377           0 :         maLbEntryType.SelectEntryPos(1);
    1378             :     }
    1379           0 :     FreeResource();
    1380           0 : }
    1381             : 
    1382           0 : ScColorScaleEntry* ScIconSetFrmtDataEntry::CreateEntry(ScDocument* pDoc, const ScAddress& rPos) const
    1383             : {
    1384           0 :     sal_Int32 nPos = maLbEntryType.GetSelectEntryPos();
    1385           0 :     OUString aText = maEdEntry.GetText();
    1386           0 :     ScColorScaleEntry* pEntry = new ScColorScaleEntry();
    1387             : 
    1388           0 :     sal_uInt32 nIndex = 0;
    1389           0 :     double nVal = 0;
    1390           0 :     SvNumberFormatter* pNumberFormatter = pDoc->GetFormatTable();
    1391           0 :     (void)pNumberFormatter->IsNumberFormat(aText, nIndex, nVal);
    1392           0 :     pEntry->SetValue(nVal);
    1393             : 
    1394           0 :     switch(nPos)
    1395             :     {
    1396             :         case 0:
    1397           0 :             pEntry->SetType(COLORSCALE_VALUE);
    1398           0 :             break;
    1399             :         case 1:
    1400           0 :             pEntry->SetType(COLORSCALE_PERCENT);
    1401           0 :             break;
    1402             :         case 2:
    1403           0 :             pEntry->SetType(COLORSCALE_PERCENTILE);
    1404           0 :             break;
    1405             :         case 3:
    1406           0 :             pEntry->SetType(COLORSCALE_FORMULA);
    1407           0 :             pEntry->SetFormula(aText, pDoc, rPos, pDoc->GetGrammar());
    1408           0 :             break;
    1409             :         default:
    1410             :             assert(false);
    1411             :     }
    1412             : 
    1413           0 :     return pEntry;
    1414             : }
    1415             : 
    1416           0 : void ScIconSetFrmtDataEntry::SetFirstEntry()
    1417             : {
    1418           0 :     maEdEntry.Hide();
    1419           0 :     maLbEntryType.Hide();
    1420           0 :     maFtEntry.Hide();
    1421           0 :     maEdEntry.SetText(OUString("0"));
    1422           0 :     maLbEntryType.SelectEntryPos(1);
    1423           0 : }
    1424             : 
    1425           0 : ScIconSetFrmtEntry::ScIconSetFrmtEntry( vcl::Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScIconSetFormat* pFormat ):
    1426             :         ScCondFrmtEntry( pParent, pDoc, rPos ),
    1427             :         maLbColorFormat( this, ScResId( LB_COLOR_FORMAT ) ),
    1428           0 :         maLbIconSetType( this, ScResId( LB_ICONSET_TYPE ) )
    1429             : {
    1430           0 :     Init();
    1431           0 :     FreeResource();
    1432           0 :     maLbColorFormat.SetSelectHdl( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) );
    1433             : 
    1434           0 :     if(pFormat)
    1435             :     {
    1436           0 :         const ScIconSetFormatData* pIconSetFormatData = pFormat->GetIconSetData();
    1437           0 :         ScIconSetType eType = pIconSetFormatData->eIconSetType;
    1438           0 :         sal_Int32 nType = static_cast<sal_Int32>(eType);
    1439           0 :         maLbIconSetType.SelectEntryPos(nType);
    1440             : 
    1441           0 :         for(size_t i = 0, n = pIconSetFormatData->maEntries.size();
    1442             :                 i < n; ++i)
    1443             :         {
    1444           0 :             maEntries.push_back( new ScIconSetFrmtDataEntry( this, eType, pDoc, i, &pIconSetFormatData->maEntries[i] ) );
    1445           0 :             Point aPos = maEntries[0].GetPosPixel();
    1446           0 :             aPos.Y() += maEntries[0].GetSizePixel().Height() * i * 1.2;
    1447           0 :             maEntries[i].SetPosPixel( aPos );
    1448             :         }
    1449           0 :         maEntries.begin()->SetFirstEntry();
    1450             :     }
    1451             :     else
    1452           0 :         IconSetTypeHdl(NULL);
    1453           0 : }
    1454             : 
    1455           0 : void ScIconSetFrmtEntry::Init()
    1456             : {
    1457           0 :     maLbColorFormat.SelectEntryPos(3);
    1458           0 :     maLbType.SelectEntryPos(0);
    1459           0 :     maLbIconSetType.SelectEntryPos(0);
    1460             : 
    1461           0 :     maLbIconSetType.SetSelectHdl( LINK( this, ScIconSetFrmtEntry, IconSetTypeHdl ) );
    1462           0 : }
    1463             : 
    1464           0 : IMPL_LINK_NOARG( ScIconSetFrmtEntry, IconSetTypeHdl )
    1465             : {
    1466           0 :     ScIconSetMap* pMap = ScIconSetFormat::getIconSetMap();
    1467             : 
    1468           0 :     sal_Int32 nPos = maLbIconSetType.GetSelectEntryPos();
    1469           0 :     sal_uInt32 nElements = pMap[nPos].nElements;
    1470           0 :     maEntries.clear();
    1471             : 
    1472           0 :     for(size_t i = 0; i < nElements; ++i)
    1473             :     {
    1474           0 :         maEntries.push_back( new ScIconSetFrmtDataEntry( this, static_cast<ScIconSetType>(nPos), mpDoc, i ) );
    1475           0 :         Point aPos = maEntries[0].GetPosPixel();
    1476           0 :         aPos.Y() += maEntries[0].GetSizePixel().Height() * i * 1.2;
    1477           0 :         maEntries[i].SetPosPixel( aPos );
    1478           0 :         maEntries[i].Show();
    1479             :     }
    1480           0 :     maEntries.begin()->SetFirstEntry();
    1481             : 
    1482           0 :     SetHeight();
    1483           0 :     static_cast<ScCondFormatList*>(GetParent())->RecalcAll();
    1484             : 
    1485           0 :     return 0;
    1486             : }
    1487             : 
    1488           0 : OUString ScIconSetFrmtEntry::GetExpressionString()
    1489             : {
    1490           0 :     return ScCondFormatHelper::GetExpression(ICONSET, 0);
    1491             : }
    1492             : 
    1493           0 : void ScIconSetFrmtEntry::SetActive()
    1494             : {
    1495           0 :     maLbColorFormat.Show();
    1496           0 :     maLbIconSetType.Show();
    1497           0 :     for(ScIconSetFrmtDataEntriesType::iterator itr = maEntries.begin(),
    1498           0 :             itrEnd = maEntries.end(); itr != itrEnd; ++itr)
    1499             :     {
    1500           0 :         itr->Show();
    1501             :     }
    1502             : 
    1503           0 :     Select();
    1504           0 : }
    1505             : 
    1506           0 : void ScIconSetFrmtEntry::SetInactive()
    1507             : {
    1508           0 :     maLbColorFormat.Hide();
    1509           0 :     maLbIconSetType.Hide();
    1510           0 :     for(ScIconSetFrmtDataEntriesType::iterator itr = maEntries.begin(),
    1511           0 :             itrEnd = maEntries.end(); itr != itrEnd; ++itr)
    1512             :     {
    1513           0 :         itr->Hide();
    1514             :     }
    1515             : 
    1516           0 :     Deselect();
    1517           0 : }
    1518             : 
    1519           0 : ScFormatEntry* ScIconSetFrmtEntry::GetEntry() const
    1520             : {
    1521           0 :     ScIconSetFormat* pFormat = new ScIconSetFormat(mpDoc);
    1522             : 
    1523           0 :     ScIconSetFormatData* pData = new ScIconSetFormatData;
    1524           0 :     pData->eIconSetType = static_cast<ScIconSetType>(maLbIconSetType.GetSelectEntryPos());
    1525           0 :     for(ScIconSetFrmtDataEntriesType::const_iterator itr = maEntries.begin(),
    1526           0 :             itrEnd = maEntries.end(); itr != itrEnd; ++itr)
    1527             :     {
    1528           0 :         pData->maEntries.push_back(itr->CreateEntry(mpDoc, maPos));
    1529             :     }
    1530           0 :     pFormat->SetIconSetData(pData);
    1531             : 
    1532           0 :     return pFormat;
    1533         228 : }
    1534             : 
    1535             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10