Fixed empty list bug in modules section

This commit is contained in:
Gene Payne
2020-09-25 15:08:31 -06:00
parent 83525a544d
commit a369c967a7
3 changed files with 58 additions and 16 deletions
@@ -36,6 +36,7 @@ private:
QString createOneLineSummary(openspace::Profile::Module m);
void transitionFromEditMode();
void editBoxDisabled(bool disabled);
bool isLineEmpty(int index);
Ui::osmodules *ui;
QWidget* _parent;
@@ -94,18 +94,18 @@ public:
line_module = new QLineEdit(frame);
line_module->setObjectName(QString::fromUtf8("line_module"));
line_module->setGeometry(QRect(10, 30, 357, 25));
button_cancel = new QPushButton(frame);
button_cancel->setObjectName(QString::fromUtf8("button_cancel"));
button_cancel->setGeometry(QRect(410, 270, 71, 25));
button_save = new QPushButton(frame);
button_save->setObjectName(QString::fromUtf8("button_save"));
button_save->setGeometry(QRect(490, 270, 71, 25));
line_loaded = new QTextEdit(frame);
line_loaded->setObjectName(QString::fromUtf8("line_loaded"));
line_loaded->setGeometry(QRect(10, 90, 511, 71));
line_notLoaded = new QTextEdit(frame);
line_notLoaded->setObjectName(QString::fromUtf8("line_notLoaded"));
line_notLoaded->setGeometry(QRect(10, 190, 511, 71));
button_cancel = new QPushButton(frame);
button_cancel->setObjectName(QString::fromUtf8("button_cancel"));
button_cancel->setGeometry(QRect(410, 270, 71, 25));
button_save = new QPushButton(frame);
button_save->setObjectName(QString::fromUtf8("button_save"));
button_save->setGeometry(QRect(490, 270, 71, 25));
label_module->raise();
label_loaded->raise();
label_notLoaded->raise();
+51 -10
View File
@@ -59,10 +59,31 @@ void osmodules::listItemSelected(void) {
transitionToEditMode();
}
bool osmodules::isLineEmpty(int index) {
bool isEmpty = true;
if (ui->list->item(index)->text().compare("") != 0) {
isEmpty = false;
}
if ((_data.size() > 0) && (_data.at(0).name.compare("") != 0)) {
isEmpty = false;
}
return isEmpty;
}
void osmodules::listItemAdded(void) {
//Add new line at bottom of props list
_data.push_back({"", "", ""});
ui->list->addItem(new QListWidgetItem(" (Enter details below and click 'Save')"));
int currentListSize = ui->list->count();
if ((currentListSize == 1) && (isLineEmpty(0))) {
//Special case where list is "empty" but really has one line that is blank.
// This is done because QListWidget does not seem to like having its sole
// remaining item being removed.
_data.at(0) = {"", "", ""};
ui->list->item(0)->setText(" (Enter details below & click 'Save')");
}
else {
_data.push_back({"", "", ""});
ui->list->addItem(new QListWidgetItem(" (Enter details below & click 'Save')"));
}
//Scroll down to that blank line highlighted
ui->list->setCurrentRow(ui->list->count() - 1);
@@ -85,8 +106,10 @@ void osmodules::listItemSave(void) {
if ( _data.size() > 0) {
_data[index].name = ui->line_module->text().toUtf8().constData();
_data[index].loadedInstruction = ui->line_loaded->toPlainText().toUtf8().constData();
_data[index].notLoadedInstruction = ui->line_notLoaded->toPlainText().toUtf8().constData();
_data[index].loadedInstruction
= ui->line_loaded->toPlainText().toUtf8().constData();
_data[index].notLoadedInstruction
= ui->line_notLoaded->toPlainText().toUtf8().constData();
ui->list->item(index)->setText(createOneLineSummary(_data[index]));
}
transitionFromEditMode();
@@ -108,11 +131,19 @@ void osmodules::listItemCancelSave(void) {
void osmodules::listItemRemove(void) {
if (ui->list->count() > 0) {
int index = ui->list->currentRow();
if (index >= 0 && index < ui->list->count()) {
delete ui->list->takeItem(index);
if (_data.size() > 0) {
_data.erase(_data.begin() + index);
if (ui->list->count() == 1) {
//Special case where last remaining item is being removed (QListWidget does
// not like the final item being removed so instead clear it & leave it)
_data.at(0) = {"", "", ""};
ui->list->item(0)->setText("");
}
else {
int index = ui->list->currentRow();
if (index >= 0 && index < ui->list->count()) {
delete ui->list->takeItem(index);
if (_data.size() > 0) {
_data.erase(_data.begin() + index);
}
}
}
}
@@ -124,6 +155,9 @@ void osmodules::transitionToEditMode(void) {
ui->list->setDisabled(true);
ui->button_add->setDisabled(true);
ui->button_remove->setDisabled(true);
ui->button_cancel->setDisabled(true);
ui->button_save->setDisabled(true);
ui->buttonBox->setDisabled(true);
editBoxDisabled(false);
}
@@ -132,6 +166,9 @@ void osmodules::transitionFromEditMode(void) {
ui->list->setDisabled(false);
ui->button_add->setDisabled(false);
ui->button_remove->setDisabled(false);
ui->button_cancel->setDisabled(false);
ui->button_save->setDisabled(false);
ui->buttonBox->setDisabled(false);
editBoxDisabled(true);
ui->label_module->setText("<font color='black'>Module</font>");
@@ -149,6 +186,10 @@ void osmodules::editBoxDisabled(bool disabled) {
}
void osmodules::parseSelections() {
//Handle case with only one remaining but empty line
if ((_data.size() == 1) && (_data.at(0).name.compare("") == 0)) {
_data.clear();
}
_imported->setModules(_data);
accept();
}