Commit graph

3790 commits

Author SHA1 Message Date
Amit Chaudhuri
89f02c42aa Add support for remembering settings
Use QSettings to provide persistent storage of settings. For example, we
store and restore the size of the MainWindow.

We use the organisation name hohndel.org and keep subsurface as the
application name.

A section is specified for things to do with the MainWindow; other
sections could be added e.g. for preferred units?

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-27 20:44:36 -07:00
Tomaz Canabrava
2f4d6bbe53 Added support for showing the Stars on the DiveTable
For the stars on the dive table I had to rework a bit my
StarRating widget, because it used a pixmap for each widget
that were created. Not it uses only 2 pixmaps: the active
and inactive ones.

A new file was created named modeldelegates(h, cpp) that
should hold all delegates of the models. For the GTK / C
folks, a 'Delegate' ia s way to bypass the default behavior
of the view that's displaying the data.

I also added the code to display the stars if no delegate
is set ( good for debugging. )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-04-27 12:27:27 -03:00
Dirk Hohndel
1d0d42f861 Remove the explicit UTF-8 conversions
Thanks to commit bdbfdcdfa0fb ('Ask Qt 4 to use the UTF-8 codec as the
"codec for C strings"') we no longer need the explicit UTF-8 conversion
when creating QStrings from char *.

Suggested-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-25 21:10:05 -07:00
Dirk Hohndel
106659774a Merge branch 'QtStuff' of git://github.com/tcanabrava/subsurface into Qt 2013-04-25 20:49:03 -07:00
Thiago Macieira
8da7a6985b Ask Qt 4 to use the UTF-8 codec as the "codec for C strings"
Qt 5 does this by default, so it's not necessary there (in fact,
setCodecForCStrings was removed, so you catch any mistakes).

Now all QString methods taking a const char* or QByteArray
(constructor, append(), operator+=, operator<, etc.) will interpret
that char array as UTF-8. Conversely, the QByteArray methods taking a
QString will generate UTF-8 too. This includes the badly named
QString::fromAscii() and QString::toAscii().

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-25 20:11:36 -07:00
Tomaz Canabrava
b20b57b29f Make dirk happy by enabling sort in the model.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-04-25 20:44:06 -03:00
Dirk Hohndel
98027be1c1 Minor cleanup of constructors and one accessor for DiveItem
Suggested-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-25 08:39:40 -07:00
Henrik Brautaset Aronsen
8a884d2cf7 Remove useless members of DiveItem
Just use the dive struct directly.

Suggested-by: Dirk Hohndel <dirk@hohndel.org>
Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-25 07:13:19 -07:00
Henrik Brautaset Aronsen
5d4d40df91 Simplify DiveItem
The DiveItem constructor had 13 variables.  By passing it the full
dive we reduce that to 2.

[Dirk Hohndel: changed to use "struct dive *" instead of just "dive *"]

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-25 06:39:02 -07:00
Dirk Hohndel
fde0f49df8 Use Subsurface's data structures for DiveItem
We have these data structures for a reason. They provide context
about the units used and prevent mistakes. And of course they
are used everywhere else so we should use them here, too.

This also tries to display some more data and make things look
a bit more like the Gtk version when it comes to alignment and
formatting.

My guess is this will make Qt developers' eyes bleed. My apologies.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-24 23:21:57 -07:00
Dirk Hohndel
4587f8a274 Call the get_date functions with timestamp_t instead of struct tm
This is the much more natural way to use this function, now that I look at
it...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-24 21:05:57 -07:00
Thiago Macieira
1e0bc8a1ab Fix building for Windows: cache the Windows-specific variables
Otherwise, we won't link to winsock or set the subsystem correctly.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-24 17:03:58 -07:00
Dirk Hohndel
8efd63b233 MSVC is c89
In case someone wants to compile this with an outdated C compiler...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-24 16:52:18 -07:00
Dirk Hohndel
92a5a5c35b Split report_dives into UI and logic and move to divelist files
Functionality is unchanged, except we now have a nice process_dives
function that deals with all the logic and that gets called from
report_dives from the Gtk code.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-24 16:38:25 -07:00
Dirk Hohndel
02d822924c Merge branch 'useStarWidgets' of git://github.com/tcanabrava/subsurface into Qt 2013-04-24 16:18:08 -07:00
Dirk Hohndel
ce235bd581 Correctly format depth and time
We really need those leading 0s.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-24 16:03:14 -07:00
Dirk Hohndel
e156b00f05 Fix column headings for divelist
This looks better and is consistent with the Gtk version.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-24 16:02:41 -07:00
Tomaz Canabrava
639dbe95f8 Fix the order of the DiveInformation tab bar.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-04-24 19:59:52 -03:00
Tomaz Canabrava
607c08bb25 Remove the use of this->
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-04-24 19:57:50 -03:00
Tomaz Canabrava
634abb8bb2 Use the star widget in it's right place
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-04-24 19:57:10 -03:00
Amit Chaudhuri
edab566105 Amend divetrip model to use int units
Amend the DiveItem class to avoid float in favour of int. Add getters
which return display friendly QStrings reflecting user preferences for
(e.g.) depth.

Modify DiveTripModel to support controlled alignment by column; right
align for depth and duration.

Fix problems with utf8 encoding on rating stars, degree symbols and
O2 subscript.

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-24 13:06:42 -07:00
Miika Turkia
17c4120143 A hook for DM4 XML import
This will take the DM4 XSLT into use.

