LCOV - code coverage report
Current view: top level - libreoffice/sc/source/ui/miscdlgs - filldlg.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 144 0.0 %
Date: 2012-12-27 Functions: 0 12 0.0 %
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             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : 
      21             : #undef SC_DLLIMPLEMENTATION
      22             : 
      23             : 
      24             : 
      25             : //----------------------------------------------------------------------------
      26             : 
      27             : #include <svl/zforlist.hxx>
      28             : #include <vcl/msgbox.hxx>
      29             : #include <limits.h>
      30             : 
      31             : #include "scresid.hxx"
      32             : #include "document.hxx"
      33             : #include "miscdlgs.hrc"
      34             : 
      35             : #define _FILLDLG_CXX
      36             : #include "filldlg.hxx"
      37             : #undef _FILLDLG_CXX
      38             : 
      39             : 
      40             : 
      41             : //============================================================================
      42             : // class ScFillSeriesDlg
      43             : 
      44             : //----------------------------------------------------------------------------
      45             : 
      46           0 : ScFillSeriesDlg::ScFillSeriesDlg( Window*       pParent,
      47             :                                   ScDocument&   rDocument,
      48             :                                   FillDir       eFillDir,
      49             :                                   FillCmd       eFillCmd,
      50             :                                   FillDateCmd   eFillDateCmd,
      51             :                                   const rtl::OUString& aStartStr,
      52             :                                   double        fStep,
      53             :                                   double        fMax,
      54             :                                   sal_uInt16        nPossDir )
      55             : 
      56             :     :   ModalDialog     ( pParent, ScResId( RID_SCDLG_FILLSERIES ) ),
      57             : 
      58             :         aFtStartVal     ( this, ScResId( FT_START_VALUE ) ),
      59             :         aEdStartVal     ( this, ScResId( ED_START_VALUES ) ),
      60             :         aStartStrVal    ( aStartStr),
      61             : 
      62             :         aFtEndVal       ( this, ScResId( FT_END_VALUE ) ),
      63             :         aEdEndVal       ( this, ScResId( ED_END_VALUES ) ),
      64             : 
      65             :         aFtIncrement    ( this, ScResId( FT_INCREMENT ) ),
      66             :         aEdIncrement    ( this, ScResId( ED_INCREMENT ) ),
      67             : 
      68             :         aFlDirection    ( this, ScResId( FL_DIRECTION ) ),
      69             :         aBtnDown        ( this, ScResId( BTN_BOTTOM ) ),
      70             :         aBtnRight       ( this, ScResId( BTN_RIGHT ) ),
      71             :         aBtnUp          ( this, ScResId( BTN_TOP ) ),
      72             :         aBtnLeft        ( this, ScResId( BTN_LEFT ) ),
      73             :         aFlSep1         ( this, ScResId( FL_SEP1 ) ),
      74             :         aFlType         ( this, ScResId( FL_TYPE ) ),
      75             :         aBtnArithmetic  ( this, ScResId( BTN_ARITHMETIC ) ),
      76             :         aBtnGeometric   ( this, ScResId( BTN_GEOMETRIC ) ),
      77             :         aBtnDate        ( this, ScResId( BTN_DATE ) ),
      78             :         aBtnAutoFill    ( this, ScResId( BTN_AUTOFILL ) ),
      79             :         aFlSep2         ( this, ScResId( FL_SEP2 ) ),
      80             :         aFlTimeUnit     ( this, ScResId( FL_TIME_UNIT ) ),
      81             :         aBtnDay         ( this, ScResId( BTN_DAY ) ),
      82             :         aBtnDayOfWeek   ( this, ScResId( BTN_DAY_OF_WEEK ) ),
      83             :         aBtnMonth       ( this, ScResId( BTN_MONTH ) ),
      84             :         aBtnYear        ( this, ScResId( BTN_YEAR ) ),
      85             : 
      86             :         aBtnOk          ( this, ScResId( BTN_OK ) ),
      87             :         aBtnCancel      ( this, ScResId( BTN_CANCEL ) ),
      88             :         aBtnHelp        ( this, ScResId( BTN_HELP ) ),
      89             :         aErrMsgInvalidVal( SC_RESSTR(STR_VALERR) ),
      90             :         rDoc            ( rDocument ),
      91             :         theFillDir      ( eFillDir ),
      92             :         theFillCmd      ( eFillCmd ),
      93             :         theFillDateCmd  ( eFillDateCmd ),
      94             :         fIncrement      ( fStep ),
      95           0 :         fEndVal         ( fMax )
      96             : {
      97           0 :     Init( nPossDir );
      98           0 :     FreeResource();
      99           0 : }
     100             : 
     101             : 
     102             : //----------------------------------------------------------------------------
     103             : 
     104           0 : ScFillSeriesDlg::~ScFillSeriesDlg()
     105             : {
     106           0 : }
     107             : 
     108             : //----------------------------------------------------------------------------
     109             : 
     110           0 : void ScFillSeriesDlg::SetEdStartValEnabled(bool bFlag)
     111             : {
     112           0 :     bStartValFlag=bFlag;
     113           0 :     if(bFlag)
     114             :     {
     115           0 :        aFtStartVal.Enable();
     116           0 :        aEdStartVal.Enable();
     117             :     }
     118             :     else
     119             :     {
     120           0 :        aFtStartVal.Disable();
     121           0 :        aEdStartVal.Disable();
     122             :     }
     123           0 : }
     124             : 
     125             : //----------------------------------------------------------------------------
     126             : 
     127           0 : void ScFillSeriesDlg::Init( sal_uInt16 nPossDir )
     128             : {
     129           0 :     aBtnOk.SetClickHdl         ( LINK( this, ScFillSeriesDlg, OKHdl ) );
     130           0 :     aBtnArithmetic.SetClickHdl ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     131           0 :     aBtnGeometric.SetClickHdl  ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     132           0 :     aBtnDate.SetClickHdl       ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     133           0 :     aBtnAutoFill.SetClickHdl   ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     134             : 
     135           0 :     if( nPossDir == FDS_OPT_NONE )
     136             :     {
     137           0 :         aBtnLeft.Disable();
     138           0 :         aBtnRight.Disable();
     139           0 :         aBtnDown.Disable();
     140           0 :         aBtnUp.Disable();
     141             :     }
     142             : 
     143           0 :     if( nPossDir == FDS_OPT_HORZ )
     144             :     {
     145           0 :         aBtnDown.Disable();
     146           0 :         aBtnUp.Disable();
     147             :     }
     148             : 
     149           0 :     if( nPossDir == FDS_OPT_VERT )
     150             :     {
     151           0 :         aBtnLeft.Disable();
     152           0 :         aBtnRight.Disable();
     153             :     }
     154             : 
     155           0 :     switch ( theFillDir )
     156             :     {
     157           0 :         case FILL_TO_LEFT:      aBtnLeft.Check();   break;
     158           0 :         case FILL_TO_RIGHT:     aBtnRight.Check();  break;
     159           0 :         case FILL_TO_BOTTOM:    aBtnDown.Check();   break;
     160           0 :         case FILL_TO_TOP:       aBtnUp.Check();     break;
     161             :         default:
     162           0 :         break;
     163             :     }
     164             : 
     165           0 :     switch ( theFillCmd )
     166             :     {
     167             :         case FILL_LINEAR:
     168           0 :             aBtnArithmetic.Check();
     169           0 :             DisableHdl( &aBtnArithmetic );
     170           0 :             break;
     171             :         case FILL_GROWTH:
     172           0 :             aBtnGeometric.Check();
     173           0 :             DisableHdl( &aBtnGeometric );
     174           0 :             break;
     175             :         case FILL_DATE:
     176           0 :             aBtnDate.Check();
     177           0 :             DisableHdl( &aBtnDate );
     178           0 :             break;
     179             :         case FILL_AUTO:
     180           0 :             aBtnAutoFill.Check();
     181           0 :             DisableHdl( &aBtnAutoFill );
     182           0 :             break;
     183             :         default:
     184           0 :         break;
     185             :     }
     186             : 
     187           0 :     switch ( theFillDateCmd )
     188             :     {
     189           0 :         case FILL_DAY:          aBtnDay.Check();        break;
     190           0 :         case FILL_WEEKDAY:      aBtnDayOfWeek.Check();  break;
     191           0 :         case FILL_MONTH:        aBtnMonth.Check();      break;
     192           0 :         case FILL_YEAR:         aBtnYear.Check();       break;
     193             :         default:
     194           0 :         break;
     195             :     }
     196             : 
     197           0 :     fStartVal = MAXDOUBLE;
     198             : 
     199           0 :     aEdStartVal.SetText( aStartStrVal);
     200             : 
     201           0 :     String aIncrTxt;
     202           0 :     rDoc.GetFormatTable()->GetInputLineString( fIncrement, 0, aIncrTxt );
     203           0 :     aEdIncrement.SetText( aIncrTxt );
     204             : 
     205           0 :     String aEndTxt;
     206           0 :     if ( fEndVal != MAXDOUBLE )
     207           0 :         rDoc.GetFormatTable()->GetInputLineString( fEndVal, 0, aEndTxt );
     208           0 :     aEdEndVal.SetText( aEndTxt );
     209             : 
     210           0 :     bStartValFlag = false;
     211             : 
     212           0 :     aFlSep1.SetStyle( aFlSep1.GetStyle() | WB_VERT );
     213           0 :     aFlSep2.SetStyle( aFlSep2.GetStyle() | WB_VERT );
     214           0 : }
     215             : 
     216             : 
     217             : //----------------------------------------------------------------------------
     218             : 
     219           0 : bool ScFillSeriesDlg::CheckStartVal()
     220             : {
     221           0 :     bool bValOk = false;
     222           0 :     rtl::OUString aStr = aEdStartVal.GetText();
     223             : 
     224           0 :     if ( aStr.isEmpty() || aBtnAutoFill.IsChecked())
     225             :     {
     226           0 :         fStartVal = MAXDOUBLE;
     227           0 :         bValOk = true;
     228             :     }
     229             :     else
     230             :     {
     231           0 :         sal_uInt32 nKey = 0;
     232           0 :         bValOk = rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fStartVal );
     233             :     }
     234           0 :     return bValOk;
     235             : }
     236             : 
     237             : 
     238             : //----------------------------------------------------------------------------
     239             : 
     240           0 : bool ScFillSeriesDlg::CheckIncrementVal()
     241             : {
     242           0 :     sal_uInt32 nKey = 0;
     243           0 :     rtl::OUString aStr = aEdIncrement.GetText();
     244             : 
     245           0 :     return rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fIncrement );
     246             : }
     247             : 
     248             : 
     249             : //----------------------------------------------------------------------------
     250             : 
     251           0 : bool ScFillSeriesDlg::CheckEndVal()
     252             : {
     253           0 :     bool bValOk = false;
     254           0 :     rtl::OUString aStr = aEdEndVal.GetText();
     255             : 
     256           0 :     if (aStr.isEmpty())
     257             :     {
     258           0 :         fEndVal = (fIncrement < 0) ? -MAXDOUBLE : MAXDOUBLE;
     259           0 :         bValOk  = true;
     260             :     }
     261             :     else
     262             :     {
     263           0 :         sal_uInt32 nKey = 0;
     264           0 :         bValOk = rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fEndVal );
     265             :     }
     266           0 :     return bValOk;
     267             : }
     268             : 
     269             : 
     270             : //----------------------------------------------------------------------------
     271             : // Handler:
     272             : //----------------------------------------------------------------------------
     273             : 
     274           0 : IMPL_LINK( ScFillSeriesDlg, DisableHdl, Button *, pBtn )
     275             : {
     276           0 :     if ( pBtn == &aBtnDate )
     277             :     {
     278           0 :         aBtnDay.Enable();
     279           0 :         aBtnDayOfWeek.Enable();
     280           0 :         aBtnMonth.Enable();
     281           0 :         aBtnYear.Enable();
     282           0 :         aFlTimeUnit.Enable();
     283             :     }
     284             :     else
     285             :     {
     286           0 :         aBtnDay.Disable();
     287           0 :         aBtnDayOfWeek.Disable();
     288           0 :         aBtnMonth.Disable();
     289           0 :         aBtnYear.Disable();
     290           0 :         aFlTimeUnit.Disable();
     291             :     }
     292             : 
     293           0 :     if ( pBtn != &aBtnAutoFill )
     294             :     {
     295           0 :         aFtIncrement.Enable();
     296           0 :         aEdIncrement.Enable();
     297           0 :         aFtEndVal.Enable();
     298           0 :         aEdEndVal.Enable();
     299             :     }
     300             :     else
     301             :     {
     302           0 :         aFtIncrement.Disable();
     303           0 :         aEdIncrement.Disable();
     304           0 :         aFtEndVal.Disable();
     305           0 :         aEdEndVal.Disable();
     306             :     }
     307           0 :     return 0;
     308             : }
     309             : 
     310             : 
     311             : //----------------------------------------------------------------------------
     312             : 
     313           0 : IMPL_LINK_NOARG(ScFillSeriesDlg, OKHdl)
     314             : {
     315           0 :     if ( aBtnLeft.IsChecked() )             theFillDir = FILL_TO_LEFT;
     316           0 :     else if ( aBtnRight.IsChecked() )       theFillDir = FILL_TO_RIGHT;
     317           0 :     else if ( aBtnDown.IsChecked() )        theFillDir = FILL_TO_BOTTOM;
     318           0 :     else if ( aBtnUp.IsChecked() )          theFillDir = FILL_TO_TOP;
     319             : 
     320           0 :     if ( aBtnArithmetic.IsChecked() )       theFillCmd = FILL_LINEAR;
     321           0 :     else if ( aBtnGeometric.IsChecked() )   theFillCmd = FILL_GROWTH;
     322           0 :     else if ( aBtnDate.IsChecked() )        theFillCmd = FILL_DATE;
     323           0 :     else if ( aBtnAutoFill.IsChecked() )    theFillCmd = FILL_AUTO;
     324             : 
     325           0 :     if ( aBtnDay.IsChecked() )              theFillDateCmd = FILL_DAY;
     326           0 :     else if ( aBtnDayOfWeek.IsChecked() )   theFillDateCmd = FILL_WEEKDAY;
     327           0 :     else if ( aBtnMonth.IsChecked() )       theFillDateCmd = FILL_MONTH;
     328           0 :     else if ( aBtnYear.IsChecked() )        theFillDateCmd = FILL_YEAR;
     329             : 
     330           0 :     sal_Bool  bAllOk = true;
     331           0 :     Edit* pEdWrong = NULL;
     332           0 :     if ( !CheckStartVal() )
     333             :     {
     334           0 :         bAllOk = false;
     335           0 :         pEdWrong = &aEdStartVal;
     336             :     }
     337           0 :     else if ( !CheckIncrementVal() )
     338             :     {
     339           0 :         bAllOk = false;
     340           0 :         pEdWrong = &aEdIncrement;
     341             :     }
     342           0 :     else if ( !CheckEndVal() )
     343             :     {
     344           0 :         bAllOk = false;
     345           0 :         pEdWrong = &aEdEndVal;
     346             :     }
     347           0 :     if ( bAllOk )
     348           0 :         EndDialog( RET_OK );
     349             :     else
     350             :     {
     351             :         ErrorBox( this,
     352             :                   WinBits( WB_OK | WB_DEF_OK ),
     353             :                   aErrMsgInvalidVal
     354           0 :                 ).Execute();
     355           0 :         pEdWrong->GrabFocus();
     356             :     }
     357             : 
     358           0 :     return 0;
     359             : }
     360             : 
     361             : 
     362             : 
     363             : 
     364             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10