Kaydet (Commit) 45980b72 authored tarafından Caolán McNamara's avatar Caolán McNamara

weld SaveDialog

Change-Id: Iaef35328c0657a4538d4b4a44734146baee0346b
Reviewed-on: https://gerrit.libreoffice.org/61153
Tested-by: Jenkins
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst e3294b1b
......@@ -646,52 +646,39 @@ void SAL_CALL WeldPluginProgress::reset()
m_pProgressBar->set_percentage(0);
}
SaveDialog::SaveDialog(vcl::Window* pParent, RecoveryCore* pCore)
: Dialog(pParent, "DocRecoverySaveDialog",
"svx/ui/docrecoverysavedialog.ui")
SaveDialog::SaveDialog(weld::Window* pParent, RecoveryCore* pCore)
: GenericDialogController(pParent, "svx/ui/docrecoverysavedialog.ui", "DocRecoverySaveDialog")
, m_pCore(pCore)
, m_xFileListLB(m_xBuilder->weld_tree_view("filelist"))
, m_xOkBtn(m_xBuilder->weld_button("ok"))
{
get(m_pFileListLB, "filelist");
m_pFileListLB->set_height_request(m_pFileListLB->GetTextHeight() * 10);
get(m_pOkBtn, "ok");
m_xFileListLB->set_size_request(-1, m_xFileListLB->get_height_rows(10));
// Prepare the office for the following crash save step.
// E.g. hide all open windows so the user can't influence our
// operation .-)
m_pCore->doEmergencySavePrepare();
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
m_pOkBtn->SetClickHdl( LINK( this, SaveDialog, OKButtonHdl ) );
m_pFileListLB->SetControlBackground( rStyleSettings.GetDialogColor() );
m_xOkBtn->connect_clicked(LINK(this, SaveDialog, OKButtonHdl));
// fill listbox with current open documents
m_pFileListLB->Clear();
TURLList& rURLs = m_pCore->getURLListAccess();
for (const TURLInfo& rInfo : rURLs)
{
m_pFileListLB->InsertEntry( rInfo.DisplayName, rInfo.StandardImage );
m_xFileListLB->append("", rInfo.DisplayName, rInfo.StandardImageId);
}
}
SaveDialog::~SaveDialog()
{
disposeOnce();
}
void SaveDialog::dispose()
{
m_pFileListLB.clear();
m_pOkBtn.clear();
Dialog::dispose();
}
IMPL_LINK_NOARG(SaveDialog, OKButtonHdl, Button*, void)
IMPL_LINK_NOARG(SaveDialog, OKButtonHdl, weld::Button&, void)
{
// start crash-save with progress
std::unique_ptr<SaveProgressDialog> xProgress(new SaveProgressDialog(GetFrameWeld(), m_pCore));
std::unique_ptr<SaveProgressDialog> xProgress(new SaveProgressDialog(m_xDialog.get(), m_pCore));
short nResult = xProgress->run();
xProgress.reset();
......@@ -700,7 +687,7 @@ IMPL_LINK_NOARG(SaveDialog, OKButtonHdl, Button*, void)
if (nResult == DLG_RET_OK)
nResult = DLG_RET_OK_AUTOLUNCH;
EndDialog(nResult);
m_xDialog->response(nResult);
}
SaveProgressDialog::SaveProgressDialog(weld::Window* pParent, RecoveryCore* pCore)
......
......@@ -26,6 +26,7 @@
#include <vcl/lstbox.hxx>
#include <vcl/tabdlg.hxx>
#include <vcl/tabpage.hxx>
#include <vcl/weld.hxx>
#include <svtools/simptabl.hxx>
#include <vcl/svlbitm.hxx>
#include <svtools/svmedit2.hxx>
......@@ -381,36 +382,35 @@ public:
virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener) override;
};
class SaveDialog : public Dialog
class SaveDialog : public weld::GenericDialogController
{
// member
private:
VclPtr<ListBox> m_pFileListLB;
VclPtr<OKButton> m_pOkBtn;
RecoveryCore* m_pCore;
// member
private:
RecoveryCore* m_pCore;
std::unique_ptr<weld::TreeView> m_xFileListLB;
std::unique_ptr<weld::Button> m_xOkBtn;
// interface
public:
/** @short create all child controls of this dialog.
// interface
public:
/** @short create all child controls of this dialog.
@descr The dialog isn't shown nor it starts any
action by itself!
@descr The dialog isn't shown nor it starts any
action by itself!
@param pParent
can point to a parent window.
If its set to 0, the defmodal-dialog-parent
is used automatically.
@param pParent
can point to a parent window.
If its set to 0, the defmodal-dialog-parent
is used automatically.
@param pCore
provides access to the recovery core service
and the current list of open documents,
which should be shown inside this dialog.
*/
SaveDialog(vcl::Window* pParent, RecoveryCore* pCore);
virtual ~SaveDialog() override;
virtual void dispose() override;
@param pCore
provides access to the recovery core service
and the current list of open documents,
which should be shown inside this dialog.
*/
SaveDialog(weld::Window* pParent, RecoveryCore* pCore);
virtual ~SaveDialog() override;
DECL_LINK(OKButtonHdl, Button*, void);
DECL_LINK(OKButtonHdl, weld::Button&, void);
};
class SaveProgressDialog : public weld::GenericDialogController
......
......@@ -247,11 +247,10 @@ bool RecoveryUI::impl_doEmergencySave()
rtl::Reference<svxdr::RecoveryCore> pCore = new svxdr::RecoveryCore(m_xContext, true);
// create dialog for this operation and bind it to the used core service
ScopedVclPtrInstance<svxdr::SaveDialog> xDialog(m_pParentWindow, pCore.get());
DialogReleaseGuard dialogReleaseGuard(m_pDialog, xDialog);
svxdr::SaveDialog aDialog(m_pParentWindow ? m_pParentWindow->GetFrameWeld() : nullptr, pCore.get());
// start the dialog
short nRet = xDialog->Execute();
short nRet = aDialog.run();
return (nRet==DLG_RET_OK_AUTOLUNCH);
}
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="svx">
<requires lib="gtk+" version="3.18"/>
<object class="GtkTreeStore" id="liststore1">
<columns>
<!-- column-name image -->
<column type="GdkPixbuf"/>
<!-- column-name text -->
<column type="gchararray"/>
<!-- column-name id -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkDialog" id="DocRecoverySaveDialog">
<property name="can_focus">False</property>
<property name="border_width">6</property>
<property name="title" translatable="yes" context="docrecoverysavedialog|DocRecoverySaveDialog">%PRODUCTNAME %PRODUCTVERSION Document Recovery</property>
<property name="modal">True</property>
<property name="default_width">0</property>
<property name="default_height">0</property>
<property name="type_hint">dialog</property>
<child>
<placeholder/>
</child>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property>
......@@ -44,6 +60,7 @@
<object class="GtkGrid" id="bgrid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">True</property>
<property name="row_spacing">12</property>
<child>
<object class="GtkGrid" id="grid1">
......@@ -58,7 +75,8 @@
<property name="can_focus">False</property>
<property name="label" translatable="yes" context="docrecoverysavedialog|label1">Due to an unexpected error, %PRODUCTNAME crashed. All the files you were working on will now be saved. The next time %PRODUCTNAME is launched, your files will be recovered automatically.</property>
<property name="wrap">True</property>
<property name="max_width_chars">87</property>
<property name="width_chars">80</property>
<property name="max_width_chars">80</property>
<property name="xalign">0</property>
</object>
<packing>
......@@ -79,7 +97,7 @@
<property name="can_focus">False</property>
<property name="label" translatable="yes" context="docrecoverysavedialog|label2">The following files will be recovered:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">filelist:border</property>
<property name="mnemonic_widget">filelist</property>
<property name="xalign">0</property>
</object>
<packing>
......@@ -88,14 +106,47 @@
</packing>
</child>
<child>
<object class="GtkTreeView" id="filelist:border">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="show_expanders">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection"/>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="filelist">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="model">liststore1</property>
<property name="headers_visible">False</property>
<property name="headers_clickable">False</property>
<property name="search_column">0</property>
<property name="show_expanders">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection2"/>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
<child>
<object class="GtkCellRendererPixbuf" id="cellrenderertext1"/>
<attributes>
<attribute name="pixbuf">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn2">
<child>
<object class="GtkCellRendererText" id="cellrenderertext2"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
......
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