mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Remove info.c/info.h
The one remaining helper function in there was moved to maintab.cpp (which was the one remaining user). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
d9f24b282a
commit
90b0f75d40
7 changed files with 29 additions and 240 deletions
2
Makefile
2
Makefile
|
@ -23,7 +23,6 @@ ICONDIR = $(ICONPATH)/scalable/apps
|
||||||
MANDIR = $(DATADIR)/man/man1
|
MANDIR = $(DATADIR)/man/man1
|
||||||
XSLTDIR = $(DATADIR)/$(NAME)/xslt
|
XSLTDIR = $(DATADIR)/$(NAME)/xslt
|
||||||
MARBLEDIR = marbledata/maps/earth/googlesat
|
MARBLEDIR = marbledata/maps/earth/googlesat
|
||||||
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(ICONPATH)
|
|
||||||
|
|
||||||
ICONFILE = $(NAME)-icon.svg
|
ICONFILE = $(NAME)-icon.svg
|
||||||
DESKTOPFILE = $(NAME).desktop
|
DESKTOPFILE = $(NAME).desktop
|
||||||
|
@ -67,7 +66,6 @@ SOURCES = \
|
||||||
divelist.c \
|
divelist.c \
|
||||||
equipment.c \
|
equipment.c \
|
||||||
file.c \
|
file.c \
|
||||||
info.c \
|
|
||||||
parse-xml.c \
|
parse-xml.c \
|
||||||
planner.c \
|
planner.c \
|
||||||
subsurfacestartup.c \
|
subsurfacestartup.c \
|
||||||
|
|
4
dive.c
4
dive.c
|
@ -771,10 +771,6 @@ struct dive *fixup_dive(struct dive *dive)
|
||||||
int i;
|
int i;
|
||||||
struct divecomputer *dc;
|
struct divecomputer *dc;
|
||||||
|
|
||||||
add_people(dive->buddy);
|
|
||||||
add_people(dive->divemaster);
|
|
||||||
add_location(dive->location);
|
|
||||||
add_suit(dive->suit);
|
|
||||||
sanitize_cylinder_info(dive);
|
sanitize_cylinder_info(dive);
|
||||||
dive->maxcns = dive->cns;
|
dive->maxcns = dive->cns;
|
||||||
|
|
||||||
|
|
3
dive.h
3
dive.h
|
@ -659,9 +659,6 @@ extern void add_event(struct divecomputer *dc, int time, int type, int flags, in
|
||||||
|
|
||||||
extern void add_cylinder_description(cylinder_type_t *);
|
extern void add_cylinder_description(cylinder_type_t *);
|
||||||
extern void add_weightsystem_description(weightsystem_t *);
|
extern void add_weightsystem_description(weightsystem_t *);
|
||||||
extern void add_people(const char *string);
|
|
||||||
extern void add_location(const char *string);
|
|
||||||
extern void add_suit(const char *string);
|
|
||||||
extern void remember_event(const char *eventname);
|
extern void remember_event(const char *eventname);
|
||||||
extern int evn_foreach(void (*callback)(const char *, int *, void *), void *data);
|
extern int evn_foreach(void (*callback)(const char *, int *, void *), void *data);
|
||||||
extern void clear_events(void);
|
extern void clear_events(void);
|
||||||
|
|
189
info.c
189
info.c
|
@ -1,189 +0,0 @@
|
||||||
/* info.c
|
|
||||||
*
|
|
||||||
* UI toolkit independent logic used for the info frame
|
|
||||||
*
|
|
||||||
* bool gps_changed(struct dive *dive, struct dive *master, const char *gps_text);
|
|
||||||
* void print_gps_coordinates(char *buffer, int len, int lat, int lon);
|
|
||||||
* void save_equipment_data(struct dive *dive);
|
|
||||||
* void update_equipment_data(struct dive *dive, struct dive *master);
|
|
||||||
* void update_time_depth(struct dive *dive, struct dive *edited);
|
|
||||||
* const char *get_window_title(struct dive *dive);
|
|
||||||
* char *evaluate_string_change(const char *newstring, char **textp, const char *master);
|
|
||||||
* int text_changed(const char *old, const char *new);
|
|
||||||
* bool parse_gps_text(const char *gps_text, double *latitude, double *longitude);
|
|
||||||
* int divename(char *buf, size_t size, struct dive *dive, char *trailer);
|
|
||||||
*/
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include "gettext.h"
|
|
||||||
#include "dive.h"
|
|
||||||
#include "display.h"
|
|
||||||
#include "divelist.h"
|
|
||||||
|
|
||||||
/* take latitude and longitude in udeg and print them in a human readable
|
|
||||||
* form, without losing precision */
|
|
||||||
void print_gps_coordinates(char *buffer, int len, int lat, int lon)
|
|
||||||
{
|
|
||||||
unsigned int latdeg, londeg;
|
|
||||||
const char *lath, *lonh;
|
|
||||||
char dbuf_lat[32], dbuf_lon[32];
|
|
||||||
|
|
||||||
if (!lat && !lon) {
|
|
||||||
*buffer = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lath = lat >= 0 ? tr("N") : tr("S");
|
|
||||||
lonh = lon >= 0 ? tr("E") : tr("W");
|
|
||||||
lat = abs(lat);
|
|
||||||
lon = abs(lon);
|
|
||||||
latdeg = lat / 1000000;
|
|
||||||
londeg = lon / 1000000;
|
|
||||||
int ilatmin = (lat % 1000000) * 60;
|
|
||||||
int ilonmin = (lon % 1000000) * 60;
|
|
||||||
snprintf(dbuf_lat, sizeof(dbuf_lat), "%2d.%05d", ilatmin / 1000000, (ilatmin % 1000000) / 10);
|
|
||||||
snprintf(dbuf_lon, sizeof(dbuf_lon), "%2d.%05d", ilonmin / 1000000, (ilonmin % 1000000) / 10);
|
|
||||||
if (!*dbuf_lat || !*dbuf_lon) {
|
|
||||||
*buffer = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
snprintf(buffer, len, "%s%u%s %s\' , %s%u%s %s\'",
|
|
||||||
lath, latdeg, UTF8_DEGREE, dbuf_lat,
|
|
||||||
lonh, londeg, UTF8_DEGREE, dbuf_lon);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* we use these to find out if we edited the cylinder or weightsystem entries */
|
|
||||||
static cylinder_t remember_cyl[MAX_CYLINDERS];
|
|
||||||
static weightsystem_t remember_ws[MAX_WEIGHTSYSTEMS];
|
|
||||||
#define CYL_BYTES sizeof(cylinder_t) * MAX_CYLINDERS
|
|
||||||
#define WS_BYTES sizeof(weightsystem_t) * MAX_WEIGHTSYSTEMS
|
|
||||||
|
|
||||||
void save_equipment_data(struct dive *dive)
|
|
||||||
{
|
|
||||||
if (dive) {
|
|
||||||
memcpy(remember_cyl, dive->cylinder, CYL_BYTES);
|
|
||||||
memcpy(remember_ws, dive->weightsystem, WS_BYTES);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Empty and NULL compare equal */
|
|
||||||
static int same_string(const char *a, const char *b)
|
|
||||||
{
|
|
||||||
/* Both NULL or same */
|
|
||||||
if (a == b)
|
|
||||||
return 1;
|
|
||||||
/* Both non-NULL: strcmp */
|
|
||||||
if (a && b)
|
|
||||||
return !strcmp(a, b);
|
|
||||||
/* One non-NULL? Is that one empty? */
|
|
||||||
return !*(a ? a : b);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int same_type(cylinder_t *dst, cylinder_t *src)
|
|
||||||
{
|
|
||||||
return dst->type.size.mliter == src->type.size.mliter &&
|
|
||||||
dst->type.workingpressure.mbar == src->type.workingpressure.mbar &&
|
|
||||||
same_string(dst->type.description, src->type.description);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void copy_type(cylinder_t *dst, cylinder_t *src)
|
|
||||||
{
|
|
||||||
dst->type.size = src->type.size;
|
|
||||||
dst->type.workingpressure = src->type.workingpressure;
|
|
||||||
if (dst->type.description)
|
|
||||||
free((void *)dst->type.description);
|
|
||||||
if (!src->type.description || !*src->type.description)
|
|
||||||
dst->type.description = NULL;
|
|
||||||
else
|
|
||||||
dst->type.description = strdup((char *)src->type.description);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int same_gasmix(cylinder_t *dst, cylinder_t *src)
|
|
||||||
{
|
|
||||||
return !memcmp(&dst->gasmix, &src->gasmix, sizeof(dst->gasmix));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void copy_gasmix(cylinder_t *dst, cylinder_t *src)
|
|
||||||
{
|
|
||||||
memcpy(&dst->gasmix, &src->gasmix, sizeof(dst->gasmix));
|
|
||||||
}
|
|
||||||
|
|
||||||
static int same_press(cylinder_t *dst, cylinder_t *src)
|
|
||||||
{
|
|
||||||
return dst->start.mbar == src->start.mbar &&
|
|
||||||
dst->end.mbar == src->end.mbar;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void copy_press(cylinder_t *dst, cylinder_t *src)
|
|
||||||
{
|
|
||||||
dst->start = src->start;
|
|
||||||
dst->end = src->end;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* When we update the cylinder information, we do it individually
|
|
||||||
* by type/gasmix/pressure, so that you can change them separately.
|
|
||||||
*
|
|
||||||
* The rule is: the destination has to be the same as the original
|
|
||||||
* field, and the source has to have changed. If so, we change the
|
|
||||||
* destination field.
|
|
||||||
*/
|
|
||||||
static void update_cylinder(cylinder_t *dst, cylinder_t *src, cylinder_t *orig)
|
|
||||||
{
|
|
||||||
/* Destination type same? Change it */
|
|
||||||
if (same_type(dst, orig) && !same_type(src, orig))
|
|
||||||
copy_type(dst, src);
|
|
||||||
|
|
||||||
/* Destination gasmix same? Change it */
|
|
||||||
if (same_gasmix(dst, orig) && !same_gasmix(src, orig))
|
|
||||||
copy_gasmix(dst, src);
|
|
||||||
|
|
||||||
/* Destination pressures the same? */
|
|
||||||
if (same_press(dst, orig) && !same_press(src, orig))
|
|
||||||
copy_press(dst, src);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* the editing happens on the master dive; we copy the equipment
|
|
||||||
data if it has changed in the master dive and the other dive
|
|
||||||
either has no entries for the equipment or the same entries
|
|
||||||
as the master dive had before it was edited */
|
|
||||||
void update_equipment_data(struct dive *dive, struct dive *master)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (dive == master)
|
|
||||||
return;
|
|
||||||
for (i = 0; i < MAX_CYLINDERS; i++)
|
|
||||||
update_cylinder(dive->cylinder+i, master->cylinder+i, remember_cyl+i);
|
|
||||||
if (! weightsystems_equal(remember_ws, master->weightsystem) &&
|
|
||||||
(no_weightsystems(dive->weightsystem) ||
|
|
||||||
weightsystems_equal(dive->weightsystem, remember_ws)))
|
|
||||||
memcpy(dive->weightsystem, master->weightsystem, WS_BYTES);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* we can simply overwrite these - this only gets called if we edited
|
|
||||||
* a single dive and the dive was first copied into edited - so we can
|
|
||||||
* just take those values */
|
|
||||||
void update_time_depth(struct dive *dive, struct dive *edited)
|
|
||||||
{
|
|
||||||
dive->when = edited->when;
|
|
||||||
dive->dc.duration.seconds = edited->dc.duration.seconds;
|
|
||||||
dive->dc.maxdepth.mm = edited->dc.maxdepth.mm;
|
|
||||||
dive->dc.meandepth.mm = edited->dc.meandepth.mm;
|
|
||||||
}
|
|
||||||
|
|
||||||
void add_people(const char *string)
|
|
||||||
{
|
|
||||||
/* add names to the completion list for people */
|
|
||||||
}
|
|
||||||
void add_location(const char *string)
|
|
||||||
{
|
|
||||||
/* add names to the completion list for locations */
|
|
||||||
}
|
|
||||||
void add_suit(const char *string)
|
|
||||||
{
|
|
||||||
/* add names to the completion list for suits */
|
|
||||||
}
|
|
28
info.h
28
info.h
|
@ -1,28 +0,0 @@
|
||||||
/*
|
|
||||||
* info.h
|
|
||||||
*
|
|
||||||
* logic functions used from info-gtk.c
|
|
||||||
*/
|
|
||||||
#ifndef INFO_H
|
|
||||||
#define INFO_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern bool gps_changed(struct dive *dive, struct dive *master, const char *gps_text);
|
|
||||||
extern void print_gps_coordinates(char *buffer, int len, int lat, int lon);
|
|
||||||
extern void save_equipment_data(struct dive *dive);
|
|
||||||
extern void update_equipment_data(struct dive *dive, struct dive *master);
|
|
||||||
extern void update_time_depth(struct dive *dive, struct dive *edited);
|
|
||||||
extern const char *get_window_title(struct dive *dive);
|
|
||||||
extern char *evaluate_string_change(const char *newstring, char **textp, const char *master);
|
|
||||||
extern int text_changed(const char *old, const char * /*new is a c++ keyword*/);
|
|
||||||
extern bool parse_gps_text(const char *gps_text, double *latitude, double *longitude);
|
|
||||||
extern int divename(char *buf, size_t size, struct dive *dive, char *trailer);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -8,7 +8,6 @@
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "../helpers.h"
|
#include "../helpers.h"
|
||||||
#include "../statistics.h"
|
#include "../statistics.h"
|
||||||
#include "../info.h"
|
|
||||||
#include "divelistview.h"
|
#include "divelistview.h"
|
||||||
#include "modeldelegates.h"
|
#include "modeldelegates.h"
|
||||||
#include "globe.h"
|
#include "globe.h"
|
||||||
|
@ -265,9 +264,7 @@ void MainTab::updateDiveInfo(int dive)
|
||||||
UPDATE_TEMP(d, airtemp);
|
UPDATE_TEMP(d, airtemp);
|
||||||
UPDATE_TEMP(d, watertemp);
|
UPDATE_TEMP(d, watertemp);
|
||||||
if (d) {
|
if (d) {
|
||||||
char buffer[256];
|
ui.coordinates->setText(printGPSCoords(d->latitude.udeg, d->longitude.udeg));
|
||||||
print_gps_coordinates(buffer, sizeof buffer, d->latitude.udeg, d->longitude.udeg);
|
|
||||||
ui.coordinates->setText(buffer);
|
|
||||||
ui.dateTimeEdit->setDateTime(QDateTime::fromTime_t(d->when - gettimezoneoffset()));
|
ui.dateTimeEdit->setDateTime(QDateTime::fromTime_t(d->when - gettimezoneoffset()));
|
||||||
if (mainWindow() && mainWindow()->dive_list()->selectedTrips.count() == 1) {
|
if (mainWindow() && mainWindow()->dive_list()->selectedTrips.count() == 1) {
|
||||||
// only use trip relevant fields
|
// only use trip relevant fields
|
||||||
|
@ -328,7 +325,7 @@ void MainTab::updateDiveInfo(int dive)
|
||||||
ui.airPressureText->setText(QString("%1mbar").arg(d->surface_pressure.mbar));
|
ui.airPressureText->setText(QString("%1mbar").arg(d->surface_pressure.mbar));
|
||||||
else
|
else
|
||||||
ui.airPressureText->clear();
|
ui.airPressureText->clear();
|
||||||
ui.depthLimits->setMaximum(get_depth_string(stats_selection.max_depth, TRUE));
|
ui.depthLimits->setMaximum(get_depth_string(stats_selection.max_depth, TRUE));
|
||||||
ui.depthLimits->setMinimum(get_depth_string(stats_selection.min_depth, TRUE));
|
ui.depthLimits->setMinimum(get_depth_string(stats_selection.min_depth, TRUE));
|
||||||
ui.depthLimits->setAverage(get_depth_string(stats_selection.avg_depth, TRUE));
|
ui.depthLimits->setAverage(get_depth_string(stats_selection.avg_depth, TRUE));
|
||||||
ui.sacLimits->setMaximum(get_volume_string(stats_selection.max_sac, TRUE).append(tr("/min")));
|
ui.sacLimits->setMaximum(get_volume_string(stats_selection.max_sac, TRUE).append(tr("/min")));
|
||||||
|
@ -425,10 +422,7 @@ void MainTab::acceptChanges()
|
||||||
} else {
|
} else {
|
||||||
struct dive *curr = current_dive;
|
struct dive *curr = current_dive;
|
||||||
//Reset coordinates field, in case it contains garbage.
|
//Reset coordinates field, in case it contains garbage.
|
||||||
char buffer[256];
|
ui.coordinates->setText(printGPSCoords(current_dive->latitude.udeg, current_dive->longitude.udeg));
|
||||||
print_gps_coordinates(buffer, sizeof buffer
|
|
||||||
, current_dive->latitude.udeg, current_dive->longitude.udeg);
|
|
||||||
ui.coordinates->setText(buffer);
|
|
||||||
if (notesBackup[curr].buddy != ui.buddy->text() ||
|
if (notesBackup[curr].buddy != ui.buddy->text() ||
|
||||||
notesBackup[curr].suit != ui.suit->text() ||
|
notesBackup[curr].suit != ui.suit->text() ||
|
||||||
notesBackup[curr].notes != ui.notes->toPlainText() ||
|
notesBackup[curr].notes != ui.notes->toPlainText() ||
|
||||||
|
@ -657,10 +651,7 @@ void MainTab::on_location_textChanged(const QString& text)
|
||||||
(dive->latitude.udeg || dive->longitude.udeg)) {
|
(dive->latitude.udeg || dive->longitude.udeg)) {
|
||||||
EDIT_SELECTED_DIVES( mydive->latitude = dive->latitude );
|
EDIT_SELECTED_DIVES( mydive->latitude = dive->latitude );
|
||||||
EDIT_SELECTED_DIVES( mydive->longitude = dive->longitude );
|
EDIT_SELECTED_DIVES( mydive->longitude = dive->longitude );
|
||||||
char buffer[256];
|
ui.coordinates->setText(printGPSCoords(dive->latitude.udeg, dive->longitude.udeg));
|
||||||
print_gps_coordinates(buffer, sizeof buffer
|
|
||||||
, dive->latitude.udeg, dive->longitude.udeg);
|
|
||||||
ui.coordinates->setText(buffer);
|
|
||||||
markChangedWidget(ui.coordinates);
|
markChangedWidget(ui.coordinates);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -734,3 +725,26 @@ void MainTab::editWeightWidget(const QModelIndex& index)
|
||||||
if (index.isValid() && index.column() != WeightModel::REMOVE)
|
if (index.isValid() && index.column() != WeightModel::REMOVE)
|
||||||
ui.weights->edit(index);
|
ui.weights->edit(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString MainTab::printGPSCoords(int lat, int lon)
|
||||||
|
{
|
||||||
|
unsigned int latdeg, londeg;
|
||||||
|
unsigned int ilatmin, ilonmin;
|
||||||
|
QString lath, lonh, result;
|
||||||
|
|
||||||
|
if (!lat && !lon)
|
||||||
|
return QString("");
|
||||||
|
|
||||||
|
lath = lat >= 0 ? tr("N") : tr("S");
|
||||||
|
lonh = lon >= 0 ? tr("E") : tr("W");
|
||||||
|
lat = abs(lat);
|
||||||
|
lon = abs(lon);
|
||||||
|
latdeg = lat / 1000000;
|
||||||
|
londeg = lon / 1000000;
|
||||||
|
ilatmin = (lat % 1000000) * 60;
|
||||||
|
ilonmin = (lon % 1000000) * 60;
|
||||||
|
result.sprintf("%s%u%s %2d.%05d\' , %s%u%s %2d.%05d\'",
|
||||||
|
lath.toLocal8Bit().data(), latdeg, UTF8_DEGREE, ilatmin / 1000000, (ilatmin % 1000000) / 10,
|
||||||
|
lonh.toLocal8Bit().data(), londeg, UTF8_DEGREE, ilonmin / 1000000, (ilonmin % 1000000) / 10);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
|
@ -91,7 +91,8 @@ private:
|
||||||
enum { NONE, DIVE, TRIP, ADD } editMode;
|
enum { NONE, DIVE, TRIP, ADD } editMode;
|
||||||
Completers completers;
|
Completers completers;
|
||||||
void enableEdition();
|
void enableEdition();
|
||||||
void resetPallete();
|
void resetPallete();
|
||||||
|
QString printGPSCoords(int lat, int lon);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue