Date: prev next · Thread: first prev next last
2010 Archives by date, by thread · List index


Removed lots of code that was supposed to do scrolling in the about dialog.
And removed unused includes and variables too.
Also don't squeeze the Copyright text in a too small multiline edit.
Compiled and run: looks a bit nicer than before and less code too.

There are still a few commented out lines where we need to remove
Resource strings, that's beyond my head though. Included TODOs for that.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
---
All in all this is a net win (170 LOC less and some more comments), and easier too understand too 
IMHO. Not sure
 sfx2/inc/about.hxx           |   25 +---
 sfx2/source/dialog/about.cxx |  351 ++++++++++++------------------------------
 2 files changed, 101 insertions(+), 275 deletions(-)

diff --git a/sfx2/inc/about.hxx b/sfx2/inc/about.hxx
index 901807e..51de28a 100644
--- a/sfx2/inc/about.hxx
+++ b/sfx2/inc/about.hxx
@@ -31,57 +31,34 @@
 
 #include <tools/resary.hxx>
 #include <vcl/button.hxx>
-#include <vcl/accel.hxx>
 #include <svtools/svmedit.hxx>
-#include <tools/list.hxx>
-#include <svtools/stdctrl.hxx>
 #include "svtools/fixedhyper.hxx"
 #include <sfx2/basedlgs.hxx>           // SfxModalDialog
 
-DECLARE_LIST( AccelList, Accelerator* )
-
 // class AboutDialog -----------------------------------------------------
 
 class AboutDialog : public SfxModalDialog
 {
 private:
     OKButton           aOKButton;
-    Image                      aAppLogo;
+    Image              aAppLogo;
 
     MultiLineEdit       aVersionText;
     MultiLineEdit       aCopyrightText;
     svt::FixedHyperlink aInfoLink;
 
-    ResStringArray     aDeveloperAry;
-    String                     aDevVersionStr;
-    String                     aAccelStr;
-    String                     aVersionData;
     String          aVersionTextStr;
     String          aCopyrightTextStr;
     String          aLinkStr;
 
-    AccelList          aAccelList;
-
-    AutoTimer       aTimer;
-    long            nOff;
-    long            m_nDeltaWidth;
-    int                                m_nPendingScrolls;
-
-    BOOL            bNormal;
-
 protected:
     virtual BOOL       Close();
     virtual void       Paint( const Rectangle& );
 
 public:
     AboutDialog( Window* pParent, const ResId& rId, const String& rVerStr );
-    ~AboutDialog();
 
-    DECL_LINK( TimerHdl, Timer * );
-    DECL_LINK( AccelSelectHdl, Accelerator * );
     DECL_LINK( HandleHyperlink, svt::FixedHyperlink * );
 };
 
 #endif // #ifndef _ABOUT_HXX
-
-
diff --git a/sfx2/source/dialog/about.cxx b/sfx2/source/dialog/about.cxx
index a6360e1..289b995 100644
--- a/sfx2/source/dialog/about.cxx
+++ b/sfx2/source/dialog/about.cxx
@@ -31,46 +31,44 @@
 
 // include ---------------------------------------------------------------
 
-#include <vcl/svapp.hxx>
+//#include <vcl/svapp.hxx>
 #include <vcl/msgbox.hxx>
 
-#include <tools/stream.hxx>
-#include <tools/urlobj.hxx>
-#include <rtl/bootstrap.hxx>
-#include <unotools/configmgr.hxx>
-#include <unotools/bootstrap.hxx>
+//#include <tools/stream.hxx>
+//#include <tools/urlobj.hxx>
+//#include <rtl/bootstrap.hxx>
+//#include <unotools/bootstrap.hxx>
 #include <com/sun/star/uno/Any.h>
 #include <unotools/configmgr.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/graph.hxx>
