1
0
Эх сурвалжийг харах

handle autosave temporary failure

Le Tan 4 жил өмнө
parent
commit
8a1558f4da

+ 15 - 3
src/core/buffer/buffer.cpp

@@ -209,7 +209,13 @@ Buffer::OperationCode Buffer::save(bool p_force)
             return OperationCode::FileChangedOutside;
             return OperationCode::FileChangedOutside;
         }
         }
 
 
-        m_provider->write(m_content);
+        try {
+            m_provider->write(m_content);
+        } catch (Exception &p_e) {
+            qWarning() << "failed to write the buffer content" << getPath();
+            return OperationCode::Failed;
+        }
+
         setModified(false);
         setModified(false);
         m_state &= ~(StateFlag::FileMissingOnDisk | StateFlag::FileChangedOutside);
         m_state &= ~(StateFlag::FileMissingOnDisk | StateFlag::FileChangedOutside);
     }
     }
@@ -312,11 +318,17 @@ void Buffer::autoSave()
         return;
         return;
 
 
     case EditorConfig::AutoSavePolicy::AutoSave:
     case EditorConfig::AutoSavePolicy::AutoSave:
-        save(false);
+        if (save(false) != OperationCode::Success) {
+            qWarning() << "AutoSave failed to save buffer, retry later";
+        }
         break;
         break;
 
 
     case EditorConfig::AutoSavePolicy::BackupFile:
     case EditorConfig::AutoSavePolicy::BackupFile:
-        writeBackupFile();
+        try {
+            writeBackupFile();
+        } catch (Exception &p_e) {
+            qWarning() << "AutoSave failed to write backup file, retry later";
+        }
         break;
         break;
     }
     }
 }
 }

+ 9 - 9
src/core/notebookmgr.cpp

@@ -102,7 +102,7 @@ QSharedPointer<INotebookBackend> NotebookMgr::createNotebookBackend(const QStrin
         return factory->createNotebookBackend(p_rootFolderPath);
         return factory->createNotebookBackend(p_rootFolderPath);
     } else {
     } else {
         Exception::throwOne(Exception::Type::InvalidArgument,
         Exception::throwOne(Exception::Type::InvalidArgument,
-                            QString("fail to find notebook backend factory %1").arg(p_backendName));
+                            QString("failed to find notebook backend factory %1").arg(p_backendName));
     }
     }
 
 
     return nullptr;
     return nullptr;
@@ -115,7 +115,7 @@ QSharedPointer<IVersionController> NotebookMgr::createVersionController(const QS
         return factory->createVersionController();
         return factory->createVersionController();
     } else {
     } else {
         Exception::throwOne(Exception::Type::InvalidArgument,
         Exception::throwOne(Exception::Type::InvalidArgument,
-                            QString("fail to find version controller factory %1").arg(p_controllerName));
+                            QString("failed to find version controller factory %1").arg(p_controllerName));
     }
     }
 
 
     return nullptr;
     return nullptr;
@@ -129,7 +129,7 @@ QSharedPointer<INotebookConfigMgr> NotebookMgr::createNotebookConfigMgr(const QS
         return factory->createNotebookConfigMgr(p_backend);
         return factory->createNotebookConfigMgr(p_backend);
     } else {
     } else {
         Exception::throwOne(Exception::Type::InvalidArgument,
         Exception::throwOne(Exception::Type::InvalidArgument,
-                            QString("fail to find notebook config manager factory %1").arg(p_mgrName));
+                            QString("failed to find notebook config manager factory %1").arg(p_mgrName));
     }
     }
 
 
     return nullptr;
     return nullptr;
