subsurface/qt-ui/locationinformation.h
Tomaz Canabrava 3b2a02dffa Get the selected dive site from the list
Hooked up an eventFilter on the QListView that displays our dive sites so
it would filter the keys enter and space, storing the current dive_site
uuid when that happens.

Also it stores the uuid on clicks.

Now we need to get that information when processing acceptedChanges() and
check if the uuid stored there == displayed_dive_site.uuid and also if
text != displayed_dive_site.name, because if the user didn't click on
anything but only wrote stuff on the LineEdit no dive site would be
selected and so uuid == displayed_dive_site.uuid (wich would mean 'no
changes')

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-07-13 15:41:16 -07:00

78 lines
2 KiB
C++

#ifndef LOCATIONINFORMATION_H
#define LOCATIONINFORMATION_H
#include "ui_locationInformation.h"
#include <stdint.h>
#include <QAbstractListModel>
class LocationInformationWidget : public QGroupBox {
Q_OBJECT
public:
enum mode{CREATE_DIVE_SITE, EDIT_DIVE_SITE};
LocationInformationWidget(QWidget *parent = 0);
protected:
void showEvent(QShowEvent *);
public slots:
void acceptChanges();
void rejectChanges();
void updateGpsCoordinates();
void editDiveSite(uint32_t uuid);
void createDiveSite();
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();
private slots:
void setCurrentDiveSiteByUuid(uint32_t uuid);
signals:
void startEditDiveSite(uint32_t uuid);
void endEditDiveSite();
void informationManagementEnded();
void coordinatesChanged();
void startFilterDiveSite(uint32_t uuid);
void stopFilterDiveSite();
private:
struct dive_site *currentDs;
Ui::LocationInformation ui;
bool modified;
QAction *closeAction, *acceptAction, *rejectAction;
mode current_mode;
};
#include "ui_simpledivesiteedit.h"
class SimpleDiveSiteEditDialog : public QDialog {
Q_OBJECT
public:
SimpleDiveSiteEditDialog(QWidget *parent);
virtual ~SimpleDiveSiteEditDialog();
bool changed_dive_site;
bool eventFilter(QObject *obj, QEvent *ev);
public slots:
void on_diveSiteName_editingFinished();
void on_diveSiteCoordinates_editingFinished();
void diveSiteDescription_editingFinished();
void diveSiteNotes_editingFinished();
protected:
void showEvent(QShowEvent *ev);
private:
Ui::SimpleDiveSiteEditDialog *ui;
};
class LocationManagementEditHelper : public QObject {
Q_OBJECT
public:
bool eventFilter(QObject *obj, QEvent *ev);
void handleActivation(const QModelIndex& activated);
void resetDiveSiteUuid();
private:
uint32_t last_uuid;
};
#endif