diff -Nru goldencheetah-3.0.1/debian/changelog goldencheetah-3.0.2/debian/changelog --- goldencheetah-3.0.1/debian/changelog 2014-03-15 06:21:30.000000000 +0000 +++ goldencheetah-3.0.2/debian/changelog 2014-05-13 16:49:05.000000000 +0000 @@ -1,3 +1,18 @@ +goldencheetah (3.0.2-1ubuntu1) utopic; urgency=low + + * Merge from Debian unstable. Remaining changes: + - Build depend on libgcrypt11-dev as libgcrypt is not present. + + -- Bhavani Shankar Tue, 13 May 2014 22:16:58 +0530 + +goldencheetah (3.0.2-1) unstable; urgency=low + + * New upstream release. + * Now depends on: libqt4-sql-sqlite. + * Drop libusb support options on kfreebsd. + + -- KURASHIKI Satoru Tue, 04 Mar 2014 11:26:33 +0900 + goldencheetah (3.0.1-2ubuntu1) trusty; urgency=medium * Prefer libgcrypt11-dev to unconfuse the sbuild resolver. @@ -116,3 +131,4 @@ - Update Standards-Version to 3.9.2. -- Tatsuya Kinoshita Fri, 29 Apr 2011 16:37:36 +0900 + diff -Nru goldencheetah-3.0.1/debian/control goldencheetah-3.0.2/debian/control --- goldencheetah-3.0.1/debian/control 2014-03-15 06:21:34.000000000 +0000 +++ goldencheetah-3.0.2/debian/control 2014-03-15 08:40:00.000000000 +0000 @@ -12,7 +12,7 @@ Package: goldencheetah Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, libqt4-sql-sqlite Description: set of analysis tools for cycling performance GoldenCheetah is a software package that: * Downloads ride data directly from the CycleOps PowerTap and diff -Nru goldencheetah-3.0.1/debian/gcconfig.pri goldencheetah-3.0.2/debian/gcconfig.pri --- goldencheetah-3.0.1/debian/gcconfig.pri 2014-02-13 21:03:30.000000000 +0000 +++ goldencheetah-3.0.2/debian/gcconfig.pri 2014-03-15 08:40:00.000000000 +0000 @@ -219,3 +219,5 @@ #to get on your trainer and ride then uncomment below #DEFINES += GC_WANT_ROBOT +DEFINES += GC_VERSION=\\\"3.0.2\\\" + diff -Nru goldencheetah-3.0.1/debian/patches/kfreebsd-libusb goldencheetah-3.0.2/debian/patches/kfreebsd-libusb --- goldencheetah-3.0.1/debian/patches/kfreebsd-libusb 1970-01-01 00:00:00.000000000 +0000 +++ goldencheetah-3.0.2/debian/patches/kfreebsd-libusb 2014-03-04 06:27:26.000000000 +0000 @@ -0,0 +1,20 @@ +Index: goldencheetah/src/src.pro +=================================================================== +--- goldencheetah.orig/src/src.pro 2014-03-04 11:20:58.000000000 +0900 ++++ goldencheetah/src/src.pro 2014-03-04 15:27:04.000000000 +0900 +@@ -83,6 +83,7 @@ + + # are we supporting USB2 devices + !isEmpty( LIBUSB_INSTALL ) { ++ linux { + isEmpty( LIBUSB_INCLUDE ) { LIBUSB_INCLUDE = $${LIBUSB_INSTALL}/include } + isEmpty( LIBUSB_LIBS ) { + unix { LIBUSB_LIBS = $${LIBUSB_INSTALL}/lib/libusb.a } +@@ -93,6 +94,7 @@ + DEFINES += GC_HAVE_LIBUSB + SOURCES += LibUsb.cpp EzUsb.c Fortius.cpp FortiusController.cpp + HEADERS += LibUsb.h EzUsb.h Fortius.cpp FortiusController.h ++ } + } + + # are we supporting video playback? diff -Nru goldencheetah-3.0.1/debian/patches/series goldencheetah-3.0.2/debian/patches/series --- goldencheetah-3.0.1/debian/patches/series 2014-01-24 02:22:48.000000000 +0000 +++ goldencheetah-3.0.2/debian/patches/series 2014-03-15 08:40:01.000000000 +0000 @@ -1,2 +1,3 @@ kfreebsd-ttycom append-uncompressed-jquery +kfreebsd-libusb diff -Nru goldencheetah-3.0.1/src/AddDeviceWizard.cpp goldencheetah-3.0.2/src/AddDeviceWizard.cpp --- goldencheetah-3.0.1/src/AddDeviceWizard.cpp 2013-12-21 18:27:26.000000000 +0000 +++ goldencheetah-3.0.2/src/AddDeviceWizard.cpp 2014-02-28 21:32:07.000000000 +0000 @@ -1112,6 +1112,23 @@ virtualPower->addItem(tr("Power - Tacx Flow (4)")); virtualPower->addItem(tr("Power - Tacx Flow (6)")); virtualPower->addItem(tr("Power - Tacx Flow (8)")); + virtualPower->addItem(tr("Power - Tacx Blue Twist (1)")); + virtualPower->addItem(tr("Power - Tacx Blue Twist (3)")); + virtualPower->addItem(tr("Power - Tacx Blue Twist (5)")); + virtualPower->addItem(tr("Power - Tacx Blue Twist (7)")); + virtualPower->addItem(tr("Power - Tacx Blue Motion (2)")); + virtualPower->addItem(tr("Power - Tacx Blue Motion (4)")); + virtualPower->addItem(tr("Power - Tacx Blue Motion (6)")); + virtualPower->addItem(tr("Power - Tacx Blue Motion (8)")); + virtualPower->addItem(tr("Power - Tacx Blue Motion (10)")); + virtualPower->addItem(tr("Power - Elite Supercrono Powermag (1)")); + virtualPower->addItem(tr("Power - Elite Supercrono Powermag (2)")); + virtualPower->addItem(tr("Power - Elite Supercrono Powermag (3)")); + virtualPower->addItem(tr("Power - Elite Supercrono Powermag (4)")); + virtualPower->addItem(tr("Power - Elite Supercrono Powermag (5)")); + virtualPower->addItem(tr("Power - Elite Supercrono Powermag (6)")); + virtualPower->addItem(tr("Power - Elite Supercrono Powermag (7)")); + virtualPower->addItem(tr("Power - Elite Supercrono Powermag (8)")); wheelSize->addItem(tr("Road/Cross (700C/622)")); // 2100mm wheelSize->addItem(tr("Tri/TT (650C)")); // 1960mm diff -Nru goldencheetah-3.0.1/src/AerobicDecoupling.cpp goldencheetah-3.0.2/src/AerobicDecoupling.cpp --- goldencheetah-3.0.1/src/AerobicDecoupling.cpp 2013-12-21 18:27:26.000000000 +0000 +++ goldencheetah-3.0.2/src/AerobicDecoupling.cpp 2014-02-28 21:32:07.000000000 +0000 @@ -22,7 +22,8 @@ // This metric computes aerobic decoupling percentage as described // by Joe Friel: // -// http://www.trainingbible.com/pdf/AeT_Training.pdf +// http://www.trainingbible.com/bkp-all/pdf/AeT_Training.pdf +// http://home.trainingpeaks.com/blog/article/aerobic-endurance-and-decoupling // // Aerobic decoupling is a measure of how much heart rate rises or // how much power falls off during the course of a long ride. Joe suggests @@ -87,9 +88,15 @@ secondHalfPower /= secondHalfCount; firstHalfHR /= firstHalfCount; secondHalfHR /= secondHalfCount; - double firstHalfRatio = firstHalfHR / firstHalfPower; - double secondHalfRatio = secondHalfHR / secondHalfPower; - percent = 100.0 * (secondHalfRatio - firstHalfRatio) / firstHalfRatio; + + // was wrong (Christoph Ernst raise an issue) + // double firstHalfRatio = firstHalfHR / firstHalfPower; + // double secondHalfRatio = secondHalfHR / secondHalfPower; + // percent = 100.0 * (secondHalfRatio - firstHalfRatio) / firstHalfRatio; + // should be : + double firstHalfRatio = firstHalfPower / firstHalfHR; + double secondHalfRatio = secondHalfPower / secondHalfHR; + percent = 100.0 * (firstHalfRatio - secondHalfRatio) / firstHalfRatio; } setValue(percent); } diff -Nru goldencheetah-3.0.1/src/AllPlot.cpp goldencheetah-3.0.2/src/AllPlot.cpp --- goldencheetah-3.0.1/src/AllPlot.cpp 2013-12-21 18:27:26.000000000 +0000 +++ goldencheetah-3.0.2/src/AllPlot.cpp 2014-02-28 21:32:07.000000000 +0000 @@ -732,6 +732,8 @@ smoothTime.append(dp->secs/60); smoothDistance.append(useMetricUnits ? dp->km : dp->km * MILES_PER_KM); smoothAltitude.append(useMetricUnits ? dp->alt : dp->alt * FEET_PER_METER); + if (dp->temp == RideFile::noTemp && !smoothTemp.empty()) + dp->temp = smoothTemp.last(); smoothTemp.append(useMetricUnits ? dp->temp : dp->temp * FAHRENHEIT_PER_CENTIGRADE + FAHRENHEIT_ADD_CENTIGRADE); smoothWind.append(useMetricUnits ? dp->headwind : dp->headwind * MILES_PER_KM); smoothTorque.append(dp->nm); diff -Nru goldencheetah-3.0.1/src/FitRideFile.cpp goldencheetah-3.0.2/src/FitRideFile.cpp --- goldencheetah-3.0.1/src/FitRideFile.cpp 2013-12-21 18:27:26.000000000 +0000 +++ goldencheetah-3.0.2/src/FitRideFile.cpp 2014-02-28 21:32:07.000000000 +0000 @@ -632,14 +632,20 @@ case 4: v = read_uint16(def.is_big_endian, &count); size = 2; break; case 5: v = read_int32(def.is_big_endian, &count); size = 4; break; case 6: v = read_uint32(def.is_big_endian, &count); size = 4; break; + //case 7: // String + //case 8: // FLOAT32 + //case 9: // FLOAT64 case 10: v = read_uint8z(&count); size = 1; break; case 11: v = read_uint16z(def.is_big_endian, &count); size = 2; break; case 12: v = read_uint32z(def.is_big_endian, &count); size = 4; break; + //case 13: // BYTE + // we may need to add support for float, string + byte base types here default: read_unknown( field.size, &count ); v = NA_VALUE; unknown_base_type.insert(field.num); + size = field.size; } // Quick fix : we need to support multivalues if (size < field.size) @@ -683,40 +689,50 @@ delete rideFile; return NULL; } - int header_size = read_uint8(); - if (header_size != 12 && header_size != 14) { - errors << QString("bad header size: %1").arg(header_size); - file.close(); - delete rideFile; - return NULL; - } - int protocol_version = read_uint8(); - (void) protocol_version; - // if the header size is 14 we have profile minor then profile major - // version. We still don't do anything with this information - int profile_version = read_uint16(false); // always littleEndian - (void) profile_version; // not sure what to do with this - - int data_size = read_uint32(false); // always littleEndian - char fit_str[5]; - if (file.read(fit_str, 4) != 4) { - errors << "truncated header"; - file.close(); - delete rideFile; - return NULL; - } - fit_str[4] = '\0'; - if (strcmp(fit_str, ".FIT") != 0) { - errors << QString("bad header, expected \".FIT\" but got \"%1\"").arg(fit_str); - file.close(); - delete rideFile; + int data_size = 0; + try { + + // read the header + int header_size = read_uint8(); + if (header_size != 12 && header_size != 14) { + errors << QString("bad header size: %1").arg(header_size); + file.close(); + delete rideFile; + return NULL; + } + int protocol_version = read_uint8(); + (void) protocol_version; + + // if the header size is 14 we have profile minor then profile major + // version. We still don't do anything with this information + int profile_version = read_uint16(false); // always littleEndian + (void) profile_version; // not sure what to do with this + + data_size = read_uint32(false); // always littleEndian + char fit_str[5]; + if (file.read(fit_str, 4) != 4) { + errors << "truncated header"; + file.close(); + delete rideFile; + return NULL; + } + fit_str[4] = '\0'; + if (strcmp(fit_str, ".FIT") != 0) { + errors << QString("bad header, expected \".FIT\" but got \"%1\"").arg(fit_str); + file.close(); + delete rideFile; + return NULL; + } + + // read the rest of the header + if (header_size == 14) read_uint16(false); + + } catch (TruncatedRead &e) { + errors << "truncated file body"; return NULL; } - // read the rest of the header - if (header_size == 14) read_uint16(false); - int bytes_read = 0; bool stop = false; bool truncated = false; diff -Nru goldencheetah-3.0.1/src/GcUpgrade.cpp goldencheetah-3.0.2/src/GcUpgrade.cpp --- goldencheetah-3.0.1/src/GcUpgrade.cpp 2013-12-21 18:27:26.000000000 +0000 +++ goldencheetah-3.0.2/src/GcUpgrade.cpp 2014-02-28 21:32:07.000000000 +0000 @@ -93,7 +93,7 @@ // Versions after 3 should add their upgrade processing at this point // DO NOT CHANGE THE VERSION 3 UPGRADE PROCESS ABOVE, ADD TO IT BELOW - if (last < VERSION3_SP1) { + if (last < VERSION3_SP2) { // 2. Remove old CLucece 'index' QFile index(QString("%1/index").arg(home.canonicalPath())); diff -Nru goldencheetah-3.0.1/src/GcUpgrade.h goldencheetah-3.0.2/src/GcUpgrade.h --- goldencheetah-3.0.1/src/GcUpgrade.h 2013-12-21 18:27:26.000000000 +0000 +++ goldencheetah-3.0.2/src/GcUpgrade.h 2014-02-28 21:32:07.000000000 +0000 @@ -32,13 +32,15 @@ // 3010 - V3.0 RELEASE (June 7 2013) // 3020 - V3.0 SP1 RC1 // 3030 - V3.0 SP1 RELEASE (December 2013) +// 3032 - V3.0 SP2 RELEASE (March 2013) // 3040 - V3.1 DEVELOPMENT // different branch -#define VERSION_LATEST 3030 -#define VERSION_STRING "V3.0 SP1" +#define VERSION_LATEST 3032 +#define VERSION_STRING "V3.0 SP2" #define VERSION3_BUILD 3010 #define VERSION3_SP1 3030 +#define VERSION3_SP2 3032 class GcUpgrade { diff -Nru goldencheetah-3.0.1/src/GoogleMapControl.cpp goldencheetah-3.0.2/src/GoogleMapControl.cpp --- goldencheetah-3.0.1/src/GoogleMapControl.cpp 2013-12-21 18:27:26.000000000 +0000 +++ goldencheetah-3.0.2/src/GoogleMapControl.cpp 2014-02-28 21:32:07.000000000 +0000 @@ -137,9 +137,15 @@ " \n" "\n" "Golden Cheetah Map\n" - " \n" + " \n" + "\n" " \n"); + // local functions currentPage += QString("