You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.7 KiB
83 lines
1.7 KiB
#include "AutosaveJob.h" |
|
|
|
#include "control/Control.h" |
|
#include "control/xojfile/SaveHandler.h" |
|
|
|
#include <i18n.h> |
|
|
|
AutosaveJob::AutosaveJob(Control* control) |
|
{ |
|
XOJ_INIT_TYPE(AutosaveJob); |
|
|
|
this->control = control; |
|
} |
|
|
|
AutosaveJob::~AutosaveJob() |
|
{ |
|
XOJ_RELEASE_TYPE(AutosaveJob); |
|
} |
|
|
|
void AutosaveJob::afterRun() |
|
{ |
|
XOJ_CHECK_TYPE(AutosaveJob); |
|
|
|
GtkWidget* dialog = gtk_message_dialog_new((GtkWindow*) control->getWindow(), |
|
GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", |
|
FC(_F("Autosave: {1}") % this->error)); |
|
gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(this->control->getWindow()->getWindow())); |
|
gtk_dialog_run(GTK_DIALOG(dialog)); |
|
gtk_widget_destroy(dialog); |
|
} |
|
|
|
void AutosaveJob::run(bool noThreads) |
|
{ |
|
XOJ_CHECK_TYPE(AutosaveJob); |
|
|
|
SaveHandler handler; |
|
|
|
control->getUndoRedoHandler()->documentAutosaved(); |
|
|
|
Document* doc = control->getDocument(); |
|
|
|
doc->lock(); |
|
handler.prepareSave(doc); |
|
path filename = doc->getFilename(); |
|
doc->unlock(); |
|
|
|
if (filename.empty()) |
|
{ |
|
filename = Util::getAutosaveFilename(); |
|
} |
|
else |
|
{ |
|
string file = filename.filename().string(); |
|
filename.remove_filename(); |
|
filename /= CONCAT(".", file); |
|
filename.replace_extension(".autosave.xoj"); |
|
} |
|
|
|
control->renameLastAutosaveFile(); |
|
|
|
GzOutputStream* out = new GzOutputStream(filename); |
|
handler.saveTo(out, filename); |
|
delete out; |
|
out = NULL; |
|
|
|
this->error = handler.getErrorMessage(); |
|
if (!this->error.empty()) |
|
{ |
|
callAfterRun(); |
|
} |
|
else |
|
{ |
|
//control->deleteLastAutosaveFile(filename); |
|
control->setLastAutosaveFile(filename); |
|
} |
|
} |
|
|
|
JobType AutosaveJob::getType() |
|
{ |
|
XOJ_CHECK_TYPE(AutosaveJob); |
|
return JOB_TYPE_AUTOSAVE; |
|
} |
|
|
|
|