diff options
Diffstat (limited to 'sc/source/ui/condformat/colorformat.cxx')
-rw-r--r-- | sc/source/ui/condformat/colorformat.cxx | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/sc/source/ui/condformat/colorformat.cxx b/sc/source/ui/condformat/colorformat.cxx new file mode 100644 index 000000000000..f0cba520d8f8 --- /dev/null +++ b/sc/source/ui/condformat/colorformat.cxx @@ -0,0 +1,143 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License or as specified alternatively below. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * Major Contributor(s): + * Copyright (C) 2012 Markus Mohrhard <markus.mohrhard@googlemail.com> (initial developer) + * + * All Rights Reserved. + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#include "colorformat.hxx" + +#include "colorformat.hrc" + +#include <svx/xtable.hxx> +#include <svx/drawitem.hxx> + +ScDataBarSettingsDlg::ScDataBarSettingsDlg(Window* pWindow): + ModalDialog( pWindow, ScResId( RID_SCDLG_DATABAR ) ), + maBtnOk( this, ScResId( BTN_OK ) ), + maBtnCancel( this, ScResId( BTN_CANCEL ) ), + maFlBarColors( this, ScResId( FL_BAR_COLORS ) ), + maFlAxes( this, ScResId( FL_AXIS ) ), + maFlValues( this, ScResId( FL_VALUES ) ), + maFtMin( this, ScResId( FT_MINIMUM ) ), + maFtMax( this, ScResId( FT_MAXIMUM ) ), + maFtPositive( this, ScResId( FT_POSITIVE ) ), + maFtNegative( this, ScResId( FT_NEGATIVE ) ), + maFtPosition( this, ScResId( FT_POSITION ) ), + maFtAxisColor( this, ScResId( FT_COLOR_AXIS ) ), + maLbPos( this, ScResId( LB_POS ) ), + maLbNeg( this, ScResId( LB_NEG ) ), + maLbAxisCol( this, ScResId( LB_COL_AXIS ) ), + maLbTypeMin( this, ScResId( LB_TYPE ) ), + maLbTypeMax( this, ScResId( LB_TYPE ) ), + maLbAxisPos( this, ScResId( LB_AXIS_POSITION ) ), + maEdMin( this, ScResId( ED_MIN ) ), + maEdMax( this, ScResId( ED_MAX ) ) +{ + SfxObjectShell* pDocSh = SfxObjectShell::Current(); + const SfxPoolItem* pItem = NULL; + XColorListRef pColorTable; + + DBG_ASSERT( pDocSh, "DocShell not found!" ); + + if ( pDocSh ) + { + pItem = pDocSh->GetItem( SID_COLOR_TABLE ); + if ( pItem != NULL ) + pColorTable = ( (SvxColorListItem*)pItem )->GetColorList(); + } + + DBG_ASSERT( pColorTable.is(), "ColorTable not found!" ); + + if ( pColorTable.is() ) + { + // filling the line color box + maLbPos.SetUpdateMode( false ); + maLbNeg.SetUpdateMode( false ); + maLbAxisCol.SetUpdateMode( false ); + + for ( long i = 0; i < pColorTable->Count(); ++i ) + { + XColorEntry* pEntry = pColorTable->GetColor(i); + maLbPos.InsertEntry( pEntry->GetColor(), pEntry->GetName() ); + maLbNeg.InsertEntry( pEntry->GetColor(), pEntry->GetName() ); + maLbAxisCol.InsertEntry( pEntry->GetColor(), pEntry->GetName() ); + + if(pEntry->GetColor() == Color(COL_LIGHTRED)) + maLbNeg.SelectEntryPos(i); + if(pEntry->GetColor() == Color(COL_BLACK)) + maLbAxisCol.SelectEntryPos(i); + if(pEntry->GetColor() == Color(COL_LIGHTBLUE)) + maLbPos.SelectEntryPos(i); + } + maLbPos.SetUpdateMode( sal_True ); + maLbNeg.SetUpdateMode( sal_True ); + maLbAxisCol.SetUpdateMode( sal_True ); + } + FreeResource(); + + maLbTypeMin.SelectEntryPos(0); + maLbTypeMax.SelectEntryPos(1); + maLbAxisPos.SelectEntryPos(0); + maBtnOk.SetClickHdl( LINK( this, ScDataBarSettingsDlg, OkBtnHdl ) ); + + Point aPoint = maLbTypeMax.GetPosPixel(); + aPoint.Y() += 50; + maLbTypeMax.SetPosPixel(aPoint); +} + +IMPL_LINK_NOARG( ScDataBarSettingsDlg, OkBtnHdl ) +{ + //check that min < max + bool bWarn = false; + if(maLbTypeMin.GetSelectEntryPos() == 1) + bWarn = true; + if(maLbTypeMax.GetSelectEntryPos() == 0) + bWarn = true; + + if(!bWarn && maLbTypeMin.GetSelectEntryPos() == maLbTypeMax.GetSelectEntryPos()) + { + if(maLbTypeMax.GetSelectEntryPos() != 5) + { + rtl::OUString aMinString = maEdMin.GetText(); + rtl::OUString aMaxString = maEdMax.GetText(); + double nMinValue = rtl::math::stringToDouble(aMinString, '.', ','); + double nMaxValue = rtl::math::stringToDouble(aMaxString, '.', ','); + if(rtl::math::approxEqual(nMinValue, nMaxValue) || nMinValue > nMaxValue) + bWarn = true; + } + } + + if(bWarn) + { + //show warning message and don't close + } + else + { + Close(); + } + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |