Populate buddy completion model using CSV

While preparing to extend tags model to 'Buddy' field we populate
completion list by splittng those fields by comma.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Extend tags model to Buddy field

This doesn't change storage format. Instead it  parses buddy strings and
converts them to string list which is supplied to tags widget.

This feature  was requested in ticket #311

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Emit textChanged() signal on completion selection

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Enter dive edit mode on buddy field focus

Seems it's related to bug #390. Not sure whether this fix is correct.

See #390

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Convert the C code to using stdbool and true/false

Earlier we converted the C++ code to using true/false, and this converts
the C code to using the same style.

We already depended on stdbool.h in subsurfacestartup.[ch], and we build
with -std=gnu99 so nobody could build subsurface without a c99 compiler.

[Dirk Hohndel: small change suggested by Thiago Macieira: don't include
               stdbool.h for C++]

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Use timeField variable on CSV import

We want to skip duplicate lines on CSV import. For this we need to use
time field, that is not necessarily the first field of the input. This
patch uses the configured time field instead of first one.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Grab also the last column in CSV when requested

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Remove old message directing users to use "Import CSV files" menu option

As importing files is now done through "Import Log Files" menu option for all
file types, the message directing users to use the specific "Import CSV Log Files"
non-existent menu entry should not be presented any more.

Signed-off-by: Rodrigo Severo <rodrigo@fabricadeideias.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
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>
Added a new class based on QGraphicsRectItem that can be animated.

This class extends the QGraphicsRectItem with the ability
to use the Qt Property System - and thus, we can animate
the properties. Initially I put only the rectangle, the
position and the x and y positions indidually for testing.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Added a QGraphicsPixmapItem subclass that handles Animations.

This class is useful for adding / removing icons on the future profile in
a way that they are smoothly added to / removed from the canvas.
It uses the QProperty System to deal with animations.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Added a class based on QGraphicsLineItem that can be animated.

This class has animatedHide, animatedMoveTo and QProperty
animations. it's very userful for the future creation of the
Cartesian Axis that will have the ticks 'flowing' around when
it's needed.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Add a class based on QGraphicsSimpleTextItem that handles animations.

This commit adds a class based on QGraphicsSimpleTextItem that
handls animations via animatedHide() animatedMoveTo() and a few
other QPropertyes. This is to be used in conjunction with the
DiveLineItem added in the past commit on the Coordinate Axis.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Added a new Namespace to deal with Animations and related functions.

Since the animation methods are fairly the same for any QGraphicsItem,
I created a new namespace named 'Animations' that should handle all
of the specific Animation Functions there, and the programmer has to
call those functions from the objects. Good thing is that this reduces
boilerplate code.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Cartesian Axis, based on the Ruler class on the Dive Planner.

This is the same class as the Ruler, but uses the DiveLineItem
and DiveTextItem classes created to make it animateable. The next
few commits will work on that part. The Ruler was a very bad
name for a class that's actually an Axis, that's why I depreceated
the later.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Remove only the Uneeded Ticks / Labels when a update is requested.

This patch makes the updateTicks method not remove / readd everything
when it's triggered, but to only remove the ticks / labels that
are no longer needed on the current display.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Moves the remaining ticks of the Axis to their correct position on update.

If the size of the Axis changed, this should move them smootly to their
place.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Added the remaining of the ticks to their correct position.

When we prepare the axis to show something on the Profile
we need to add the remaining ticks to show on screen,
Since this method tries to animately move / remove things
before calling this.

This has no animations yet - will have in the future.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Added a Model that should handle the Dive Profile

This model encapsulates the plot_info struct and provides
a consistent way to show it using the Qt Model view system
in the C++ and QML way. For a QGraphicsItem that should show
a Profile, this is the start.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Added the DiveProfileItem that uses the DiveProfileModel to diplay data.

I've used the paint() method on it ( even if it's not necessary
on a QGraphicsView ) to reduce absurdely the number of items that are
inserted on the QGraphicsScene ( each small line of the profile should
be an item if it was not for this, it's like that on the old profile. )
and thus reducing the memory consumption, speed and so on.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>