Commit graph

41 commits

Author SHA1 Message Date
Tomaz Canabrava
1f80788286 Added a DiveEventItem that knows how to handle itself.
Simply pass a event to the item and it will know what
to do. The sad part is that this isn't true yet - there's
quite a bit of boilerplate that a lot of the items are needing,
but the good part is that the boolerplate is the same in
all of the items, which means that I can create a tiny bit
of abstraction to encapsulate it and the code will be
way smaller to setup the items on the canvas.

Right now the items are being correctly placed on the
right places. It doesn't supports hidding / showing yet.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:17:09 +07:00
Linus Torvalds
96a4fd1bb2 Save XML files into a memory buffer rather than directly into a file
This introduces a "struct membuffer" abstraction that you can write
things into, and makes the XML saving code write to the memory buffer
rather than a file.

The UDDF export already really wanted this: it used to write to a file,
only to then read that file back into memory, delete the file, and then
*rewrite* the file after doing the magic xslt transform.

But the longer-term reason for this is that I want to try to write other
formats, and I want to try to share most helpers.  And those other
formats will need this memory buffer model.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 12:51:23 +07:00
Tomaz Canabrava
581faa598e 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>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
7d5cf32501 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>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
49f4052c67 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>
2014-01-16 10:12:29 +07:00
Tomaz Canabrava
ca07f45561 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>
2014-01-16 10:12:29 +07:00
Tomaz Canabrava
408b7dd5e5 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>
2014-01-16 10:12:29 +07:00
Tomaz Canabrava
d47456b4e8 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>
2014-01-16 10:12:29 +07:00
Tomaz Canabrava
639123a1e8 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>
2014-01-16 10:12:29 +07:00
Tomaz Canabrava
81e9fcc6e8 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>
2014-01-16 10:12:20 +07:00
Tomaz Canabrava
946e3855b2 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>
2014-01-16 09:45:42 +07:00
Anton Lundin
29a714acc3 Use the right Qt-module when building with Qt5
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:49:42 +07:00
Dirk Hohndel
ab830b1d4f Merge branch 'v4.0-branch'
Bring in the tag, the translations changes and edits preparing for 4.0.2
into master. This should make "git describe" on master create something
reasonably sensible...
2014-01-10 19:41:37 +07:00
Sergey Starosek
8b00f8ffe6 Extract user manual web view into a separate class
Provide search functionality which addresses ticket #391

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-10 16:07:43 +07:00
Dirk Hohndel
39fb3b2c13 Prepare for Subsurface 4.0.2 release
Update version numbers and add "new in 4.0.2" summary to ReleaseNotes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-09 09:43:31 +08:00
Miika Turkia
b052b790df Refactoring import to DiveLogImportDialog
Changing the import stuff to DiveLogImport. Now we should have one
import function/dialog for importing divelogs instead of multiple menu
entries.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-03 10:30:08 -08:00
Dirk Hohndel
7771158c82 Prepare for 4.0.1 release
Small updates to README, ReleaseNotes, user manual.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-03 03:18:59 -08:00
Linus Torvalds
cb53a78674 Make our 'ascii_strtod()' helper more generic
We'll want to do sane parsing of strings, but the C library makes it
hard to handle user input sanely and the Qt toDouble() function
interface was designed by a retarded chipmunk.

So just extend our existing hacky "ascii_strtod()" to allow a more
generic interface.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-02 21:17:41 -08:00
Tomaz Canabrava
5e446fd258 removed unused files.
Thise files dates back from the beginning of the Qt port and
were never used anyway...

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 07:24:11 -08:00
Dirk Hohndel
79c1f64800 Remove translations with insufficient coverage
Catalan, Croatian, Vietnamese and Indonesian all have less than 50%
coverage in their translations, so we had to remove them. Hebrew just
sneaked past this (rather arbitrary) cutoff.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-14 12:04:47 -08:00
Dirk Hohndel
4607fca54e Inching towards the 4.0 release
Updates to README, ReleaseNotes.txt and subsurface.pro

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-14 12:01:09 -08:00
Thiago Macieira
8cbe433e55 Remove unused file
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 04:17:09 +01:00
Dirk Hohndel
3528f5ff35 Get ready for the release of 3.9.2
Small updates to README, ReleaseNotes.txt and a bump in the version number
in the Makefile (forgot the in 3.9.1 - thankfully this is automatic for
git based builds).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 22:57:39 -08:00
Dirk Hohndel
76275bb16c Add more languages
Not all of these are completed, but I want to include as many as possible
in the last beta.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-05 20:41:39 -08:00
Thiago Macieira
1080e5ca35 Fix plugin deployment on Windows
And increase our list of plugins to be deployed to include the GIF and
SVG image plugins, the SVG icon engine and the CJK text codecs.

The install rules now iterate over the plugin list and deploy the
plugins in the right path in the staging area. The plugins must also
be scanned for dependencies (Fedora's qjpeg4.dll depends on
libjpeg-62.dll, which neds to be copied to the staging area).

Finally, fix qt.conf needed to be fixed.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-27 17:55:24 -08:00
Robert Helling
4966336e1d Shift times of selected dives
This patch adds the possibility to shift the times of all selected dives
by a fixed amount to correct for time zone problems or mis-set dive
computer clocks.

