X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/212ef3a04d19bcb5299c38fd153ee434e0f26efd..refs/heads/master:/client/proxguiqt.h?ds=sidebyside diff --git a/client/proxguiqt.h b/client/proxguiqt.h index 303a37d0..9677b49c 100644 --- a/client/proxguiqt.h +++ b/client/proxguiqt.h @@ -8,31 +8,97 @@ // GUI (QT) //----------------------------------------------------------------------------- +#ifndef PROXGUI_QT +#define PROXGUI_QT + +#include +#include + #include #include #include #include #include +#include + +#include "ui/ui_overlays.h" +/** + * @brief The actual plot, black area were we paint the graph + */ +class Plot: public QWidget +{ +private: + QWidget *master; + int GraphStart; // Starting point/offset for the left side of the graph + double GraphPixelsPerPoint; // How many visual pixels are between each sample point (x axis) + int CursorAPos; + int CursorBPos; + void PlotGraph(int *buffer, int len, QRect r,QRect r2, QPainter* painter, int graphNum); + void PlotDemod(uint8_t *buffer, size_t len, QRect r,QRect r2, QPainter* painter, int graphNum, int plotOffset); + void plotGridLines(QPainter* painter,QRect r); + int xCoordOf(int i, QRect r ); + int yCoordOf(int v, QRect r, int maxVal); + int valueOf_yCoord(int y, QRect r, int maxVal); + void setMaxAndStart(int *buffer, int len, QRect plotRect); + QColor getColor(int graphNum); +public: + Plot(QWidget *parent = 0); +protected: + void paintEvent(QPaintEvent *event); + void closeEvent(QCloseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + void mousePressEvent(QMouseEvent *event) { mouseMoveEvent(event); } + void keyPressEvent(QKeyEvent *event); + +}; +class ProxGuiQT; + +/** + * The window with plot and controls + */ class ProxWidget : public QWidget { - Q_OBJECT; + Q_OBJECT; //needed for slot/signal classes private: - int GraphStart; - double GraphPixelsPerPoint; - int CursorAPos; - int CursorBPos; + ProxGuiQT *master; + Plot *plot; + Ui::Form *opsController; + QWidget* controlWidget; public: - ProxWidget(QWidget *parent = 0); + ProxWidget(QWidget *parent = 0, ProxGuiQT *master = NULL); + ~ProxWidget(void); + //OpsShow(void); protected: - void paintEvent(QPaintEvent *event); + // void paintEvent(QPaintEvent *event); void closeEvent(QCloseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void mousePressEvent(QMouseEvent *event) { mouseMoveEvent(event); } - void keyPressEvent(QKeyEvent *event); + void showEvent(QShowEvent *event); + void hideEvent(QHideEvent *event); + // void mouseMoveEvent(QMouseEvent *event); + // void mousePressEvent(QMouseEvent *event) { mouseMoveEvent(event); } + // void keyPressEvent(QKeyEvent *event); + public slots: + void applyOperation(); + void stickOperation(); + void vchange_autocorr(int v); + void vchange_askedge(int v); + void vchange_dthr_up(int v); + void vchange_dthr_down(int v); +}; + +class WorkerThread : public QThread { + Q_OBJECT; + public: + WorkerThread(char*, char*, bool); + ~WorkerThread(); + void run(); + private: + char *script_cmds_file = NULL; + char *script_cmd = NULL; + bool usb_present; }; class ProxGuiQT : public QObject @@ -44,23 +110,27 @@ class ProxGuiQT : public QObject ProxWidget *plotwidget; int argc; char **argv; - void (*main_func)(void); - + WorkerThread *proxmarkThread; + public: - ProxGuiQT(int argc, char **argv); + ProxGuiQT(int argc, char **argv, WorkerThread *wthread); ~ProxGuiQT(void); void ShowGraphWindow(void); void RepaintGraphWindow(void); void HideGraphWindow(void); void MainLoop(void); - + void Exit(void); private slots: void _ShowGraphWindow(void); void _RepaintGraphWindow(void); void _HideGraphWindow(void); - + void _Exit(void); + void _StartProxmarkThread(void); signals: void ShowGraphWindowSignal(void); void RepaintGraphWindowSignal(void); void HideGraphWindowSignal(void); + void ExitSignal(void); }; + +#endif // PROXGUI_QT