diff --git a/limereport/items/lrtextitemeditor.cpp b/limereport/items/lrtextitemeditor.cpp index 4b33a04..5d10803 100644 --- a/limereport/items/lrtextitemeditor.cpp +++ b/limereport/items/lrtextitemeditor.cpp @@ -141,6 +141,21 @@ void TextItemEditor::initUI() ui->gbSettings->setVisible(false); connect(ui->twScriptEngine->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(slotScriptItemsSelectionChanged(QModelIndex,QModelIndex))); + + BandDesignIntf* band = findParentBand(); + if (band && !band->datasourceName().isEmpty()){ + QModelIndexList nodes = ui->twData->model()->match( + ui->twData->model()->index(0,0), + Qt::DisplayRole, + band->datasourceName(), + 2, + Qt::MatchRecursive + ); + if (!nodes.isEmpty()){ + ui->twData->expand(nodes.at(0).parent()); + ui->twData->expand(nodes.at(0)); + } + } } QStringListModel *TextItemEditor::getDataSources() @@ -380,4 +395,18 @@ void TextItemEditor::slotScriptItemsSelectionChanged(const QModelIndex &to, cons } } +BandDesignIntf *TextItemEditor::findParentBand() +{ + BandDesignIntf* result = 0; + BaseDesignIntf* item = m_textItem; + while (true){ + item = dynamic_cast(item->parentItem()); + if (item){ + result = dynamic_cast(item); + if (result) break; + } else break; + } + return result; +} + } // namespace LimeReport diff --git a/limereport/items/lrtextitemeditor.h b/limereport/items/lrtextitemeditor.h index e7b5ba4..cf02781 100644 --- a/limereport/items/lrtextitemeditor.h +++ b/limereport/items/lrtextitemeditor.h @@ -73,6 +73,7 @@ public: protected: void resizeEvent(QResizeEvent *); void moveEvent(QMoveEvent *); + BandDesignIntf* findParentBand(); private slots: void on_pbOk_clicked(); void on_pbCancel_clicked();