mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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>
69 lines
No EOL
2 KiB
C++
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 |