summaryrefslogtreecommitdiff
path: root/cui/source/dialogs/about.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/dialogs/about.cxx')
-rw-r--r--cui/source/dialogs/about.cxx280
1 files changed, 66 insertions, 214 deletions
diff --git a/cui/source/dialogs/about.cxx b/cui/source/dialogs/about.cxx
index d40e4525b2d1..0fcb96b31a5b 100644
--- a/cui/source/dialogs/about.cxx
+++ b/cui/source/dialogs/about.cxx
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <vcl/layout.hxx>
#include <vcl/svapp.hxx>
#include <vcl/msgbox.hxx>
@@ -41,7 +42,6 @@
#include <sfx2/sfxuno.hxx>
#include <sfx2/sfxcommands.h>
#include "about.hxx"
-#include "about.hrc"
#include <sfx2/sfxdefs.hxx>
#include <sfx2/app.hxx>
#include <rtl/ustrbuf.hxx>
@@ -58,52 +58,42 @@ enum AboutDialogButton
WEBSITE_BUTTON
};
-AboutDialog::AboutDialog( Window* pParent, const ResId& rId) :
- SfxModalDialog ( pParent, rId ),
- aVersionText ( this, ResId( ABOUT_VERSION_TEXT, *rId.GetResMgr() ) ),
- aDescriptionText ( this, ResId( ABOUT_DESCRIPTION_TEXT, *rId.GetResMgr() ) ),
- aCopyrightText ( this, ResId( ABOUT_COPYRIGHT_TEXT, *rId.GetResMgr() ) ),
- aLogoImage ( this ),
- aLogoReplacement ( this, ResId( ABOUT_LOGO_REPLACEMENT, *rId.GetResMgr() ) ),
- aCreditsButton ( this, ResId( ABOUT_BTN_CREDITS, *rId.GetResMgr() ) ),
- aWebsiteButton ( this, ResId( ABOUT_BTN_WEBSITE, *rId.GetResMgr() ) ),
- aCancelButton ( this, ResId( ABOUT_BTN_CANCEL, *rId.GetResMgr() ) ),
- m_aVersionTextStr(ResId(ABOUT_STR_VERSION, *rId.GetResMgr()).toString().trim()),
- m_aVendorTextStr(ResId(ABOUT_STR_VENDOR, *rId.GetResMgr())),
- m_aCopyrightTextStr(ResId(ABOUT_STR_COPYRIGHT, *rId.GetResMgr())),
- m_aBasedTextStr(ResId(ABOUT_STR_BASED, *rId.GetResMgr())),
- m_aBasedDerivedTextStr(ResId(ABOUT_STR_BASED_DERIVED, *rId.GetResMgr())),
- m_aCreditsLinkStr(ResId( ABOUT_STR_LINK_CREDITS, *rId.GetResMgr())),
- m_sBuildStr(ResId(ABOUT_STR_BUILD, *rId.GetResMgr())),
- m_aDescriptionTextStr(ResId(ABOUT_STR_DESCRIPTION, *rId.GetResMgr()))
+AboutDialog::AboutDialog(Window* pParent)
+ : SfxModalDialog(pParent, "AboutDialog", "cui/ui/aboutdialog.ui")
{
- // Populate text items
- aLogoReplacement.SetText ( utl::ConfigManager::getProductName() );
-
- aVersionText.SetText( GetVersionString() );
-
- aDescriptionText.SetText( m_aDescriptionTextStr );
-
- rtl::OUString aCopyrightString = GetCopyrightString();
- aCopyrightText.SetText( aCopyrightString );
+ get(m_pLogoReplacement, "logoreplacement");
+ get(m_pLogoImage, "logo");
+ get(m_pVersion, "version");
+ get(m_pDescriptionText, "description");
+ get(m_pCopyrightText, "copyright");
+ m_aCopyrightTextStr = m_pCopyrightText->GetText();
+ get(m_pWebsiteButton, "website");
+ get(m_pCreditsButton, "credits");
+ m_aCreditsLinkStr = get<FixedText>("link")->GetText();
+ m_sBuildStr = get<FixedText>("buildid")->GetText();
+ m_aVendorTextStr = get<FixedText>("vendor")->GetText();
+ m_aVersionTextStr = m_pVersion->GetText();
+ m_aBasedTextStr = get<FixedText>("libreoffice")->GetText();
+ m_aBasedDerivedTextStr = get<FixedText>("derived")->GetText();
+
+ m_pVersion->SetText(GetVersionString());
+
+ OUString aCopyrightString = GetCopyrightString();
+ m_pCopyrightText->SetText( aCopyrightString );
StyleControls();
- LayoutControls();
+
+ SetLogo();
// Allow the button to be identifiable once they are clicked
- aCreditsButton.SetData( (void*)CREDITS_BUTTON );
- aWebsiteButton.SetData( (void*)WEBSITE_BUTTON );
+ m_pCreditsButton->SetData( (void*)CREDITS_BUTTON );
+ m_pWebsiteButton->SetData( (void*)WEBSITE_BUTTON );
// Connect all handlers
- aCreditsButton.SetClickHdl( LINK( this, AboutDialog, HandleClick ) );
- aWebsiteButton.SetClickHdl( LINK( this, AboutDialog, HandleClick ) );
+ m_pCreditsButton->SetClickHdl( LINK( this, AboutDialog, HandleClick ) );
+ m_pWebsiteButton->SetClickHdl( LINK( this, AboutDialog, HandleClick ) );
- aCancelButton.SetClickHdl( LINK( this, AboutDialog, CancelHdl ) );
-
- FreeResource();
-
- // explicit Help-Id
- SetHelpId( CMD_SID_ABOUT );
+ get<PushButton>("close")->GrabFocus();
}
IMPL_LINK( AboutDialog, HandleClick, PushButton*, pButton )
@@ -145,212 +135,80 @@ IMPL_LINK( AboutDialog, HandleClick, PushButton*, pButton )
void AboutDialog::StyleControls()
{
// Make all the controls have a transparent background
- aLogoImage.SetBackground();
- aLogoReplacement.SetPaintTransparent( sal_True );
- aVersionText.SetPaintTransparent( sal_True );
- aDescriptionText.SetPaintTransparent( sal_True );
- aCopyrightText.SetPaintTransparent( sal_True );
+ m_pLogoImage->SetBackground();
+ m_pLogoReplacement->SetPaintTransparent(true);
+ m_pVersion->SetPaintTransparent(true);
+ m_pDescriptionText->SetPaintTransparent(true);
+ m_pCopyrightText->SetPaintTransparent(true);
Font aLabelFont = GetSettings().GetStyleSettings().GetLabelFont();
Font aLargeFont = aLabelFont;
aLargeFont.SetSize( Size( 0, aLabelFont.GetSize().Height() * 3 ) );
// Logo Replacement Text
- aLogoReplacement.SetControlFont( aLargeFont );
- aLogoReplacement.SetTextSelectable( sal_False );
+ m_pLogoReplacement->SetControlFont( aLargeFont );
// Description Text
aLargeFont.SetSize( Size( 0, aLabelFont.GetSize().Height() * 1.3 ) );
- aDescriptionText.SetControlFont( aLargeFont );
- aDescriptionText.SetTextSelectable( sal_False );
+ m_pDescriptionText->SetControlFont(aLargeFont);
// Version Text
aLargeFont.SetSize( Size( 0, aLabelFont.GetSize().Height() * 1.2 ) );
- aVersionText.SetControlFont( aLargeFont );
- aVersionText.EnableCursor( sal_False );
-
- // Copyright Text
- aCopyrightText.SetTextSelectable( sal_False );
+ m_pVersion->SetControlFont(aLargeFont);
// If not in high-contrast mode, hard-code colors
if ( !(Application::GetSettings().GetStyleSettings().GetHighContrastMode()) )
{
- aLogoReplacement.SetControlForeground( Color( 51, 51, 51 ) );
- aVersionText.SetControlForeground( Color( 102, 102, 102 ) );
- aDescriptionText.SetControlForeground( Color( 51, 51, 51 ) );
- aCopyrightText.SetControlForeground( Color( 102, 102, 102 ) );
+ m_pLogoReplacement->SetControlForeground(Color(51, 51, 51));
+ m_pVersion->SetControlForeground(Color(102, 102, 102));
+ m_pDescriptionText->SetControlForeground(Color(51, 51, 51));
+ m_pCopyrightText->SetControlForeground(Color(102, 102, 102));
}
-
-
- aCancelButton.GrabFocus();
}
-void AboutDialog::LayoutControls()
+void AboutDialog::SetLogo()
{
- // Get the size of the screen
- Rectangle aScreenRect = Application::GetScreenPosSizePixel( (unsigned int)0 );
- // Obtain an appropriate text width from the size of the screen
- sal_Int32 aIdealTextWidth = aScreenRect.GetWidth() / 2.4;
-
- sal_Int32 aDialogBorder = 12;
- Size aDialogSize ( aIdealTextWidth + aDialogBorder * 2, 0 );
-
- // Preliminarily layout buttons, so we see if we need a wider window
- Size aButtonSize;
- Point aButtonPos;
- sal_Int32 aButtonsWidth = 0;
- LayoutButtons( aDialogSize.Width(), aDialogBorder, aButtonPos, aButtonSize,
- aButtonsWidth );
-
- if (aButtonsWidth > 0)
- aDialogSize.Width() += aButtonsWidth;
-
- // Render and Position Logo
- Size aLogoSize( aIdealTextWidth, aIdealTextWidth / 20 );
- Point aLogoPos( 0, 0 );
+ long nWidth = get_content_area()->get_preferred_size().Width();
// load svg logo, specify desired width, scale height isotrophically
- if( SfxApplication::loadBrandSvg("flat_logo",
- aLogoBitmap,
- aDialogSize.Width()) &&
+ if( SfxApplication::loadBrandSvg("flat_logo", aLogoBitmap, nWidth) &&
!aLogoBitmap.IsEmpty() )
{
- aLogoSize = aLogoBitmap.GetSizePixel();
-
- aLogoImage.SetImage( Image( aLogoBitmap ) );
- aLogoImage.SetPosSizePixel( aLogoPos, aLogoSize );
- aLogoImage.Show();
+ m_pLogoImage->SetImage(Image(aLogoBitmap));
+ m_pLogoReplacement->Hide();
+ m_pLogoImage->Show();
}
else
{
- aLogoPos.X() = aDialogBorder;
- aLogoPos.Y() = aDialogBorder;
- aLogoSize = aLogoReplacement.CalcMinimumSize();
- aLogoSize.Width() = aIdealTextWidth;
- aLogoReplacement.SetPosSizePixel( aLogoPos, aLogoSize );
+ m_pLogoImage->Hide();
+ m_pLogoReplacement->Show();
}
-
- // Position version text
- sal_Int32 aLogoVersionSpacing = aLogoSize.Height() * 0.15;
- Point aVersionPos( aDialogBorder,
- aLogoPos.Y() + aLogoSize.Height() + aLogoVersionSpacing );
- Size aVersionSize = aVersionText.GetSizePixel();
- aVersionSize.Width() = aIdealTextWidth;
- aVersionText.SetPosSizePixel( aVersionPos, aVersionSize );
- aVersionSize = aVersionText.CalcMinimumSize();
- aVersionText.SetSizePixel( aVersionSize );
-
- // Position description text
- sal_Int32 aVersionDescriptionSpacing = aLogoSize.Height() * 0.45;
- Point aDescriptionPos( aDialogBorder, aVersionPos.Y() + aVersionSize.Height() + aVersionDescriptionSpacing );
- Size aDescriptionSize = aDescriptionText.GetSizePixel();
- aDescriptionSize.Width() = aIdealTextWidth;
- aDescriptionText.SetPosSizePixel( aDescriptionPos, aDescriptionSize );
- aDescriptionSize = aDescriptionText.CalcMinimumSize();
- aDescriptionText.SetSizePixel( aDescriptionSize );
-
- // Layout copyright text
- Point aCopyrightPos( aDialogBorder, aDescriptionPos.Y() + aDescriptionText.GetSizePixel().Height() + aVersionDescriptionSpacing );
- Size aCopyrightSize = aCopyrightText.GetSizePixel();
- aCopyrightSize.Width() = aIdealTextWidth;
- aCopyrightText.SetPosSizePixel( aCopyrightPos, aCopyrightSize );
- aCopyrightSize = aCopyrightText.CalcMinimumSize();
- aCopyrightSize.Width() = aIdealTextWidth;
- aCopyrightText.SetSizePixel( aCopyrightSize );
-
- // Move buttons into final place
- sal_Int32 aButtonPosY = aDialogBorder + aCopyrightPos.Y() +
- aCopyrightText.GetSizePixel().Height() + aVersionDescriptionSpacing;
-
- MoveControl(aCreditsButton, 0, aButtonPosY);
- MoveControl(aWebsiteButton, 0, aButtonPosY);
- MoveControl(aCancelButton, 0, aButtonPosY);
-
- // The centers everything again, if aDialogSize.Width() has become wider
- // before; the -20 "fixes" a weird text centering bug
- MoveControl(aVersionText, (aDialogSize.Width() - aVersionText.GetSizePixel().Width() - 20)/2, 0);
- MoveControl(aDescriptionText, (aDialogSize.Width() - aDescriptionText.GetSizePixel().Width() - 20)/2, 0);
- MoveControl(aCopyrightText, (aDialogSize.Width() - aCopyrightText.GetSizePixel().Width() - 20)/2, 0);
-
- aDialogSize.Height() = aButtonPosY + aButtonSize.Height() + aDialogBorder;
-
-
- // Layout background image
- if ( !(Application::GetSettings().GetStyleSettings().GetHighContrastMode()) )
- SfxApplication::loadBrandSvg("shell/about",
- aBackgroundBitmap,
- aDialogSize.Width());
- SetOutputSizePixel( aDialogSize );
-
}
-void AboutDialog::LayoutButtons(sal_Int32 aDialogWidth, sal_Int32 aDialogBorder,
- Point& aButtonPos, Size& aButtonSize,
- sal_Int32& aButtonsWidth )
+void AboutDialog::Resize()
{
- // Position credits button
- sal_Int32 aButtonVPadding = 5;
- sal_Int32 aButtonHPadding = 4;
- sal_Int32 aAdjacentButtonSpacing = 15;
- sal_Int32 aCreditsButtonWidth = aCreditsButton.CalcMinimumSize().Width();
- sal_Int32 aWebsiteButtonWidth = aWebsiteButton.CalcMinimumSize().Width();
- sal_Int32 aCancelButtonWidth = aCancelButton.CalcMinimumSize().Width();
- sal_Int32 aLargestButtonWidth = 70;
-
- if ( aLargestButtonWidth < aCreditsButtonWidth )
- aLargestButtonWidth = aCreditsButtonWidth;
- if ( aLargestButtonWidth < aWebsiteButtonWidth )
- aLargestButtonWidth = aWebsiteButtonWidth;
- if ( aLargestButtonWidth < aCancelButtonWidth )
- aLargestButtonWidth = aCancelButtonWidth;
-
- aButtonSize.Width() = aLargestButtonWidth + ( 2 * aButtonHPadding );
- aButtonSize.Height() = aWebsiteButton.CalcMinimumSize().Height() + ( 2 * aButtonVPadding );
-
- aCreditsButton.SetSizePixel( aButtonSize );
- aWebsiteButton.SetSizePixel( aButtonSize );
- aCancelButton.SetSizePixel( aButtonSize );
-
- sal_Int32 aButtonSpacing = aDialogWidth - ( aDialogBorder * 2 ) - ( aButtonSize.Width() * 3 ) - aAdjacentButtonSpacing ;
- if (aButtonSpacing < aAdjacentButtonSpacing)
+ SfxModalDialog::Resize();
+ // Load background image
+ if (isInitialLayout(this) && !(Application::GetSettings().GetStyleSettings().GetHighContrastMode()))
{
- aButtonsWidth = aAdjacentButtonSpacing - aButtonSpacing;
- aButtonSpacing = aAdjacentButtonSpacing;
+ SfxApplication::loadBrandSvg("shell/about", aBackgroundBitmap, GetOutputSizePixel().Width());
}
-
- aButtonPos.X() = aDialogBorder;
- aButtonPos.Y() = 0;
-
- aCreditsButton.SetPosPixel( aButtonPos );
-
- aButtonPos.X() += aButtonSize.Width() + aAdjacentButtonSpacing;
- aWebsiteButton.SetPosPixel( aButtonPos );
-
- aButtonPos.X() += aButtonSize.Width() + aButtonSpacing;
- aCancelButton.SetPosPixel( aButtonPos );
-
-
-}
-
-void AboutDialog::MoveControl(Control& rControl, sal_Int32 X, sal_Int32 Y)
-{
- Point aControlPos = rControl.GetPosPixel();
- aControlPos.X() += X;
- aControlPos.Y() += Y;
- rControl.SetPosPixel(aControlPos);
}
void AboutDialog::Paint( const Rectangle& rRect )
{
SetClipRegion(Region(rRect));
- Point aPos ( rRect.GetWidth() - aBackgroundBitmap.GetSizePixel().Width(), rRect.GetHeight() - aBackgroundBitmap.GetSizePixel().Height() );
- DrawBitmapEx( aPos, aBackgroundBitmap );
+
+ Size aSize(GetOutputSizePixel());
+ Point aPos(aSize.Width() - aBackgroundBitmap.GetSizePixel().Width(),
+ aSize.Height() - aBackgroundBitmap.GetSizePixel().Height());
+ DrawBitmapEx(aPos, aBackgroundBitmap);
}
-rtl::OUString AboutDialog::GetBuildId()
+OUString AboutDialog::GetBuildId()
{
- rtl::OUString sDefault;
- rtl::OUString sBuildId(utl::Bootstrap::getBuildVersion(sDefault));
+ OUString sDefault;
+ OUString sBuildId(utl::Bootstrap::getBuildVersion(sDefault));
if (!sBuildId.isEmpty())
return sBuildId;
@@ -366,15 +224,15 @@ rtl::OUString AboutDialog::GetBuildId()
return sBuildId;
}
-rtl::OUString AboutDialog::GetVersionString()
+OUString AboutDialog::GetVersionString()
{
- rtl::OUString sVersion = m_aVersionTextStr;
+ OUString sVersion = m_aVersionTextStr;
- rtl::OUString sBuildId = GetBuildId();
+ OUString sBuildId = GetBuildId();
if (!sBuildId.trim().isEmpty())
{
- sVersion += " ";
+ sVersion += "\n";
if (m_sBuildStr.indexOf("$BUILDID") == -1)
{
SAL_WARN( "cui.dialogs", "translated Build Id string in translations doesn't contain $BUILDID placeholder" );
@@ -407,12 +265,6 @@ rtl::OUString AboutDialog::GetCopyrightString()
return aCopyrightString;
}
-IMPL_LINK_NOARG(AboutDialog, CancelHdl)
-{
- Close();
- return 0;
-}
-
sal_Bool AboutDialog::Close()
{
EndDialog( RET_OK );