summaryrefslogtreecommitdiff
path: root/src/pmchart/groupcontrol.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/pmchart/groupcontrol.h')
-rw-r--r--src/pmchart/groupcontrol.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/pmchart/groupcontrol.h b/src/pmchart/groupcontrol.h
new file mode 100644
index 0000000..c20f29c
--- /dev/null
+++ b/src/pmchart/groupcontrol.h
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2006-2008, Aconex. All Rights Reserved.
+ * Copyright (c) 2006, Ken McDonell. All Rights Reserved.
+ *
+ * This program 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 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program 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.
+ */
+#ifndef GROUPCONTROL_H
+#define GROUPCONTROL_H
+
+#include <QtCore/QList>
+#include <QtGui/QLabel>
+#include <QtGui/QLayout>
+#include <QtGui/QPixmap>
+#include <qwt_plot.h>
+#include <qwt_scale_draw.h>
+#include <qmc_group.h>
+#include <qmc_time.h>
+#include "gadget.h"
+#include "qed_timebutton.h"
+
+class GroupControl : public QObject, public QmcGroup
+{
+ Q_OBJECT
+
+public:
+ GroupControl();
+ void init(int, int, struct timeval *, struct timeval *);
+
+ void addGadget(Gadget *);
+ void deleteGadget(Gadget *);
+ int gadgetCount() const;
+
+ bool isArchiveSource();
+ void updateBackground();
+
+ void setVisibleHistory(int);
+ int visibleHistory();
+ void setSampleHistory(int);
+ int sampleHistory();
+
+ double *timeAxisData(void);
+
+ void step(QmcTime::Packet *);
+ void VCRMode(QmcTime::Packet *, bool);
+ void setTimezone(QmcTime::Packet *, char *);
+
+ void setupWorldView();
+ void updateTimeButton();
+ void updateTimeAxis(void);
+ void updateTimeAxis(time_t secs);
+
+ QedTimeButton::State buttonState();
+ QmcTime::State pmtimeState();
+ void newButtonState(QmcTime::State, QmcTime::Mode, bool);
+
+public Q_SLOTS:
+ void timeSelectionActive(Gadget *, int);
+ void timeSelectionReactive(Gadget *, int);
+ void timeSelectionInactive(Gadget *);
+
+private:
+ typedef enum {
+ StartState,
+ ForwardState,
+ BackwardState,
+ EndLogState,
+ StandbyState,
+ } State;
+
+ char *timeState();
+ void refreshGadgets(bool);
+ bool isActive(QmcTime::Packet *);
+ void adjustWorldView(QmcTime::Packet *, bool);
+ void adjustLiveWorldViewForward(QmcTime::Packet *);
+ void adjustLiveWorldViewStopped(QmcTime::Packet *);
+ void adjustArchiveWorldViewForward(QmcTime::Packet *, bool);
+ void adjustArchiveWorldViewStopped(QmcTime::Packet *, bool);
+ void adjustArchiveWorldViewBackward(QmcTime::Packet *, bool);
+
+ struct {
+ QList<Gadget*> gadgetsList; // gadgets with metrics in this group
+
+ double realDelta; // current update interval
+ double realPosition; // current time position
+ struct timeval delta;
+ struct timeval position;
+
+ int visible; // -v visible points
+ int samples; // -s total number of samples
+ double *timeData; // time array (intervals)
+
+ QedTimeButton::State buttonState;
+ QmcTime::Source pmtimeSource; // reliable archive/host test
+ QmcTime::State pmtimeState;
+ State timeState;
+ } my;
+};
+
+#endif // GROUPCONTROL_H