@@ -165,7 +165,7 @@ QSharedPointer<Notebook> NotebookMgr::newNotebook(const QSharedPointer<NotebookP
     auto factory = m_notebookServer->getItem(p_parameters->m_type);
     auto factory = m_notebookServer->getItem(p_parameters->m_type);
     if (!factory) {
     if (!factory) {
         Exception::throwOne(Exception::Type::InvalidArgument,
         Exception::throwOne(Exception::Type::InvalidArgument,
-                            QString("fail to find notebook factory %1").arg(p_parameters->m_type));
+                            QString("failed to find notebook factory %1").arg(p_parameters->m_type));
     }
     }
 
 
     auto notebook = factory->newNotebook(*p_parameters);
     auto notebook = factory->newNotebook(*p_parameters);
@@ -225,7 +225,7 @@ void NotebookMgr::readNotebooksFromConfig()
             auto nb = readNotebookFromConfig(item);
             auto nb = readNotebookFromConfig(item);
             addNotebook(nb);
             addNotebook(nb);
         } catch (Exception &p_e) {
         } catch (Exception &p_e) {
-            qCritical("fail to read notebook (%s) from config (%s)",
+            qCritical("failed to read notebook (%s) from config (%s)",
                       item.m_rootFolderPath.toStdString().c_str(),
                       item.m_rootFolderPath.toStdString().c_str(),
                       p_e.what());
                       p_e.what());
         }
         }
@@ -239,7 +239,7 @@ QSharedPointer<Notebook> NotebookMgr::readNotebookFromConfig(const SessionConfig
     auto factory = m_notebookServer->getItem(p_item.m_type);
     auto factory = m_notebookServer->getItem(p_item.m_type);
     if (!factory) {
     if (!factory) {
         Exception::throwOne(Exception::Type::InvalidArgument,
         Exception::throwOne(Exception::Type::InvalidArgument,
-                            QString("fail to find notebook factory %1").arg(p_item.m_type));
+                            QString("failed to find notebook factory %1").arg(p_item.m_type));
     }
     }
 
 
     auto backend = createNotebookBackend(p_item.m_backend, p_item.m_rootFolderPath);
     auto backend = createNotebookBackend(p_item.m_backend, p_item.m_rootFolderPath);
@@ -304,7 +304,7 @@ void NotebookMgr::closeNotebook(ID p_id)
                                return p_nb->getId() == p_id;
                                return p_nb->getId() == p_id;
                            });
                            });
     if (it == m_notebooks.end()) {
     if (it == m_notebooks.end()) {
-        qWarning() << "fail to find notebook of given id to close" << p_id;
+        qWarning() << "failed to find notebook of given id to close" << p_id;
         return;
         return;
     }
     }
 
 
@@ -330,7 +330,7 @@ void NotebookMgr::removeNotebook(ID p_id)
                                return p_nb->getId() == p_id;
                                return p_nb->getId() == p_id;
                            });
                            });
     if (it == m_notebooks.end()) {
     if (it == m_notebooks.end()) {
-        qWarning() << "fail to find notebook of given id to remove" << p_id;
+        qWarning() << "failed to find notebook of given id to remove" << p_id;
         return;
         return;
     }
     }
 
 
@@ -347,7 +347,7 @@ void NotebookMgr::removeNotebook(ID p_id)
     try {
     try {
         nbToRemove->remove();
         nbToRemove->remove();
     } catch (Exception &p_e) {
     } catch (Exception &p_e) {
-        qWarning() << QString("fail to remove notebook %1 (%2) (%3)").arg(nbToRemove->getName(),
+        qWarning() << QString("failed to remove notebook %1 (%2) (%3)").arg(nbToRemove->getName(),
                                                                           nbToRemove->getRootFolderPath(),
                                                                           nbToRemove->getRootFolderPath(),
                                                                           p_e.what());
                                                                           p_e.what());
         throw;
         throw;

+ 1 - 1
src/widgets/viewwindow.cpp

@@ -812,7 +812,7 @@ bool ViewWindow::save(bool p_force)
         MessageBoxHelper::notify(MessageBoxHelper::Warning,
         MessageBoxHelper::notify(MessageBoxHelper::Warning,
                                  tr("Failed to save note (%1).").arg(m_buffer->getName()),
                                  tr("Failed to save note (%1).").arg(m_buffer->getName()),
                                  tr("Please check the file (%1) and try it again.").arg(m_buffer->getPath()),
                                  tr("Please check the file (%1) and try it again.").arg(m_buffer->getPath()),
-                                 "",
+                                 tr("Maybe the file is occupied by another service temporarily."),
                                  this);
                                  this);
         return false;
         return false;
     }
     }