convert more queryboxes to new message box replacement
Change-Id: Ice41a86e17d5cbee784e239224b640ea4378ac36
This commit is contained in:
@@ -155,9 +155,6 @@
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
// ResId fuer die PageDialog
|
||||
#define RID_SVXQBX_DELETE_HEADFOOT (RID_SVX_START + 28)
|
||||
|
||||
// ResId's fuer Dialoge aus StarDraw
|
||||
#define RID_SVXSW_FRAMEPOSITIONS (RID_SVX_START + 289)
|
||||
|
||||
|
@@ -22,10 +22,10 @@
|
||||
#include <sfx2/tabdlg.hxx>
|
||||
|
||||
#include <vcl/fixed.hxx>
|
||||
|
||||
#include <vcl/field.hxx>
|
||||
|
||||
#include <vcl/group.hxx>
|
||||
#include <vcl/layout.hxx>
|
||||
|
||||
#include <svx/pagectrl.hxx>
|
||||
#include "svx/svxdllapi.h"
|
||||
|
||||
@@ -120,6 +120,26 @@ private:
|
||||
SVX_DLLPRIVATE SvxFooterPage( Window* pParent, const SfxItemSet& rSet );
|
||||
};
|
||||
|
||||
class SVX_DLLPUBLIC DeleteHeaderDialog : public MessageDialog
|
||||
{
|
||||
public:
|
||||
DeleteHeaderDialog(Window *pParent)
|
||||
: MessageDialog(pParent, "DeleteHeaderDialog",
|
||||
"svx/ui/deleteheaderdialog.ui")
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class SVX_DLLPUBLIC DeleteFooterDialog : public MessageDialog
|
||||
{
|
||||
public:
|
||||
DeleteFooterDialog(Window *pParent)
|
||||
: MessageDialog(pParent, "DeleteFooterDialog",
|
||||
"svx/ui/deletefooterdialog.ui")
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
@@ -647,18 +647,33 @@ public:
|
||||
bool set_property(const OString &rKey, const OString &rValue);
|
||||
};
|
||||
|
||||
enum VclButtonsType
|
||||
{
|
||||
VCL_BUTTONS_NONE,
|
||||
VCL_BUTTONS_OK,
|
||||
VCL_BUTTONS_CLOSE,
|
||||
VCL_BUTTONS_CANCEL,
|
||||
VCL_BUTTONS_YES_NO,
|
||||
VCL_BUTTONS_OK_CANCEL
|
||||
};
|
||||
|
||||
class VCL_DLLPUBLIC MessageDialog : public Dialog
|
||||
{
|
||||
private:
|
||||
VclButtonsType m_eType;
|
||||
VclGrid* m_pGrid;
|
||||
FixedImage* m_pImage;
|
||||
VclMultiLineEdit* m_pPrimaryMessage;
|
||||
VclMultiLineEdit* m_pSecondaryMessage;
|
||||
std::vector<PushButton*> m_aOwnedButtons;
|
||||
std::map<const Window*, short> m_aResponses;
|
||||
OUString m_sPrimaryString;
|
||||
OUString m_sSecondaryString;
|
||||
DECL_DLLPRIVATE_LINK(ButtonHdl, Button *);
|
||||
void setButtonHandlers();
|
||||
void setButtonHandlers(VclButtonBox *pButtonBox);
|
||||
short get_response(const Window *pWindow) const;
|
||||
public:
|
||||
|
||||
MessageDialog(Window* pParent, WinBits nStyle);
|
||||
MessageDialog(Window* pParent, const OString& rID, const OUString& rUIXMLDescription);
|
||||
virtual bool set_property(const OString &rKey, const OString &rValue);
|
||||
|
@@ -143,6 +143,10 @@ enum VclResponseType
|
||||
RET_NO = 3,
|
||||
RET_RETRY = 4,
|
||||
RET_IGNORE = 5,
|
||||
RET_ACCEPT = 6,
|
||||
RET_CLOSE = 7,
|
||||
RET_APPLY = 8,
|
||||
RET_NONE = 9,
|
||||
RET_HELP = 10
|
||||
};
|
||||
|
||||
|
@@ -45,7 +45,6 @@ $(eval $(call gb_SrsTarget_add_files,svx/res,\
|
||||
svx/source/dialog/docrecovery.src \
|
||||
svx/source/dialog/fontwork.src \
|
||||
svx/source/dialog/frmsel.src \
|
||||
svx/source/dialog/hdft.src \
|
||||
svx/source/dialog/imapdlg.src \
|
||||
svx/source/dialog/langbox.src \
|
||||
svx/source/dialog/language.src \
|
||||
|
@@ -14,6 +14,8 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\
|
||||
svx/uiconfig/ui/asianphoneticguidedialog \
|
||||
svx/uiconfig/ui/chineseconversiondialog \
|
||||
svx/uiconfig/ui/compressgraphicdialog \
|
||||
svx/uiconfig/ui/deleteheaderdialog \
|
||||
svx/uiconfig/ui/deletefooterdialog \
|
||||
svx/uiconfig/ui/headfootformatpage \
|
||||
svx/uiconfig/ui/findreplacedialog \
|
||||
svx/uiconfig/ui/redlinecontrol \
|
||||
|
@@ -485,7 +485,14 @@ IMPL_LINK( SvxHFPage, TurnOnHdl, CheckBox *, pBox )
|
||||
bool bDelete = true;
|
||||
|
||||
if ( !bDisableQueryBox && pBox && m_pTurnOnBox->GetSavedValue() == sal_True )
|
||||
bDelete = ( QueryBox( this, SVX_RES( RID_SVXQBX_DELETE_HEADFOOT ) ).Execute() == RET_YES );
|
||||
{
|
||||
short nResult;
|
||||
if (nId == SID_ATTR_PAGE_HEADERSET)
|
||||
nResult = DeleteHeaderDialog(this).Execute();
|
||||
else
|
||||
nResult = DeleteFooterDialog(this).Execute();
|
||||
bDelete = nResult == RET_YES;
|
||||
}
|
||||
|
||||
if ( bDelete )
|
||||
{
|
||||
|
@@ -1,29 +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 <svx/dialogs.hrc>
|
||||
|
||||
QueryBox RID_SVXQBX_DELETE_HEADFOOT
|
||||
{
|
||||
Buttons = WB_YES_NO ;
|
||||
DefButton = WB_DEF_NO ;
|
||||
Message [ en-US ] = "Removing headers or footers deletes the contents.\nDo you want to delete this text?" ;
|
||||
};
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
34
svx/uiconfig/ui/deletefooterdialog.ui
Normal file
34
svx/uiconfig/ui/deletefooterdialog.ui
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 3.0 -->
|
||||
<object class="GtkMessageDialog" id="DeleteFooterDialog">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="border_width">12</property>
|
||||
<property name="title" translatable="yes">Delete footer</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="skip_taskbar_hint">True</property>
|
||||
<property name="message_type">warning</property>
|
||||
<property name="buttons">yes-no</property>
|
||||
<property name="text" translatable="yes">Are you sure you want to delete the footer?</property>
|
||||
<property name="secondary_text" translatable="yes">All contents of the footer will be deleted and can not be restored.</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>
|
||||
</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>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
34
svx/uiconfig/ui/deleteheaderdialog.ui
Normal file
34
svx/uiconfig/ui/deleteheaderdialog.ui
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 3.0 -->
|
||||
<object class="GtkMessageDialog" id="DeleteHeaderDialog">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="border_width">12</property>
|
||||
<property name="title" translatable="yes">Delete header</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="skip_taskbar_hint">True</property>
|
||||
<property name="message_type">warning</property>
|
||||
<property name="buttons">yes-no</property>
|
||||
<property name="text" translatable="yes">Are you sure you want to delete the header?</property>
|
||||
<property name="secondary_text" translatable="yes">All contents of the header will be deleted and can not be restored.</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>
|
||||
</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>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
@@ -31,6 +31,7 @@
|
||||
|
||||
#include <math.h>
|
||||
#include <hintids.hxx>
|
||||
#include <svx/hdft.hxx>
|
||||
#include <svx/svdview.hxx>
|
||||
#include <sot/factory.hxx>
|
||||
#include <svl/itemiter.hxx>
|
||||
@@ -1754,9 +1755,13 @@ void SwWrtShell::ChangeHeaderOrFooter(
|
||||
EndAllAction();
|
||||
|
||||
Window* pParent = &GetView().GetViewFrame()->GetWindow();
|
||||
bool bRet = RET_YES == QueryBox( pParent, ResId( RID_SVXQBX_DELETE_HEADFOOT,
|
||||
DIALOG_MGR() ) ).Execute();
|
||||
bExecute = bRet;
|
||||
short nResult;
|
||||
if (bHeader)
|
||||
nResult = DeleteHeaderDialog(pParent).Execute();
|
||||
else
|
||||
nResult = DeleteFooterDialog(pParent).Execute();
|
||||
bExecute = nResult == RET_YES;
|
||||
|
||||
StartAllAction();
|
||||
}
|
||||
if( bExecute )
|
||||
|
@@ -1672,6 +1672,7 @@ bool VclSizeGroup::set_property(const OString &rKey, const OString &rValue)
|
||||
|
||||
MessageDialog::MessageDialog(Window* pParent, WinBits nStyle)
|
||||
: Dialog(pParent, nStyle)
|
||||
, m_eType(VCL_BUTTONS_NONE)
|
||||
, m_pGrid(NULL)
|
||||
, m_pImage(NULL)
|
||||
, m_pPrimaryMessage(NULL)
|
||||
@@ -1682,6 +1683,7 @@ MessageDialog::MessageDialog(Window* pParent, WinBits nStyle)
|
||||
|
||||
MessageDialog::MessageDialog(Window* pParent, const OString& rID, const OUString& rUIXMLDescription)
|
||||
: Dialog(pParent, rID, rUIXMLDescription, WINDOW_MESSBOX)
|
||||
, m_eType(VCL_BUTTONS_NONE)
|
||||
, m_pGrid(NULL)
|
||||
, m_pImage(NULL)
|
||||
, m_pPrimaryMessage(NULL)
|
||||
@@ -1691,6 +1693,8 @@ MessageDialog::MessageDialog(Window* pParent, const OString& rID, const OUString
|
||||
|
||||
MessageDialog::~MessageDialog()
|
||||
{
|
||||
for (size_t i = 0; i < m_aOwnedButtons.size(); ++i)
|
||||
delete m_aOwnedButtons[i];
|
||||
delete m_pSecondaryMessage;
|
||||
delete m_pPrimaryMessage;
|
||||
delete m_pImage;
|
||||
@@ -1699,19 +1703,20 @@ MessageDialog::~MessageDialog()
|
||||
|
||||
IMPL_LINK(MessageDialog, ButtonHdl, Button *, pButton)
|
||||
{
|
||||
//for now insist that we have a builder, we can relax that in
|
||||
//the future if we need it
|
||||
assert(m_pUIBuilder);
|
||||
EndDialog(m_pUIBuilder->get_response(pButton));
|
||||
EndDialog(get_response(pButton));
|
||||
return 0;
|
||||
}
|
||||
|
||||
void MessageDialog::setButtonHandlers()
|
||||
short MessageDialog::get_response(const Window *pWindow) const
|
||||
{
|
||||
std::map<const Window*, short>::const_iterator aFind = m_aResponses.find(pWindow);
|
||||
if (aFind != m_aResponses.end())
|
||||
return aFind->second;
|
||||
return m_pUIBuilder->get_response(pWindow);
|
||||
}
|
||||
|
||||
void MessageDialog::setButtonHandlers(VclButtonBox *pButtonBox)
|
||||
{
|
||||
SAL_WARN_IF(!m_pUIBuilder, "vcl.layout", "MessageDialog non-ui load button responses not implemented yet");
|
||||
if (!m_pUIBuilder)
|
||||
return;
|
||||
VclButtonBox *pButtonBox = get_action_area();
|
||||
assert(pButtonBox);
|
||||
for (Window* pChild = pButtonBox->GetWindow(WINDOW_FIRSTCHILD); pChild;
|
||||
pChild = pChild->GetWindow(WINDOW_NEXT))
|
||||
@@ -1724,17 +1729,16 @@ void MessageDialog::setButtonHandlers()
|
||||
pButton->SetClickHdl(LINK(this, MessageDialog, ButtonHdl));
|
||||
break;
|
||||
}
|
||||
//for now at least, insist that the response ids match
|
||||
//the default actions for those widgets, and leave
|
||||
//their default handlers in place
|
||||
//insist that the response ids match the default actions for those
|
||||
//widgets, and leave their default handlers in place
|
||||
case WINDOW_OKBUTTON:
|
||||
assert(m_pUIBuilder->get_response(pChild) == RET_OK);
|
||||
assert(get_response(pChild) == RET_OK);
|
||||
break;
|
||||
case WINDOW_CANCELBUTTON:
|
||||
assert(m_pUIBuilder->get_response(pChild) == RET_CANCEL);
|
||||
assert(get_response(pChild) == RET_CANCEL);
|
||||
break;
|
||||
case WINDOW_HELPBUTTON:
|
||||
assert(m_pUIBuilder->get_response(pChild) == RET_HELP);
|
||||
assert(get_response(pChild) == RET_HELP);
|
||||
break;
|
||||
default:
|
||||
SAL_WARN("vcl.layout", "The type of widget " <<
|
||||
@@ -1793,13 +1797,58 @@ short MessageDialog::Execute()
|
||||
m_pSecondaryMessage->SetText(m_sSecondaryString);
|
||||
m_pSecondaryMessage->Show(!m_sSecondaryString.isEmpty());
|
||||
|
||||
m_pGrid->Show();
|
||||
|
||||
setButtonHandlers();
|
||||
|
||||
VclButtonBox *pButtonBox = get_action_area();
|
||||
assert(pButtonBox);
|
||||
PushButton *pBtn;
|
||||
switch (m_eType)
|
||||
{
|
||||
case VCL_BUTTONS_NONE:
|
||||
break;
|
||||
case VCL_BUTTONS_OK:
|
||||
pBtn = new OKButton(pButtonBox);
|
||||
pBtn->Show();
|
||||
m_aOwnedButtons.push_back(pBtn);
|
||||
m_aResponses[pBtn] = RET_OK;
|
||||
break;
|
||||
case VCL_BUTTONS_CLOSE:
|
||||
pBtn = new CloseButton(pButtonBox);
|
||||
pBtn->Show();
|
||||
m_aOwnedButtons.push_back(pBtn);
|
||||
m_aResponses[pBtn] = RET_CLOSE;
|
||||
break;
|
||||
case VCL_BUTTONS_CANCEL:
|
||||
pBtn = new CancelButton(pButtonBox);
|
||||
m_aOwnedButtons.push_back(pBtn);
|
||||
m_aResponses[pBtn] = RET_CANCEL;
|
||||
break;
|
||||
case VCL_BUTTONS_YES_NO:
|
||||
pBtn = new PushButton(pButtonBox);
|
||||
pBtn->SetText(Button::GetStandardText(BUTTON_YES));
|
||||
pBtn->Show();
|
||||
m_aOwnedButtons.push_back(pBtn);
|
||||
m_aResponses[pBtn] = RET_YES;
|
||||
|
||||
pBtn = new PushButton(pButtonBox);
|
||||
pBtn->SetText(Button::GetStandardText(BUTTON_NO));
|
||||
pBtn->Show();
|
||||
m_aOwnedButtons.push_back(pBtn);
|
||||
m_aResponses[pBtn] = RET_NO;
|
||||
break;
|
||||
case VCL_BUTTONS_OK_CANCEL:
|
||||
pBtn = new OKButton(pButtonBox);
|
||||
pBtn->Show();
|
||||
m_aOwnedButtons.push_back(pBtn);
|
||||
m_aResponses[pBtn] = RET_OK;
|
||||
|
||||
pBtn = new CancelButton(pButtonBox);
|
||||
pBtn->Show();
|
||||
m_aOwnedButtons.push_back(pBtn);
|
||||
m_aResponses[pBtn] = RET_CANCEL;
|
||||
break;
|
||||
}
|
||||
setButtonHandlers(pButtonBox);
|
||||
pButtonBox->sort_native_button_order();
|
||||
m_pGrid->Show();
|
||||
|
||||
}
|
||||
return Dialog::Execute();
|
||||
@@ -1825,6 +1874,27 @@ bool MessageDialog::set_property(const OString &rKey, const OString &rValue)
|
||||
set_primary_text(OStringToOUString(rValue, RTL_TEXTENCODING_UTF8));
|
||||
else if (rKey == "secondary-text")
|
||||
set_secondary_text(OStringToOUString(rValue, RTL_TEXTENCODING_UTF8));
|
||||
else if (rKey == "buttons")
|
||||
{
|
||||
VclButtonsType eMode = VCL_BUTTONS_NONE;
|
||||
if (rValue.equals("none"))
|
||||
eMode = VCL_BUTTONS_NONE;
|
||||
else if (rValue.equals("ok"))
|
||||
eMode = VCL_BUTTONS_OK;
|
||||
else if (rValue.equals("cancel"))
|
||||
eMode = VCL_BUTTONS_CANCEL;
|
||||
else if (rValue.equals("close"))
|
||||
eMode = VCL_BUTTONS_CLOSE;
|
||||
else if (rValue.equals("yes-no"))
|
||||
eMode = VCL_BUTTONS_YES_NO;
|
||||
else if (rValue.equals("ok-cancel"))
|
||||
eMode = VCL_BUTTONS_OK_CANCEL;
|
||||
else
|
||||
{
|
||||
SAL_WARN("vcl.layout", "unknown buttons type mode" << rValue.getStr());
|
||||
}
|
||||
m_eType = eMode;
|
||||
}
|
||||
else
|
||||
return Dialog::set_property(rKey, rValue);
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user