-#include <svtools/filter.hxx>
-
+//#include <vcl/svapp.hxx>
+//#include <vcl/graph.hxx>
+//#include <svtools/filter.hxx>
+//
 #include "com/sun/star/system/SystemShellExecuteFlags.hpp"
 #include "com/sun/star/system/XSystemShellExecute.hpp"
 #include <comphelper/processfactory.hxx>
 #include "comphelper/anytostring.hxx"
 #include "cppuhelper/exc_hlp.hxx"
-#include "cppuhelper/bootstrap.hxx"
-
-#include <sfx2/sfxuno.hxx>
+//#include "cppuhelper/bootstrap.hxx"
+//
+//#include <sfx2/sfxuno.hxx>
+//TODO:Clean up about.hxx too
 #include "about.hxx"
-#include "sfxresid.hxx"
-#include <sfx2/sfxdefs.hxx>
+//#include "sfxresid.hxx"
+//#include <sfx2/sfxdefs.hxx>
 #include <sfx2/app.hxx>
-
 #include "dialog.hrc"
 
 using namespace ::com::sun::star;
 
-// defines ---------------------------------------------------------------
-
-#define SCROLL_OFFSET  1
-#define SPACE_OFFSET   5
-#define SCROLL_TIMER   30
-
-#define WELCOME_URL     DEFINE_CONST_UNICODE( "http://www.openoffice.org/welcome/credits.html"; )
+#define SPACE_OFFSET  10
+#define WELCOME_URL   DEFINE_CONST_UNICODE( "http://www.openoffice.org/welcome/credits.html"; )
 
-/** loads the application logo as used in the about dialog and impress slideshow pause screen */
+/**
+ * loads the application logo as used in the about dialog
+ * and impress slideshow pause screen
+ * @return Image() with the Application logo
+*/
 Image SfxApplication::GetApplicationLogo()
 {
     BitmapEx aBitmap;
@@ -78,38 +76,42 @@ Image SfxApplication::GetApplicationLogo()
     return Image( aBitmap );
 }
 
+/**
+ * Class containing the Help menu about dialog
+*/
 AboutDialog::AboutDialog( Window* pParent, const ResId& rId, const String& rVerStr ) :
 
     SfxModalDialog     ( pParent,      rId ),
-
     aOKButton          ( this,         ResId( ABOUT_BTN_OK, *rId.GetResMgr() ) ),
     aVersionText       ( this,         ResId( ABOUT_FTXT_VERSION, *rId.GetResMgr() ) ),
     aCopyrightText     ( this,         ResId( ABOUT_FTXT_COPYRIGHT, *rId.GetResMgr() ) ),
     aInfoLink       ( this,     ResId( ABOUT_FTXT_LINK, *rId.GetResMgr() ) ),
-    aDeveloperAry      (                       ResId( ABOUT_STR_DEVELOPER_ARY, *rId.GetResMgr() ) 
),
-    aDevVersionStr     ( rVerStr ),
-    aAccelStr          (                       ResId( ABOUT_STR_ACCEL, *rId.GetResMgr() ) ),
+    //TODO, remove from resources
+    //aDeveloperAry    (                       ResId( ABOUT_STR_DEVELOPER_ARY, *rId.GetResMgr() ) 
),
+    //aDevVersionStr   ( rVerStr ),
+    //TODO, remove from resources
+    //aAccelStr                (                       ResId( ABOUT_STR_ACCEL, *rId.GetResMgr() ) 
),
     aVersionTextStr(            ResId( ABOUT_STR_VERSION, *rId.GetResMgr() ) ),
     aCopyrightTextStr(          ResId( ABOUT_STR_COPYRIGHT, *rId.GetResMgr() ) ),
