/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_svtools.hxx" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace ::com::sun::star; // ----------------------------------------------------------------------- class MyApp : public Application { public: void Main(); }; // ----------------------------------------------------------------------- class ShowBitmap : public WorkWindow { Bitmap aBmp; public: ShowBitmap( Window* pParent, const Bitmap& rBmp ); virtual void Paint( const Rectangle& ); virtual sal_Bool Close(); }; // ----------------------------------------------------------------------- class ShowFont : public Control { public: ShowFont( Window* pParent ); virtual void Paint( const Rectangle& ); void SetFont( const Font& rFont ) { Invalidate(); Control::SetFont( rFont ); } }; // --- class OrientSlider ------------------------------------------------ class OrientSlider : public Slider { public: OrientSlider( Window* pParent ); short GetOrientation() const { return (short)GetThumbPos(); } }; // ----------------------------------------------------------------------- OrientSlider::OrientSlider( Window* pParent ) : Slider( pParent, WB_HORZ | WB_DRAG ) { SetThumbPos( 0 ); SetLineSize( 10 ); SetPageSize( 100 ); SetRange( Range( 0, 3600 ) ); } // ----------------------------------------------------------------------- class MyFontDialog : public ModalDialog { private: FontList* pList; Font aCurFont; Printer aPrinter; FontNameBox aFontBox; FontStyleBox aStyleBox; FontSizeBox aSizeBox; ListBox aUnderlineBox; ListBox aStrikeoutBox; CheckBox aWordLineBox; CheckBox aShadowBox; CheckBox aOutlineBox; ColorListBox aColorBox; GroupBox aEffectBox; OrientSlider aLineOrientSlider; ShowFont aShowFont; GroupBox aSampleBox; FixedText aMapText; OKButton aOKBtn; CancelButton aCancelBtn; public: MyFontDialog( Window* pParent ); DECL_LINK( SelectFont, ComboBox* ); DECL_LINK( SelectStyle, ComboBox* ); DECL_LINK( AttrHdl, Window * ); void SetAttr(); short Execute(); }; // ----------------------------------------------------------------------- class MyTabBar : public TabBar { public: MyTabBar( Window* pParent, WinBits nWinStyle = WB_STDTABBAR ) : TabBar( pParent, nWinStyle ) {} virtual long DeactivatePage(); virtual long AllowRenaming(); virtual void Split(); }; // ----------------------------------------------------------------------- class MyCalendar : public WorkWindow { MenuBar aMenuBar; PopupMenu aWeekStartMenu; PopupMenu aWeekCountMenu; Calendar aCalendar; Color aInfoColor; Color aHolidayColor; Color aFrameColor; public: MyCalendar( Window* pParent ); ~MyCalendar(); DECL_LINK( RequestDateInfoHdl, Calendar* ); DECL_LINK( DoubleClickHdl, Calendar* ); DECL_LINK( MenuSelectHdl, Menu* ); void Resize(); }; // ----------------------------------------------------------------------- class MyWin : public WorkWindow { private: Printer aPrn; ToolBox aBox; StatusBar aBar; HeaderBar aHeadBar; ColorListBox aColorList; LineListBox aLineList; ValueSet aValueSet; CalendarField aCalendarField; CalendarField aCalendarField2; MyTabBar aTabBar; ProgressBar aPrgsBar; PushButton aFontBtn; PushButton aCalendarBtn; PushButton aPrnSetupBtn; PushButton aPrnDlgBtn; Size aBoxSize; MyCalendar* pCalendar; PopupMenu* pMenu; FontNameMenu* pNameMenu; FontStyleMenu* pStyleMenu; FontSizeMenu* pSizeMenu; public: MyWin( Window* pParent, WinBits aWinStyle ); ~MyWin(); DECL_LINK( Test, PushButton* ); DECL_LINK( SelectHdl, Window* ); DECL_LINK( CalSelectHdl, CalendarField* ); void ContextMenu( const Point& rPos ); void Command( const CommandEvent& rCEvt ); void MouseButtonDown( const MouseEvent& rMEvt ); void KeyInput( const KeyEvent& rKEvt ); void Paint( const Rectangle& rRect ); void Resize(); }; // ----------------------------------------------------------------------- void MyApp::Main() { try { ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xMSF = cppu::createRegistryServiceFactory( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "applicat.rdb" ) ), sal_True ); ::comphelper::setProcessServiceFactory( xMSF ); Help aHelp; SetHelp( &aHelp ); Help::EnableContextHelp(); Help::EnableExtHelp(); Help::EnableBalloonHelp(); Help::EnableQuickHelp(); MyWin aMainWin( NULL, WinBits( WB_APP | WB_STDWORK | WB_CLIPCHILDREN ) ); aMainWin.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "SVTOOLS - Workbench" ) ) ); aMainWin.GrabFocus(); aMainWin.Show(); Execute(); } catch ( com::sun::star::uno::Exception & e ) { fprintf( stderr, "Error during bootstrapping servicemanager: %s\n" , rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_ASCII_US ).getStr() ); } } // ----------------------------------------------------------------------- ShowBitmap::ShowBitmap( Window* pParent, const Bitmap& rBmp ) : WorkWindow( pParent, WB_STDWORK ), aBmp( rBmp ) { SetOutputSizePixel( rBmp.GetSizePixel() ); SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Bitmap-Viewer" ) ) ); Show(); } // ----------------------------------------------------------------------- void ShowBitmap::Paint( const Rectangle& ) { DrawBitmap( Point(), GetOutputSizePixel(), aBmp ); } // ----------------------------------------------------------------------- sal_Bool ShowBitmap::Close() { Hide(); delete this; return sal_True; } // ----------------------------------------------------------------------- ShowFont::ShowFont( Window* pParent ) : Control( pParent, WB_BORDER ) { SetMapMode( MapMode( MAP_POINT, Point(), Fraction( 1, 10 ), Fraction( 1, 10 ) ) ); SetBackground( Wallpaper( Color( COL_WHITE ) ) ); } // ----------------------------------------------------------------------- void ShowFont::Paint( const Rectangle& ) { const Font& rFont = GetFont(); String aText; Size aWindowSize( GetOutputSize() ); long x,y; if ( rFont.GetOrientation() ) { aText.Append( String::CreateFromInt32( rFont.GetOrientation()/10 ) ); aText.AppendAscii( " degree." ); x = aWindowSize.Width()/2; y = aWindowSize.Height()/2; } else { aText = rFont.GetName(); if ( !aText.Len() ) aText.AssignAscii( "Sample" ); x = aWindowSize.Width()/2 - GetTextWidth( aText )/2; y = aWindowSize.Height()/2 - GetTextHeight()/2; } DrawText( Point( x, y ), aText ); } // ----------------------------------------------------------------------- MyFontDialog::MyFontDialog( Window* pParent ) : ModalDialog( pParent, WB_3DLOOK | WB_STDMODAL ), aFontBox( this ), aStyleBox( this ), aSizeBox( this ), aUnderlineBox( this, WB_DROPDOWN ), aStrikeoutBox( this, WB_DROPDOWN ), aWordLineBox( this ), aShadowBox( this ), aOutlineBox( this ), aColorBox( this, WB_DROPDOWN ), aEffectBox( this ), aLineOrientSlider( this ), aShowFont( this ), aSampleBox( this ), aMapText( this, WB_LEFT | WB_WORDBREAK ), aOKBtn( this, WB_DEFBUTTON ), aCancelBtn( this ) { pList = NULL; aFontBox.EnableWYSIWYG( sal_True ); aFontBox.EnableSymbols( sal_True ); aFontBox.SetPosSizePixel( Point( 10, 10 ), Size( 140, 140 ) ); aFontBox.SetSelectHdl( LINK( this, MyFontDialog, SelectFont ) ); aFontBox.SetLoseFocusHdl( LINK( this, MyFontDialog, SelectFont ) ); aFontBox.Show(); aStyleBox.SetPosSizePixel( Point( 160, 10 ), Size( 100, 140 ) ); aStyleBox.SetSelectHdl( LINK( this, MyFontDialog, SelectStyle ) ); aStyleBox.SetLoseFocusHdl( LINK( this, MyFontDialog, SelectStyle ) ); aStyleBox.Show(); aSizeBox.SetPosSizePixel( Point( 270, 10 ), Size( 60, 140 ) ); aSizeBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) ); aSizeBox.SetLoseFocusHdl( LINK( this, MyFontDialog, AttrHdl ) ); aSizeBox.Show(); aUnderlineBox.SetPosSizePixel( Point( 15, 180 ), Size( 130, 100 ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_NONE" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_SINGLE" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DOUBLE" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DOTTED" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DONTKNOW" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DASH" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_LONGDASH" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DASHDOT" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DASHDOTDOT" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_SMALLWAVE" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_WAVE" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DOUBLEWAVE" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLD" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDOTTED" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDASH" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDLONGDASH" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDASHDOT" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDASHDOTDOT" ) ) ); aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDWAVE" ) ) ); aUnderlineBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) ); aUnderlineBox.Show(); aStrikeoutBox.SetPosSizePixel( Point( 15, 210 ), Size( 130, 100 ) ); aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_NONE" ) ) ); aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_SINGLE" ) ) ); aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_DOUBLE" ) ) ); aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_DONTKNOW" ) ) ); aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_BOLD" ) ) ); aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_SLASH" ) ) ); aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_X" ) ) ); aStrikeoutBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) ); aStrikeoutBox.Show(); aWordLineBox.SetPosSizePixel( Point( 15, 240 ), Size( 130, 19 ) ); aWordLineBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Only ~Words" ) ) ); aWordLineBox.SetClickHdl( LINK( this, MyFontDialog, AttrHdl ) ); aWordLineBox.Show(); aShadowBox.SetPosSizePixel( Point( 15, 260 ), Size( 130, 19 ) ); aShadowBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "~Shadow" ) ) ); aShadowBox.SetClickHdl( LINK( this, MyFontDialog, AttrHdl ) ); aShadowBox.Show(); aOutlineBox.SetPosSizePixel( Point( 15, 280 ), Size( 130, 19 ) ); aOutlineBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "~Outline" ) ) ); aOutlineBox.SetClickHdl( LINK( this, MyFontDialog, AttrHdl ) ); aOutlineBox.Show(); { aColorBox.SetPosSizePixel( Point( 15, 305 ), Size( 130, 100 ) ); aColorBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) ); aColorBox.SetUpdateMode( sal_False ); aColorBox.InsertEntry( Color( COL_BLACK ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) ); aColorBox.InsertEntry( Color( COL_BLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) ); aColorBox.InsertEntry( Color( COL_GREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) ); aColorBox.InsertEntry( Color( COL_CYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) ); aColorBox.InsertEntry( Color( COL_RED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) ); aColorBox.InsertEntry( Color( COL_MAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) ); aColorBox.InsertEntry( Color( COL_BROWN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) ); aColorBox.InsertEntry( Color( COL_GRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) ); aColorBox.InsertEntry( Color( COL_LIGHTGRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGray" ) ) ); aColorBox.InsertEntry( Color( COL_LIGHTBLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightBlue" ) ) ); aColorBox.InsertEntry( Color( COL_LIGHTGREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGreen" ) ) ); aColorBox.InsertEntry( Color( COL_LIGHTCYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightCyan" ) ) ); aColorBox.InsertEntry( Color( COL_LIGHTRED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightRed" ) ) ); aColorBox.InsertEntry( Color( COL_LIGHTMAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightMagenta" ) ) ); aColorBox.InsertEntry( Color( COL_YELLOW ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) ); aColorBox.InsertEntry( Color( COL_WHITE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) ); aColorBox.SetUpdateMode( sal_True ); aColorBox.Show(); } aEffectBox.SetPosSizePixel( Point( 10, 160 ), Size( 140, 175 ) ); aEffectBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Effects" ) ) ); aEffectBox.Show(); Size aSliderSize = aLineOrientSlider.GetSizePixel(); aLineOrientSlider.SetPosSizePixel( Point( 160, 335-aSliderSize.Height() ), Size( 250, aSliderSize.Height() ) ); aLineOrientSlider.SetSlideHdl( LINK( this, MyFontDialog, AttrHdl ) ); aLineOrientSlider.Show(); aShowFont.SetPosSizePixel( Point( 165, 180 ), Size( 240, 70 ) ); aShowFont.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Sample" ) ) ); aShowFont.Show(); aSampleBox.SetPosSizePixel( Point( 160, 160 ), Size( 250, 100 ) ); aSampleBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Sample" ) ) ); aSampleBox.Show(); aMapText.SetPosSizePixel( Point( 160, 270 ), Size( 250, 35 ) ); aMapText.Show(); aOKBtn.SetPosSizePixel( Point( 340, 10 ), Size( 70, 25 ) ); aOKBtn.Show(); aCancelBtn.SetPosSizePixel( Point( 340, 40 ), Size( 70, 25 ) ); aCancelBtn.Show(); SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "FontDialog" ) ) ); SetOutputSizePixel( Size( 420, 345 ) ); } // ----------------------------------------------------------------------- IMPL_LINK( MyFontDialog, SelectFont, ComboBox*, EMPTYARG ) { aStyleBox.Fill( aFontBox.GetText(), pList ); FontInfo aInfo = pList->Get( aFontBox.GetText(), aStyleBox.GetText() ); aSizeBox.Fill( &aInfo, pList ); SetAttr(); return 0; } // ----------------------------------------------------------------------- IMPL_LINK( MyFontDialog, SelectStyle, ComboBox*, EMPTYARG ) { FontInfo aInfo = pList->Get( aFontBox.GetText(), aStyleBox.GetText() ); aSizeBox.Fill( &aInfo, pList ); SetAttr(); return 0; } // ----------------------------------------------------------------------- IMPL_LINK( MyFontDialog, AttrHdl, Window*, EMPTYARG ) { SetAttr(); return 0; } // ----------------------------------------------------------------------- void MyFontDialog::SetAttr() { FontInfo aFont( pList->Get( aFontBox.GetText(), aStyleBox.GetText() ) ); aFont.SetSize( Size( 0, aSizeBox.GetValue() ) ); aFont.SetUnderline( (FontUnderline)aUnderlineBox.GetSelectEntryPos() ); aFont.SetStrikeout( (FontStrikeout)aStrikeoutBox.GetSelectEntryPos() ); aFont.SetColor( Color( (ColorData)aColorBox.GetSelectEntryPos() ) ); aFont.SetWordLineMode( aWordLineBox.IsChecked() ); aFont.SetShadow( aShadowBox.IsChecked() ); aFont.SetOutline( aOutlineBox.IsChecked() ); aFont.SetOrientation( aLineOrientSlider.GetOrientation() ); aFont.SetTransparent( sal_True ); aMapText.SetText( pList->GetFontMapText( aFont ) ); aShowFont.SetFont( aFont ); } // ----------------------------------------------------------------------- short MyFontDialog::Execute() { pList = new FontList( &aPrinter, this ); aFontBox.Fill( pList ); aSizeBox.SetValue( 120 ); aUnderlineBox.SelectEntryPos( 0 ); aStrikeoutBox.SelectEntryPos( 0 ); aColorBox.SelectEntryPos( 0 ); SelectFont( &aFontBox ); short nRet = ModalDialog::Execute(); delete pList; return nRet; } // ----------------------------------------------------------------------- long MyTabBar::DeactivatePage() { if ( GetCurPageId() == 6 ) { QueryBox aQueryBox( this, WB_YES_NO | WB_DEF_YES, XubString( RTL_CONSTASCII_USTRINGPARAM( "Deactivate" ) ) ); if ( aQueryBox.Execute() == RET_YES ) return sal_True; else return sal_False; } else return sal_True; } // ----------------------------------------------------------------------- long MyTabBar::AllowRenaming() { XubString aStr( RTL_CONSTASCII_USTRINGPARAM( "Allow renaming: " ) ); aStr += GetEditText(); QueryBox aQueryBox( this, WB_YES_NO_CANCEL | WB_DEF_YES, aStr ); long nRet = aQueryBox.Execute(); if ( nRet == RET_YES ) return TAB_RENAMING_YES; else if ( nRet == RET_NO ) return TAB_RENAMING_NO; else // ( nRet == RET_CANCEL ) return TAB_RENAMING_CANCEL; } // ----------------------------------------------------------------------- void MyTabBar::Split() { Size aSize = GetSizePixel(); long nWidth = GetSplitSize(); long nMaxWidth = GetParent()->GetOutputSizePixel().Width()-50; if ( nWidth < GetMinSize() ) nWidth = GetMinSize(); else if ( nWidth > nMaxWidth ) nWidth = nMaxWidth; SetSizePixel( Size( nWidth, aSize.Height() ) ); } // ----------------------------------------------------------------------- MyCalendar::MyCalendar( Window* pParent ) : WorkWindow( pParent, WB_STDWORK ), aCalendar( this, WB_TABSTOP | WB_WEEKNUMBER | WB_BOLDTEXT | WB_FRAMEINFO | WB_MULTISELECT ), aInfoColor( COL_LIGHTBLUE ), aHolidayColor( COL_LIGHTRED ), aFrameColor( COL_LIGHTRED ) { const CalendarWrapper& rCal = aCalendar.GetCalendarWrapper(); aMenuBar.InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Wochen~anfang" ) ) ); aMenuBar.InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Erste Woche" ) ) ); aMenuBar.SetPopupMenu( 1, &aWeekStartMenu ); aMenuBar.SetPopupMenu( 2, &aWeekCountMenu ); sal_Int16 nDays = rCal.getNumberOfDaysInWeek(); uno::Sequence< i18n::CalendarItem> xItems = rCal.getDays(); const i18n::CalendarItem* pArr = xItems.getArray(); for ( sal_Int16 i = 0; i < nDays; i++ ) aWeekStartMenu.InsertItem( 10+(sal_uInt16)i, pArr[i].FullName, MIB_AUTOCHECK | MIB_RADIOCHECK ); aWeekStartMenu.CheckItem( 10+(sal_uInt16)rCal.getFirstDayOfWeek() ); aWeekCountMenu.InsertItem( 20, XubString( RTL_CONSTASCII_USTRINGPARAM( "~1. Januar" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); aWeekCountMenu.InsertItem( 21, XubString( RTL_CONSTASCII_USTRINGPARAM( "~2 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); aWeekCountMenu.InsertItem( 22, XubString( RTL_CONSTASCII_USTRINGPARAM( "~3 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); aWeekCountMenu.InsertItem( 23, XubString( RTL_CONSTASCII_USTRINGPARAM( "Erste 4 ~Tage-Woche" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); aWeekCountMenu.InsertItem( 24, XubString( RTL_CONSTASCII_USTRINGPARAM( "~5 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); aWeekCountMenu.InsertItem( 25, XubString( RTL_CONSTASCII_USTRINGPARAM( "~6 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); aWeekCountMenu.InsertItem( 26, XubString( RTL_CONSTASCII_USTRINGPARAM( "Erste ~volle Woche" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); //was: one of 0, 1, 2; aWeekCountMenu.CheckItem( 20+(sal_uInt16)rIntn.GetWeekCountStart() ); aWeekCountMenu.CheckItem( 20+(sal_uInt16)rCal.getMinimumNumberOfDaysForFirstWeek() ); aMenuBar.SetSelectHdl( LINK( this, MyCalendar, MenuSelectHdl ) ); SetMenuBar( &aMenuBar ); Date aCurDate = aCalendar.GetCurDate(); aCalendar.SetRequestDateInfoHdl( LINK( this, MyCalendar, RequestDateInfoHdl ) ); aCalendar.SetDoubleClickHdl( LINK( this, MyCalendar, DoubleClickHdl ) ); aCalendar.SetSaturdayColor( Color( COL_LIGHTGREEN ) ); aCalendar.SetSundayColor( aHolidayColor ); aCalendar.AddDateInfo( Date( 1, 1, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Neujahr" ) ), &aHolidayColor, NULL ); aCalendar.AddDateInfo( Date( 24, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Heiligabend" ) ), &aInfoColor, NULL ); aCalendar.AddDateInfo( Date( 25, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "1. Weihnachttag" ) ), &aHolidayColor, NULL ); aCalendar.AddDateInfo( Date( 26, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "2. Weihnachttag" ) ), &aHolidayColor, NULL ); aCalendar.AddDateInfo( Date( 31, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Silvester" ) ), &aInfoColor, NULL ); aCalendar.SetPosPixel( Point() ); aCalendar.SetFirstDate( Date( 1, 1, aCurDate.GetYear() ) ); aCalendar.Show(); SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Calendar" ) ) ); SetOutputSizePixel( aCalendar.CalcWindowSizePixel( 3, 4 ) ); } // ----------------------------------------------------------------------- MyCalendar::~MyCalendar() { SetMenuBar( NULL ); aMenuBar.SetPopupMenu( 1, NULL ); aMenuBar.SetPopupMenu( 2, NULL ); } // ----------------------------------------------------------------------- IMPL_LINK( MyCalendar, RequestDateInfoHdl, Calendar*, EMPTYARG ) { sal_uInt16 nRequestYear = aCalendar.GetRequestYear(); if ( (nRequestYear >= 1954) && (nRequestYear <= 1989) ) aCalendar.AddDateInfo( Date( 17, 6, nRequestYear ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Tag der deutschen Einheit" ) ), &aHolidayColor, NULL ); else if ( nRequestYear >= 1990 ) aCalendar.AddDateInfo( Date( 3, 10, nRequestYear ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Tag der deutschen Einheit" ) ), &aHolidayColor, NULL ); return 0; } // ----------------------------------------------------------------------- IMPL_LINK( MyCalendar, DoubleClickHdl, Calendar*, EMPTYARG ) { Date aDate = aCalendar.GetCurDate(); String aStr( RTL_CONSTASCII_USTRINGPARAM( "Info: " ) ); aStr += Application::GetAppLocaleDataWrapper().getDate( aDate ); aCalendar.AddDateInfo( aDate, aStr, NULL, &aFrameColor, DIB_BOLD ); return 0; } // ----------------------------------------------------------------------- IMPL_LINK( MyCalendar, MenuSelectHdl, Menu*, pMenu ) { sal_uInt16 nItemId = pMenu->GetCurItemId(); if ( (nItemId >= 10) && (nItemId <= 19) ) aCalendar.SetWeekStart( nItemId-10 ); else if ( (nItemId >= 20) && (nItemId <= 29) ) aCalendar.SetMinimumNumberOfDaysInWeek( nItemId-20 ); return 0; } // ----------------------------------------------------------------------- void MyCalendar::Resize() { aCalendar.SetSizePixel( GetOutputSizePixel() ); } // ----------------------------------------------------------------------- MyWin::MyWin( Window* pParent, WinBits aWinStyle ) : WorkWindow(pParent, aWinStyle | WB_3DLOOK ), aBox( this, WB_BORDER | WB_3DLOOK ), aBar( this, WB_BORDER | WB_3DLOOK | WB_RIGHT ), aHeadBar( this, WB_BORDER | WB_3DLOOK | WB_DRAG | WB_BUTTONSTYLE ), aColorList( this ), aLineList( this ), aValueSet( this, WB_TABSTOP | WB_NAMEFIELD | WB_NONEFIELD | WB_BORDER | WB_ITEMBORDER | WB_VSCROLL /* | WB_FLATVALUESET */ ), aCalendarField( this, WB_TABSTOP | WB_SPIN | WB_REPEAT | WB_DROPDOWN | WB_BORDER ), aCalendarField2( this, WB_TABSTOP | WB_SPIN | WB_REPEAT | WB_DROPDOWN | WB_BORDER ), aTabBar( this, WB_BORDER | WB_MULTISELECT | WB_SCROLL | WB_SIZEABLE | WB_DRAG ), aPrgsBar( this ), aFontBtn( this ), aCalendarBtn( this ), aPrnSetupBtn( this ), aPrnDlgBtn( this ) { SetBackground( Wallpaper( GetSettings().GetStyleSettings().GetFaceColor() ) ); pCalendar = NULL; pMenu = NULL; Bitmap aBmp; aBox.InsertItem( 1, aBmp ); aBox.InsertItem( 2, aBmp ); aBox.InsertItem( 3, aBmp ); aBox.InsertItem( 4, aBmp ); aBox.InsertSeparator(); aBox.InsertItem( 5, aBmp ); aBox.InsertItem( 6, aBmp ); aBox.InsertItem( 7, aBmp ); aBox.InsertItem( 8, aBmp ); aBox.InsertSpace(); aBox.InsertItem( 9, aBmp ); aBox.SetPosPixel( Point( 0, 0 ) ); aBoxSize = aBox.GetSizePixel(); aBox.Show(); aBar.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Ready" ) ) ); aBar.InsertItem( 1, 35 ); aBar.InsertItem( 2, 55 ); aBar.InsertItem( 3, 55 ); aBar.SetItemText( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Text" ) ) ); aBar.SetItemText( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "21.01.93" ) ) ); aBar.SetItemText( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "12:00:00" ) ) ); aBar.Show(); long nY = aBox.GetSizePixel().Height()+10; { aHeadBar.SetPosPixel( Point( 0, nY ) ); aHeadBar.InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Sender" ) ), 150 ); aHeadBar.InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Subject" ) ), 150, HIB_CENTER | HIB_VCENTER | HIB_CLICKABLE ); aHeadBar.InsertItem( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "Date" ) ), 75 ); aHeadBar.InsertItem( 4, XubString( RTL_CONSTASCII_USTRINGPARAM( "Size" ) ), 60, HIB_RIGHT | HIB_VCENTER | HIB_CLICKABLE ); aHeadBar.InsertItem( 9999, String(), HEADERBAR_FULLSIZE, HIB_RIGHT | HIB_VCENTER | HIB_FIXEDPOS ); aHeadBar.SetSelectHdl( LINK( this, MyWin, SelectHdl ) ); aHeadBar.Show(); nY += aHeadBar.GetSizePixel().Height() += 10; } { aColorList.SetPosSizePixel( Point( 10, nY ), Size( 130, 180 ) ); aColorList.SetUpdateMode( sal_False ); aColorList.InsertEntry( Color( COL_BLACK ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) ); aColorList.InsertEntry( Color( COL_BLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) ); aColorList.InsertEntry( Color( COL_GREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) ); aColorList.InsertEntry( Color( COL_CYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) ); aColorList.InsertEntry( Color( COL_RED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) ); aColorList.InsertEntry( Color( COL_MAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) ); aColorList.InsertEntry( Color( COL_BROWN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) ); aColorList.InsertEntry( Color( COL_GRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) ); aColorList.InsertEntry( Color( COL_LIGHTGRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGray" ) ) ); aColorList.InsertEntry( Color( COL_LIGHTBLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightBlue" ) ) ); aColorList.InsertEntry( Color( COL_LIGHTGREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGreen" ) ) ); aColorList.InsertEntry( Color( COL_LIGHTCYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightCyan" ) ) ); aColorList.InsertEntry( Color( COL_LIGHTRED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightRed" ) ) ); aColorList.InsertEntry( Color( COL_LIGHTMAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightMagenta" ) ) ); aColorList.InsertEntry( Color( COL_YELLOW ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) ); aColorList.InsertEntry( Color( COL_WHITE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) ); aColorList.SetUpdateMode( sal_True ); aColorList.SetSelectHdl( LINK( this, MyWin, SelectHdl ) ); aColorList.Show(); } { aLineList.SetPosSizePixel( Point( 150, nY ), Size( 130, 180 ) ); aLineList.SetUnit( FUNIT_POINT ); aLineList.SetSourceUnit( FUNIT_TWIP ); aLineList.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "Hairline" ) ) ); aLineList.InsertEntry( 1500 ); aLineList.InsertEntry( 3000 ); aLineList.InsertEntry( 4500 ); aLineList.InsertEntry( 6000 ); aLineList.InsertEntry( 7500 ); aLineList.InsertEntry( 9000 ); aLineList.InsertEntry( 1500, 1500, 1500 ); aLineList.InsertEntry( 3000, 1500, 1500 ); aLineList.InsertEntry( 4500, 1500, 1500 ); aLineList.InsertEntry( 3000, 3000, 1500 ); aLineList.InsertEntry( 4500, 3000, 1500 ); aLineList.InsertEntry( 4500, 4500, 1500 ); aLineList.Show(); } { aValueSet.SetPosSizePixel( Point( 290, nY ), Size( 130, 180 ) ); aValueSet.InsertItem( 9, Color( COL_BLACK ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) ); aValueSet.InsertItem( 10, Color( COL_BLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) ); aValueSet.InsertItem( 11, Color( COL_GREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) ); aValueSet.InsertItem( 12, Color( COL_CYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) ); aValueSet.InsertItem( 13, Color( COL_RED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) ); aValueSet.InsertItem( 14, Color( COL_MAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) ); aValueSet.InsertItem( 15, Color( COL_BROWN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) ); aValueSet.InsertItem( 16, Color( COL_GRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) ); aValueSet.InsertItem( 17, Color( COL_LIGHTGRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGray" ) ) ); aValueSet.InsertItem( 18, Color( COL_LIGHTBLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightBlue" ) ) ); aValueSet.InsertItem( 19, Color( COL_LIGHTGREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGreen" ) ) ); aValueSet.InsertItem( 20, Color( COL_LIGHTCYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightCyan" ) ) ); aValueSet.InsertItem( 21, Color( COL_LIGHTRED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightRed" ) ) ); aValueSet.InsertItem( 22, Color( COL_LIGHTMAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightMagenta" ) ) ); aValueSet.InsertItem( 23, Color( COL_YELLOW ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) ); aValueSet.InsertItem( 24, Color( COL_WHITE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) ); aValueSet.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "None" ) ) ); aValueSet.SetColCount( 4 ); aValueSet.SetLineCount( 4 ); aValueSet.SetSelectHdl( LINK( this, MyWin, SelectHdl ) ); aValueSet.Show(); } { aCalendarField.EnableEmptyFieldValue( sal_True ); aCalendarField.SetCalendarStyle( aCalendarField.GetCalendarStyle() | WB_RANGESELECT ); aCalendarField.SetSelectHdl( LINK( this, MyWin, CalSelectHdl ) ); // aCalendarField.SetDate( Date() ); aCalendarField.SetEmptyDate(); aCalendarField.EnableToday(); aCalendarField.EnableNone(); aCalendarField.SetPosSizePixel( Point( 430, nY ), Size( 130, 20 ) ); aCalendarField.Show(); } { aCalendarField2.SetDate( Date() ); aCalendarField2.SetPosSizePixel( Point( 570, nY ), Size( 130, 20 ) ); aCalendarField2.Show(); } nY += 200; { aTabBar.SetPosSizePixel( Point( 10, nY ), Size( 300, aTabBar.GetSizePixel().Height() ) ); aTabBar.InsertPage( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 1" ) ) ); aTabBar.InsertPage( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 2" ) ) ); aTabBar.InsertPage( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 3" ) ) ); aTabBar.InsertPage( 4, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 4" ) ) ); aTabBar.InsertPage( 5, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 5" ) ) ); aTabBar.InsertPage( 6, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 6" ) ) ); aTabBar.InsertPage( 7, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 7" ) ) ); aTabBar.InsertPage( 8, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 8" ) ) ); aTabBar.InsertPage( 9, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 9" ) ) ); aTabBar.InsertPage( 10, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 10" ) ) ); aTabBar.InsertPage( 11, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 11" ) ) ); aTabBar.InsertPage( 12, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 12" ) ) ); aTabBar.InsertPage( 13, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 13" ) ) ); aTabBar.InsertPage( 14, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 14" ) ) ); aTabBar.InsertPage( 15, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 15" ) ) ); aTabBar.InsertPage( 16, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 16" ) ) ); aTabBar.InsertPage( 17, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 17" ) ) ); aTabBar.InsertPage( 18, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 18" ) ) ); aTabBar.InsertPage( 19, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 19" ) ) ); aTabBar.InsertPage( 20, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 20" ) ) ); aTabBar.InsertPage( 21, XubString( RTL_CONSTASCII_USTRINGPARAM( "This is a long Page Text" ) ) ); aTabBar.InsertPage( 22, XubString( RTL_CONSTASCII_USTRINGPARAM( "Short Text" ) ) ); aTabBar.InsertPage( 23, XubString( RTL_CONSTASCII_USTRINGPARAM( "And now a very very long Page Text" ) ) ); aTabBar.InsertPage( 24, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 24" ) ) ); aTabBar.InsertPage( 25, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 25" ) ) ); aTabBar.InsertPage( 26, XubString( RTL_CONSTASCII_USTRINGPARAM( "And now a very long Page Text" ) ) ); aTabBar.InsertPage( 27, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 27" ) ) ); aTabBar.InsertPage( 28, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 28" ) ) ); aTabBar.InsertPage( 29, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 29" ) ) ); aTabBar.InsertPage( 30, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 30" ) ) ); aTabBar.EnableEditMode(); aTabBar.Show(); } nY += 35; { aPrgsBar.SetPosPixel( Point( 10, nY ) ); aPrgsBar.Show(); } nY += 40; { aFontBtn.SetPosSizePixel( Point( 10, nY ), Size( 100, 30 ) ); aFontBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Font..." ) ) ); aFontBtn.SetClickHdl( LINK( this, MyWin, Test ) ); aFontBtn.Show(); aCalendarBtn.SetPosSizePixel( Point( 120, nY ), Size( 100, 30 ) ); aCalendarBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Calendar" ) ) ); aCalendarBtn.SetClickHdl( LINK( this, MyWin, Test ) ); aCalendarBtn.Show(); aPrnSetupBtn.SetPosSizePixel( Point( 230, nY ), Size( 100, 30 ) ); aPrnSetupBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "PrnSetup..." ) ) ); aPrnSetupBtn.SetClickHdl( LINK( this, MyWin, Test ) ); aPrnSetupBtn.Show(); aPrnDlgBtn.SetPosSizePixel( Point( 340, nY ), Size( 100, 30 ) ); aPrnDlgBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Print...." ) ) ); aPrnDlgBtn.SetClickHdl( LINK( this, MyWin, Test ) ); aPrnDlgBtn.Show(); } } // ----------------------------------------------------------------------- MyWin::~MyWin() { if ( pCalendar ) delete pCalendar; if ( pMenu ) { delete pMenu; delete pNameMenu; delete pStyleMenu; delete pSizeMenu; } } // ----------------------------------------------------------------------- IMPL_LINK( MyWin, Test, PushButton*, pBtn ) { if ( pBtn == &aFontBtn ) { MyFontDialog* pDlg = new MyFontDialog( this ); pDlg->Execute(); delete pDlg; } else if ( pBtn == &aCalendarBtn ) { if ( !pCalendar ) pCalendar = new MyCalendar( this ); pCalendar->ToTop(); pCalendar->Show(); } else if ( pBtn == &aPrnSetupBtn ) { PrinterSetupDialog* pDlg = new PrinterSetupDialog( this ); pDlg->SetPrinter( &aPrn ); pDlg->Execute(); delete pDlg; } else if ( pBtn == &aPrnDlgBtn ) { PrintDialog* pDlg = new PrintDialog( this, false ); pDlg->SetPrinter( &aPrn ); pDlg->EnableRange( PRINTDIALOG_ALL ); pDlg->EnableRange( PRINTDIALOG_RANGE ); pDlg->Execute(); delete pDlg; } return 0; } // ----------------------------------------------------------------------- IMPL_LINK( MyWin, SelectHdl, Window*, pCtrl ) { if ( pCtrl == &aColorList ) { Color aColor = aColorList.GetSelectEntryColor(); aValueSet.SetColor( aColor ); aLineList.SetColor( aColor ); } else if ( pCtrl == &aValueSet ) { sal_uInt16 nId = aValueSet.GetSelectItemId(); if ( nId > 8 ) { Color aColor = aValueSet.GetItemColor( nId ); aValueSet.SetFillColor( aColor ); } } else if ( pCtrl == &aHeadBar ) { sal_uInt16 nCurItemId = aHeadBar.GetCurItemId(); for ( sal_uInt16 i = 0; i < aHeadBar.GetItemCount(); i++ ) { sal_uInt16 nItemId = aHeadBar.GetItemId( i ); HeaderBarItemBits nBits = aHeadBar.GetItemBits( nItemId ); if ( nItemId == nCurItemId ) { HeaderBarItemBits nOldBits = nBits; nBits &= ~(HIB_DOWNARROW | HIB_UPARROW); if ( nOldBits & HIB_DOWNARROW ) nBits |= HIB_UPARROW; else nBits |= HIB_DOWNARROW; } else nBits &= ~(HIB_DOWNARROW | HIB_UPARROW); aHeadBar.SetItemBits( nItemId, nBits ); } } return 0; } // ----------------------------------------------------------------------- IMPL_LINK( MyWin, CalSelectHdl, CalendarField*, pCtrl ) { if ( pCtrl == &aCalendarField ) { Calendar* l_pCalendar = pCtrl->GetCalendar(); aCalendarField2.SetDate( l_pCalendar->GetSelectDate( l_pCalendar->GetSelectDateCount()-1 ) ); } return 0; } // ----------------------------------------------------------------------- void MyWin::ContextMenu( const Point& rPos ) { FontList aList( this ); if ( !pMenu ) { pMenu = new PopupMenu; pNameMenu = new FontNameMenu; pStyleMenu = new FontStyleMenu; pSizeMenu = new FontSizeMenu; pMenu->InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Font" ) ) ); pMenu->InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Attribute" ) ) ); pMenu->InsertItem( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "Height" ) ) ); pMenu->SetPopupMenu( 1, pNameMenu ); pMenu->SetPopupMenu( 2, pStyleMenu ); pMenu->SetPopupMenu( 3, pSizeMenu ); pNameMenu->Fill( &aList ); pNameMenu->SetCurName( aList.GetFontName( 0 ).GetName() ); pStyleMenu->InsertSeparator(); pStyleMenu->InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Underline" ) ), MIB_CHECKABLE | MIB_AUTOCHECK ); pStyleMenu->InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Stri~keout" ) ), MIB_CHECKABLE | MIB_AUTOCHECK ); pStyleMenu->InsertItem( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Shadow" ) ), MIB_CHECKABLE | MIB_AUTOCHECK ); pStyleMenu->InsertItem( 4, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Outline" ) ), MIB_CHECKABLE | MIB_AUTOCHECK ); } pStyleMenu->Fill( pNameMenu->GetCurName(), &aList ); pSizeMenu->Fill( aList.Get( pNameMenu->GetCurName(), pStyleMenu->GetCurStyle() ), &aList ); pMenu->Execute( this, rPos ); } // ----------------------------------------------------------------------- void MyWin::Command( const CommandEvent& rCEvt ) { if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU ) ContextMenu( OutputToScreenPixel( rCEvt.GetMousePosPixel() ) ); } // ----------------------------------------------------------------------- void MyWin::MouseButtonDown( const MouseEvent& rMEvt ) { aValueSet.StartSelection(); WorkWindow::MouseButtonDown( rMEvt ); } // ----------------------------------------------------------------------- void MyWin::KeyInput( const KeyEvent& rKEvt ) { if ( rKEvt.GetKeyCode().GetCode() == KEY_P ) { for ( sal_uInt16 i = 0; i <= 130; i += 2 ) { for ( sal_uInt16 j = 0; j < 6000; j++ ) { aPrgsBar.SetValue( i ); Application::Reschedule(); } } } else if ( rKEvt.GetCharCode() == '+' ) aHeadBar.SetOffset( aHeadBar.GetOffset()+1 ); else if ( rKEvt.GetCharCode() == '-' ) aHeadBar.SetOffset( aHeadBar.GetOffset()-1 ); WorkWindow::KeyInput( rKEvt ); } // ----------------------------------------------------------------------- void MyWin::Paint( const Rectangle& rRect ) { WorkWindow::Paint( rRect ); } // ----------------------------------------------------------------------- void MyWin::Resize() { Size aWinSize = GetOutputSizePixel(); aBox.SetSizePixel( Size( aWinSize.Width(), aBoxSize.Height() ) ); Size aSize = aBar.GetSizePixel(); aBar.SetPosSizePixel( Point( 0, aWinSize.Height()-aSize.Height() ), Size( aWinSize.Width(), aSize.Height() ) ); Size aBarSize = aSize; Point aPos = aHeadBar.GetPosPixel(); aSize = aHeadBar.GetSizePixel(); aHeadBar.SetSizePixel( Size( aWinSize.Width(), aSize.Height() ) ); aHeadBar.SetDragSize( aWinSize.Height() - aSize.Height() - aPos.Y() - aBarSize.Height() ); aPos = aPrgsBar.GetPosPixel(); aSize = aPrgsBar.GetSizePixel(); if ( aPos.X() < aWinSize.Width()-10 ) aPrgsBar.SetSizePixel( Size( aWinSize.Width()-aPos.X()-10, aSize.Height() ) ); } // ----------------------------------------------------------------------- MyApp aMyApp;