subsurface/qt-ui/profile/profilewidget2.h
Tomaz Canabrava 9cb5ea45d8 Started the code for a grid that knows how to handle itself.
The code for this item is a bit too big to be just the grid
of the dives and I know that, don't bully me. :)
The main idea of this grid is that it knows when it should be
updated. this is a bit different than the old code where all
the painting happened on the same method. This is bad because
it's more code, but it's better because if I break the grid,
only the grid will be broken, and it's easyer to spot the breakage.

in the old code if I did the wrong thing with the graphics context,
the whole graph gots messed out.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:16:47 +07:00

69 lines
No EOL
2 KiB
C++

#ifndef PROFILEWIDGET2_H
#define PROFILEWIDGET2_H
#include <QGraphicsView>
// /* The idea of this widget is to display and edit the profile.
// * It has:
// * 1 - ToolTip / Legend item, displays every information of the current mouse position on it, plus the legends of the maps.
// * 2 - ToolBox, displays the QActions that are used to do special stuff on the profile ( like activating the plugins. )
// * 3 - Cartesian Axis for depth ( y )
// * 4 - Cartesian Axis for Gases ( y )
// * 5 - Cartesian Axis for Time ( x )
// *
// * It needs to be dynamic, things should *flow* on it, not just appear / disappear.
// */
#include "graphicsview-common.h"
struct DivePlotDataModel;
struct DivePixmapItem;
struct DiveRectItem;
struct DepthAxis;
struct DiveCartesianAxis;
struct DiveProfileItem;
struct TimeAxis;
struct dive;
struct QStateMachine;
struct DiveCartesianPlane;
class ProfileWidget2 : public QGraphicsView {
Q_OBJECT
void fixBackgroundPos();
public:
enum State{ EMPTY, PROFILE, EDIT, ADD, PLAN, INVALID };
enum Items{BACKGROUND, PROFILE_Y_AXIS, GAS_Y_AXIS, TIME_AXIS, DEPTH_CONTROLLER, TIME_CONTROLLER, COLUMNS};
ProfileWidget2(QWidget *parent);
void plotDives(QList<dive*> dives);
public slots: // Necessary to call from QAction's signals.
void settingsChanged();
protected:
virtual void contextMenuEvent(QContextMenuEvent* event);
virtual void resizeEvent(QResizeEvent* event);
signals:
void startProfileState();
void startAddState();
void startPlanState();
void startEmptyState();
void startEditState();
void startHideGasState();
void startShowGasState();
void startShowTissueState();
void startHideTissueState();
private:
DivePlotDataModel *dataModel;
State currentState;
QStateMachine *stateMachine;
DivePixmapItem *background ;
DepthAxis *profileYAxis ;
DiveCartesianAxis *gasYAxis;
TimeAxis *timeAxis;
DiveRectItem *depthController;
DiveRectItem *timeController;
DiveProfileItem *diveProfileItem;
DiveCartesianPlane *cartesianPlane;
};
#endif