nss: upgrade to release 3.73
[LibreOffice.git] / svtools / source / dialogs / restartdialog.cxx
blobdbe85f95eb48e41897d628c27c95a5c717ce718a
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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 */
10 #include <sal/config.h>
12 #include <cassert>
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/weld.hxx>
22 namespace {
24 class RestartDialog : public weld::GenericDialogController{
25 public:
26 RestartDialog(weld::Window* parent, svtools::RestartReason reason)
27 : GenericDialogController(parent, "svt/ui/restartdialog.ui", "RestartDialog")
28 , btnYes_(m_xBuilder->weld_button("yes"))
29 , btnNo_(m_xBuilder->weld_button("no"))
31 switch (reason) {
32 case svtools::RESTART_REASON_JAVA:
33 reason_ = m_xBuilder->weld_widget("reason_java");
34 break;
35 case svtools::RESTART_REASON_PDF_AS_STANDARD_JOB_FORMAT:
36 reason_ = m_xBuilder->weld_widget("reason_pdf");
37 break;
38 case svtools::RESTART_REASON_BIBLIOGRAPHY_INSTALL:
39 reason_ = m_xBuilder->weld_widget("reason_bibliography_install");
40 break;
41 case svtools::RESTART_REASON_MAILMERGE_INSTALL:
42 reason_ = m_xBuilder->weld_widget("reason_mailmerge_install");
43 break;
44 case svtools::RESTART_REASON_LANGUAGE_CHANGE:
45 reason_ = m_xBuilder->weld_widget("reason_language_change");
46 break;
47 case svtools::RESTART_REASON_ADDING_PATH:
48 reason_ = m_xBuilder->weld_widget("reason_adding_path");
49 break;
50 case svtools::RESTART_REASON_ASSIGNING_JAVAPARAMETERS:
51 reason_ = m_xBuilder->weld_widget("reason_assigning_javaparameters");
52 break;
53 case svtools::RESTART_REASON_ASSIGNING_FOLDERS:
54 reason_ = m_xBuilder->weld_widget("reason_assigning_folders");
55 break;
56 case svtools::RESTART_REASON_EXP_FEATURES:
57 reason_ = m_xBuilder->weld_widget("reason_exp_features");
58 break;
59 case svtools::RESTART_REASON_EXTENSION_INSTALL:
60 reason_ = m_xBuilder->weld_widget("reason_extension_install");
61 break;
62 case svtools::RESTART_REASON_SKIA:
63 reason_ = m_xBuilder->weld_widget("reason_skia");
64 break;
65 case svtools::RESTART_REASON_OPENCL:
66 reason_ = m_xBuilder->weld_widget("reason_opencl");
67 break;
68 case svtools::RESTART_REASON_THREADING:
69 reason_ = m_xBuilder->weld_widget("reason_threading");
70 break;
71 case svtools::RESTART_REASON_MSCOMPATIBLE_FORMS_MENU:
72 reason_ = m_xBuilder->weld_widget("reason_mscompatible_formsmenu");
73 break;
74 default:
75 assert(false); // this cannot happen
77 reason_->show();
78 btnYes_->connect_clicked(LINK(this, RestartDialog, hdlYes));
79 btnNo_->connect_clicked(LINK(this, RestartDialog, hdlNo));
81 private:
82 DECL_LINK(hdlYes, weld::Button&, void);
83 DECL_LINK(hdlNo, weld::Button&, void);
85 std::unique_ptr<weld::Widget> reason_;
86 std::unique_ptr<weld::Button> btnYes_;
87 std::unique_ptr<weld::Button> btnNo_;
90 IMPL_LINK_NOARG(RestartDialog, hdlYes, weld::Button&, void)
92 m_xDialog->response(RET_OK);
95 IMPL_LINK_NOARG(RestartDialog, hdlNo, weld::Button&, void)
97 m_xDialog->response(RET_CANCEL);
102 bool svtools::executeRestartDialog(
103 css::uno::Reference< css::uno::XComponentContext > const & context,
104 weld::Window* parent, RestartReason reason)
106 auto xRestartManager = css::task::OfficeRestartManager::get(context);
107 if (xRestartManager->isRestartRequested(false))
108 return true; // don't try to show another dialog when restart is already in progress
109 RestartDialog aDlg(parent, reason);
110 if (aDlg.run()) {
111 xRestartManager->requestRestart(
112 css::uno::Reference< css::task::XInteractionHandler >());
113 return true;
115 return false;
118 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */