Make sure the save/cancel message is always shown

An addition to the "Move dive notes edit message above the
scrollable widget" commit:  Make sure the save/cancel message is
always displayed on top, regardless of which tab is selected.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Henrik Brautaset Aronsen 2013-12-03 21:44:48 +01:00 committed by Dirk Hohndel
parent 9b51901f35
commit b1febf17b1
3 changed files with 58 additions and 25 deletions

View file

@ -32,20 +32,15 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
ui.setupUi(this); ui.setupUi(this);
ui.cylinders->setModel(cylindersModel); ui.cylinders->setModel(cylindersModel);
ui.weights->setModel(weightModel); ui.weights->setModel(weightModel);
ui.diveNotesMessage->hide(); closeMessage();
ui.diveEquipmentMessage->hide();
ui.diveNotesMessage->setCloseButtonVisible(false);
ui.diveEquipmentMessage->setCloseButtonVisible(false);
QAction *action = new QAction(tr("Save"), this); QAction *action = new QAction(tr("Save"), this);
connect(action, SIGNAL(triggered(bool)), this, SLOT(acceptChanges())); connect(action, SIGNAL(triggered(bool)), this, SLOT(acceptChanges()));
ui.diveEquipmentMessage->addAction(action); addMessageAction(action);
ui.diveNotesMessage->addAction(action);
action = new QAction(tr("Cancel"), this); action = new QAction(tr("Cancel"), this);
connect(action, SIGNAL(triggered(bool)), this, SLOT(rejectChanges())); connect(action, SIGNAL(triggered(bool)), this, SLOT(rejectChanges()));
ui.diveEquipmentMessage->addAction(action); addMessageAction(action);
ui.diveNotesMessage->addAction(action);
if (qApp->style()->objectName() == "oxygen") if (qApp->style()->objectName() == "oxygen")
setDocumentMode(true); setDocumentMode(true);
@ -164,6 +159,43 @@ void MainTab::addDiveStarted()
editMode = ADD; editMode = ADD;
} }
void MainTab::addMessageAction(QAction* action)
{
ui.diveEquipmentMessage->addAction(action);
ui.diveNotesMessage->addAction(action);
ui.diveInfoMessage->addAction(action);
ui.diveStatisticsMessage->addAction(action);
}
void MainTab::hideMessage()
{
ui.diveNotesMessage->animatedHide();
ui.diveEquipmentMessage->animatedHide();
ui.diveInfoMessage->animatedHide();
ui.diveStatisticsMessage->animatedHide();
}
void MainTab::closeMessage()
{
hideMessage();
ui.diveNotesMessage->setCloseButtonVisible(false);
ui.diveEquipmentMessage->setCloseButtonVisible(false);
ui.diveInfoMessage->setCloseButtonVisible(false);
ui.diveStatisticsMessage->setCloseButtonVisible(false);
}
void MainTab::displayMessage(QString str)
{
ui.diveNotesMessage->setText(str);
ui.diveNotesMessage->animatedShow();
ui.diveEquipmentMessage->setText(str);
ui.diveEquipmentMessage->animatedShow();
ui.diveInfoMessage->setText(str);
ui.diveInfoMessage->animatedShow();
ui.diveStatisticsMessage->setText(str);
ui.diveStatisticsMessage->animatedShow();
}
void MainTab::enableEdition(EditMode newEditMode) void MainTab::enableEdition(EditMode newEditMode)
{ {
if (selected_dive < 0 || editMode != NONE) if (selected_dive < 0 || editMode != NONE)
@ -175,23 +207,16 @@ void MainTab::enableEdition(EditMode newEditMode)
notesBackup.clear(); notesBackup.clear();
if (mainWindow() && mainWindow()->dive_list()->selectedTrips().count() == 1) { if (mainWindow() && mainWindow()->dive_list()->selectedTrips().count() == 1) {
// we are editing trip location and notes // we are editing trip location and notes
ui.diveNotesMessage->setText(tr("This trip is being edited.")); displayMessage(tr("This trip is being edited."));
ui.diveNotesMessage->animatedShow();
ui.diveEquipmentMessage->setText(tr("This trip is being edited."));
ui.diveEquipmentMessage->animatedShow();
notesBackup[NULL].notes = ui.notes->toPlainText(); notesBackup[NULL].notes = ui.notes->toPlainText();
notesBackup[NULL].location = ui.location->text(); notesBackup[NULL].location = ui.location->text();
editMode = TRIP; editMode = TRIP;
} else { } else {
if (amount_selected > 1) { if (amount_selected > 1) {
ui.diveNotesMessage->setText(tr("Multiple dives are being edited.")); displayMessage(tr("Multiple dives are being edited."));
ui.diveEquipmentMessage->setText(tr("Multiple dives are being edited."));
} else { } else {
ui.diveNotesMessage->setText(tr("This dive is being edited.")); displayMessage(tr("This dive is being edited."));
ui.diveEquipmentMessage->setText(tr("This dive is being edited."));
} }
ui.diveNotesMessage->animatedShow();
ui.diveEquipmentMessage->animatedShow();
// We may be editing one or more dives here. backup everything. // We may be editing one or more dives here. backup everything.
struct dive *mydive; struct dive *mydive;
@ -513,8 +538,7 @@ void MainTab::acceptChanges()
mainWindow()->dive_list()->setEnabled(true); mainWindow()->dive_list()->setEnabled(true);
tabBar()->setTabIcon(0, QIcon()); // Notes tabBar()->setTabIcon(0, QIcon()); // Notes
tabBar()->setTabIcon(1, QIcon()); // Equipment tabBar()->setTabIcon(1, QIcon()); // Equipment
ui.diveNotesMessage->animatedHide(); hideMessage();
ui.diveEquipmentMessage->animatedHide();
/* now figure out if things have changed */ /* now figure out if things have changed */
if (mainWindow() && mainWindow()->dive_list()->selectedTrips().count() == 1) { if (mainWindow() && mainWindow()->dive_list()->selectedTrips().count() == 1) {
if (notesBackup[NULL].notes != ui.notes->toPlainText() || if (notesBackup[NULL].notes != ui.notes->toPlainText() ||
@ -712,8 +736,7 @@ void MainTab::rejectChanges()
} }
} }
ui.diveNotesMessage->animatedHide(); hideMessage();
ui.diveEquipmentMessage->animatedHide();
mainWindow()->dive_list()->setEnabled(true); mainWindow()->dive_list()->setEnabled(true);
notesBackup.clear(); notesBackup.clear();
resetPallete(); resetPallete();

View file

@ -82,6 +82,10 @@ public slots:
void editCylinderWidget(const QModelIndex& index); void editCylinderWidget(const QModelIndex& index);
void editWeightWidget(const QModelIndex& index); void editWeightWidget(const QModelIndex& index);
void addDiveStarted(); void addDiveStarted();
void addMessageAction(QAction* action);
void hideMessage();
void closeMessage();
void displayMessage(QString str);
void enableEdition(EditMode newEditMode = NONE); void enableEdition(EditMode newEditMode = NONE);
void toggleTriggeredColumn(); void toggleTriggeredColumn();
private: private:

View file

@ -263,6 +263,9 @@
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_4"> <layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0"> <item row="0" column="0">
<widget class="KMessageWidget" name="diveEquipmentMessage" native="true"/>
</item>
<item row="1" column="0">
<widget class="QScrollArea" name="scrollArea_2"> <widget class="QScrollArea" name="scrollArea_2">
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::NoFrame</enum> <enum>QFrame::NoFrame</enum>
@ -298,9 +301,6 @@
<property name="spacing"> <property name="spacing">
<number>2</number> <number>2</number>
</property> </property>
<item row="0" column="0">
<widget class="KMessageWidget" name="diveEquipmentMessage" native="true"/>
</item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QWidget" name="widget" native="true"> <widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
@ -343,6 +343,9 @@
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="0" column="0">
<widget class="KMessageWidget" name="diveInfoMessage" native="true"/>
</item>
<item row="1" column="0">
<widget class="QScrollArea" name="scrollArea_3"> <widget class="QScrollArea" name="scrollArea_3">
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::NoFrame</enum> <enum>QFrame::NoFrame</enum>
@ -650,6 +653,9 @@
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout1"> <layout class="QGridLayout" name="gridLayout1">
<item row="0" column="1"> <item row="0" column="1">
<widget class="KMessageWidget" name="diveStatisticsMessage" native="true"/>
</item>
<item row="1" column="1">
<widget class="QScrollArea" name="scrollArea_4"> <widget class="QScrollArea" name="scrollArea_4">
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::NoFrame</enum> <enum>QFrame::NoFrame</enum>