Add the skeleton for the New Profile System.

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 legend for 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.
It's the last attempt to create a QGraphicsView based Profile System,
as the next will most probably be written in QML.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-01-14 14:30:13 -02:00 committed by Dirk Hohndel
parent c79473df60
commit 946e3855b2
4 changed files with 115 additions and 4 deletions

View file

@ -71,7 +71,31 @@
<number>0</number>
</property>
<item>
<widget class="ProfileGraphicsView" name="ProfileWidget"/>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Old Profile</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="ProfileGraphicsView" name="ProfileWidget"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>New Profile</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="ProfileWidget2" name="graphicsView"/>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
@ -135,7 +159,7 @@
<x>0</x>
<y>0</y>
<width>763</width>
<height>32</height>
<height>26</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
@ -521,6 +545,11 @@
<header>diveplanner.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>ProfileWidget2</class>
<extends>QGraphicsView</extends>
<header>qt-ui/profile/profilewidget2.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>

View file

@ -0,0 +1,31 @@
#include "profilewidget2.h"
ProfileWidget2::ProfileWidget2(QWidget *parent)
{
}
// Currently just one dive, but the plan is to enable All of the selected dives.
void ProfileWidget2::plotDives(QList<dive*> dives)
{
}
void ProfileWidget2::settingsChanged()
{
}
void ProfileWidget2::contextMenuEvent(QContextMenuEvent* event)
{
}
void ProfileWidget2::resizeEvent(QResizeEvent* event)
{
}
void ProfileWidget2::showEvent(QShowEvent* event)
{
}

View file

@ -0,0 +1,49 @@
#ifndef PROFILEWIDGET2_H
#define PROFILEWIDGET2_H
#include <QGraphicsView>
#include <QStateMachine>
// /* 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 dive;
class ProfileWidget2 : public QGraphicsView {
Q_OBJECT
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);
virtual void showEvent(QShowEvent* event);
signals:
void startProfileState();
void startAddState();
void startPlanState();
void startEmptyState();
void startEditState();
void startHideGasState();
void startShowGasState();
void startShowTissueState();
void startHideTissueState();
};
#endif

View file

@ -62,7 +62,8 @@ HEADERS = \
qt-ui/divelogimportdialog.h \
qt-ui/tagwidget.h \
qt-ui/groupedlineedit.h \
qt-ui/usermanual.h
qt-ui/usermanual.h \
qt-ui/profile/profilewidget2.h
SOURCES = \
deco.c \
@ -112,7 +113,8 @@ SOURCES = \
qt-ui/divelogimportdialog.cpp \
qt-ui/tagwidget.cpp \
qt-ui/groupedlineedit.cpp \
qt-ui/usermanual.cpp
qt-ui/usermanual.cpp \
qt-ui/profile/profilewidget2.cpp
linux*: SOURCES += linux.c
mac: SOURCES += macos.c