diff --git a/snapshot.cpp b/snapshot.cpp new file mode 100644 --- /dev/null +++ b/snapshot.cpp @@ -0,0 +1,91 @@ +/* + Copyright © 2015 Hasan Yavuz Özderya + + This file is part of serialplot. + + serialplot is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + serialplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with serialplot. If not, see . +*/ + +#include + +#include "snapshot.h" +#include "snapshotview.h" + +Snapshot::Snapshot(QMainWindow* parent, QString name) : + QObject(parent), + _showAction(name, this), + _deleteAction("Delete", this) +{ + _name = name; + + view = NULL; + mainWindow = parent; + connect(&_showAction, &QAction::triggered, this, &Snapshot::show); + + _deleteAction.setToolTip(QString("Delete ") + _name); + connect(&_deleteAction, &QAction::triggered, this, &Snapshot::onDeleteTriggered); +} + +Snapshot::~Snapshot() +{ + if (view != NULL) + { + delete view; + } +} + +QAction* Snapshot::showAction() +{ + return &_showAction; +} + +QAction* Snapshot::deleteAction() +{ + return &_deleteAction; +} + +void Snapshot::show() +{ + if (view == NULL) + { + view = new SnapshotView(mainWindow, this); + connect(view, &SnapshotView::closed, this, &Snapshot::viewClosed); + } + view->show(); + view->activateWindow(); + view->raise(); +} + +void Snapshot::viewClosed() +{ + view->deleteLater(); + view = NULL; +} + +void Snapshot::onDeleteTriggered() +{ + emit deleteRequested(this); +} + +QString Snapshot::name() +{ + return _name; +} + +void Snapshot::setName(QString name) +{ + _name = name; + _showAction.setText(_name); + emit nameChanged(this); +}