mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Clean code from the dive site edit
This is an edit dialog, not a create dialog. This makes Subsurface crash but it's a step in the right direction. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
68053a1150
commit
f4c31f110f
2 changed files with 9 additions and 59 deletions
|
@ -30,12 +30,6 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
|
||||||
|
|
||||||
void LocationInformationWidget::setCurrentDiveSiteByUuid(uint32_t uuid)
|
void LocationInformationWidget::setCurrentDiveSiteByUuid(uint32_t uuid)
|
||||||
{
|
{
|
||||||
currentDs = get_dive_site_by_uuid(uuid);
|
|
||||||
if(!currentDs)
|
|
||||||
return;
|
|
||||||
|
|
||||||
displayed_dive_site = *currentDs;
|
|
||||||
|
|
||||||
if (displayed_dive_site.name)
|
if (displayed_dive_site.name)
|
||||||
ui.diveSiteName->setText(displayed_dive_site.name);
|
ui.diveSiteName->setText(displayed_dive_site.name);
|
||||||
else
|
else
|
||||||
|
@ -53,7 +47,6 @@ void LocationInformationWidget::setCurrentDiveSiteByUuid(uint32_t uuid)
|
||||||
else
|
else
|
||||||
ui.diveSiteCoordinates->clear();
|
ui.diveSiteCoordinates->clear();
|
||||||
|
|
||||||
if (current_mode == EDIT_DIVE_SITE)
|
|
||||||
emit startFilterDiveSite(displayed_dive_site.uuid);
|
emit startFilterDiveSite(displayed_dive_site.uuid);
|
||||||
emit startEditDiveSite(uuid);
|
emit startEditDiveSite(uuid);
|
||||||
}
|
}
|
||||||
|
@ -67,6 +60,7 @@ void LocationInformationWidget::acceptChanges()
|
||||||
{
|
{
|
||||||
emit stopFilterDiveSite();
|
emit stopFilterDiveSite();
|
||||||
char *uiString;
|
char *uiString;
|
||||||
|
struct dive_site *currentDs = get_dive_site_by_uuid(displayed_dive_site.uuid);
|
||||||
currentDs->latitude = displayed_dive_site.latitude;
|
currentDs->latitude = displayed_dive_site.latitude;
|
||||||
currentDs->longitude = displayed_dive_site.longitude;
|
currentDs->longitude = displayed_dive_site.longitude;
|
||||||
uiString = ui.diveSiteName->text().toUtf8().data();
|
uiString = ui.diveSiteName->text().toUtf8().data();
|
||||||
|
@ -84,8 +78,6 @@ void LocationInformationWidget::acceptChanges()
|
||||||
free(currentDs->notes);
|
free(currentDs->notes);
|
||||||
currentDs->notes = copy_string(uiString);
|
currentDs->notes = copy_string(uiString);
|
||||||
}
|
}
|
||||||
if (current_mode == CREATE_DIVE_SITE)
|
|
||||||
displayed_dive.dive_site_uuid = currentDs->uuid;
|
|
||||||
if (dive_site_is_empty(currentDs)) {
|
if (dive_site_is_empty(currentDs)) {
|
||||||
LocationInformationModel::instance()->removeRow(get_divesite_idx(currentDs));
|
LocationInformationModel::instance()->removeRow(get_divesite_idx(currentDs));
|
||||||
displayed_dive.dive_site_uuid = 0;
|
displayed_dive.dive_site_uuid = 0;
|
||||||
|
@ -97,33 +89,8 @@ void LocationInformationWidget::acceptChanges()
|
||||||
emit coordinatesChanged();
|
emit coordinatesChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocationInformationWidget::editDiveSite(uint32_t uuid)
|
|
||||||
{
|
|
||||||
current_mode = EDIT_DIVE_SITE;
|
|
||||||
setCurrentDiveSiteByUuid(uuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LocationInformationWidget::createDiveSite()
|
|
||||||
{
|
|
||||||
uint32_t uid = LocationInformationModel::instance()->addDiveSite(tr("untitled"));
|
|
||||||
current_mode = CREATE_DIVE_SITE;
|
|
||||||
setCurrentDiveSiteByUuid(uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LocationInformationWidget::rejectChanges()
|
void LocationInformationWidget::rejectChanges()
|
||||||
{
|
{
|
||||||
if (current_mode == CREATE_DIVE_SITE) {
|
|
||||||
LocationInformationModel::instance()->removeRow(get_divesite_idx(currentDs));
|
|
||||||
if (displayed_dive.dive_site_uuid) {
|
|
||||||
displayed_dive_site = *get_dive_site_by_uuid(displayed_dive.dive_site_uuid);
|
|
||||||
} else {
|
|
||||||
displayed_dive_site.uuid = 0;
|
|
||||||
}
|
|
||||||
} else if ((currentDs && dive_site_is_empty(currentDs))) {
|
|
||||||
LocationInformationModel::instance()->removeRow(get_divesite_idx(currentDs));
|
|
||||||
displayed_dive_site.uuid = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
resetState();
|
resetState();
|
||||||
emit stopFilterDiveSite();
|
emit stopFilterDiveSite();
|
||||||
emit informationManagementEnded();
|
emit informationManagementEnded();
|
||||||
|
@ -132,7 +99,7 @@ void LocationInformationWidget::rejectChanges()
|
||||||
|
|
||||||
void LocationInformationWidget::showEvent(QShowEvent *ev)
|
void LocationInformationWidget::showEvent(QShowEvent *ev)
|
||||||
{
|
{
|
||||||
if (displayed_dive_site.uuid && current_mode == EDIT_DIVE_SITE)
|
if (displayed_dive_site.uuid)
|
||||||
emit startFilterDiveSite(displayed_dive_site.uuid);
|
emit startFilterDiveSite(displayed_dive_site.uuid);
|
||||||
QGroupBox::showEvent(ev);
|
QGroupBox::showEvent(ev);
|
||||||
}
|
}
|
||||||
|
@ -175,7 +142,9 @@ extern bool parseGpsText(const QString &gps_text, double *latitude, double *long
|
||||||
|
|
||||||
void LocationInformationWidget::on_diveSiteCoordinates_textChanged(const QString& text)
|
void LocationInformationWidget::on_diveSiteCoordinates_textChanged(const QString& text)
|
||||||
{
|
{
|
||||||
if (!currentDs || !same_string(qPrintable(text), printGPSCoords(currentDs->latitude.udeg, currentDs->longitude.udeg))) {
|
uint lat = displayed_dive_site.latitude.udeg;
|
||||||
|
uint lon = displayed_dive_site.longitude.udeg;
|
||||||
|
if (!same_string(qPrintable(text), printGPSCoords(lat, lon))) {
|
||||||
double latitude, longitude;
|
double latitude, longitude;
|
||||||
if (parseGpsText(text, &latitude, &longitude)) {
|
if (parseGpsText(text, &latitude, &longitude)) {
|
||||||
displayed_dive_site.latitude.udeg = latitude * 1000000;
|
displayed_dive_site.latitude.udeg = latitude * 1000000;
|
||||||
|
@ -188,33 +157,19 @@ void LocationInformationWidget::on_diveSiteCoordinates_textChanged(const QString
|
||||||
|
|
||||||
void LocationInformationWidget::on_diveSiteDescription_textChanged(const QString& text)
|
void LocationInformationWidget::on_diveSiteDescription_textChanged(const QString& text)
|
||||||
{
|
{
|
||||||
if (!currentDs || !same_string(qPrintable(text), currentDs->description))
|
if (!same_string(qPrintable(text), displayed_dive_site.description))
|
||||||
markChangedWidget(ui.diveSiteDescription);
|
markChangedWidget(ui.diveSiteDescription);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocationInformationWidget::on_diveSiteName_textChanged(const QString& text)
|
void LocationInformationWidget::on_diveSiteName_textChanged(const QString& text)
|
||||||
{
|
{
|
||||||
if (currentDs && text != currentDs->name) {
|
if (!same_string(qPrintable(text), displayed_dive_site.name))
|
||||||
// This needs to be changed directly into the model so that
|
|
||||||
// the changes are replyed on the ComboBox with the current selection.
|
|
||||||
|
|
||||||
int i;
|
|
||||||
struct dive_site *ds;
|
|
||||||
for_each_dive_site(i,ds)
|
|
||||||
if (ds->uuid == currentDs->uuid)
|
|
||||||
break;
|
|
||||||
|
|
||||||
displayed_dive_site.name = copy_string(qPrintable(text));
|
|
||||||
QModelIndex idx = LocationInformationModel::instance()->index(i,0);
|
|
||||||
LocationInformationModel::instance()->setData(idx, text, Qt::EditRole);
|
|
||||||
markChangedWidget(ui.diveSiteName);
|
markChangedWidget(ui.diveSiteName);
|
||||||
emit coordinatesChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocationInformationWidget::on_diveSiteNotes_textChanged()
|
void LocationInformationWidget::on_diveSiteNotes_textChanged()
|
||||||
{
|
{
|
||||||
if (! currentDs || !same_string(qPrintable(ui.diveSiteNotes->toPlainText()), currentDs->notes))
|
if (!same_string(qPrintable(ui.diveSiteNotes->toPlainText()), displayed_dive_site.notes))
|
||||||
markChangedWidget(ui.diveSiteNotes);
|
markChangedWidget(ui.diveSiteNotes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
class LocationInformationWidget : public QGroupBox {
|
class LocationInformationWidget : public QGroupBox {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
enum mode{CREATE_DIVE_SITE, EDIT_DIVE_SITE};
|
|
||||||
LocationInformationWidget(QWidget *parent = 0);
|
LocationInformationWidget(QWidget *parent = 0);
|
||||||
protected:
|
protected:
|
||||||
void showEvent(QShowEvent *);
|
void showEvent(QShowEvent *);
|
||||||
|
@ -17,8 +16,6 @@ public slots:
|
||||||
void acceptChanges();
|
void acceptChanges();
|
||||||
void rejectChanges();
|
void rejectChanges();
|
||||||
void updateGpsCoordinates();
|
void updateGpsCoordinates();
|
||||||
void editDiveSite(uint32_t uuid);
|
|
||||||
void createDiveSite();
|
|
||||||
void markChangedWidget(QWidget *w);
|
void markChangedWidget(QWidget *w);
|
||||||
void enableEdition();
|
void enableEdition();
|
||||||
void resetState();
|
void resetState();
|
||||||
|
@ -37,11 +34,9 @@ signals:
|
||||||
void startFilterDiveSite(uint32_t uuid);
|
void startFilterDiveSite(uint32_t uuid);
|
||||||
void stopFilterDiveSite();
|
void stopFilterDiveSite();
|
||||||
private:
|
private:
|
||||||
struct dive_site *currentDs;
|
|
||||||
Ui::LocationInformation ui;
|
Ui::LocationInformation ui;
|
||||||
bool modified;
|
bool modified;
|
||||||
QAction *closeAction, *acceptAction, *rejectAction;
|
QAction *closeAction, *acceptAction, *rejectAction;
|
||||||
mode current_mode;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class LocationManagementEditHelper : public QObject {
|
class LocationManagementEditHelper : public QObject {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue