mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 21:20:19 +00:00
757c4aab20
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>
268 lines
5.7 KiB
C++
268 lines
5.7 KiB
C++
#ifndef SIMPLEWIDGETS_H
|
|
#define SIMPLEWIDGETS_H
|
|
|
|
class MinMaxAvgWidgetPrivate;
|
|
class QAbstractButton;
|
|
class QNetworkReply;
|
|
|
|
#include <QWidget>
|
|
#include <QGroupBox>
|
|
#include <QDialog>
|
|
#include <stdint.h>
|
|
|
|
#include "ui_renumber.h"
|
|
#include "ui_setpoint.h"
|
|
#include "ui_shifttimes.h"
|
|
#include "ui_shiftimagetimes.h"
|
|
#include "ui_urldialog.h"
|
|
#include "ui_divecomponentselection.h"
|
|
#include "ui_listfilter.h"
|
|
#include "ui_filterwidget.h"
|
|
#include "exif.h"
|
|
#include <dive.h>
|
|
|
|
|
|
class MinMaxAvgWidget : public QWidget {
|
|
Q_OBJECT
|
|
Q_PROPERTY(double minimum READ minimum WRITE setMinimum)
|
|
Q_PROPERTY(double maximum READ maximum WRITE setMaximum)
|
|
Q_PROPERTY(double average READ average WRITE setAverage)
|
|
public:
|
|
MinMaxAvgWidget(QWidget *parent);
|
|
~MinMaxAvgWidget();
|
|
double minimum() const;
|
|
double maximum() const;
|
|
double average() const;
|
|
void setMinimum(double minimum);
|
|
void setMaximum(double maximum);
|
|
void setAverage(double average);
|
|
void setMinimum(const QString &minimum);
|
|
void setMaximum(const QString &maximum);
|
|
void setAverage(const QString &average);
|
|
void overrideMinToolTipText(const QString &newTip);
|
|
void overrideAvgToolTipText(const QString &newTip);
|
|
void overrideMaxToolTipText(const QString &newTip);
|
|
void clear();
|
|
|
|
private:
|
|
QScopedPointer<MinMaxAvgWidgetPrivate> d;
|
|
};
|
|
|
|
class RenumberDialog : public QDialog {
|
|
Q_OBJECT
|
|
public:
|
|
static RenumberDialog *instance();
|
|
void renumberOnlySelected(bool selected = true);
|
|
private
|
|
slots:
|
|
void buttonClicked(QAbstractButton *button);
|
|
|
|
private:
|
|
explicit RenumberDialog(QWidget *parent);
|
|
Ui::RenumberDialog ui;
|
|
bool selectedOnly;
|
|
};
|
|
|
|
class SetpointDialog : public QDialog {
|
|
Q_OBJECT
|
|
public:
|
|
static SetpointDialog *instance();
|
|
void setpointData(struct divecomputer *divecomputer, int time);
|
|
private
|
|
slots:
|
|
void buttonClicked(QAbstractButton *button);
|
|
|
|
private:
|
|
explicit SetpointDialog(QWidget *parent);
|
|
Ui::SetpointDialog ui;
|
|
struct divecomputer *dc;
|
|
int time;
|
|
};
|
|
|
|
class ShiftTimesDialog : public QDialog {
|
|
Q_OBJECT
|
|
public:
|
|
static ShiftTimesDialog *instance();
|
|
void showEvent(QShowEvent *event);
|
|
private
|
|
slots:
|
|
void buttonClicked(QAbstractButton *button);
|
|
void changeTime();
|
|
|
|
private:
|
|
explicit ShiftTimesDialog(QWidget *parent);
|
|
int64_t when;
|
|
Ui::ShiftTimesDialog ui;
|
|
};
|
|
|
|
class ShiftImageTimesDialog : public QDialog {
|
|
Q_OBJECT
|
|
public:
|
|
explicit ShiftImageTimesDialog(QWidget *parent, QStringList fileNames);
|
|
time_t amount() const;
|
|
void setOffset(time_t offset);
|
|
private
|
|
slots:
|
|
void buttonClicked(QAbstractButton *button);
|
|
void syncCameraClicked();
|
|
void dcDateTimeChanged(const QDateTime &);
|
|
void timeEditChanged(const QTime &time);
|
|
void updateInvalid();
|
|
|
|
private:
|
|
QStringList fileNames;
|
|
Ui::ShiftImageTimesDialog ui;
|
|
time_t m_amount;
|
|
time_t dcImageEpoch;
|
|
};
|
|
|
|
class URLDialog : public QDialog {
|
|
Q_OBJECT
|
|
public:
|
|
explicit URLDialog(QWidget *parent);
|
|
QString url() const;
|
|
private:
|
|
Ui::URLDialog ui;
|
|
};
|
|
|
|
class QCalendarWidget;
|
|
|
|
class DateWidget : public QWidget {
|
|
Q_OBJECT
|
|
public:
|
|
DateWidget(QWidget *parent = 0);
|
|
QDate date() const;
|
|
public
|
|
slots:
|
|
void setDate(const QDate &date);
|
|
|
|
protected:
|
|
void paintEvent(QPaintEvent *event);
|
|
void mousePressEvent(QMouseEvent *event);
|
|
void focusInEvent(QFocusEvent *);
|
|
void focusOutEvent(QFocusEvent *);
|
|
void keyPressEvent(QKeyEvent *);
|
|
void changeEvent(QEvent *);
|
|
bool eventFilter(QObject *, QEvent *);
|
|
signals:
|
|
void dateChanged(const QDate &date);
|
|
|
|
private:
|
|
QDate mDate;
|
|
QCalendarWidget *calendarWidget;
|
|
};
|
|
|
|
class DiveComponentSelection : public QDialog {
|
|
Q_OBJECT
|
|
public:
|
|
explicit DiveComponentSelection(QWidget *parent, struct dive *target, struct dive_components *_what);
|
|
private
|
|
slots:
|
|
void buttonClicked(QAbstractButton *button);
|
|
|
|
private:
|
|
Ui::DiveComponentSelectionDialog ui;
|
|
struct dive *targetDive;
|
|
struct dive_components *what;
|
|
};
|
|
|
|
namespace Ui{
|
|
class FilterWidget2;
|
|
};
|
|
|
|
class MultiFilter : public QWidget {
|
|
Q_OBJECT
|
|
public
|
|
slots:
|
|
void closeFilter();
|
|
void adjustHeight();
|
|
void filterFinished();
|
|
|
|
public:
|
|
MultiFilter(QWidget *parent);
|
|
Ui::FilterWidget2 ui;
|
|
};
|
|
|
|
class TagFilter : public QWidget {
|
|
Q_OBJECT
|
|
public:
|
|
TagFilter(QWidget *parent = 0);
|
|
virtual void showEvent(QShowEvent *);
|
|
virtual void hideEvent(QHideEvent *);
|
|
|
|
private:
|
|
Ui::FilterWidget ui;
|
|
friend class MultiFilter;
|
|
};
|
|
|
|
class BuddyFilter : public QWidget {
|
|
Q_OBJECT
|
|
public:
|
|
BuddyFilter(QWidget *parent = 0);
|
|
virtual void showEvent(QShowEvent *);
|
|
virtual void hideEvent(QHideEvent *);
|
|
|
|
private:
|
|
Ui::FilterWidget ui;
|
|
};
|
|
|
|
class SuitFilter : public QWidget {
|
|
Q_OBJECT
|
|
public:
|
|
SuitFilter(QWidget *parent = 0);
|
|
virtual void showEvent(QShowEvent *);
|
|
virtual void hideEvent(QHideEvent *);
|
|
|
|
private:
|
|
Ui::FilterWidget ui;
|
|
};
|
|
|
|
class LocationFilter : public QWidget {
|
|
Q_OBJECT
|
|
public:
|
|
LocationFilter(QWidget *parent = 0);
|
|
virtual void showEvent(QShowEvent *);
|
|
virtual void hideEvent(QHideEvent *);
|
|
|
|
private:
|
|
Ui::FilterWidget ui;
|
|
};
|
|
|
|
#include "ui_locationInformation.h"
|
|
|
|
class LocationInformationWidget : public QGroupBox {
|
|
Q_OBJECT
|
|
public:
|
|
LocationInformationWidget(QWidget *parent = 0);
|
|
|
|
public slots:
|
|
void acceptChanges();
|
|
void rejectChanges();
|
|
|
|
void showEvent(QShowEvent *);
|
|
|
|
void setLocationId(uint32_t uuid);
|
|
void updateGpsCoordinates(void);
|
|
void markChangedWidget(QWidget *w);
|
|
void enableEdition();
|
|
void resetState();
|
|
void resetPallete();
|
|
|
|
void on_diveSiteCoordinates_textChanged(const QString& text);
|
|
void on_diveSiteDescription_textChanged(const QString& text);
|
|
void on_diveSiteName_textChanged(const QString& text);
|
|
void on_diveSiteNotes_textChanged();
|
|
signals:
|
|
void informationManagementEnded();
|
|
|
|
private:
|
|
struct dive_site *currentDs;
|
|
Ui::LocationInformation ui;
|
|
bool modified;
|
|
QAction *closeAction, *acceptAction, *rejectAction;
|
|
};
|
|
|
|
bool isGnome3Session();
|
|
QImage grayImage(const QImage &coloredImg);
|
|
|
|
#endif // SIMPLEWIDGETS_H
|