LCOV - code coverage report
Current view: top level - sc/source/ui/miscdlgs - filldlg.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 161 0.0 %
Date: 2014-04-14 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             : #include <svl/zforlist.hxx>
      26             : #include <vcl/msgbox.hxx>
      27             : #include <limits.h>
      28             : 
      29             : #include "scresid.hxx"
      30             : #include "document.hxx"
      31             : #include "globstr.hrc"
      32             : #include "miscdlgs.hrc"
      33             : 
      34             : #define _FILLDLG_CXX
      35             : #include "filldlg.hxx"
      36             : #undef _FILLDLG_CXX
      37             : 
      38             : 
      39             : // class ScFillSeriesDlg
      40             : 
      41           0 : ScFillSeriesDlg::ScFillSeriesDlg( Window*       pParent,
      42             :                                   ScDocument&   rDocument,
      43             :                                   FillDir       eFillDir,
      44             :                                   FillCmd       eFillCmd,
      45             :                                   FillDateCmd   eFillDateCmd,
      46             :                                   const OUString& aStartStr,
      47             :                                   double        fStep,
      48             :                                   double        fMax,
      49             :                                   sal_uInt16        nPossDir )
      50             :     : ModalDialog(pParent, "FillSeriesDialog", "modules/scalc/ui/filldlg.ui"),
      51             :         aStartStrVal    ( aStartStr),
      52             :         aErrMsgInvalidVal( SC_RESSTR(SCSTR_VALERR) ),
      53             :         rDoc            ( rDocument ),
      54             :         theFillDir      ( eFillDir ),
      55             :         theFillCmd      ( eFillCmd ),
      56             :         theFillDateCmd  ( eFillDateCmd ),
      57             :         fIncrement      ( fStep ),
      58           0 :         fEndVal         ( fMax )
      59             : {
      60           0 :     get(m_pFtStartVal, "startL");
      61           0 :     get(m_pEdStartVal, "startValue");
      62           0 :     get(m_pFtEndVal, "endL");
      63           0 :     get(m_pEdEndVal, "endValue");
      64           0 :     get(m_pFtIncrement, "incrementL");
      65           0 :     get(m_pEdIncrement, "increment");
      66           0 :     get(m_pBtnDown, "down");
      67           0 :     get(m_pBtnRight, "right");
      68           0 :     get(m_pBtnUp, "up");
      69           0 :     get(m_pBtnLeft, "left");
      70           0 :     get(m_pBtnArithmetic, "linear");
      71           0 :     get(m_pBtnGeometric, "growth");
      72           0 :     get(m_pBtnDate, "date");
      73           0 :     get(m_pBtnAutoFill, "autofill");
      74           0 :     get(m_pFtTimeUnit, "tuL");
      75           0 :     get(m_pBtnDay, "day");
      76           0 :     get(m_pBtnDayOfWeek, "week");
      77           0 :     get(m_pBtnMonth, "month");
      78           0 :     get(m_pBtnYear, "year");
      79           0 :     get(m_pBtnOk, "ok");
      80             : 
      81           0 :     Init( nPossDir );
      82           0 : }
      83             : 
      84             : 
      85           0 : ScFillSeriesDlg::~ScFillSeriesDlg()
      86             : {
      87           0 : }
      88             : 
      89           0 : void ScFillSeriesDlg::SetEdStartValEnabled(bool bFlag)
      90             : {
      91           0 :     bStartValFlag=bFlag;
      92           0 :     if(bFlag)
      93             :     {
      94           0 :        m_pFtStartVal->Enable();
      95           0 :        m_pEdStartVal->Enable();
      96             :     }
      97             :     else
      98             :     {
      99           0 :        m_pFtStartVal->Disable();
     100           0 :        m_pEdStartVal->Disable();
     101             :     }
     102           0 : }
     103             : 
     104           0 : void ScFillSeriesDlg::Init( sal_uInt16 nPossDir )
     105             : {
     106           0 :     m_pBtnOk->SetClickHdl         ( LINK( this, ScFillSeriesDlg, OKHdl ) );
     107           0 :     m_pBtnArithmetic->SetClickHdl ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     108           0 :     m_pBtnGeometric->SetClickHdl  ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     109           0 :     m_pBtnDate->SetClickHdl       ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     110           0 :     m_pBtnAutoFill->SetClickHdl   ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     111             : 
     112           0 :     if( nPossDir == FDS_OPT_NONE )
     113             :     {
     114           0 :         m_pBtnLeft->Disable();
     115           0 :         m_pBtnRight->Disable();
     116           0 :         m_pBtnDown->Disable();
     117           0 :         m_pBtnUp->Disable();
     118             :     }
     119             : 
     120           0 :     if( nPossDir == FDS_OPT_HORZ )
     121             :     {
     122           0 :         m_pBtnDown->Disable();
     123           0 :         m_pBtnUp->Disable();
     124             :     }
     125             : 
     126           0 :     if( nPossDir == FDS_OPT_VERT )
     127             :     {
     128           0 :         m_pBtnLeft->Disable();
     129           0 :         m_pBtnRight->Disable();
     130             :     }
     131             : 
     132           0 :     switch ( theFillDir )
     133             :     {
     134           0 :         case FILL_TO_LEFT:      m_pBtnLeft->Check();   break;
     135           0 :         case FILL_TO_RIGHT:     m_pBtnRight->Check();  break;
     136           0 :         case FILL_TO_BOTTOM:    m_pBtnDown->Check();   break;
     137           0 :         case FILL_TO_TOP:       m_pBtnUp->Check();     break;
     138             :         default:
     139           0 :         break;
     140             :     }
     141             : 
     142           0 :     switch ( theFillCmd )
     143             :     {
     144             :         case FILL_LINEAR:
     145           0 :             m_pBtnArithmetic->Check();
     146           0 :             DisableHdl( m_pBtnArithmetic );
     147           0 :             break;
     148             :         case FILL_GROWTH:
     149           0 :             m_pBtnGeometric->Check();
     150           0 :             DisableHdl( m_pBtnGeometric );
     151           0 :             break;
     152             :         case FILL_DATE:
     153           0 :             m_pBtnDate->Check();
     154           0 :             DisableHdl( m_pBtnDate );
     155           0 :             break;
     156             :         case FILL_AUTO:
     157           0 :             m_pBtnAutoFill->Check();
     158           0 :             DisableHdl( m_pBtnAutoFill );
     159           0 :             break;
     160             :         default:
     161           0 :         break;
     162             :     }
     163             : 
     164           0 :     switch ( theFillDateCmd )
     165             :     {
     166           0 :         case FILL_DAY:          m_pBtnDay->Check();        break;
     167           0 :         case FILL_WEEKDAY:      m_pBtnDayOfWeek->Check();  break;
     168           0 :         case FILL_MONTH:        m_pBtnMonth->Check();      break;
     169           0 :         case FILL_YEAR:         m_pBtnYear->Check();       break;
     170             :         default:
     171           0 :         break;
     172             :     }
     173             : 
     174           0 :     fStartVal = MAXDOUBLE;
     175             : 
     176           0 :     m_pEdStartVal->SetText( aStartStrVal);
     177             : 
     178           0 :     OUString aIncrTxt;
     179           0 :     rDoc.GetFormatTable()->GetInputLineString( fIncrement, 0, aIncrTxt );
     180           0 :     m_pEdIncrement->SetText( aIncrTxt );
     181             : 
     182           0 :     OUString aEndTxt;
     183           0 :     if ( fEndVal != MAXDOUBLE )
     184           0 :         rDoc.GetFormatTable()->GetInputLineString( fEndVal, 0, aEndTxt );
     185           0 :     m_pEdEndVal->SetText( aEndTxt );
     186             : 
     187           0 :     bStartValFlag = false;
     188           0 : }
     189             : 
     190             : 
     191           0 : bool ScFillSeriesDlg::CheckStartVal()
     192             : {
     193           0 :     bool bValOk = false;
     194           0 :     OUString aStr = m_pEdStartVal->GetText();
     195             : 
     196           0 :     if ( aStr.isEmpty() || m_pBtnAutoFill->IsChecked())
     197             :     {
     198           0 :         fStartVal = MAXDOUBLE;
     199           0 :         bValOk = true;
     200             :     }
     201             :     else
     202             :     {
     203           0 :         sal_uInt32 nKey = 0;
     204           0 :         bValOk = rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fStartVal );
     205             :     }
     206           0 :     return bValOk;
     207             : }
     208             : 
     209             : 
     210           0 : bool ScFillSeriesDlg::CheckIncrementVal()
     211             : {
     212           0 :     sal_uInt32 nKey = 0;
     213           0 :     OUString aStr = m_pEdIncrement->GetText();
     214             : 
     215           0 :     return rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fIncrement );
     216             : }
     217             : 
     218             : 
     219           0 : bool ScFillSeriesDlg::CheckEndVal()
     220             : {
     221           0 :     bool bValOk = false;
     222           0 :     OUString aStr = m_pEdEndVal->GetText();
     223             : 
     224           0 :     if (aStr.isEmpty())
     225             :     {
     226           0 :         fEndVal = (fIncrement < 0) ? -MAXDOUBLE : MAXDOUBLE;
     227           0 :         bValOk  = true;
     228             :     }
     229             :     else
     230             :     {
     231           0 :         sal_uInt32 nKey = 0;
     232           0 :         bValOk = rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fEndVal );
     233             :     }
     234           0 :     return bValOk;
     235             : }
     236             : 
     237             : // Handler:
     238             : 
     239             : 
     240           0 : IMPL_LINK( ScFillSeriesDlg, DisableHdl, Button *, pBtn )
     241             : {
     242           0 :     if ( pBtn == m_pBtnDate )
     243             :     {
     244           0 :         m_pBtnDay->Enable();
     245           0 :         m_pBtnDayOfWeek->Enable();
     246           0 :         m_pBtnMonth->Enable();
     247           0 :         m_pBtnYear->Enable();
     248           0 :         m_pFtTimeUnit->Enable();
     249             :     }
     250             :     else
     251             :     {
     252           0 :         m_pBtnDay->Disable();
     253           0 :         m_pBtnDayOfWeek->Disable();
     254           0 :         m_pBtnMonth->Disable();
     255           0 :         m_pBtnYear->Disable();
     256           0 :         m_pFtTimeUnit->Disable();
     257             :     }
     258             : 
     259           0 :     if ( pBtn != m_pBtnAutoFill )
     260             :     {
     261           0 :         m_pFtIncrement->Enable();
     262           0 :         m_pEdIncrement->Enable();
     263           0 :         m_pFtEndVal->Enable();
     264           0 :         m_pEdEndVal->Enable();
     265             :     }
     266             :     else
     267             :     {
     268           0 :         m_pFtIncrement->Disable();
     269           0 :         m_pEdIncrement->Disable();
     270           0 :         m_pFtEndVal->Disable();
     271           0 :         m_pEdEndVal->Disable();
     272             :     }
     273           0 :     return 0;
     274             : }
     275             : 
     276             : 
     277           0 : IMPL_LINK_NOARG(ScFillSeriesDlg, OKHdl)
     278             : {
     279           0 :     if ( m_pBtnLeft->IsChecked() )             theFillDir = FILL_TO_LEFT;
     280           0 :     else if ( m_pBtnRight->IsChecked() )       theFillDir = FILL_TO_RIGHT;
     281           0 :     else if ( m_pBtnDown->IsChecked() )        theFillDir = FILL_TO_BOTTOM;
     282           0 :     else if ( m_pBtnUp->IsChecked() )          theFillDir = FILL_TO_TOP;
     283             : 
     284           0 :     if ( m_pBtnArithmetic->IsChecked() )       theFillCmd = FILL_LINEAR;
     285           0 :     else if ( m_pBtnGeometric->IsChecked() )   theFillCmd = FILL_GROWTH;
     286           0 :     else if ( m_pBtnDate->IsChecked() )        theFillCmd = FILL_DATE;
     287           0 :     else if ( m_pBtnAutoFill->IsChecked() )    theFillCmd = FILL_AUTO;
     288             : 
     289           0 :     if ( m_pBtnDay->IsChecked() )              theFillDateCmd = FILL_DAY;
     290           0 :     else if ( m_pBtnDayOfWeek->IsChecked() )   theFillDateCmd = FILL_WEEKDAY;
     291           0 :     else if ( m_pBtnMonth->IsChecked() )       theFillDateCmd = FILL_MONTH;
     292           0 :     else if ( m_pBtnYear->IsChecked() )        theFillDateCmd = FILL_YEAR;
     293             : 
     294           0 :     sal_Bool  bAllOk = true;
     295           0 :     Edit* pEdWrong = NULL;
     296           0 :     if ( !CheckStartVal() )
     297             :     {
     298           0 :         bAllOk = false;
     299           0 :         pEdWrong = m_pEdStartVal;
     300             :     }
     301           0 :     else if ( !CheckIncrementVal() )
     302             :     {
     303           0 :         bAllOk = false;
     304           0 :         pEdWrong = m_pEdIncrement;
     305             :     }
     306           0 :     else if ( !CheckEndVal() )
     307             :     {
     308           0 :         bAllOk = false;
     309           0 :         pEdWrong = m_pEdEndVal;
     310             :     }
     311           0 :     if ( bAllOk )
     312           0 :         EndDialog( RET_OK );
     313             :     else
     314             :     {
     315             :         ErrorBox( this,
     316             :                   WinBits( WB_OK | WB_DEF_OK ),
     317             :                   aErrMsgInvalidVal
     318           0 :                 ).Execute();
     319           0 :         pEdWrong->GrabFocus();
     320             :     }
     321             : 
     322           0 :     return 0;
     323             : }
     324             : 
     325             : 
     326             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10