In the future it is quite likely that we will have to start using
something more specific on top of the root element name to identify dive
log formats. But as "Dive" is currently a unique root element name for
us, this suffices for now.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 20:48:09 -07:00
Miika Turkia
68cf4f742e XSLT for importing individual DM4 dives
This XSLT can be used when exporting single dives from DM4 and importing
them to Subsurface.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 20:48:00 -07:00
Miika Turkia
2d0473f6f5 Retain event sort order on restart
The events that had same time stamp were reversed in order on every new
load of the log file. This patch will keep the order static. (Changing
order is annoying when using version control to store the logs.)

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 20:47:48 -07:00
Anton Lundin
ee0025f696 Add a simple table-based cns calculations
For dives where divecomputers haven't provided us with a cns, we
calculate our cns accumulated during that dive based on a simple table.

We also check if we did a dive in the prior 12 ours and grab the cns
from it and calculate how much of that still affects us.

[Dirk Hohndel: a couple of small changes: remove unnecessary check of cns
               values in the samples of the first dive computer, changed
	       the way we determine the 'previous dive' and used the end
	       time of that previous dive for the decay calculation]

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 20:43:34 -07:00
Miika Turkia
8cdb836400 Switch to UTF-8 on .DLD export
Let's use the shiny new UTF-8 encoding on divelogs.de export.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 20:43:12 -07:00
Dirk Hohndel
26f7e82b62 Merge branch 'StarWidgetResource' of git://github.com/tcanabrava/subsurface into Qt 2013-04-23 14:05:43 -07:00
Henrik Brautaset Aronsen
e9625d70c1 Fix missing gtk-mac-integration includes
GTKCFLAGS were overwritten.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 14:04:24 -07:00
Henrik Brautaset Aronsen
b495c298e3 Remove trailing spaces from config.cache file
Things like «ifeq ($(UNAME), darwin)» would not trigger, since variables
in the config.cache files had trailing spaces.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 14:04:24 -07:00
Tomaz Canabrava
0ac67c4256 Use the star from the resource file instead of hardcoding it's patch
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-04-23 17:32:30 -03:00
Henrik Brautaset Aronsen
6a3ccaea35 Fix config.cache creation on a Mac
Mac uses BSD sed by default, which doesn't support \n substition
by default.  Replacing sed with tr.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 12:31:15 -07:00
Dirk Hohndel
315c0b505c Set the window icon in Qt
And even use the resource file to allow me to use an alias for it in the
actual code.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 09:55:08 -07:00
Dirk Hohndel
d72f4e470a Consolidate the two .qrc files
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 08:30:10 -07:00
Dirk Hohndel
121740db2a Merge branch 'buildsystem-for-dirk' of http://github.com/thiagomacieira/subsurface into Qt 2013-04-23 08:09:57 -07:00
Thiago Macieira
72ad76fc26 Fix compilation: in C++, enums don't have operator++
To use ++, we need to declare the variable as int. But then we need to
cast to the enum type.

This is using C-style casts because this is still C-like code.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-23 08:06:00 -07:00
Thiago Macieira
b073823e3a
Clean up the moc intermediates too in make clean
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:41 -07:00
Thiago Macieira
d312b7d6fd Don't hardcode the paths for mkdir: just get them from the target
The $(@D) (equivalent to $(dir $@)) tells us what the directory the
target is in. We could also have used the one for the source. They're
equivalent there.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
c5d244eeea Add support for Qt resources in Subsurface
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
17ea074dc0 Prettify the msgfmt and linking arguments
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
f94b6bbefd Make the "silent mode" compilation be optional only.
If you run
   make V=1

Then we'll output the full command-line. It's useful for debugging
problems with the build.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
ce3f073d42 Generate the C++ dependencies at configure-time
We use the -MG preprocessor option to the compiler to ask it to check
all #includes and tell us what's missing. Then our own rules will
generate the moc and uic files that the .cpp #include.

Unfortunately, our rules make uic generate output in qt-ui/ for
qt-ui/*.ui, while the compiler generates rules for no directory. We
need to fake it by forcing the generation.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
a0b523a5af Get the list of dependency includes from the SOURCES list
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
d773c02bf3 Add a SOURCES variable to the Makefile, replacing OBJS
Instead of listing objects, let's list sources. This matches also what
qmake and most other buildsystems do. The notable exception is the
kernel.

The reason that listing the sources will be interesting is because I'm
about to add rules to create the dependency files.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
c8b360c3b5 Add a HEADERS variable to the Makefile
Similar to the qmake variable of the same name, this lists (at least)
the headers that may need moc to be run on. Adding more headers is not
a problem.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
b1c9ed76dc Cache the Qt tools detected (and detect RCC)
Since we're caching the include flags and linker flags, we should also
cache the exact helper binaries we're running. This avoids getting
errors because the environment changed.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
c11ce7e157 Introduce a cache of the configuration
You may have noticed that running make is a little slow. Every time
that it is loaded, it will try to detect everything again. So,
instead, save the output and reload it the next time.

This is implemented by adding a rule that (re-)creates the
config.cache file, which is included by make. If the file doesn't
exist yet, make will first run the rule which creates it, then reload
itself.

You can also cause it to reconfigure by running "make configure".

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
d47b904580 Trim Makefile, Configure.mk and Rules.mk
Configure.mk contains the detection rules, whereas Rules.mk contains
the rules to actually build Subsurface. This simplifies Makefile
greatly, which is the file that should be actually modified during
regular updates to the codebase.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
f6d133f387 Create Rules.mk and Configure.mk by copying the Makefile
This is to help Git know that the two files are the same content as
the Makefile. The next commit will trim the files to what they need to
be.
2013-04-23 00:06:32 -07:00
Thiago Macieira
ddbb942d0f Reorder the Makefile
Create three sections:
 1) the detection rules
 2) the main rules, what we usually edit
 3) the build rules, which we usually don't change

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
77ebc2f4c8 Move the MSGOBJS variable definition a little further down
Move it closer to the actual rules. This is not a variable that we'll
usually modify.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00