Subject: [PATCH] Provide photos summary on dive list

1) Add an extra column to dive list, just left of Locality field.
2) For each dive, give summary of photos as follows:
   i)   no photos: no icon in that column
   ii)  photos taken during dive: show icon of fish
   iii) photos taken before/after dive: show icon of sun
   iv)  photos taken during as well as before/after dive: show
     icon with both fish and sun
3) Provide information for the sort operation to work on
   this column of the dive list.

Signed-off-by: Willem Ferguson <[email protected]>

I attach a screenshot to give an idea what it looks like at the moment.

Please, I need someone to check my coding carefully. I tested it
quite extensively and have not found any problems. Also, there may
be places where my code is inefficient.
Kind regards,
willem

>From f2da5b7010e3d4a28e9b6eb9a8e1e794105bcea3 Mon Sep 17 00:00:00 2001
From: Willem Ferguson <[email protected]>
Date: Sat, 19 Nov 2016 14:23:54 +0200
Subject: [PATCH 3/3] [PATCH] Provide photos summary on dive list

1) Add an extra column to dive list, just left of Locality field.
2) For each dive, give summary of photos as follows:
   i)   no photos: no icon in that column
   ii)  photos taken during dive: show icon of fish
   iii) photos taken before/after dive: show icon of sun
   iv)  photos taken during as well as before/after dive: show
     icon with both fish and sun
3) Provide information for the sort operation to work on
   this column of the dive list.

Signed-off-by: Willem Ferguson <[email protected]>
---
 desktop-widgets/divelistview.cpp |   7 ++++--
 icons/duringPhoto.png            | Bin 0 -> 5352 bytes
 icons/inAndOutPhoto.png          | Bin 0 -> 5520 bytes
 icons/outsidePhoto.png           | Bin 0 -> 3032 bytes
 qt-models/divetripmodel.cpp      |  50 +++++++++++++++++++++++++++++++++++++--
 qt-models/divetripmodel.h        |   5 ++++
 subsurface.qrc                   |   5 +++-
 7 files changed, 62 insertions(+), 5 deletions(-)
 create mode 100644 icons/duringPhoto.png
 create mode 100644 icons/inAndOutPhoto.png
 create mode 100644 icons/outsidePhoto.png

diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp
index 0c1ea91..081cd93 100644
--- a/desktop-widgets/divelistview.cpp
+++ b/desktop-widgets/divelistview.cpp
@@ -24,8 +24,8 @@
 #include "core/metrics.h"
 #include "core/helpers.h"
 
-//                                #  Date  Rtg Dpth  Dur  Tmp Wght Suit  Cyl  Gas  SAC  OTU  CNS  Loc
-static int defaultWidth[] =    {  70, 140, 90,  50,  50,  50,  50,  70,  50,  50,  70,  50,  50, 500};
+//                                #  Date  Rtg Dpth  Dur  Tmp Wght Suit  Cyl  Gas  SAC  OTU  CNS  Px  Loc
+static int defaultWidth[] =    {  70, 140, 90,  50,  50,  50,  50,  70,  50,  50,  70,  50,  50,  25, 500};
 
 DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false), sortColumn(0),
 	currentOrder(Qt::DescendingOrder), dontEmitDiveChangedSignal(false), selectionSaved(false)
@@ -81,6 +81,9 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec
 		case DiveTripModel::SAC:
 			sw = 7*em;
 			break;
+		case DiveTripModel::PHOTOS:
+			sw = 5*em;
+			break;
 		case DiveTripModel::LOCATION:
 			sw = 50*em;
 			break;
