mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-04-22 02:48:25 -05:00
Fixed empty list bug in modules section
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user