Ensure consistency when saving the current capture. Closes #2358

* If we save the current capture from a connection window we want to do that via
  the main window so the UI can be properly updated and so we can save it
  properly through the replay manager, so the old one can be removed safely.
This commit is contained in:
baldurk
2021-09-14 13:25:02 +01:00
parent 0054e534f8
commit 2752008d13
3 changed files with 36 additions and 19 deletions
@@ -801,6 +801,16 @@ void LiveCapture::openCapture(Capture *cap)
bool LiveCapture::saveCapture(Capture *cap, QString path)
{
// if this is the current capture, do the save through the main window
if(QString(m_Ctx.GetCaptureFilename()) == cap->path)
{
// if there's no target path, let the main window prompt for save.
if(path.isEmpty())
return m_Main->PromptSaveCaptureAs();
else
return m_Main->SaveCurrentCapture(path);
}
if(path.isEmpty())
{
path = m_Main->GetSavePath();
+22 -17
View File
@@ -1004,27 +1004,32 @@ bool MainWindow::PromptSaveCaptureAs()
QString saveFilename = GetSavePath();
if(!saveFilename.isEmpty())
{
QString origFilename = m_Ctx.GetCaptureFilename();
bool success = m_Ctx.SaveCaptureTo(saveFilename);
if(!success)
return false;
AddRecentFile(m_Ctx.Config().RecentCaptureFiles, saveFilename);
PopulateRecentCaptureFiles();
SetTitle(saveFilename);
for(LiveCapture *live : m_LiveCaptures)
live->fileSaved(origFilename, saveFilename);
return true;
}
return SaveCurrentCapture(saveFilename);
return false;
}
bool MainWindow::SaveCurrentCapture(QString saveFilename)
{
QString origFilename = m_Ctx.GetCaptureFilename();
bool success = m_Ctx.SaveCaptureTo(saveFilename);
if(!success)
return false;
AddRecentFile(m_Ctx.Config().RecentCaptureFiles, saveFilename);
PopulateRecentCaptureFiles();
SetTitle(saveFilename);
for(LiveCapture *live : m_LiveCaptures)
live->fileSaved(origFilename, saveFilename);
ui->action_Save_Capture_Inplace->setEnabled(false);
return true;
}
void MainWindow::exportCapture(const CaptureFileFormat &fmt)
{
if(!m_Ctx.IsCaptureLocal())
+4 -2
View File
@@ -115,6 +115,10 @@ public:
void ShowLiveCapture(LiveCapture *live);
void LiveCaptureClosed(LiveCapture *live);
bool PromptCloseCapture();
bool PromptSaveCaptureAs();
bool SaveCurrentCapture(QString saveFilename);
void RemoveRecentCapture(const QString &filename);
QMenu *GetBaseMenu(WindowMenu base, rdcstr name);
@@ -279,8 +283,6 @@ private:
void recentCaptureFile(const QString &filename);
void recentCaptureSetting(const QString &filename);
bool PromptCloseCapture();
bool PromptSaveCaptureAs();
void OpenCaptureConfigFile(const QString &filename, bool exe);
QVariantMap saveState();