]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/proxguiqt.cpp
`hf emv gpo` works
[proxmark3-svn] / client / proxguiqt.cpp
index 3805411d226e388493e3418fcba8d41a03c71b60..ab0976cceb4442e3b157bbc1403ff1b18721329a 100644 (file)
@@ -84,6 +84,18 @@ void ProxGuiQT::_HideGraphWindow(void)
 void ProxGuiQT::_Exit(void) {
        delete this;
 }
+
+void ProxGuiQT::_StartProxmarkThread(void) {
+       if (!proxmarkThread)
+               return;
+
+       // if thread finished delete self and delete application
+       QObject::connect(proxmarkThread, SIGNAL(finished()), proxmarkThread, SLOT(deleteLater()));
+       QObject::connect(proxmarkThread, SIGNAL(finished()), this, SLOT(_Exit()));
+       // start proxmark thread
+       proxmarkThread->start();
+}
+
 void ProxGuiQT::MainLoop()
 {
        plotapp = new QApplication(argc, argv);
@@ -93,11 +105,14 @@ void ProxGuiQT::MainLoop()
        connect(this, SIGNAL(HideGraphWindowSignal()), this, SLOT(_HideGraphWindow()));
        connect(this, SIGNAL(ExitSignal()), this, SLOT(_Exit()));
 
+       //start proxmark thread after starting event loop
+       QTimer::singleShot(200, this, SLOT(_StartProxmarkThread()));
+
        plotapp->exec();
 }
 
-ProxGuiQT::ProxGuiQT(int argc, char **argv) : plotapp(NULL), plotwidget(NULL),
-       argc(argc), argv(argv)
+ProxGuiQT::ProxGuiQT(int argc, char **argv, WorkerThread *wthread) : plotapp(NULL), plotwidget(NULL),
+       argc(argc), argv(argv), proxmarkThread(wthread)
 {
 }
 
@@ -110,7 +125,7 @@ ProxGuiQT::~ProxGuiQT(void)
        //}
        if (plotapp) {
                plotapp->quit();
-               delete plotapp;
+               // delete plotapp;
                plotapp = NULL;
        }
 }
@@ -254,6 +269,7 @@ int Plot::xCoordOf(int i, QRect r )
 int Plot::yCoordOf(int v, QRect r, int maxVal)
 {
        int z = (r.bottom() - r.top())/2;
+       if ( maxVal == 0 ) maxVal++;
        return -(z * v) / maxVal + z;
 }
 
@@ -564,6 +580,8 @@ Plot::Plot(QWidget *parent) : QWidget(parent), GraphStart(0), GraphPixelsPerPoin
        CursorBPos = 0;
 
        setWindowTitle(tr("Sliders"));
+
+       master = parent;
 }
 
 void Plot::closeEvent(QCloseEvent *event)
@@ -673,7 +691,7 @@ void Plot::keyPressEvent(QKeyEvent *event)
                        break;
 
                case Qt::Key_Q:
-                       this->hide();
+                       master->hide();
                        break;
 
                default:
Impressum, Datenschutz