X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/cd00aa3043b507ed10bf79a37b83b88741d176d7..932af56ea0f7e931aa39020c4af46ab81f4ca845:/client/proxguiqt.h diff --git a/client/proxguiqt.h b/client/proxguiqt.h index 58ff8326..45a65b04 100644 --- a/client/proxguiqt.h +++ b/client/proxguiqt.h @@ -1,28 +1,103 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2009 Michael Gernoth +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// 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: + int GraphStart; + double GraphPixelsPerPoint; + 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 @@ -35,22 +110,27 @@ class ProxGuiQT : public QObject 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