diff options
-rw-r--r-- | cui/AllLangResTarget_cui.mk | 1 | ||||
-rw-r--r-- | cui/UI_cui.mk | 1 | ||||
-rw-r--r-- | cui/source/dialogs/about.cxx | 280 | ||||
-rw-r--r-- | cui/source/dialogs/about.hrc | 41 | ||||
-rw-r--r-- | cui/source/dialogs/about.src | 112 | ||||
-rw-r--r-- | cui/source/factory/dlgfact.cxx | 2 | ||||
-rw-r--r-- | cui/source/inc/about.hxx | 57 | ||||
-rw-r--r-- | cui/uiconfig/ui/aboutdialog.ui | 296 |
8 files changed, 390 insertions, 400 deletions
diff --git a/cui/AllLangResTarget_cui.mk b/cui/AllLangResTarget_cui.mk index 6a806b133804..f387d8c859b5 100644 --- a/cui/AllLangResTarget_cui.mk +++ b/cui/AllLangResTarget_cui.mk @@ -53,7 +53,6 @@ $(eval $(call gb_SrsTarget_add_files,cui/res,\ cui/source/customize/cfg.src \ cui/source/customize/eventdlg.src \ cui/source/customize/macropg.src \ - cui/source/dialogs/about.src \ cui/source/dialogs/colorpicker.src \ cui/source/dialogs/commonlingui.src \ cui/source/dialogs/cuiimapdlg.src \ diff --git a/cui/UI_cui.mk b/cui/UI_cui.mk index 3220a15757e3..c5cf568ede56 100644 --- a/cui/UI_cui.mk +++ b/cui/UI_cui.mk @@ -10,6 +10,7 @@ $(eval $(call gb_UI_UI,cui)) $(eval $(call gb_UI_add_uifiles,cui,\ + cui/uiconfig/ui/aboutdialog \ cui/uiconfig/ui/asiantypography \ cui/uiconfig/ui/backgroundpage \ cui/uiconfig/ui/borderpage \ 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 ); diff --git a/cui/source/dialogs/about.hrc b/cui/source/dialogs/about.hrc deleted file mode 100644 index f4e772fbbb9d..000000000000 --- a/cui/source/dialogs/about.hrc +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * 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 . - */ - -#include <sfx2/sfx.hrc> - -#define ABOUT_STR_BUILD 1 -#define ABOUT_STR_VERSION 2 -#define ABOUT_STR_VENDOR 3 -#define ABOUT_STR_COPYRIGHT 4 -#define ABOUT_STR_BASED 5 -#define ABOUT_STR_BASED_DERIVED 6 -#define ABOUT_STR_LINK_CREDITS 8 -#define ABOUT_LOGO_REPLACEMENT 9 -#define ABOUT_BTN_CREDITS 10 -#define ABOUT_DESCRIPTION_TEXT 11 -#define ABOUT_COPYRIGHT_TEXT 12 -#define ABOUT_COPYRIGHT_TEXT_SHADOW 13 -#define ABOUT_IMAGE_LOGO 14 -#define ABOUT_BTN_WEBSITE 15 -#define ABOUT_BTN_LICENSE 16 -#define ABOUT_VERSION_TEXT 17 -#define ABOUT_STR_DESCRIPTION 18 -#define ABOUT_BTN_CANCEL 19 - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/dialogs/about.src b/cui/source/dialogs/about.src deleted file mode 100644 index 2cedec171eac..000000000000 --- a/cui/source/dialogs/about.src +++ /dev/null @@ -1,112 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * 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 . - */ - -#include "about.hrc" - -ModalDialog RID_DEFAULTABOUT -{ - OutputSize = TRUE ; - Moveable = TRUE ; - SVLook = TRUE ; - MultiLineEdit ABOUT_LOGO_REPLACEMENT - { - Border = FALSE ; - IgnoreTab = TRUE ; - ReadOnly = TRUE ; - AutoVScroll = TRUE ; - LEFT = FALSE ; - CENTER = TRUE ; - RIGHT = FALSE ; - }; - MultiLineEdit ABOUT_DESCRIPTION_TEXT - { - Border = FALSE ; - IgnoreTab = TRUE ; - ReadOnly = TRUE ; - AutoVScroll = TRUE ; - LEFT = FALSE ; - CENTER = TRUE ; - RIGHT = FALSE ; - }; - MultiLineEdit ABOUT_COPYRIGHT_TEXT - { - Border = FALSE ; - IgnoreTab = TRUE ; - ReadOnly = TRUE ; - LEFT = FALSE ; - CENTER = TRUE ; - RIGHT = FALSE ; - }; - MultiLineEdit ABOUT_VERSION_TEXT - { - Border = FALSE ; - IgnoreTab = TRUE ; - ReadOnly = TRUE ; - LEFT = FALSE ; - CENTER = TRUE ; - RIGHT = FALSE ; - }; - String ABOUT_STR_VERSION - { - Text [ en-US ] = "Version %ABOUTBOXPRODUCTVERSION%ABOUTBOXPRODUCTVERSIONSUFFIX"; - }; - String ABOUT_STR_DESCRIPTION - { - Text [ en-US ] = "%PRODUCTNAME is a modern, easy-to-use, open source productivity suite for word processing, spreadsheets, presentations and more."; - }; - String ABOUT_STR_VENDOR - { - Text[ en-US ] = "This release was supplied by %OOOVENDOR"; - }; - String ABOUT_STR_COPYRIGHT - { - Text[ en-US ] = "Copyright © 2000 - 2013 LibreOffice contributors and/or their affiliates"; - }; - String ABOUT_STR_BASED - { - Text[ en-US ] = "LibreOffice was based on OpenOffice.org"; - }; - String ABOUT_STR_BASED_DERIVED - { - Text[ en-US ] = "%PRODUCTNAME is derived from LibreOffice which was based on OpenOffice.org"; - }; - String ABOUT_STR_BUILD - { - Text[ en-US ] = "(Build ID: $BUILDID)"; - }; - String ABOUT_STR_LINK_CREDITS - { - Text[ en-US ] = "http://www.libreoffice.org/about-us/credits/"; - }; - PushButton ABOUT_BTN_CREDITS - { - Text [ en-US ] = "Credits"; - }; - PushButton ABOUT_BTN_WEBSITE - { - Text [ en-US ] = "Website"; - }; - CancelButton ABOUT_BTN_CANCEL - { - DefButton = TRUE ; - Text [ en-US ] = "~Close"; - }; -}; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx index a8c280d07c86..52bb6df63317 100644 --- a/cui/source/factory/dlgfact.cxx +++ b/cui/source/factory/dlgfact.cxx @@ -1010,7 +1010,7 @@ VclAbstractDialog* AbstractDialogFactory_Impl::CreateVclDialog( Window* pParent, { case RID_DEFAULTABOUT: { - pDlg = new AboutDialog( pParent, CUI_RES( (sal_uInt16) nResId ) ); + pDlg = new AboutDialog(pParent); break; } case SID_OPTIONS_TREEDIALOG : diff --git a/cui/source/inc/about.hxx b/cui/source/inc/about.hxx index 4f824e314f84..2263eb2539d7 100644 --- a/cui/source/inc/about.hxx +++ b/cui/source/inc/about.hxx @@ -19,10 +19,10 @@ #ifndef _ABOUT_HXX #define _ABOUT_HXX -#include <vcl/button.hxx> #include <vcl/accel.hxx> -#include <svtools/svmedit.hxx> -#include <svtools/stdctrl.hxx> +#include <vcl/button.hxx> +#include <vcl/fixed.hxx> +#include <vcl/vclmedit.hxx> #include <sfx2/basedlgs.hxx> ///< for SfxModalDialog #include <vector> @@ -34,43 +34,38 @@ private: BitmapEx aBackgroundBitmap; BitmapEx aLogoBitmap; + VclMultiLineEdit* m_pVersion; + FixedText* m_pDescriptionText; + FixedText* m_pCopyrightText; + FixedImage* m_pLogoImage; + FixedText* m_pLogoReplacement; + PushButton* m_pCreditsButton; + PushButton* m_pWebsiteButton; - MultiLineEdit aVersionText; - MultiLineEdit aDescriptionText; - MultiLineEdit aCopyrightText; - FixedImage aLogoImage; - MultiLineEdit aLogoReplacement; - PushButton aCreditsButton; - PushButton aWebsiteButton; - CancelButton aCancelButton; - - String aVersionData; - rtl::OUString m_aVersionTextStr; - String m_aVendorTextStr; - String m_aCopyrightTextStr; - String m_aBasedTextStr; - String m_aBasedDerivedTextStr; - String m_aCreditsLinkStr; - rtl::OUString m_sBuildStr; - String m_aDescriptionTextStr; + OUString aVersionData; + OUString m_aVersionTextStr; + OUString m_aVendorTextStr; + OUString m_aCopyrightTextStr; + OUString m_aBasedTextStr; + OUString m_aBasedDerivedTextStr; + OUString m_aCreditsLinkStr; + OUString m_sBuildStr; void StyleControls(); - void LayoutControls(); - void LayoutButtons(sal_Int32 aContentWidth, sal_Int32 aDialogBorder, - Point& aButtonPos, Size& aButtonSize, sal_Int32& aButtonsWidth ); - void MoveControl(Control& rControl, sal_Int32 X, sal_Int32 Y); - rtl::OUString GetBuildId(); - rtl::OUString GetVersionString(); - rtl::OUString GetCopyrightString(); + void SetLogo(); + + OUString GetBuildId(); + OUString GetVersionString(); + OUString GetCopyrightString(); protected: virtual sal_Bool Close(); - virtual void Paint( const Rectangle& rRect ); + virtual void Paint( const Rectangle& rRect ); + virtual void Resize(); public: - AboutDialog( Window* pParent, const ResId& rId); + AboutDialog(Window* pParent); - DECL_LINK( CancelHdl, void * ); DECL_LINK( HandleClick, PushButton* ); }; diff --git a/cui/uiconfig/ui/aboutdialog.ui b/cui/uiconfig/ui/aboutdialog.ui new file mode 100644 index 000000000000..cb74cb32a123 --- /dev/null +++ b/cui/uiconfig/ui/aboutdialog.ui @@ -0,0 +1,296 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <object class="GtkDialog" id="AboutDialog"> + <property name="can_focus">False</property> + <property name="border_width">6</property> + <property name="resizable">False</property> + <property name="type_hint">dialog</property> + <child internal-child="vbox"> + <object class="GtkBox" id="dialog-vbox1"> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialog-action_area1"> + <property name="can_focus">False</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="credits"> + <property name="label" translatable="yes">Cre_dits</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <property name="secondary">True</property> + </packing> + </child> + <child> + <object class="GtkButton" id="website"> + <property name="label" translatable="yes">_Website</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="secondary">True</property> + </packing> + </child> + <child> + <object class="GtkButton" id="close"> + <property name="label">gtk-close</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="logo"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-missing-image</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="orientation">vertical</property> + <property name="spacing">24</property> + <child> + <object class="GtkLabel" id="logoreplacement"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="label" translatable="yes">%PRODUCTNAME</property> + <property name="justify">center</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="grid1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <child> + <object class="GtkLabel" id="buildid"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="hexpand">True</property> + <property name="label" translatable="yes">Build ID: $BUILDID</property> + <property name="justify">center</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkTextView" id="version"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hexpand">True</property> + <property name="editable">False</property> + <property name="wrap_mode">word</property> + <property name="justification">center</property> + <property name="cursor_visible">False</property> + <property name="buffer">textbuffer1</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="description"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="label" translatable="yes">%PRODUCTNAME is a modern, easy-to-use, open source productivity suite for word processing, spreadsheets, presentations and more.</property> + <property name="justify">center</property> + <property name="wrap">True</property> + <property name="max_width_chars">62</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="grid2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <child> + <object class="GtkLabel" id="copyright"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="margin_right">12</property> + <property name="hexpand">True</property> + <property name="label" translatable="yes">Copyright © 2000 - 2013 LibreOffice contributors and/or their affiliates.</property> + <property name="justify">center</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="libreoffice"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="hexpand">True</property> + <property name="label" translatable="yes">LibreOffice was based on OpenOffice.org.</property> + <property name="justify">center</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="derived"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="hexpand">True</property> + <property name="label" translatable="yes">%PRODUCTNAME is derived from LibreOffice which was based on OpenOffice.org.</property> + <property name="justify">center</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">3</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="vendor"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="hexpand">True</property> + <property name="label" translatable="yes">This release was supplied by %OOOVENDOR.</property> + <property name="justify">center</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="link"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="label" translatable="yes">http://www.libreoffice.org/about-us/credits/</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">4</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="0">credits</action-widget> + <action-widget response="0">website</action-widget> + <action-widget response="0">close</action-widget> + </action-widgets> + </object> + <object class="GtkTextBuffer" id="textbuffer1"> + <property name="text" translatable="yes">Version: %ABOUTBOXPRODUCTVERSION%ABOUTBOXPRODUCTVERSIONSUFFIX</property> + </object> + <object class="GtkSizeGroup" id="sizegroup1"> + <widgets> + <widget name="copyright"/> + <widget name="libreoffice"/> + <widget name="vendor"/> + </widgets> + </object> +</interface> |