| // Copyright 2010-2015, Google Inc. |
| // All rights reserved. |
| // |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions are |
| // met: |
| // |
| // * Redistributions of source code must retain the above copyright |
| // notice, this list of conditions and the following disclaimer. |
| // * Redistributions in binary form must reproduce the above |
| // copyright notice, this list of conditions and the following disclaimer |
| // in the documentation and/or other materials provided with the |
| // distribution. |
| // * Neither the name of Google Inc. nor the names of its |
| // contributors may be used to endorse or promote products derived from |
| // this software without specific prior written permission. |
| // |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| #include "gui/error_message_dialog/error_message_dialog.h" |
| |
| #include <QtCore/QTimer> |
| #include <QtGui/QtGui> |
| #include <QtGui/QMessageBox> |
| |
| #include "base/flags.h" |
| |
| DEFINE_string(error_type, "", "type of error"); |
| |
| namespace mozc { |
| namespace gui { |
| namespace { |
| |
| void OnFatal(const QString &message) { |
| // we don't use QMessageBox::critical() here |
| // to set WindowStaysOnTopHint |
| QMessageBox message_box(QMessageBox::Critical, |
| QObject::tr("Mozc Fatal Error"), |
| message, QMessageBox::Ok, NULL, |
| Qt::Dialog | |
| Qt::MSWindowsFixedSizeDialogHint | |
| Qt::WindowStaysOnTopHint); |
| DeleyedMessageDialogHandler handler(&message_box); |
| handler.Exec(); |
| } |
| } // namespace |
| |
| DeleyedMessageDialogHandler::DeleyedMessageDialogHandler( |
| QMessageBox *message_box) |
| : message_box_(message_box) {} |
| |
| DeleyedMessageDialogHandler::~DeleyedMessageDialogHandler() {} |
| |
| void DeleyedMessageDialogHandler::Exec() { |
| const int kDisableInterval = 3000; |
| QTimer::singleShot(kDisableInterval, this, SLOT(EnableOkButton())); |
| QAbstractButton *button = message_box_->button(QMessageBox::Ok); |
| if (button != NULL) { |
| button->setEnabled(false); |
| } |
| message_box_->exec(); |
| } |
| |
| void DeleyedMessageDialogHandler::EnableOkButton() { |
| QAbstractButton *button = message_box_->button(QMessageBox::Ok); |
| if (button != NULL) { |
| button->setEnabled(true); |
| } |
| } |
| |
| void ErrorMessageDialog::Show() { |
| // defining all literal messages inside Show() method |
| // for easy i18n/i10n |
| if (FLAGS_error_type == "server_timeout") { |
| OnFatal(QObject::tr("Conversion engine is not responding. " |
| "Please restart this application.")); |
| } else if (FLAGS_error_type == "server_broken_message") { |
| OnFatal(QObject::tr("Connecting to an incompatible conversion engine. " |
| "Please restart your computer to enable Mozc. " |
| "If this problem persists, please uninstall Mozc " |
| "and install it again.")); |
| } else if (FLAGS_error_type == "server_version_mismatch") { |
| OnFatal(QObject::tr("Conversion engine has been upgraded. " |
| "Please restart this application to enable conversion engine. " |
| "If the problem persists, please restart your computer.")); |
| } else if (FLAGS_error_type == "server_shutdown") { |
| OnFatal(QObject::tr("Conversion engine is killed unexceptionally. " |
| "Restarting the engine...")); |
| } else if (FLAGS_error_type == "server_fatal") { |
| OnFatal(QObject::tr("Cannot start conversion engine. " |
| "Please restart your computer.")); |
| } else if (FLAGS_error_type == "renderer_version_mismatch") { |
| OnFatal(QObject::tr("Candidate window renderer has been upgraded. " |
| "Please restart this application to enable new candidate window renderer. " |
| "If the problem persists, please restart your computer.")); |
| } else if (FLAGS_error_type == "renderer_fatal") { |
| OnFatal(QObject::tr("Cannot start candidate window renderer. " |
| "Please restart your computer.")); |
| } |
| } |
| } // gui |
| } // mozc |