Kaydet (Commit) 34592b91 authored tarafından Caolán McNamara's avatar Caolán McNamara

convert link warning dialog to .ui

the amount of code required for the new vs old dialog is amusing

Change-Id: I7feee572eecd94fab3e8c2210755b70832cbd2f2
üst 8c2924c0
......@@ -21,24 +21,16 @@
#define INCLUDED_SVX_LINKWARN_HXX
#include <vcl/button.hxx>
#include <vcl/fixed.hxx>
#include <sfx2/basedlgs.hxx>
#include <vcl/layout.hxx>
#include <svx/svxdllapi.h>
class SVX_DLLPUBLIC SvxLinkWarningDialog : public SfxModalDialog
class SVX_DLLPUBLIC SvxLinkWarningDialog : public MessageDialog
{
private:
FixedImage m_aQueryImage;
FixedText m_aInfoText;
OKButton m_aLinkGraphicBtn;
CancelButton m_aEmbedGraphicBtn;
FixedLine m_aOptionLine;
CheckBox m_aWarningOnBox;
void InitSize();
CheckBox* m_pWarningOnBox;
public:
SvxLinkWarningDialog( Window* pParent, const OUString& _rFileName );
SvxLinkWarningDialog(Window* pParent, const OUString& _rFileName);
virtual ~SvxLinkWarningDialog();
};
......
......@@ -48,7 +48,6 @@ $(eval $(call gb_SrsTarget_add_files,svx/res,\
svx/source/dialog/imapdlg.src \
svx/source/dialog/langbox.src \
svx/source/dialog/language.src \
svx/source/dialog/linkwarn.src \
svx/source/dialog/passwd.src \
svx/source/dialog/prtqry.src \
svx/source/dialog/ruler.src \
......
......@@ -18,6 +18,7 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\
svx/uiconfig/ui/deletefooterdialog \
svx/uiconfig/ui/headfootformatpage \
svx/uiconfig/ui/findreplacedialog \
svx/uiconfig/ui/linkwarndialog \
svx/uiconfig/ui/optgridpage \
svx/uiconfig/ui/passwd \
svx/uiconfig/ui/redlinecontrol \
......
......@@ -17,119 +17,33 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include "linkwarn.hrc"
#include "svx/linkwarn.hxx"
#include "svx/dialogs.hrc"
#include "svx/dialmgr.hxx"
#include <vcl/msgbox.hxx>
#include <sfx2/basedlgs.hxx>
#include <svx/linkwarn.hxx>
#include <svtools/miscopt.hxx>
SvxLinkWarningDialog::SvxLinkWarningDialog( Window* pParent, const OUString& _rFileName ) :
SfxModalDialog( pParent, SVX_RES( RID_SVXDLG_LINK_WARNING ) ),
m_aQueryImage ( this, SVX_RES( FI_QUERY ) ),
m_aInfoText ( this, SVX_RES( FT_INFOTEXT ) ),
m_aLinkGraphicBtn ( this, SVX_RES( PB_OK ) ),
m_aEmbedGraphicBtn ( this, SVX_RES( PB_NO ) ),
m_aOptionLine ( this, SVX_RES( FL_OPTION ) ),
m_aWarningOnBox ( this, SVX_RES( CB_WARNING_OFF ) )
SvxLinkWarningDialog::SvxLinkWarningDialog( Window* pParent, const OUString& _rFileName )
: MessageDialog(pParent, "LinkWarnDialog" , "svx/ui/linkwarndialog.ui")
{
FreeResource();
// set questionmark image
m_aQueryImage.SetImage( QueryBox::GetStandardImage() );
get(m_pWarningOnBox, "ask");
// replace filename
OUString sInfoText = m_aInfoText.GetText();
OUString sInfoText = get_primary_text();
sInfoText = sInfoText.replaceAll("%FILENAME", _rFileName);
m_aInfoText.SetText( sInfoText );
set_primary_text( sInfoText );
// load state of "warning on" checkbox from misc options
SvtMiscOptions aMiscOpt;
m_aWarningOnBox.Check( aMiscOpt.ShowLinkWarningDialog() == sal_True );
m_pWarningOnBox->Check( aMiscOpt.ShowLinkWarningDialog() == sal_True );
if( aMiscOpt.IsShowLinkWarningDialogReadOnly() )
m_aWarningOnBox.Disable();
// set focus to Cancel button
m_aEmbedGraphicBtn.GrabFocus();
// calculate and set the size of the dialog and its controls
InitSize();
m_pWarningOnBox->Disable();
}
// -----------------------------------------------------------------------
SvxLinkWarningDialog::~SvxLinkWarningDialog()
{
// save value of "warning off" checkbox, if necessary
SvtMiscOptions aMiscOpt;
sal_Bool bChecked = m_aWarningOnBox.IsChecked();
sal_Bool bChecked = m_pWarningOnBox->IsChecked();
if ( aMiscOpt.ShowLinkWarningDialog() != bChecked )
aMiscOpt.SetShowLinkWarningDialog( bChecked );
}
// -----------------------------------------------------------------------
void SvxLinkWarningDialog::InitSize()
{
// text of checkbox to wide -> add new line
long nTxtW = m_aWarningOnBox.GetCtrlTextWidth( m_aWarningOnBox.GetText() ) + IMPL_EXTRA_BUTTON_WIDTH;
long nCtrlW = m_aWarningOnBox.GetSizePixel().Width();
if ( nTxtW >= nCtrlW )
{
long nTextHeight = m_aWarningOnBox.GetTextHeight();
Size aNewSize = m_aWarningOnBox.GetSizePixel();
aNewSize.Height() += nTextHeight;
m_aWarningOnBox.SetSizePixel( aNewSize );
aNewSize = GetSizePixel();
aNewSize.Height() += nTextHeight;
SetSizePixel( aNewSize );
}
// align the size of the information text control (FixedText) to its content
Size aMinSize = m_aInfoText.CalcMinimumSize( m_aInfoText.GetSizePixel().Width() );
long nTxtH = aMinSize.Height();
long nCtrlH = m_aInfoText.GetSizePixel().Height();
long nDelta = ( nCtrlH - nTxtH );
Size aNewSize = m_aInfoText.GetSizePixel();
aNewSize.Height() -= nDelta;
m_aInfoText.SetSizePixel( aNewSize );
// new position for the succeeding windows
Window* pWins[] =
{
&m_aLinkGraphicBtn, &m_aEmbedGraphicBtn, &m_aOptionLine, &m_aWarningOnBox
};
Window** pCurrent = pWins;
for ( sal_uInt32 i = 0; i < SAL_N_ELEMENTS(pWins); ++i, ++pCurrent )
{
Point aNewPos = (*pCurrent)->GetPosPixel();
aNewPos.Y() -= nDelta;
(*pCurrent)->SetPosPixel( aNewPos );
}
// new size of the dialog
aNewSize = GetSizePixel();
aNewSize.Height() -= nDelta;
SetSizePixel( aNewSize );
// recalculate the size and position of the buttons
nTxtW = m_aLinkGraphicBtn.GetCtrlTextWidth( m_aLinkGraphicBtn.GetText() );
long nTemp = m_aEmbedGraphicBtn.GetCtrlTextWidth( m_aEmbedGraphicBtn.GetText() );
if ( nTemp > nTxtW )
nTxtW = nTemp;
nTxtW += IMPL_EXTRA_BUTTON_WIDTH;
Size a3Size = LogicToPixel( Size( 3, 3 ), MAP_APPFONT );
Point aPos = m_aLinkGraphicBtn.GetPosPixel();
aPos.X() = ( aNewSize.Width() - (2*nTxtW) - a3Size.Width() ) / 2;
long nDefX = m_aWarningOnBox.GetPosPixel().X();
if ( nDefX < aPos.X() )
aPos.X() = nDefX;
aNewSize = m_aLinkGraphicBtn.GetSizePixel();
aNewSize.Width() = nTxtW;
m_aLinkGraphicBtn.SetPosSizePixel( aPos, aNewSize );
aPos.X() += nTxtW + a3Size.Width();
m_aEmbedGraphicBtn.SetPosSizePixel( aPos, aNewSize );
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- 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 .
*/
#ifndef _SVX_LINKWARN_HRC
#define _SVX_LINKWARN_HRC
#include <svtools/controldims.hrc>
// dialog ids
#define FI_QUERY 10
#define FT_INFOTEXT 11
#define PB_OK 12
#define PB_NO 13
#define FL_OPTION 15
#define CB_WARNING_OFF 16
// --------- general metrics ---------
#define SYMBOL_EDGE 20
#define DIALOG_WIDTH 220
#define INFO_TEXT_LINES 11
#define AW_COL_1 (RSC_SP_DLG_INNERBORDER_LEFT)
#define AW_COL_2 (AW_COL_1+SYMBOL_EDGE+RSC_SP_CTRL_DESC_X)
#define AW_COL_3 (AW_COL_2+RSC_CD_PUSHBUTTON_WIDTH+RSC_SP_CTRL_DESC_X)
#define AW_COL_4 (DIALOG_WIDTH-RSC_SP_DLG_INNERBORDER_RIGHT-RSC_CD_PUSHBUTTON_WIDTH)
#define AW_ROW_1 (RSC_SP_DLG_INNERBORDER_TOP)
#define AW_ROW_2 (AW_ROW_1+INFO_TEXT_LINES*RSC_CD_FIXEDTEXT_HEIGHT+RSC_SP_CTRL_Y)
#define AW_ROW_3 (AW_ROW_2+RSC_CD_PUSHBUTTON_HEIGHT+RSC_SP_CTRL_DESC_Y)
#define AW_ROW_4 (AW_ROW_3+RSC_CD_FIXEDLINE_HEIGHT+RSC_SP_CTRL_DESC_Y)
#define DIALOG_HEIGHT (AW_ROW_4+RSC_CD_CHECKBOX_HEIGHT+RSC_SP_DLG_INNERBORDER_BOTTOM)
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- 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 "linkwarn.hrc"
#include "svx/dialogs.hrc"
#include "helpid.hrc"
ModalDialog RID_SVXDLG_LINK_WARNING
{
Size = MAP_APPFONT( DIALOG_WIDTH, DIALOG_HEIGHT );
OutputSize = TRUE;
Closeable = FALSE;
Moveable = TRUE;
SVLook = TRUE;
Text = "%PRODUCTNAME %PRODUCTVERSION%PRODUCTEXTENSION";
FixedImage FI_QUERY
{
Pos = MAP_APPFONT( AW_COL_1, AW_ROW_1 );
Size = MAP_APPFONT( SYMBOL_EDGE, SYMBOL_EDGE );
};
FixedText FT_INFOTEXT
{
Pos = MAP_APPFONT( AW_COL_2, AW_ROW_1 );
Size = MAP_APPFONT( DIALOG_WIDTH-AW_COL_2-RSC_SP_DLG_INNERBORDER_RIGHT, INFO_TEXT_LINES*RSC_CD_FIXEDTEXT_HEIGHT );
NoLabel = TRUE;
Wordbreak = TRUE;
Text [ en-US ] = "The file %FILENAME will not be stored along with your document, but only referenced as a link. This is dangerous if you move and/or rename the files. Do you want to embed the graphic instead?";
};
OKButton PB_OK
{
Pos = MAP_APPFONT( AW_COL_2, AW_ROW_2 );
Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
DefButton = TRUE ;
Text [ en-US ] = "~Keep Link";
};
CancelButton PB_NO
{
Pos = MAP_APPFONT( AW_COL_3, AW_ROW_2 );
Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
Text [ en-US ] = "~Embed Graphic";
};
FixedLine FL_OPTION
{
Pos = MAP_APPFONT( 0, AW_ROW_3 );
Size = MAP_APPFONT( DIALOG_WIDTH, RSC_CD_FIXEDLINE_HEIGHT );
};
CheckBox CB_WARNING_OFF
{
Pos = MAP_APPFONT( AW_COL_2, AW_ROW_4 );
Size = MAP_APPFONT( DIALOG_WIDTH-AW_COL_2-RSC_SP_DLG_INNERBORDER_RIGHT, RSC_CD_CHECKBOX_HEIGHT );
WordBreak = TRUE ;
Text [ en-US ] = "~Ask when linking a graphic";
};
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkMessageDialog" id="LinkWarnDialog">
<property name="can_focus">False</property>
<property name="border_width">12</property>
<property name="title" translatable="yes">Confirm Linked Graphic</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="message_type">question</property>
<property name="text" translatable="yes">The file %FILENAME will not be stored along with your document, but only referenced as a link.</property>
<property name="secondary_text" translatable="yes">This is dangerous if you move and/or rename the files. Do you want to embed the graphic instead?</property>
<child internal-child="vbox">
<object class="GtkBox" id="messagedialog-vbox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">24</property>
<child internal-child="action_area">
<object class="GtkButtonBox" id="messagedialog-action_area">
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="ok">
<property name="label" translatable="yes">_Keep Link</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">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="non_homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkButton" id="cancel">
<property name="label">_Embed Graphic</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_underline">True</property>
<property name="image_position">bottom</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="non_homogeneous">True</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="GtkCheckButton" id="ask">
<property name="label" translatable="yes">_Ask when linking a graphic</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<action-widgets>
<action-widget response="1">ok</action-widget>
<action-widget response="0">cancel</action-widget>
</action-widgets>
</object>
</interface>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment