aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui/subsurfacewebservices.cpp
AgeCommit message (Collapse)Author
2013-12-12Don't check if a file exists right before trying to open itGravatar Thiago Macieira
The open call will tell us what we need to know. Obviously we can't open a file that doesn't exist. This saves us one stat() or Windows equivalent. Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12Make the streamsize variable actually intGravatar Thiago Macieira
Casting a pointer to a size_t variable to a pointer to int is wrong on big endian machines. Not that I expect anyone to compile Subsurface 4 for Mac on PowerPC 64-bit, but just in case... Who knows, we may have some Solaris-on-UltraSPARC or AIX-on-POWER6 users. Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12Don't call strlen() on something we already know the size ofGravatar Thiago Macieira
Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12Don't leak the zip structure in case of errorGravatar Thiago Macieira
This also erases the zip file that we created Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12Don't leak the buffer or temporary file used to save the diveGravatar Thiago Macieira
Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12Hoist the getting of the XSLT style-sheet out of the loopGravatar Thiago Macieira
We don't need to get it for every file, since it's the same. This also avoids leaking temporary files and memory if the stylesheet cannot be found. Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12Make the errPrefix a static variableGravatar Thiago Macieira
No need to allocate memory for something that will show in debugging only. Besides, qDebug() of a QString adds quotes around it, which we can do without. Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12Don't leak the zip structure if no dives are selectedGravatar Thiago Macieira
Just move the check above the zip_open call. Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12Fix compilation with older libzipGravatar Thiago Macieira
Older libzip lack zip_get_num_entries. Thanks to Lubomir for spotting the version macro. Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-10Divelogs.de: prevent undefined behaviourGravatar Lubomir I. Ivanov
prepare_dives_for_divelogs() did a silly thing, which I was responsible for. When populating 'tempfile' we benefit from QString, but then return a pointer to a local variable (char *) without alocating it on the heap. This resulted in undefined behavior, as we don't know the lifespan of that local memory on the stack. Patch fixes that by using strdup() and freeing the memory when/if needed. Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09Remove some unused variablesGravatar Anton Lundin
Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09Re-enable login and password fields after uploadGravatar Sergey Starosek
Give user the possibility to re-enter username and password after unsuccessful upload due to wrong credentials. Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09Divelogs.de: change the 'Apply' button to 'Done' for uploadGravatar Lubomir I. Ivanov
Post downloading we have an 'Apply' button that can be clicked to apply/merge the downloaded dives. When uploading we rename the button to 'Done' and enable the button if the upload was successful. The 'Cancel' button on the other hand becomes disabled. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09Divelogs.de: use qDebug() instead of fprintf()Gravatar Lubomir I. Ivanov
Use qDebug() instead of fprintf(stderr, ...) in prepare_dives_for_divelogs(). Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09Divelogs.de: attempt to impletent 'Cancel' properlyGravatar Lubomir I. Ivanov
The correct way to stop the upload/download is to use reply->abort(). If the dialog closes, post exec() we check if the reply 'isOpen' and abort and delete it. Without this modification the program seems to crash as the connection is still in action and it attempts to read an already deleted file. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09Divelogs.de: store the user/pass on uploadGravatar Lubomir I. Ivanov
We store the user/pass for 'Apply' when downloading, but we also want to store these values for 'Upload'. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09Divelogs.de: Improve the error handling post DLD creationGravatar Lubomir I. Ivanov
Only show a filename in the error report if such was previsly set. We also add a string for translation, that is shown in the main window. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09Divelogs.de: Add a 'filename' field when uploadingGravatar Lubomir I. Ivanov
The 'Content-Disposition' header, requires that we pass 'name' but also a 'filename' field. Suggested-by: Sergey Starosek <sergey.starosek@gmail.com> Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09Divelogs.de: further improve reading the server reponseGravatar Lubomir I. Ivanov
We now check for the following entries: <Login>succeeded</Login> <FileCopy>failed</FileCopy> Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09Divelogs.de: improve prepare_dives_for_divelogs()Gravatar Lubomir I. Ivanov
prepare_dives_for_divelogs() is based on GTK / C code where we used GLib methods to generate a temp zip file. Qt has QTemporaryFile, but it seems there is some sort of a problem when using with with zip_open (ZIP_CREATE considered) or at least in this particular case. To workaround that, we generate a random name ourself with qrand() and simply pass it to zip_open (with ZIP_CREATE) and then return the filename. Also (!), there is memory corruption when trying to return 'tempfile'. This wasn't the case with the C compiler, to my knowledge. Regardless of this fact the generated zip does not look corrupt. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09Divelogs.de: parse response once the upload is finishedGravatar Lubomir I. Ivanov
This is based on the GTK version. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09Divelogs.de: add code for zipping up all divesGravatar Lubomir I. Ivanov
prepare_dives_for_divelogs() comes from the GTK version, originally. The upload seems to fail at this point with an error. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09Divelogs.de: allow import of downloaded divesGravatar Lubomir I. Ivanov
This patch adds commands to the dialog buttons, to apply (and possibly show an error if 'parse_file' fails', reject, or show help - which is a link to the 'divelogs.de' website. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-08Actually process the dives downloaded from divelogs.deGravatar Dirk Hohndel
Silly mistake in commit 93b5c0cd14fe ("Finish download from divelogs.de"): parse_file() doesn't call process_dives() - the caller needs to do that. Fixes #344 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06Finish download from divelogs.deGravatar Dirk Hohndel
This is far from perfect. Avoid a weird warning when total = -1 is passed into the progress bar. Enable the Accept button once the download completes. Merge the downloaded dives into the existing dive list on Apply. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06Whitespace cleanupGravatar Dirk Hohndel
That one slipped by me... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04Compile fixGravatar Dirk Hohndel
Otherwise errno is undefined (at least for me on Linux). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04Webservices: fix QString argument for zip_open()Gravatar Lubomir I. Ivanov
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03Implement the network part of the support for divelogs.deGravatar Thiago Macieira
This implements support for: * uploading a zip file containing dives - untested (the zip file must have been prepared elsewhere) * downloading the dive list and the dive XML files The networking part is finished, but it's missing the actual import of the XML files sent by divelogs.de. Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03Add support for timing the download outGravatar Thiago Macieira
The time out is 30 seconds from the start of the request or from the last time we got any data from the server. Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03Set the download reply pointer to NULL after dismissing itGravatar Thiago Macieira
QNetworkReply might emit signals after it's been told to go away. We don't want to change the status after that. Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03Properly reset the state of the download dialog before dismissingGravatar Thiago Macieira
Re-enable buttons that should be enabled by default, disable the others, set the status to empty, make the progress bar go back to zero. Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03Improve the status message in the download dialogGravatar Thiago Macieira
This also fixes a typo (untill -> until). Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03webservices: Move the static functions to the top of the fileGravatar Thiago Macieira
Just my OCD asserting itself. It looks cleaner this way, if the static functions aren't interleaved in the middle of the WebServices class. Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03Make the QNetworkAccessManager a singleton available to allGravatar Thiago Macieira
One of the rules of using QNetworkAccessManager is to share it among all users, since sockets and other state can be shared. Looks like Marble doesn't allow us to set it, though, and it creates multiple instances. I'll prepare an upstream patch to fix that sometime. Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03General fixes and improvementsGravatar Thiago Macieira
2013-12-03Whitespace: fix indentation in subsurfacewebservices.* to use tabsGravatar Thiago Macieira
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-11-30Fix all leak-at-exit from singletons in SubsurfaceGravatar Thiago Macieira
Subsurface creates a lot of singleton instances on demand, but nothing ever deleted them. Since they are singletons, these memory allocations are technically not leaks. However, they clutter the output in valgrind and other memory analysers, hiding the real issues. The solution is to delete these items at exit. For the models and for gettextFromC, the solution is to use a QScopedPointer, which will delete its payload when it gets destroyed. For the dialogs and other widgets, we can't do that: they need to be deleted before QApplication exits, so we just set the parent in all of them to the main window. Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30QT-UI: fix some typosGravatar Alexandre Belloni
Signed-off-by: Alexandre Belloni <alexandre.belloni@piout.net> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29Don't call deleteLater on ui elementsGravatar Dirk Hohndel
I'll admit that I don't fully understand this part of Qt. But commenting out the deleteLater (like we already do for another one) fixes the crash - and shouldn't do more than add a potential small memory leak. Fixes #309 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29Make sure Subsurface webservice user id is always uppercaseGravatar Dirk Hohndel
Otherwise the download will fail. Fixes #308 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-24Minimum hooking-up done, divelogs.de shows on menu-activation.Gravatar Tomaz Canabrava
This patch does the hooking up to show the dialog of the divelogs.de window when the user selects it on the menu.: Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24Added the skeleton for the Download / Upload from Divelogs.deGravatar Tomaz Canabrava
Added the skeleton code for the Download / Upload from Divelogs. de webservice. Now I need to hoopup things from the .ui side and do the actual implementation of the code. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24fix the string of the subsurfice webservice on the settings.Gravatar Tomaz Canabrava
The setting was 'webservice', but this is too wide, since we are supporting more than one. changed it to 'subsurface_webservice_uid' Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24Fixed a crash when the user canceled the download from webservice dialog.Gravatar Tomaz Canabrava
Null references, ah, love them. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24Created a 'WebService' dialog that will handle download and upload.Gravatar Tomaz Canabrava
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-16GUI for CSV importGravatar Miika Turkia
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-11Begin to Cleanup the Models, trying to reduce boilerplate.Gravatar Tomaz Canabrava
The Model View system in Qt is *very* verbose, this is the beginning of a series of patches that will concentrate the boilerplate somewhere and reduce the amount of lines and will also try to make the code cleaner and easyer to understand, Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-06First steps towards removing glib dependenciesGravatar Dirk Hohndel
- remove the build flags and libraries from the Makefile / Configure.mk - remove the glib types (gboolean, gchar, gint64, gint) - comment out / hack around gettext - replace the glib file helper functions - replace g_ascii_strtod - replace g_build_filename - use environment variables instead of g_get_home_dir() & g_get_user_name() - comment out GPS string parsing (uses glib utf8 macros) This needs massive cleanup, but it's a snapshot of what I have right now, in case people want to look at it. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-03Make the classes generated by uic be real members of our classesGravatar Thiago Macieira
This means we don't have to new/delete them, which is a waste of overhead. Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>