1*b3f79822SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*b3f79822SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*b3f79822SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*b3f79822SAndrew Rist * distributed with this work for additional information 6*b3f79822SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*b3f79822SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*b3f79822SAndrew Rist * "License"); you may not use this file except in compliance 9*b3f79822SAndrew Rist * with the License. You may obtain a copy of the License at 10*b3f79822SAndrew Rist * 11*b3f79822SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*b3f79822SAndrew Rist * 13*b3f79822SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*b3f79822SAndrew Rist * software distributed under the License is distributed on an 15*b3f79822SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b3f79822SAndrew Rist * KIND, either express or implied. See the License for the 17*b3f79822SAndrew Rist * specific language governing permissions and limitations 18*b3f79822SAndrew Rist * under the License. 19*b3f79822SAndrew Rist * 20*b3f79822SAndrew Rist *************************************************************/ 21*b3f79822SAndrew Rist 22*b3f79822SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sc.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #ifdef SC_DLLIMPLEMENTATION 28cdf0e10cSrcweir #undef SC_DLLIMPLEMENTATION 29cdf0e10cSrcweir #endif 30cdf0e10cSrcweir 31cdf0e10cSrcweir 32cdf0e10cSrcweir #include "dpgroupdlg.hxx" 33cdf0e10cSrcweir #ifndef SC_DPGROUPDLG_HRC 34cdf0e10cSrcweir #include "dpgroupdlg.hrc" 35cdf0e10cSrcweir #endif 36cdf0e10cSrcweir #include <tools/resary.hxx> 37cdf0e10cSrcweir #include "scresid.hxx" 38cdf0e10cSrcweir #ifndef SC_SC_HRC 39cdf0e10cSrcweir #include "sc.hrc" 40cdf0e10cSrcweir #endif 41cdf0e10cSrcweir #include <com/sun/star/sheet/DataPilotFieldGroupBy.hpp> 42cdf0e10cSrcweir 43cdf0e10cSrcweir // ============================================================================ 44cdf0e10cSrcweir 45cdf0e10cSrcweir namespace { 46cdf0e10cSrcweir 47cdf0e10cSrcweir /** Date part flags in order of the list box entries. */ 48cdf0e10cSrcweir static const sal_Int32 spnDateParts[] = 49cdf0e10cSrcweir { 50cdf0e10cSrcweir com::sun::star::sheet::DataPilotFieldGroupBy::SECONDS, 51cdf0e10cSrcweir com::sun::star::sheet::DataPilotFieldGroupBy::MINUTES, 52cdf0e10cSrcweir com::sun::star::sheet::DataPilotFieldGroupBy::HOURS, 53cdf0e10cSrcweir com::sun::star::sheet::DataPilotFieldGroupBy::DAYS, 54cdf0e10cSrcweir com::sun::star::sheet::DataPilotFieldGroupBy::MONTHS, 55cdf0e10cSrcweir com::sun::star::sheet::DataPilotFieldGroupBy::QUARTERS, 56cdf0e10cSrcweir com::sun::star::sheet::DataPilotFieldGroupBy::YEARS 57cdf0e10cSrcweir }; 58cdf0e10cSrcweir 59cdf0e10cSrcweir } // namespace 60cdf0e10cSrcweir 61cdf0e10cSrcweir // ============================================================================ 62cdf0e10cSrcweir 63cdf0e10cSrcweir ScDPGroupEditHelper::ScDPGroupEditHelper( RadioButton& rRbAuto, RadioButton& rRbMan, Edit& rEdValue ) : 64cdf0e10cSrcweir mrRbAuto( rRbAuto ), 65cdf0e10cSrcweir mrRbMan( rRbMan ), 66cdf0e10cSrcweir mrEdValue( rEdValue ) 67cdf0e10cSrcweir { 68cdf0e10cSrcweir mrRbAuto.SetClickHdl( LINK( this, ScDPGroupEditHelper, ClickHdl ) ); 69cdf0e10cSrcweir mrRbMan.SetClickHdl( LINK( this, ScDPGroupEditHelper, ClickHdl ) ); 70cdf0e10cSrcweir } 71cdf0e10cSrcweir 72cdf0e10cSrcweir bool ScDPGroupEditHelper::IsAuto() const 73cdf0e10cSrcweir { 74cdf0e10cSrcweir return mrRbAuto.IsChecked(); 75cdf0e10cSrcweir } 76cdf0e10cSrcweir 77cdf0e10cSrcweir double ScDPGroupEditHelper::GetValue() const 78cdf0e10cSrcweir { 79cdf0e10cSrcweir double fValue; 80cdf0e10cSrcweir if( !ImplGetValue( fValue ) ) 81cdf0e10cSrcweir fValue = 0.0; 82cdf0e10cSrcweir return fValue; 83cdf0e10cSrcweir } 84cdf0e10cSrcweir 85cdf0e10cSrcweir void ScDPGroupEditHelper::SetValue( bool bAuto, double fValue ) 86cdf0e10cSrcweir { 87cdf0e10cSrcweir if( bAuto ) 88cdf0e10cSrcweir { 89cdf0e10cSrcweir mrRbAuto.Check(); 90cdf0e10cSrcweir ClickHdl( &mrRbAuto ); 91cdf0e10cSrcweir } 92cdf0e10cSrcweir else 93cdf0e10cSrcweir { 94cdf0e10cSrcweir mrRbMan.Check(); 95cdf0e10cSrcweir ClickHdl( &mrRbMan ); 96cdf0e10cSrcweir } 97cdf0e10cSrcweir ImplSetValue( fValue ); 98cdf0e10cSrcweir } 99cdf0e10cSrcweir 100cdf0e10cSrcweir IMPL_LINK( ScDPGroupEditHelper, ClickHdl, RadioButton*, pButton ) 101cdf0e10cSrcweir { 102cdf0e10cSrcweir if( pButton == &mrRbAuto ) 103cdf0e10cSrcweir { 104cdf0e10cSrcweir // disable edit field on clicking "automatic" radio button 105cdf0e10cSrcweir mrEdValue.Disable(); 106cdf0e10cSrcweir } 107cdf0e10cSrcweir else if( pButton == &mrRbMan ) 108cdf0e10cSrcweir { 109cdf0e10cSrcweir // enable and set focus to edit field on clicking "manual" radio button 110cdf0e10cSrcweir mrEdValue.Enable(); 111cdf0e10cSrcweir mrEdValue.GrabFocus(); 112cdf0e10cSrcweir } 113cdf0e10cSrcweir return 0; 114cdf0e10cSrcweir } 115cdf0e10cSrcweir 116cdf0e10cSrcweir // ---------------------------------------------------------------------------- 117cdf0e10cSrcweir 118cdf0e10cSrcweir ScDPNumGroupEditHelper::ScDPNumGroupEditHelper( 119cdf0e10cSrcweir RadioButton& rRbAuto, RadioButton& rRbMan, ScDoubleField& rEdValue ) : 120cdf0e10cSrcweir ScDPGroupEditHelper( rRbAuto, rRbMan, rEdValue ), 121cdf0e10cSrcweir mrEdValue( rEdValue ) 122cdf0e10cSrcweir { 123cdf0e10cSrcweir } 124cdf0e10cSrcweir 125cdf0e10cSrcweir bool ScDPNumGroupEditHelper::ImplGetValue( double& rfValue ) const 126cdf0e10cSrcweir { 127cdf0e10cSrcweir return mrEdValue.GetValue( rfValue ); 128cdf0e10cSrcweir } 129cdf0e10cSrcweir 130cdf0e10cSrcweir void ScDPNumGroupEditHelper::ImplSetValue( double fValue ) 131cdf0e10cSrcweir { 132cdf0e10cSrcweir mrEdValue.SetValue( fValue ); 133cdf0e10cSrcweir } 134cdf0e10cSrcweir 135cdf0e10cSrcweir // ---------------------------------------------------------------------------- 136cdf0e10cSrcweir 137cdf0e10cSrcweir ScDPDateGroupEditHelper::ScDPDateGroupEditHelper( 138cdf0e10cSrcweir RadioButton& rRbAuto, RadioButton& rRbMan, DateField& rEdValue, const Date& rNullDate ) : 139cdf0e10cSrcweir ScDPGroupEditHelper( rRbAuto, rRbMan, rEdValue ), 140cdf0e10cSrcweir mrEdValue( rEdValue ), 141cdf0e10cSrcweir maNullDate( rNullDate ) 142cdf0e10cSrcweir { 143cdf0e10cSrcweir } 144cdf0e10cSrcweir 145cdf0e10cSrcweir bool ScDPDateGroupEditHelper::ImplGetValue( double& rfValue ) const 146cdf0e10cSrcweir { 147cdf0e10cSrcweir rfValue = mrEdValue.GetDate() - maNullDate; 148cdf0e10cSrcweir return true; 149cdf0e10cSrcweir } 150cdf0e10cSrcweir 151cdf0e10cSrcweir void ScDPDateGroupEditHelper::ImplSetValue( double fValue ) 152cdf0e10cSrcweir { 153cdf0e10cSrcweir Date aDate( maNullDate ); 154cdf0e10cSrcweir aDate += static_cast< sal_Int32 >( fValue ); 155cdf0e10cSrcweir mrEdValue.SetDate( aDate ); 156cdf0e10cSrcweir } 157cdf0e10cSrcweir 158cdf0e10cSrcweir // ============================================================================ 159cdf0e10cSrcweir // ============================================================================ 160cdf0e10cSrcweir 161cdf0e10cSrcweir ScDPNumGroupDlg::ScDPNumGroupDlg( Window* pParent, const ScDPNumGroupInfo& rInfo ) : 162cdf0e10cSrcweir ModalDialog ( pParent, ScResId( RID_SCDLG_DPNUMGROUP ) ), 163cdf0e10cSrcweir maFlStart ( this, ScResId( FL_START ) ), 164cdf0e10cSrcweir maRbAutoStart ( this, ScResId( RB_AUTOSTART ) ), 165cdf0e10cSrcweir maRbManStart ( this, ScResId( RB_MANSTART ) ), 166cdf0e10cSrcweir maEdStart ( this, ScResId( ED_START ) ), 167cdf0e10cSrcweir maFlEnd ( this, ScResId( FL_END ) ), 168cdf0e10cSrcweir maRbAutoEnd ( this, ScResId( RB_AUTOEND ) ), 169cdf0e10cSrcweir maRbManEnd ( this, ScResId( RB_MANEND ) ), 170cdf0e10cSrcweir maEdEnd ( this, ScResId( ED_END ) ), 171cdf0e10cSrcweir maFlBy ( this, ScResId( FL_BY ) ), 172cdf0e10cSrcweir maEdBy ( this, ScResId( ED_BY ) ), 173cdf0e10cSrcweir maBtnOk ( this, ScResId( BTN_OK ) ), 174cdf0e10cSrcweir maBtnCancel ( this, ScResId( BTN_CANCEL ) ), 175cdf0e10cSrcweir maBtnHelp ( this, ScResId( BTN_HELP ) ), 176cdf0e10cSrcweir maStartHelper ( maRbAutoStart, maRbManStart, maEdStart ), 177cdf0e10cSrcweir maEndHelper ( maRbAutoEnd, maRbManEnd, maEdEnd ) 178cdf0e10cSrcweir { 179cdf0e10cSrcweir FreeResource(); 180cdf0e10cSrcweir 181cdf0e10cSrcweir maStartHelper.SetValue( rInfo.AutoStart, rInfo.Start ); 182cdf0e10cSrcweir maEndHelper.SetValue( rInfo.AutoEnd, rInfo.End ); 183cdf0e10cSrcweir maEdBy.SetValue( (rInfo.Step <= 0.0) ? 1.0 : rInfo.Step ); 184cdf0e10cSrcweir 185cdf0e10cSrcweir /* Set the initial focus, currently it is somewhere after calling all the radio 186cdf0e10cSrcweir button click handlers. Now the first enabled editable control is focused. */ 187cdf0e10cSrcweir if( maEdStart.IsEnabled() ) 188cdf0e10cSrcweir maEdStart.GrabFocus(); 189cdf0e10cSrcweir else if( maEdEnd.IsEnabled() ) 190cdf0e10cSrcweir maEdEnd.GrabFocus(); 191cdf0e10cSrcweir else 192cdf0e10cSrcweir maEdBy.GrabFocus(); 193cdf0e10cSrcweir } 194cdf0e10cSrcweir 195cdf0e10cSrcweir ScDPNumGroupInfo ScDPNumGroupDlg::GetGroupInfo() const 196cdf0e10cSrcweir { 197cdf0e10cSrcweir ScDPNumGroupInfo aInfo; 198cdf0e10cSrcweir aInfo.Enable = sal_True; 199cdf0e10cSrcweir aInfo.DateValues = sal_False; 200cdf0e10cSrcweir aInfo.AutoStart = maStartHelper.IsAuto(); 201cdf0e10cSrcweir aInfo.AutoEnd = maEndHelper.IsAuto(); 202cdf0e10cSrcweir 203cdf0e10cSrcweir // get values and silently auto-correct them, if they are not valid 204cdf0e10cSrcweir // TODO: error messages in OK event? 205cdf0e10cSrcweir aInfo.Start = maStartHelper.GetValue(); 206cdf0e10cSrcweir aInfo.End = maEndHelper.GetValue(); 207cdf0e10cSrcweir if( !maEdBy.GetValue( aInfo.Step ) || (aInfo.Step <= 0.0) ) 208cdf0e10cSrcweir aInfo.Step = 1.0; 209cdf0e10cSrcweir if( aInfo.End <= aInfo.Start ) 210cdf0e10cSrcweir aInfo.End = aInfo.Start + aInfo.Step; 211cdf0e10cSrcweir 212cdf0e10cSrcweir return aInfo; 213cdf0e10cSrcweir } 214cdf0e10cSrcweir 215cdf0e10cSrcweir // ============================================================================ 216cdf0e10cSrcweir 217cdf0e10cSrcweir ScDPDateGroupDlg::ScDPDateGroupDlg( Window* pParent, 218cdf0e10cSrcweir const ScDPNumGroupInfo& rInfo, sal_Int32 nDatePart, const Date& rNullDate ) : 219cdf0e10cSrcweir ModalDialog ( pParent, ScResId( RID_SCDLG_DPDATEGROUP ) ), 220cdf0e10cSrcweir maFlStart ( this, ScResId( FL_START ) ), 221cdf0e10cSrcweir maRbAutoStart ( this, ScResId( RB_AUTOSTART ) ), 222cdf0e10cSrcweir maRbManStart ( this, ScResId( RB_MANSTART ) ), 223cdf0e10cSrcweir maEdStart ( this, ScResId( ED_START ) ), 224cdf0e10cSrcweir maFlEnd ( this, ScResId( FL_END ) ), 225cdf0e10cSrcweir maRbAutoEnd ( this, ScResId( RB_AUTOEND ) ), 226cdf0e10cSrcweir maRbManEnd ( this, ScResId( RB_MANEND ) ), 227cdf0e10cSrcweir maEdEnd ( this, ScResId( ED_END ) ), 228cdf0e10cSrcweir maFlBy ( this, ScResId( FL_BY ) ), 229cdf0e10cSrcweir maRbNumDays ( this, ScResId( RB_NUMDAYS ) ), 230cdf0e10cSrcweir maRbUnits ( this, ScResId( RB_UNITS ) ), 231cdf0e10cSrcweir maEdNumDays ( this, ScResId( ED_NUMDAYS ) ), 232cdf0e10cSrcweir maLbUnits ( this, ScResId( LB_UNITS ) ), 233cdf0e10cSrcweir maBtnOk ( this, ScResId( BTN_OK ) ), 234cdf0e10cSrcweir maBtnCancel ( this, ScResId( BTN_CANCEL ) ), 235cdf0e10cSrcweir maBtnHelp ( this, ScResId( BTN_HELP ) ), 236cdf0e10cSrcweir maStartHelper ( maRbAutoStart, maRbManStart, maEdStart, rNullDate ), 237cdf0e10cSrcweir maEndHelper ( maRbAutoEnd, maRbManEnd, maEdEnd, rNullDate ) 238cdf0e10cSrcweir { 239cdf0e10cSrcweir maLbUnits.SetHelpId( HID_SC_DPDATEGROUP_LB ); 240cdf0e10cSrcweir ResStringArray aArr( ScResId( STR_UNITS ) ); 241cdf0e10cSrcweir for( sal_uInt16 nIdx = 0, nCount = sal::static_int_cast<sal_uInt16>(aArr.Count()); nIdx < nCount; ++nIdx ) 242cdf0e10cSrcweir maLbUnits.InsertEntry( aArr.GetString( nIdx ) ); 243cdf0e10cSrcweir 244cdf0e10cSrcweir FreeResource(); 245cdf0e10cSrcweir 246cdf0e10cSrcweir maEdStart.SetShowDateCentury( sal_True ); 247cdf0e10cSrcweir maEdEnd.SetShowDateCentury( sal_True ); 248cdf0e10cSrcweir 249cdf0e10cSrcweir maStartHelper.SetValue( rInfo.AutoStart, rInfo.Start ); 250cdf0e10cSrcweir maEndHelper.SetValue( rInfo.AutoEnd, rInfo.End ); 251cdf0e10cSrcweir 252cdf0e10cSrcweir if( nDatePart == 0 ) 253cdf0e10cSrcweir nDatePart = com::sun::star::sheet::DataPilotFieldGroupBy::MONTHS; 254cdf0e10cSrcweir for( sal_uLong nIdx = 0, nCount = maLbUnits.GetEntryCount(); nIdx < nCount; ++nIdx ) 255cdf0e10cSrcweir maLbUnits.CheckEntryPos( static_cast< sal_uInt16 >( nIdx ), (nDatePart & spnDateParts[ nIdx ]) != 0 ); 256cdf0e10cSrcweir 257cdf0e10cSrcweir if( rInfo.DateValues ) 258cdf0e10cSrcweir { 259cdf0e10cSrcweir maRbNumDays.Check(); 260cdf0e10cSrcweir ClickHdl( &maRbNumDays ); 261cdf0e10cSrcweir 262cdf0e10cSrcweir double fNumDays = rInfo.Step; 263cdf0e10cSrcweir if( fNumDays < 1.0 ) 264cdf0e10cSrcweir fNumDays = 1.0; 265cdf0e10cSrcweir else if( fNumDays > 32767.0 ) 266cdf0e10cSrcweir fNumDays = 32767.0; 267cdf0e10cSrcweir maEdNumDays.SetValue( static_cast< long >( fNumDays ) ); 268cdf0e10cSrcweir } 269cdf0e10cSrcweir else 270cdf0e10cSrcweir { 271cdf0e10cSrcweir maRbUnits.Check(); 272cdf0e10cSrcweir ClickHdl( &maRbUnits ); 273cdf0e10cSrcweir } 274cdf0e10cSrcweir 275cdf0e10cSrcweir /* Set the initial focus, currently it is somewhere after calling all the radio 276cdf0e10cSrcweir button click handlers. Now the first enabled editable control is focused. */ 277cdf0e10cSrcweir if( maEdStart.IsEnabled() ) 278cdf0e10cSrcweir maEdStart.GrabFocus(); 279cdf0e10cSrcweir else if( maEdEnd.IsEnabled() ) 280cdf0e10cSrcweir maEdEnd.GrabFocus(); 281cdf0e10cSrcweir else if( maEdNumDays.IsEnabled() ) 282cdf0e10cSrcweir maEdNumDays.GrabFocus(); 283cdf0e10cSrcweir else if( maLbUnits.IsEnabled() ) 284cdf0e10cSrcweir maLbUnits.GrabFocus(); 285cdf0e10cSrcweir 286cdf0e10cSrcweir maRbNumDays.SetClickHdl( LINK( this, ScDPDateGroupDlg, ClickHdl ) ); 287cdf0e10cSrcweir maRbUnits.SetClickHdl( LINK( this, ScDPDateGroupDlg, ClickHdl ) ); 288cdf0e10cSrcweir maLbUnits.SetCheckButtonHdl( LINK( this, ScDPDateGroupDlg, CheckHdl ) ); 289cdf0e10cSrcweir } 290cdf0e10cSrcweir 291cdf0e10cSrcweir ScDPNumGroupInfo ScDPDateGroupDlg::GetGroupInfo() const 292cdf0e10cSrcweir { 293cdf0e10cSrcweir ScDPNumGroupInfo aInfo; 294cdf0e10cSrcweir aInfo.Enable = sal_True; 295cdf0e10cSrcweir aInfo.DateValues = maRbNumDays.IsChecked(); 296cdf0e10cSrcweir aInfo.AutoStart = maStartHelper.IsAuto(); 297cdf0e10cSrcweir aInfo.AutoEnd = maEndHelper.IsAuto(); 298cdf0e10cSrcweir 299cdf0e10cSrcweir // get values and silently auto-correct them, if they are not valid 300cdf0e10cSrcweir // TODO: error messages in OK event? 301cdf0e10cSrcweir aInfo.Start = maStartHelper.GetValue(); 302cdf0e10cSrcweir aInfo.End = maEndHelper.GetValue(); 303cdf0e10cSrcweir sal_Int64 nNumDays = maEdNumDays.GetValue(); 304cdf0e10cSrcweir aInfo.Step = static_cast<double>( aInfo.DateValues ? nNumDays : 0L ); 305cdf0e10cSrcweir if( aInfo.End <= aInfo.Start ) 306cdf0e10cSrcweir aInfo.End = aInfo.Start + nNumDays; 307cdf0e10cSrcweir 308cdf0e10cSrcweir return aInfo; 309cdf0e10cSrcweir } 310cdf0e10cSrcweir 311cdf0e10cSrcweir sal_Int32 ScDPDateGroupDlg::GetDatePart() const 312cdf0e10cSrcweir { 313cdf0e10cSrcweir // return DAYS for special "number of days" mode 314cdf0e10cSrcweir if( maRbNumDays.IsChecked() ) 315cdf0e10cSrcweir return com::sun::star::sheet::DataPilotFieldGroupBy::DAYS; 316cdf0e10cSrcweir 317cdf0e10cSrcweir // return listbox contents for "units" mode 318cdf0e10cSrcweir sal_Int32 nDatePart = 0; 319cdf0e10cSrcweir for( sal_uLong nIdx = 0, nCount = maLbUnits.GetEntryCount(); nIdx < nCount; ++nIdx ) 320cdf0e10cSrcweir if( maLbUnits.IsChecked( static_cast< sal_uInt16 >( nIdx ) ) ) 321cdf0e10cSrcweir nDatePart |= spnDateParts[ nIdx ]; 322cdf0e10cSrcweir return nDatePart; 323cdf0e10cSrcweir } 324cdf0e10cSrcweir 325cdf0e10cSrcweir IMPL_LINK( ScDPDateGroupDlg, ClickHdl, RadioButton*, pButton ) 326cdf0e10cSrcweir { 327cdf0e10cSrcweir if( pButton == &maRbNumDays ) 328cdf0e10cSrcweir { 329cdf0e10cSrcweir maLbUnits.Disable(); 330cdf0e10cSrcweir // enable and set focus to edit field on clicking "num of days" radio button 331cdf0e10cSrcweir maEdNumDays.Enable(); 332cdf0e10cSrcweir maEdNumDays.GrabFocus(); 333cdf0e10cSrcweir maBtnOk.Enable(); 334cdf0e10cSrcweir } 335cdf0e10cSrcweir else if( pButton == &maRbUnits ) 336cdf0e10cSrcweir { 337cdf0e10cSrcweir maEdNumDays.Disable(); 338cdf0e10cSrcweir // enable and set focus to listbox on clicking "units" radio button 339cdf0e10cSrcweir maLbUnits.Enable(); 340cdf0e10cSrcweir maLbUnits.GrabFocus(); 341cdf0e10cSrcweir // disable OK button if no date part selected 342cdf0e10cSrcweir CheckHdl( &maLbUnits ); 343cdf0e10cSrcweir } 344cdf0e10cSrcweir return 0; 345cdf0e10cSrcweir } 346cdf0e10cSrcweir 347cdf0e10cSrcweir IMPL_LINK( ScDPDateGroupDlg, CheckHdl, SvxCheckListBox*, pListBox ) 348cdf0e10cSrcweir { 349cdf0e10cSrcweir // enable/disable OK button on modifying check list box 350cdf0e10cSrcweir if( pListBox == &maLbUnits ) 351cdf0e10cSrcweir maBtnOk.Enable( maLbUnits.GetCheckedEntryCount() > 0 ); 352cdf0e10cSrcweir return 0; 353cdf0e10cSrcweir } 354cdf0e10cSrcweir 355cdf0e10cSrcweir // ============================================================================ 356cdf0e10cSrcweir 357