Select the dives and right click in the dive list.

[Dirk Hohndel: added .ui file to FORMS and fixed some whitespace damage]

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 10:03:45 -08:00
Dirk Hohndel
06bf0e1849 Include icons in the Windows installer
Also fix the dependency / ordering issue with running makensis

Fixes #252

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 15:02:45 -08:00
Dirk Hohndel
277cf30aaa Update version number for 3.9 BETA
Our version numbers are purely numeric, so it's actually just 3.9 :-)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 23:23:32 +09:00
Maximilian Güntner
04cdfce782 Added a custom widget for tagging dives
A custom tag widget has been added to MainTab.
Tags are seperated by a comma ",". The implementation
supports escaping a comma by using "\,".
While typing, the widget supports the user by suggesting
tags using a QCompleter.

Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
2013-11-02 03:37:31 +01:00
Tomaz Canabrava
5eb2cc4594 Created a 'WebService' dialog that will handle download and upload.
Created a WebService dialog that will handle download and upload
from all child based webservices. Also, ported the currently - only
- one webservice to use the new dialog.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24 22:30:21 -02:00
Miika Turkia
4c49670cdb GUI for CSV import
This patch implements GUI for importing CSV log files. One is able to
configure what columns contain time, depth and temperature fields.
Pre-configured log applications currently included are ADP log viewer
and XP5. (Both of these use actually tab as separator, so the field
separator currently hard-coded.)

[Dirk Hohndel: minor fixes]

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-16 12:44:07 -07:00
Dirk Hohndel
8906302043 First step to being able to use transifex again for translations
This sadly contains a very noisy .ts file diff as those files now are one
directory down from their original spot, so recreating them changed all
the source paths.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 20:25:21 -07:00
Dirk Hohndel
39f9fb09db Include location flag in bundle
The little marker flag for our dives was missing on the Mac.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-12 11:38:35 -07:00
Dirk Hohndel
d031b54d16 Install qt translations into Mac bundle
This is much harder than it should be...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-11 13:51:03 -07:00
Dirk Hohndel
dee7bdd1ad Fix bug in Documentation make invocation
Without the trailing slash the Makefile in Documentation would create the wrong
target name (with run-together path / filename) and therefore would always
recompile the documentation.
And we don't need to check that the Documentation directory exists - it's part
of our sources...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-11 09:31:58 -07:00
Dirk Hohndel
e3e47b34a1 Automatically build translations
This runs lrelease against the .ts files and automatically recreates the .qm
files if any of the .ts files changes.

This also moves the .ts files into the translations directory.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-10 14:52:56 -07:00
Dirk Hohndel
3e31cdc7eb Add translation files
These were created by converting the exting translations from po to ts
lconvert po/xx_yy.po -o subsurface_xx_yy.ts
and then merging in the new strings
lupdate subsurface.pro

You convert those into .qm files with lrelease and then localization
should work. Of course a good bit of new strings are still untranslated -
and lots of Gtk strings are still included.

This still needs to be included in the build system.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-10 00:27:15 -07:00
Thiago Macieira
603d65c961 Deploy some Qt plugins alongside the binary
Only implemented for Windows for now. On Mac, macdeployqt copies all
imageformat plugins on its own.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-10-08 23:29:44 -07:00
Thiago Macieira
57994fa7a1 And let qmake create the Mac bundle on its own
It will even parse the Info.plist.in file for us and run sed on it.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-10-08 23:29:43 -07:00
Thiago Macieira
9e069371c6 Add qmake rules to install Subsurface
This is probably the most complex part of the new buildsystem. This
adds the following targets:

 - Linux:
   make install - installs to $(prefix) (default: /usr)
   The install path can be changed during make install time.

 - Windows:
   make install - installs Subsurface and its dependencies to
                  packaging/windows.

 - Mac:
   make mac-deploy     - populates Subsurface.app with the dependencies
   make install        - mac-deploy + install Subsurface.app to /Application
   make mac-create-dmg - mac-deploy + creates Subsurface-$VERSION.dmg

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-10-08 23:29:43 -07:00
Thiago Macieira
67e49d6480 Implement a qmake-based build for Subsurface
This is working for me, but requires a bit more testing. To build,
run:
  qmake [options]

Where options might be:
  V=1               disable "silent" build
  LIBDCDEVEL=1      use side-by-side libdivecomputer
  INCLUDEPATH+=xxx  add -Ixxx (e.g., INCLUDEPATH+=/usr/local/marble/include)
  LIBS+=xxx         add xxx to the linker flags (e.g. LIBS+=-L/usr/local/marble/lib)
  or any other qmake option, including debug and release options

If your distribution is already using qtchooser in place of qmake, you
may need to pass an extra option to qmake to select the a
cross-build. For example:

  qmake -qt=i686-w64-mingw32-qt4

If your distribution is not yet using qtchooser, then you need to file
a bug report requesting it and you need to run the full path to qmake.

Note:
 - there are some ### left in the buildsystem

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-10-08 23:29:33 -07:00