subsurface/qt-ui/divelistview.h
Robert C. Helling 757c4aab20 Allow images to be added via the web
This adds a new divelist context menu entry which asks for a URL. The file
is retrieved and if it is an image it is added to the cache and the url
is associated to dives as with local files.

NB this currently only works with URLs pointing directly to images. But it
should not be too hard to add the possibility to add a direction via an html
file and its image tags.

To test: open dives/test43.xml and delete the image and then add the URL
http://euve10195.vserver.de/~robert/wreck.jpg

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-24 09:36:21 -07:00

88 lines
2.3 KiB
C++

/*
* divelistview.h
*
* header file for the dive list of Subsurface
*
*/
#ifndef DIVELISTVIEW_H
#define DIVELISTVIEW_H
/*! A view subclass for use with dives
Note: calling this a list view might be misleading?
*/
#include <QTreeView>
#include <QLineEdit>
#include <QNetworkAccessManager>
#include "models.h"
class DiveListView : public QTreeView {
Q_OBJECT
public:
DiveListView(QWidget *parent = 0);
~DiveListView();
void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
void currentChanged(const QModelIndex &current, const QModelIndex &previous);
void reload(DiveTripModel::Layout layout, bool forceSort = true);
bool eventFilter(QObject *, QEvent *);
void unselectDives();
void clearTripSelection();
void selectDive(int dive_table_idx, bool scrollto = false, bool toggle = false);
void selectDives(const QList<int> &newDiveSelection);
void rememberSelection();
void restoreSelection();
void contextMenuEvent(QContextMenuEvent *event);
QList<dive_trip_t *> selectedTrips();
public
slots:
void toggleColumnVisibilityByIndex();
void reloadHeaderActions();
void headerClicked(int);
void removeFromTrip();
void deleteDive();
void markDiveInvalid();
void testSlot();
void fixMessyQtModelBehaviour();
void mergeTripAbove();
void mergeTripBelow();
void newTripAbove();
void addToTripAbove();
void addToTripBelow();
void mergeDives();
void renumberDives();
void shiftTimes();
void loadImages();
void loadWebImages();
static QString lastUsedImageDir();
signals:
void currentDiveChanged(int divenr);
private:
bool mouseClickSelection;
QList<int> expandedRows;
int sortColumn;
Qt::SortOrder currentOrder;
DiveTripModel::Layout currentLayout;
QModelIndex contextMenuIndex;
bool dontEmitDiveChangedSignal;
bool selectionSaved;
/* if dive_trip_t is null, there's no problem. */
QMultiHash<dive_trip_t *, int> selectedDives;
void merge_trip(const QModelIndex &a, const int offset);
void setupUi();
void backupExpandedRows();
void restoreExpandedRows();
int lastVisibleColumn();
void selectTrip(dive_trip_t *trip);
void updateLastUsedImageDir(const QString &s);
void updateLastImageTimeOffset(int offset);
int lastImageTimeOffset();
void addToTrip(int delta);
void matchImagesToDives(QStringList fileNames);
void loadImageFromURL(QUrl url);
QNetworkAccessManager manager;
};
#endif // DIVELISTVIEW_H