Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 :
10 : #include <sal/config.h>
11 :
12 : #include <cassert>
13 :
14 : #include <com/sun/star/task/OfficeRestartManager.hpp>
15 : #include <com/sun/star/task/XInteractionHandler.hpp>
16 : #include <com/sun/star/uno/Reference.hxx>
17 : #include <com/sun/star/uno/XComponentContext.hpp>
18 : #include <svtools/restartdialog.hxx>
19 : #include <tools/link.hxx>
20 : #include <vcl/button.hxx>
21 : #include <vcl/dialog.hxx>
22 : #include <vcl/window.hxx>
23 :
24 : namespace {
25 :
26 : class RestartDialog: public ModalDialog {
27 : public:
28 0 : RestartDialog(vcl::Window * parent, svtools::RestartReason reason):
29 0 : ModalDialog(parent, "RestartDialog", "svt/ui/restartdialog.ui")
30 : {
31 0 : get(btnYes_, "yes");
32 0 : get(btnNo_, "no");
33 0 : switch (reason) {
34 : case svtools::RESTART_REASON_JAVA:
35 0 : get(reason_, "reason_java");
36 0 : break;
37 : case svtools::RESTART_REASON_PDF_AS_STANDARD_JOB_FORMAT:
38 0 : get(reason_, "reason_pdf");
39 0 : break;
40 : case svtools::RESTART_REASON_BIBLIOGRAPHY_INSTALL:
41 0 : get(reason_, "reason_bibliography_install");
42 0 : break;
43 : case svtools::RESTART_REASON_MAILMERGE_INSTALL:
44 0 : get(reason_, "reason_mailmerge_install");
45 0 : break;
46 : default:
47 : assert(false); // this cannot happen
48 : }
49 0 : reason_->Show();
50 0 : btnYes_->SetClickHdl(LINK(this, RestartDialog, hdlYes));
51 0 : btnNo_->SetClickHdl(LINK(this, RestartDialog, hdlNo));
52 0 : }
53 0 : virtual ~RestartDialog() { disposeOnce(); }
54 0 : virtual void dispose() SAL_OVERRIDE
55 : {
56 0 : reason_.clear();
57 0 : btnYes_.clear();
58 0 : btnNo_.clear();
59 0 : ModalDialog::dispose();
60 0 : }
61 : private:
62 : DECL_LINK(hdlYes, void *);
63 : DECL_LINK(hdlNo, void *);
64 :
65 : VclPtr<vcl::Window> reason_;
66 : VclPtr<PushButton> btnYes_;
67 : VclPtr<PushButton> btnNo_;
68 : };
69 :
70 0 : IMPL_LINK_NOARG(RestartDialog, hdlYes) {
71 0 : EndDialog(RET_OK);
72 0 : return 0;
73 : }
74 :
75 0 : IMPL_LINK_NOARG(RestartDialog, hdlNo) {
76 0 : EndDialog(RET_CANCEL);
77 0 : return 0;
78 : }
79 :
80 : }
81 :
82 0 : void svtools::executeRestartDialog(
83 : css::uno::Reference< css::uno::XComponentContext > const & context,
84 : vcl::Window * parent, RestartReason reason)
85 : {
86 0 : if (ScopedVclPtrInstance<RestartDialog>::Create(parent, reason)->Execute()) {
87 0 : css::task::OfficeRestartManager::get(context)->requestRestart(
88 0 : css::uno::Reference< css::task::XInteractionHandler >());
89 : }
90 0 : }
91 :
92 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|