-    aLinkStr        (           ResId( ABOUT_STR_LINK, *rId.GetResMgr() ) ),
-    aTimer          (),
-    nOff            ( 0 ),
-    m_nDeltaWidth   ( 0 ),
-    m_nPendingScrolls( 0 ),
-    bNormal         ( TRUE )
+    aLinkStr        (           ResId( ABOUT_STR_LINK, *rId.GetResMgr() ) )
 {
-    rtl::OUString sProduct;
-    utl::ConfigManager::GetDirectConfigProperty(utl::ConfigManager::PRODUCTNAME) >>= sProduct;
+    // Get name of the product into sProduct
+    //rtl::OUString sProduct;
+    //utl::ConfigManager::GetDirectConfigProperty(utl::ConfigManager::PRODUCTNAME) >>= sProduct;
 
-    // load image from module path
+    // load 'about' logo image from module path
     aAppLogo = SfxApplication::GetApplicationLogo();
 
-    // Transparenter Font
-    Font aFont = GetFont();
-    aFont.SetTransparent( TRUE );
-    SetFont( aFont );
+    // set correct system color for background and text
+    const StyleSettings& rSettings = GetSettings().GetStyleSettings();
+    Color aWhiteCol( rSettings.GetWindowColor() );
+    Wallpaper aWall( aWhiteCol );
+    SetBackground( aWall );
+    Font aNewFont( aCopyrightText.GetFont() );
+    //aNewFont.SetTransparent( TRUE );
+    Color aTextColor( rSettings.GetWindowTextColor() );
 
-    // if necessary more info
+    // append more version info if necessary
     String sVersion = aVersionTextStr;
     sVersion.SearchAndReplaceAscii( "$(VER)", Application::GetDisplayName() );
     sVersion += '\n';
@@ -119,186 +121,100 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId, const String& 
rVerS
     sVersion += '\n';
     sVersion += aBuildString;
 #endif
-    aVersionText.SetText( sVersion );
-
-    // Initialisierung fuer Aufruf Entwickler
-    if ( aAccelStr.Len() && ByteString(U2S(aAccelStr)).IsAlphaAscii() )
-    {
-        Accelerator    *pAccel = 0, *pPrevAccel = 0, *pFirstAccel = 0;
-        aAccelStr.ToUpperAscii();
-
-        for ( USHORT i = 0; i < aAccelStr.Len(); ++i )
-        {
-            pPrevAccel = pAccel;
-            pAccel = new Accelerator;
-            aAccelList.Insert( pAccel, LIST_APPEND );
-            USHORT nKey = aAccelStr.GetChar(i) - 'A' + KEY_A;
-            pAccel->InsertItem( 1, KeyCode( nKey, KEY_MOD1 ) );
-            if ( i > 0 )
-                pPrevAccel->SetAccel( 1, pAccel );
-            if ( i == 0 )
-                pFirstAccel = pAccel;
-        }
-        pAccel->SetSelectHdl( LINK( this, AboutDialog, AccelSelectHdl ) );
-        GetpApp()->InsertAccel( pFirstAccel );
-    }
 
-    // set for background and text the correct system color
-    const StyleSettings& rSettings = GetSettings().GetStyleSettings();
-    Color aWhiteCol( rSettings.GetWindowColor() );
-    Wallpaper aWall( aWhiteCol );
-    SetBackground( aWall );
-    Font aNewFont( aCopyrightText.GetFont() );
-    aNewFont.SetTransparent( TRUE );
+    aVersionText.SetText( sVersion );
+    aCopyrightText.SetText( aCopyrightTextStr );
 
     aVersionText.SetFont( aNewFont );
-    aCopyrightText.SetFont( aNewFont );
-
     aVersionText.SetBackground();
+    aVersionText.SetControlForeground( aTextColor );
+
+    aCopyrightText.SetFont( aNewFont );
     aCopyrightText.SetBackground();
+    aCopyrightText.SetControlForeground( aTextColor );
+
     aInfoLink.SetURL( aLinkStr );
     aInfoLink.SetBackground();
     aInfoLink.SetClickHdl( LINK( this, AboutDialog, HandleHyperlink ) );
 
-    Color aTextColor( rSettings.GetWindowTextColor() );
-    aVersionText.SetControlForeground( aTextColor );
-    aCopyrightText.SetControlForeground( aTextColor );
-
-    aCopyrightText.SetText( aCopyrightTextStr );
-
     // determine size and position of the dialog & elements
-    Size aAppLogoSiz = aAppLogo.GetSizePixel();
-    Size aOutSiz     = GetOutputSizePixel();
-    aOutSiz.Width()  = aAppLogoSiz.Width();
-
-    // analyze size of the aVersionText widget
-    // character size
-    Size a6Size      = aVersionText.LogicToPixel( Size( 6, 6 ), MAP_APPFONT );
-    // preferred Version widget size
-    Size aVTSize = aVersionText.CalcMinimumSize();
-    long nY          = aAppLogoSiz.Height() + ( a6Size.Height() * 2 );
-    long nDlgMargin  = a6Size.Width() * 3 ;
-    long nCtrlMargin = aVTSize.Height() + ( a6Size.Height() * 2 );
-    long nTextWidth  = aOutSiz.Width() - nDlgMargin;
+    Size aAppLogoSize = aAppLogo.GetSizePixel();
+    Size aOutSize     = GetOutputSizePixel();
+    aOutSize.Width()  = aAppLogoSize.Width();
+
+    // get actual size of the aVersionText widget
+    Size aVersionTextSize = aVersionText.LogicToPixel( Size( 6, 6 ),
+                                                       MAP_APPFONT );
+    // y of VersionText
+    long nY              = aAppLogoSize.Height() + SPACE_OFFSET;
+    long nDlgHoriMargin  = aVersionTextSize.Width() * 3 ;
+    long nTextWidth      = aOutSize.Width() - nDlgHoriMargin;
 
     // finally set the aVersionText widget position and size
+    // preferred Version widget size
+    Size aVTSize     = aVersionText.CalcMinimumSize();
     Size aVTCopySize = aVTSize;
-    Point aVTCopyPnt;
+    Point aVTPnt;
     aVTCopySize.Width()  = nTextWidth;
-    aVTCopyPnt.X() = ( aOutSiz.Width() - aVTCopySize.Width() ) / 2;
-    aVTCopyPnt.Y() = nY;
-    aVersionText.SetPosSizePixel( aVTCopyPnt, aVTCopySize );
-    
-    nY += nCtrlMargin;
+    aVTPnt.X() = ( aOutSize.Width() - aVTCopySize.Width() ) / 2;
+    aVTPnt.Y() = nY;
+    aVersionText.SetPosSizePixel( aVTPnt, aVTCopySize );
     
-    // OK-Button-Position (at the bottom and centered)
-    Size aOKSiz = aOKButton.GetSizePixel();
-    Point aOKPnt = aOKButton.GetPosPixel();
-    
-    // FixedHyperlink with more info link
-    Point aLinkPnt = aInfoLink.GetPosPixel();
-    Size aLinkSize = aInfoLink.GetSizePixel();
+    // jump to start of Copyright text
+    nY += aVTSize.Height() + aVersionTextSize.Height();
 
     // Multiline edit with Copyright-Text
-    Point aCopyPnt = aCopyrightText.GetPosPixel();
-    Size aCopySize = aCopyrightText.GetSizePixel();
-    aCopySize.Width()  = nTextWidth;
-    aCopySize.Height() = aOutSiz.Height() - nY - ( aOKSiz.Height() * 2 ) - 3*aLinkSize.Height() - 
nCtrlMargin;
-
-    aCopyPnt.X() = ( aOutSiz.Width() - aCopySize.Width() ) / 2;
-    aCopyPnt.Y() = nY;
-    aCopyrightText.SetPosSizePixel( aCopyPnt, aCopySize );
-
-    nY += aCopySize.Height() + aLinkSize.Height();
+    Size aCRSize = aCopyrightText.CalcMinimumSize();
+    Point aCRPnt;
+    aCRSize.Width()  = nTextWidth;
+    aCRSize.Height() = aOutSize.Height() - nY \
+        - 2 * aOKButton.GetSizePixel().Height() \
+        - aInfoLink.GetSizePixel().Height();
+    aCRPnt.X() = ( aOutSize.Width() - aCRSize.Width() ) / 2;
+    aCRPnt.Y() = nY;
+    aCopyrightText.SetPosSizePixel( aCRPnt, aCRSize );
 
+    // FixedHyperlink with more info link
+    Point aLinkPnt = aInfoLink.GetPosPixel();
+    Size aLinkSize = aInfoLink.GetSizePixel();
+    nY += aCRSize.Height() + aLinkSize.Height();
     aLinkSize.Width() = aInfoLink.CalcMinimumSize().Width();
-    aLinkPnt.X() = ( aOutSiz.Width() - aLinkSize.Width() ) / 2;
+    aLinkPnt.X() = ( aOutSize.Width() - aLinkSize.Width() ) / 2;
     aLinkPnt.Y() = nY;
     aInfoLink.SetPosSizePixel( aLinkPnt, aLinkSize );
 
-    nY += aLinkSize.Height() + nCtrlMargin;
+    // OK-Button-Position (at the bottom and centered)
+    Size aOKSize = aOKButton.GetSizePixel();
+    Point aOKPnt;
 
-    aOKPnt.X() = ( aOutSiz.Width() - aOKSiz.Width() ) / 2;
-    aOKPnt.Y() = nY;
+    aOKPnt.X() = ( aOutSize.Width() - aOKSize.Width() ) / 2;
+    aOKPnt.Y() = aOutSize.Height() - aOKSize.Height();
     aOKButton.SetPosPixel( aOKPnt );
 
     // Change the width of the dialog
-    SetOutputSizePixel( aOutSiz );
-
-    FreeResource();
-
+    SetOutputSizePixel( aOutSize );
     // explizite Help-Id
     SetHelpId( SID_ABOUT );
+    FreeResource();
 }
 
 // -----------------------------------------------------------------------