diff --git a/icons/duringPhoto.png b/icons/duringPhoto.png
new file mode 100644
index 0000000000000000000000000000000000000000..6984b304144eaaeb4870e009b1f9ad5476217bc5
GIT binary patch
literal 5352
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
RACN9VYRXzlpA{^_{s%%oE)f6#

literal 0
HcmV?d00001

diff --git a/icons/inAndOutPhoto.png b/icons/inAndOutPhoto.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbbc112de57d679687dbf6290a8f4e111342650b
GIT binary patch
literal 5520
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
Su&WaQ0000<MNUMnLSTYaH@z?b

literal 0
HcmV?d00001

diff --git a/icons/outsidePhoto.png b/icons/outsidePhoto.png
new file mode 100644
index 0000000000000000000000000000000000000000..8976bb7b47c18a7d757d089a29decc40c396aafb
GIT binary patch
literal 3032
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
awEQ27ad1S<T!}{j0000<MNUMnLSTZ4k+Syy

literal 0
HcmV?d00001

diff --git a/qt-models/divetripmodel.cpp b/qt-models/divetripmodel.cpp
index e0f95b0..391ff2b 100644
--- a/qt-models/divetripmodel.cpp
+++ b/qt-models/divetripmodel.cpp
@@ -22,6 +22,7 @@ static QVariant dive_table_alignment(int column)
 	case DiveTripModel::TOTALWEIGHT:
 	case DiveTripModel::SAC:
 	case DiveTripModel::OTU:
+	case DiveTripModel::PHOTOS:
 	case DiveTripModel::MAXCNS:
 		// Right align numeric columns
 		retVal = int(Qt::AlignRight | Qt::AlignVCenter);
@@ -80,6 +81,8 @@ QVariant TripItem::data(int column, int role) const
 QVariant DiveItem::data(int column, int role) const
 {
 	QVariant retVal;
+	int iconIndex;
+	QString icon_names[4] = {":zero",":duringPhoto", ":outsidePhoto", ":inAndOutPhoto" };
 	struct dive *dive = get_dive_by_uniq_id(diveId);
 	if (!dive)
 		return QVariant();
@@ -130,6 +133,9 @@ QVariant DiveItem::data(int column, int role) const
 		case MAXCNS:
 			retVal = dive->maxcns;
 			break;
+		case PHOTOS:
+			retVal = countPhotos(dive);
+			break;
 		case LOCATION:
 			retVal = QString(get_dive_location(dive));
 			break;
@@ -171,6 +177,8 @@ QVariant DiveItem::data(int column, int role) const
 		case MAXCNS:
 			retVal = dive->maxcns;
 			break;
+		case PHOTOS:
+			break;
 		case LOCATION:
 			retVal = QString(get_dive_location(dive));
 			break;
@@ -182,11 +190,21 @@ QVariant DiveItem::data(int column, int role) const
 		}
 		break;
 	case Qt::DecorationRole:
-		if (column == LOCATION)
+		switch (column) {
+		case LOCATION:
 			if (dive_has_gps_location(dive)) {
 				IconMetrics im = defaultIconMetrics();
-				retVal = QIcon(":satellite").pixmap(im.sz_small, im.sz_small);
+				retVal = QIcon(":globe-icon").pixmap(im.sz_small, im.sz_small);
 			}
+			break;
+		case PHOTOS:	// if enabled, show photos icon: fish= photos during dive; sun=photos before/after dive
+			if (dive->picture_list)	// sun+fish=photos during dive as well as before/after
+			{
+				IconMetrics im = defaultIconMetrics();
+				retVal = QIcon(icon_names[countPhotos(dive)]).pixmap(im.sz_small, im.sz_small);
+			}
+			break;
+		}
 		break;
 	case Qt::ToolTipRole:
 		switch (column) {
@@ -231,6 +249,9 @@ QVariant DiveItem::data(int column, int role) const
 		case MAXCNS:
 			retVal = tr("Max CNS");
 			break;
+		case PHOTOS:
+			retVal = tr("Photos before/during/after dive");
+			break;
 		case LOCATION:
 			retVal = tr("Location");
 			break;
@@ -301,6 +322,25 @@ QString DiveItem::displayDepthWithUnit() const
 	return get_depth_string(dive->maxdepth, true);
 }
 
+int DiveItem::countPhotos(dive *dive) const
+{
+	int diveDuration = dive->duration.seconds;
+	int pic_offset, icon_index = 0;
+	struct picture *pic_list = dive->picture_list;	// Point to 1st picture of dive
+	if (!pic_list) return 0;			// This dive does not contain pictures
+	do {
+		pic_offset = pic_list->offset.seconds; 
+		if  ((pic_offset < 0) | (pic_offset > diveDuration)) {
+			icon_index |= 0x02;	// If picture is before/after the dive
+		}				//  then set the appropriate bit ...
+		else {
+			icon_index |= 0x01;	// else set the bit for picture during the dive
+		}
+		pic_list = pic_list->next;	// look at next photo
+	} while (pic_list);
+	return icon_index;	// return value: 0=no pictures; 1=pictures during dive;
+}				// 2=pictures before/after; 3=pictures during as well as before/after
+
 QString DiveItem::displayDuration() const
 {
 	int hrs, mins, fullmins, secs;
@@ -430,6 +470,9 @@ QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int
 		case MAXCNS:
 			ret = tr("Max CNS");
 			break;
+		case PHOTOS:
+			ret = tr("█");
+			break;
 		case LOCATION:
 			ret = tr("Location");
 			break;
@@ -478,6 +521,9 @@ QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int
 		case MAXCNS:
 			ret = tr("Max CNS");
 			break;
+		case PHOTOS:
+			ret = tr("Photos before/during/after dive");
+			break;
 		case LOCATION:
 			ret = tr("Location");
 			break;
diff --git a/qt-models/divetripmodel.h b/qt-models/divetripmodel.h
index 7844d81..0162644 100644
--- a/qt-models/divetripmodel.h
+++ b/qt-models/divetripmodel.h
@@ -3,6 +3,7 @@
 
 #include "treemodel.h"
 #include "core/dive.h"
+#include <string>
 
 struct DiveItem : public TreeItem {
 	Q_DECLARE_TR_FUNCTIONS(TripItem)
@@ -21,6 +22,7 @@ public:
 		SAC,
 		OTU,
 		MAXCNS,
+		PHOTOS,
 		LOCATION,
 		COLUMNS
 	};
@@ -36,7 +38,9 @@ public:
 	QString displayTemperature() const;
 	QString displayWeight() const;
 	QString displaySac() const;
+	int countPhotos(dive *dive) const;
 	int weight() const;
+	QString icon_names[4];
 };
 
 struct TripItem : public TreeItem {
@@ -63,6 +67,7 @@ public:
 		SAC,
 		OTU,
 		MAXCNS,
+		PHOTOS,
 		LOCATION,
 		COLUMNS
 	};
diff --git a/subsurface.qrc b/subsurface.qrc
index 2f58782..dc73ad4 100644
--- a/subsurface.qrc
+++ b/subsurface.qrc
@@ -74,7 +74,10 @@
         <file alias="filter-hide">icons/go-top.svg</file>
         <file alias="filter-close">icons/process-stop.svg</file>
         <file alias="edit">icons/edit-circled.svg</file>
-        <file alias="satellite">icons/Emblem-earth.svg</file>
+        <file alias="globe-icon">icons/Emblem-earth.svg</file>
         <file alias="geocode">icons/geocode.svg</file>
+        <file alias="duringPhoto">icons/duringPhoto.png</file>
+        <file alias="outsidePhoto">icons/outsidePhoto.png</file>
+        <file alias="inAndOutPhoto">icons/inAndOutPhoto.png</file>
     </qresource>
 </RCC>
-- 
2.1.4

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to