22#include " ui_analysiswindow.h"
33#include " analysisviewmodel.h"
44#include " huntimagegenerator.h"
5+ #include " timelineimagegenerator.h"
56#include " huntinfo.h"
67#include < QFileDialog>
78#include < QDesktopServices>
1314#include < QImage>
1415#include < QMimeData>
1516
17+
1618namespace Yate {
1719AnalysisWindow::AnalysisWindow (QWidget *parent) :
1820 QMainWindow (parent), ui(new Ui::AnalysisWindow),
1921 model_ (nullptr ), hunt_(nullptr ), selectedNight_(-1 )
2022{
2123 qDebug () << " Initializing analysis window." ;
22- isGenerating_.storeRelaxed (0 );
2324 ui->setupUi (this );
25+ isGenerating_.storeRelaxed (0 );
2426 unhighlightNight ();
2527 qDebug () << " Initialized analysis window." ;
2628}
@@ -129,10 +131,14 @@ void AnalysisWindow::highlightNight(int night)
129131 if (isGenerating_.loadRelaxed () != 1 ) {
130132 ui->btnExport ->setEnabled (true );
131133 ui->btnCopyImg ->setEnabled (true );
134+ ui->btnExportTimeline ->setEnabled (true );
135+ ui->btnCopyTimeline ->setEnabled (true );
132136 }
133137
134138 ui->btnExport ->setToolTip (" " );
135139 ui->btnCopyImg ->setToolTip (" " );
140+ ui->btnExportTimeline ->setToolTip (" " );
141+ ui->btnCopyTimeline ->setToolTip (" " );
136142}
137143
138144void AnalysisWindow::unhighlightNight ()
@@ -142,6 +148,10 @@ void AnalysisWindow::unhighlightNight()
142148 ui->btnExport ->setToolTip (" Select a night analysis to export." );
143149 ui->btnCopyImg ->setEnabled (false );
144150 ui->btnCopyImg ->setToolTip (" Select a night analysis to copy." );
151+ ui->btnExportTimeline ->setEnabled (false );
152+ ui->btnExportTimeline ->setToolTip (" Select a night analysis to generate timeline." );
153+ ui->btnCopyTimeline ->setEnabled (false );
154+ ui->btnCopyTimeline ->setToolTip (" Select a night analysis to generate timeline." );
145155
146156}
147157
@@ -185,6 +195,8 @@ void AnalysisWindow::on_btnExport_clicked()
185195 savePath_ = savePath;
186196 ui->btnExport ->setEnabled (false );
187197 ui->btnCopyImg ->setEnabled (false );
198+ ui->btnExportTimeline ->setEnabled (false );
199+ ui->btnCopyTimeline ->setEnabled (false );
188200 isGenerating_.storeRelaxed (1 );
189201 HuntImageGenerator *gen = new HuntImageGenerator (savePath, night, night.host (), night.squad ());
190202 QThread *genThread = new QThread;
@@ -235,6 +247,9 @@ void AnalysisWindow::on_btnCopyImg_clicked()
235247 QSettings settings;
236248 NightInfo &night = hunt_->night (selectedNight_);
237249 ui->btnExport ->setEnabled (false );
250+ ui->btnCopyImg ->setEnabled (false );
251+ ui->btnExportTimeline ->setEnabled (false );
252+ ui->btnCopyTimeline ->setEnabled (false );
238253 isGenerating_.storeRelaxed (1 );
239254 HuntImageGenerator *gen = new HuntImageGenerator (" " , night, night.host (), night.squad ());
240255 QThread *genThread = new QThread;
@@ -246,4 +261,90 @@ void AnalysisWindow::on_btnCopyImg_clicked()
246261 genThread->start ();
247262}
248263
264+
265+
266+
267+
268+ void AnalysisWindow::on_btnExportTimeline_clicked ()
269+ {
270+ if (selectedNight_ == -1 || (selectedNight_ >= hunt_->nightCount ())) {
271+ unhighlightNight ();
272+ return ;
273+ }
274+ qDebug () << " Exporting timeline image." ;
275+ QSettings settings;
276+ NightInfo &night = hunt_->night (selectedNight_);
277+ QString defaultSavePath = " " ;
278+ if (!settings.value (SETTINGS_KEY_LAST_SAVE_DIR).isNull ()) {
279+ defaultSavePath = settings.value (SETTINGS_KEY_LAST_SAVE_DIR).toString ();
280+ if (!QFileInfo (defaultSavePath).exists () || !QFileInfo (defaultSavePath).isDir ()) {
281+ defaultSavePath = " " ;
282+ settings.remove (SETTINGS_KEY_LAST_SAVE_DIR);
283+ }
284+ }
285+ QString saveFileDir;
286+ if (defaultSavePath.size ()) {
287+ saveFileDir = defaultSavePath + QDir::separator () + " Timeline_" + QDateTime::currentDateTime ().toString (" MM_dd_yy_hh" ) + " .png" ;
288+ } else {
289+ saveFileDir = " Hunt_" + QDateTime::currentDateTime ().toString (" MM_dd_yy_hh" ) + " .png" ;
290+ }
291+ QString savePath = QFileDialog::getSaveFileName (this , " Export Hunt Summary" , saveFileDir, " .png (PNG)" );
292+ if (!savePath.size ()) {
293+ return ;
294+ }
295+
296+ if (!savePath.endsWith (" .png" )) {
297+ if (!savePath.endsWith (" ." )) {
298+ savePath = savePath + " ." ;
299+ }
300+ savePath = savePath + " png" ;
301+ }
302+ QString parentSavePath = QFileInfo (savePath).absoluteDir ().absolutePath ();
303+ settings.setValue (SETTINGS_KEY_LAST_SAVE_DIR, parentSavePath);
304+ savePath_ = savePath;
305+ ui->btnExport ->setEnabled (false );
306+ ui->btnCopyImg ->setEnabled (false );
307+ ui->btnExportTimeline ->setEnabled (false );
308+ ui->btnCopyTimeline ->setEnabled (false );
309+ isGenerating_.storeRelaxed (1 );
310+ TimelineImageGenerator *gen = new TimelineImageGenerator (savePath, night, night.host (), night.squad ());
311+ QThread *genThread = new QThread;
312+ gen->moveToThread (genThread);
313+ connect (genThread, &QThread::finished, genThread, &QThread::deleteLater);
314+ connect (genThread, &QThread::finished, gen, &QThread::deleteLater);
315+ connect (genThread, &QThread::started, gen, &TimelineImageGenerator::exportImage);
316+ connect (gen, &TimelineImageGenerator::exportFinished, this , &AnalysisWindow::exportFinished);
317+ genThread->start ();
318+ }
319+
320+
321+ void AnalysisWindow::on_btnCopyTimeline_clicked ()
322+ {
323+ if (selectedNight_ == -1 || (selectedNight_ >= hunt_->nightCount ())) {
324+ unhighlightNight ();
325+ return ;
326+ }
327+ qDebug () << " Generating timeline image." ;
328+
329+ QSettings settings;
330+ NightInfo &night = hunt_->night (selectedNight_);
331+ ui->btnExport ->setEnabled (false );
332+ ui->btnCopyImg ->setEnabled (false );
333+ ui->btnExportTimeline ->setEnabled (false );
334+ ui->btnCopyTimeline ->setEnabled (false );
335+ isGenerating_.storeRelaxed (1 );
336+ TimelineImageGenerator *gen = new TimelineImageGenerator (" " , night, night.host (), night.squad ());
337+ QThread *genThread = new QThread;
338+ gen->moveToThread (genThread);
339+ connect (genThread, &QThread::finished, genThread, &QThread::deleteLater);
340+ connect (genThread, &QThread::finished, gen, &QThread::deleteLater);
341+ connect (genThread, &QThread::started, gen, &TimelineImageGenerator::generateAndEmit);
342+ connect (gen, &TimelineImageGenerator::generateFinished, this , &AnalysisWindow::generateFinished);
343+ genThread->start ();
344+ }
345+
346+
347+
348+
349+
249350}
0 commit comments