-
-AboutDialog::~AboutDialog()
-{
-    // L"oschen des Entwickleraufrufs
-    if ( aAccelList.Count() )
-    {
-        GetpApp()->RemoveAccel( aAccelList.First() );
-        Accelerator* pAccel = aAccelList.Last();
-
-        while ( pAccel )
-        {
-            delete pAccel;
-            pAccel = aAccelList.Prev();
-        }
-    }
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( AboutDialog, TimerHdl, Timer *, pTimer )
-{
-    (void)pTimer; //unused
-    ++m_nPendingScrolls;
-    Invalidate( INVALIDATE_NOERASE | INVALIDATE_NOCHILDREN );
-    return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( AboutDialog, AccelSelectHdl, Accelerator *, pAccelerator )
-{
-#ifdef YURI_DARIO
-    aCopyrightText.SetHelpText( DEFINE_CONST_UNICODE("Conoscere qualcuno ovunque egli sia, con cui 
comprendersi nonostante le distanze\n"
-                      "e le differenze, puo' trasformare la terra in un giardino. baci Valeria") );
-#endif
-
-    (void)pAccelerator; //unused
-    // init Timer
-    aTimer.SetTimeoutHdl( LINK( this, AboutDialog, TimerHdl ) );
-
-    // init scroll mode
-    nOff = GetOutputSizePixel().Height();
-    MapMode aMapMode( MAP_PIXEL );
-    SetMapMode( aMapMode );
-    bNormal = FALSE;
-
-    // start scroll Timer
-    aTimer.SetTimeout( SCROLL_TIMER );
-    aTimer.Start();
-    return 0;
-}
-
-// -----------------------------------------------------------------------
-
 IMPL_LINK( AboutDialog, HandleHyperlink, svt::FixedHyperlink*, pHyperlink )
 {
     rtl::OUString sURL=pHyperlink->GetURL();
     rtl::OUString sTitle=GetText();
 
-    if ( ! sURL.getLength() ) // Nothing to do, when the URL is empty
-        return 1;
+    // Nothing to do, when the URL is empty
+    if ( ! sURL.getLength() ) return 1;
+
     try 
     {
         uno::Reference< system::XSystemShellExecute > xSystemShellExecute(
             ::comphelper::getProcessServiceFactory()->createInstance(
-                DEFINE_CONST_UNICODE("com.sun.star.system.SystemShellExecute") ), 
uno::UNO_QUERY_THROW );
-        xSystemShellExecute->execute( sURL, rtl::OUString(),  
system::SystemShellExecuteFlags::DEFAULTS );
+                DEFINE_CONST_UNICODE("com.sun.star.system.SystemShellExecute") ),
+            uno::UNO_QUERY_THROW );
+        xSystemShellExecute->execute( sURL, rtl::OUString(),
+                                      system::SystemShellExecuteFlags::DEFAULTS );
     }
     catch ( uno::Exception& )
     {
@@ -317,8 +233,6 @@ IMPL_LINK( AboutDialog, HandleHyperlink, svt::FixedHyperlink*, pHyperlink )
 
 BOOL AboutDialog::Close()
 {
-    // stop Timer and finish the dialog
-    aTimer.Stop();
     EndDialog( RET_OK );
     return( FALSE );
 }
@@ -328,73 +242,8 @@ BOOL AboutDialog::Close()
 void AboutDialog::Paint( const Rectangle& rRect )
 {
     SetClipRegion( rRect );
-
-    if ( bNormal ) // not in scroll mode
-    {
-        Point aPos( m_nDeltaWidth / 2, 0 );
-        DrawImage( aPos, aAppLogo );
-        return;
-    }
-
-    // scroll the content
-    const int nDeltaY = -SCROLL_OFFSET * m_nPendingScrolls;
-    if( !nDeltaY )
-        return;
-    nOff += nDeltaY;
-    Scroll( 0, nDeltaY, SCROLL_NOERASE );
-    m_nPendingScrolls = 0;
-
-    // draw the credits text
-    const Font aOrigFont = GetFont();
-    const int nFullWidth = GetOutputSizePixel().Width();
-
-    int nY = nOff;
-    const int nDevCnt = static_cast<int>( aDeveloperAry.Count() );
-    for( int i = 0; i < nDevCnt; ++i )
-    {
-        if( nY >= rRect.Bottom() )
-            break;
-
-        int nPos2 = nY + GetTextHeight() + 3;
-        if( nPos2 >= rRect.Top() + nDeltaY )
-        {
-            const String aStr = aDeveloperAry.GetString(i);
-            const long nVal = aDeveloperAry.GetValue(i);
-
-            if ( nVal )
-            {
-                // emphasize the headers
-                Font aFont = aOrigFont;
-                aFont.SetWeight( (FontWeight)nVal );
-                SetFont( aFont );
-                nPos2 = nY + GetTextHeight() + 3;
-            }
-
-            // clear text background
-            Rectangle aEraseRect( Point(0,nY), Size( nFullWidth, nPos2-nY));
-            Erase( aEraseRect );
-
-            // draw centered text
-            const long nTextWidth = GetTextWidth( aStr );
-            long nX = (nFullWidth - 5 - nTextWidth) / 2;
-            if( nX < 0 )
-                nX = SPACE_OFFSET;
-            const Point aPnt( nX, nY );
-            DrawText( aPnt, aStr );
-
-            // restore the font if needed
-            if( nVal )
-                SetFont( aOrigFont );
-        }
-        nY = nPos2;
-    }
-
-    // close dialog if the whole text has been scrolled
-    if ( nY <= 0 )
-    {
-        bNormal = TRUE;
-        Close();
-    }
+    Point aPos( 0, 0 );
+    DrawImage( aPos, aAppLogo );
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-- 
1.7.1


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.