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

Generated by: LCOV version 1.11