summaryrefslogtreecommitdiff
path: root/ui/guiStatusHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ui/guiStatusHandler.cpp')
-rw-r--r--ui/guiStatusHandler.cpp397
1 files changed, 0 insertions, 397 deletions
diff --git a/ui/guiStatusHandler.cpp b/ui/guiStatusHandler.cpp
deleted file mode 100644
index 3d91fbe7..00000000
--- a/ui/guiStatusHandler.cpp
+++ /dev/null
@@ -1,397 +0,0 @@
-// **************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
-// * Copyright (C) 2008-2010 ZenJu (zhnmju123 AT gmx.de) *
-// **************************************************************************
-//
-#include "guiStatusHandler.h"
-#include "smallDialogs.h"
-#include "messagePopup.h"
-#include "../shared/systemConstants.h"
-#include "mainDialog.h"
-#include <wx/wupdlock.h>
-#include "../shared/globalFunctions.h"
-#include "../shared/stringConv.h"
-#include "../shared/util.h"
-
-using namespace FreeFileSync;
-
-
-CompareStatusHandler::CompareStatusHandler(MainDialog* dlg) :
- mainDialog(dlg),
- ignoreErrors(false),
- currentProcess(StatusHandler::PROCESS_NONE)
-{
- wxWindowUpdateLocker dummy(mainDialog); //avoid display distortion
-
- //prevent user input during "compare", do not disable maindialog since abort-button would also be disabled
- mainDialog->disableAllElements();
-
- //display status panel during compare
- mainDialog->compareStatus->init(); //clear old values and make visible
-
- mainDialog->bSizer1->Layout(); //both sizers need to recalculate!
- mainDialog->bSizer6->Layout(); //adapt layout for wxBitmapWithImage
- mainDialog->Refresh();
-
- //register abort button
- mainDialog->m_buttonAbort->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CompareStatusHandler::OnAbortCompare ), NULL, this);
-
- //register key event
- mainDialog->Connect(wxEVT_CHAR_HOOK, wxKeyEventHandler(CompareStatusHandler::OnKeyPressed), NULL, this);
-}
-
-
-CompareStatusHandler::~CompareStatusHandler()
-{
- updateUiNow(); //ui update before enabling buttons again: prevent strange behaviour of delayed button clicks
-
- //reenable complete main dialog
- mainDialog->enableAllElements();
-
- if (abortIsRequested())
- mainDialog->pushStatusInformation(_("Operation aborted!"));
-
- //hide status panel from main window
- mainDialog->compareStatus->finalize();
-
- mainDialog->bSizer6->Layout(); //adapt layout for wxBitmapWithImage
- mainDialog->Layout();
- mainDialog->Refresh();
-
- //register key event
- mainDialog->Disconnect(wxEVT_CHAR_HOOK, wxKeyEventHandler(CompareStatusHandler::OnKeyPressed), NULL, this);
- //de-register abort button
- mainDialog->m_buttonAbort->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CompareStatusHandler::OnAbortCompare ), NULL, this);
-}
-
-
-void CompareStatusHandler::OnKeyPressed(wxKeyEvent& event)
-{
- const int keyCode = event.GetKeyCode();
- if (keyCode == WXK_ESCAPE)
- {
- wxCommandEvent dummy;
- OnAbortCompare(dummy);
- }
-
- event.Skip();
-}
-
-
-void CompareStatusHandler::updateStatusText(const Zstring& text)
-{
- mainDialog->compareStatus->setStatusText_NoUpdate(text);
-}
-
-
-void CompareStatusHandler::initNewProcess(int objectsTotal, wxLongLong dataTotal, Process processID)
-{
- currentProcess = processID;
-
- switch (currentProcess)
- {
- case StatusHandler::PROCESS_SCANNING:
- break;
- case StatusHandler::PROCESS_COMPARING_CONTENT:
- {
- wxWindowUpdateLocker dummy(mainDialog);
- mainDialog->compareStatus->switchToCompareBytewise(objectsTotal, dataTotal);
- mainDialog->Layout(); //show progress bar...
- mainDialog->Refresh(); //remove distortion...
- }
- break;
- case StatusHandler::PROCESS_SYNCHRONIZING:
- case StatusHandler::PROCESS_NONE:
- assert(false);
- break;
- }
-}
-
-
-inline
-void CompareStatusHandler::updateProcessedData(int objectsProcessed, wxLongLong dataProcessed)
-{
- switch (currentProcess)
- {
- case StatusHandler::PROCESS_SCANNING:
- mainDialog->compareStatus->incScannedObjects_NoUpdate(objectsProcessed);
- break;
- case StatusHandler::PROCESS_COMPARING_CONTENT:
- mainDialog->compareStatus->incProcessedCmpData_NoUpdate(objectsProcessed, dataProcessed);
- break;
- case StatusHandler::PROCESS_SYNCHRONIZING:
- case StatusHandler::PROCESS_NONE:
- assert(false);
- break;
- }
-}
-
-
-ErrorHandler::Response CompareStatusHandler::reportError(const wxString& message)
-{
- if (ignoreErrors)
- return ErrorHandler::IGNORE_ERROR;
-
- mainDialog->compareStatus->updateStatusPanelNow();
-
- bool ignoreNextErrors = false;
- ErrorDlg errorDlg(NULL,
- ErrorDlg::BUTTON_IGNORE | ErrorDlg::BUTTON_RETRY | ErrorDlg::BUTTON_ABORT,
- message, ignoreNextErrors);
- errorDlg.Raise();
- switch (static_cast<ErrorDlg::ReturnCodes>(errorDlg.ShowModal()))
- {
- case ErrorDlg::BUTTON_IGNORE:
- ignoreErrors = ignoreNextErrors;
- return ErrorHandler::IGNORE_ERROR;
-
- case ErrorDlg::BUTTON_RETRY:
- return ErrorHandler::RETRY;
-
- case ErrorDlg::BUTTON_ABORT:
- abortThisProcess();
- }
-
- assert(false);
- return ErrorHandler::IGNORE_ERROR; //dummy return value
-}
-
-
-void CompareStatusHandler::reportFatalError(const wxString& errorMessage)
-{
- mainDialog->compareStatus->updateStatusPanelNow();
-
- bool dummy = false;
- ErrorDlg errorDlg(NULL,
- ErrorDlg::BUTTON_ABORT,
- errorMessage, dummy);
- errorDlg.Raise();
- errorDlg.ShowModal();
- abortThisProcess();
-}
-
-
-void CompareStatusHandler::reportWarning(const wxString& warningMessage, bool& warningActive)
-{
- if (!warningActive || ignoreErrors) //if errors are ignored, then warnings should also
- return;
-
- mainDialog->compareStatus->updateStatusPanelNow();
-
- //show popup and ask user how to handle warning
- bool dontWarnAgain = false;
- WarningDlg warningDlg(NULL,
- WarningDlg::BUTTON_IGNORE | WarningDlg::BUTTON_ABORT,
- warningMessage,
- dontWarnAgain);
- warningDlg.Raise();
- switch (static_cast<WarningDlg::Response>(warningDlg.ShowModal()))
- {
- case WarningDlg::BUTTON_IGNORE:
- warningActive = !dontWarnAgain;
- break;
-
- case WarningDlg::BUTTON_SWITCH:
- assert(false);
- case WarningDlg::BUTTON_ABORT:
- abortThisProcess();
- break;
- }
-}
-
-
-inline
-void CompareStatusHandler::forceUiRefresh()
-{
- mainDialog->compareStatus->updateStatusPanelNow();
-}
-
-
-void CompareStatusHandler::OnAbortCompare(wxCommandEvent& event)
-{
- requestAbortion();
-}
-
-
-void CompareStatusHandler::abortThisProcess()
-{
- requestAbortion();
- throw FreeFileSync::AbortThisProcess();
-}
-//########################################################################################################
-
-
-SyncStatusHandler::SyncStatusHandler(wxTopLevelWindow* parentDlg, bool ignoreAllErrors) :
- syncStatusFrame(*this, parentDlg, false),
- ignoreErrors(ignoreAllErrors) {}
-
-
-SyncStatusHandler::~SyncStatusHandler()
-{
- const int totalErrors = errorLog.errorsTotal(); //evaluate before finalizing log
-
- //finalize error log
- if (abortIsRequested())
- errorLog.logError(wxString(_("Synchronization aborted!")) + wxT(" \n") + _("You may try to synchronize remaining items again (WITHOUT having to re-compare)!"));
- else if (totalErrors)
- errorLog.logWarning(wxString(_("Synchronization completed with errors!")) + wxT(" \n") + _("You may try to synchronize remaining items again (WITHOUT having to re-compare)!"));
- else
- errorLog.logInfo(_("Synchronization completed successfully!"));
-
-
- //print the results list
- wxString finalMessage;
- if (totalErrors > 0)
- {
- wxString header(_("Warning: Synchronization failed for %x item(s):"));
- header.Replace(wxT("%x"), FreeFileSync::numberToStringSep(totalErrors), false);
- finalMessage += header + wxT("\n\n");
- }
-
- const ErrorLogging::MessageEntry& messages = errorLog.getFormattedMessages();
- for (ErrorLogging::MessageEntry::const_iterator i = messages.begin(); i != messages.end(); ++i)
- {
- finalMessage += *i;
- finalMessage += wxT("\n\n");
- }
-
- //notify to syncStatusFrame that current process has ended
- if (abortIsRequested())
- syncStatusFrame.processHasFinished(SyncStatus::ABORTED, finalMessage); //enable okay and close events
- else if (totalErrors > 0)
- syncStatusFrame.processHasFinished(SyncStatus::FINISHED_WITH_ERROR, finalMessage);
- else
- syncStatusFrame.processHasFinished(SyncStatus::FINISHED_WITH_SUCCESS, finalMessage);
-}
-
-
-inline
-void SyncStatusHandler::updateStatusText(const Zstring& text)
-{
- syncStatusFrame.setStatusText_NoUpdate(text);
-}
-
-
-void SyncStatusHandler::initNewProcess(int objectsTotal, wxLongLong dataTotal, Process processID)
-{
- switch (processID)
- {
- case StatusHandler::PROCESS_SYNCHRONIZING:
- syncStatusFrame.resetGauge(objectsTotal, dataTotal);
- syncStatusFrame.setCurrentStatus(SyncStatus::SYNCHRONIZING);
- break;
- case StatusHandler::PROCESS_SCANNING:
- case StatusHandler::PROCESS_COMPARING_CONTENT:
- case StatusHandler::PROCESS_NONE:
- assert(false);
- break;
- }
-}
-
-
-inline
-void SyncStatusHandler::updateProcessedData(int objectsProcessed, wxLongLong dataProcessed)
-{
- syncStatusFrame.incProgressIndicator_NoUpdate(objectsProcessed, dataProcessed);
-}
-
-
-ErrorHandler::Response SyncStatusHandler::reportError(const wxString& errorMessage)
-{
- if (ignoreErrors)
- {
- errorLog.logError(errorMessage);
- return ErrorHandler::IGNORE_ERROR;
- }
-
- syncStatusFrame.updateStatusDialogNow();
-
- bool ignoreNextErrors = false;
- ErrorDlg errorDlg(NULL,
- ErrorDlg::BUTTON_IGNORE | ErrorDlg::BUTTON_RETRY | ErrorDlg::BUTTON_ABORT,
- errorMessage,
- ignoreNextErrors);
- errorDlg.Raise();
- const ErrorDlg::ReturnCodes rv = static_cast<ErrorDlg::ReturnCodes>(errorDlg.ShowModal());
- switch (rv)
- {
- case ErrorDlg::BUTTON_IGNORE:
- ignoreErrors = ignoreNextErrors;
- errorLog.logError(errorMessage);
- return ErrorHandler::IGNORE_ERROR;
-
- case ErrorDlg::BUTTON_RETRY:
- return ErrorHandler::RETRY;
-
- case ErrorDlg::BUTTON_ABORT:
- errorLog.logError(errorMessage);
- abortThisProcess();
- }
-
- assert (false);
- errorLog.logError(errorMessage);
- return ErrorHandler::IGNORE_ERROR;
-}
-
-
-void SyncStatusHandler::reportFatalError(const wxString& errorMessage)
-{
- errorLog.logFatalError(errorMessage);
- abortThisProcess();
-}
-
-
-void SyncStatusHandler::reportWarning(const wxString& warningMessage, bool& warningActive)
-{
- errorLog.logWarning(warningMessage);
-
- if (ignoreErrors || !warningActive) //if errors are ignored, then warnings should also
- return;
- else
- {
- syncStatusFrame.updateStatusDialogNow();
-
- //show popup and ask user how to handle warning
- bool dontWarnAgain = false;
- WarningDlg warningDlg(NULL,
- WarningDlg::BUTTON_IGNORE | WarningDlg::BUTTON_ABORT,
- warningMessage,
- dontWarnAgain);
- warningDlg.Raise();
- const WarningDlg::Response rv = static_cast<WarningDlg::Response>(warningDlg.ShowModal());
- switch (rv)
- {
- case WarningDlg::BUTTON_IGNORE: //no unhandled error situation!
- warningActive = !dontWarnAgain;
- return;
-
- case WarningDlg::BUTTON_SWITCH:
- assert(false);
- case WarningDlg::BUTTON_ABORT:
- abortThisProcess();
- return;
- }
-
- assert(false);
- }
-}
-
-
-void SyncStatusHandler::reportInfo(const wxString& infoMessage)
-{
- errorLog.logInfo(infoMessage);
-}
-
-
-void SyncStatusHandler::forceUiRefresh()
-{
- syncStatusFrame.updateStatusDialogNow();
-}
-
-
-void SyncStatusHandler::abortThisProcess()
-{
- requestAbortion();
- throw FreeFileSync::AbortThisProcess(); //abort can be triggered by syncStatusFrame
-}
bgstack15