Scroll map list to current map

This commit is contained in:
Marcus Huderle 2018-09-29 09:22:50 -05:00
parent 7e6726bef7
commit fe12e0bde5
2 changed files with 13 additions and 5 deletions

View file

@ -127,9 +127,10 @@ private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
QStandardItemModel *mapListModel; QStandardItemModel *mapListModel;
QList<QStandardItem*> *mapGroupsModel; QList<QStandardItem*> *mapGroupsModel;
QMap<QString, QModelIndex> mapListIndexes;
Editor *editor = nullptr; Editor *editor = nullptr;
QIcon* mapIcon; QIcon* mapIcon;
void setMap(QString); void setMap(QString, bool scrollTreeView = false);
void redrawMapScene(); void redrawMapScene();
void loadDataStructures(); void loadDataStructures();
void populateMapList(); void populateMapList();

View file

@ -110,7 +110,7 @@ void MainWindow::openProject(QString dir) {
setWindowTitle(editor->project->getProjectTitle()); setWindowTitle(editor->project->getProjectTitle());
loadDataStructures(); loadDataStructures();
populateMapList(); populateMapList();
setMap(getDefaultMap()); setMap(getDefaultMap(), true);
} else { } else {
setWindowTitle(editor->project->getProjectTitle()); setWindowTitle(editor->project->getProjectTitle());
loadDataStructures(); loadDataStructures();
@ -175,7 +175,7 @@ void MainWindow::on_action_Open_Project_triggered()
} }
} }
void MainWindow::setMap(QString map_name) { void MainWindow::setMap(QString map_name, bool scrollTreeView) {
qDebug() << QString("setMap(%1)").arg(map_name); qDebug() << QString("setMap(%1)").arg(map_name);
if (map_name.isNull()) { if (map_name.isNull()) {
return; return;
@ -184,6 +184,11 @@ void MainWindow::setMap(QString map_name) {
redrawMapScene(); redrawMapScene();
displayMapProperties(); displayMapProperties();
if (scrollTreeView) {
ui->mapList->setCurrentIndex(mapListIndexes.value(map_name));
ui->mapList->scrollTo(ui->mapList->currentIndex(), QAbstractItemView::PositionAtCenter);
}
setWindowTitle(map_name + " - " + editor->project->getProjectTitle()); setWindowTitle(map_name + " - " + editor->project->getProjectTitle());
connect(editor->map, SIGNAL(mapChanged(Map*)), this, SLOT(onMapChanged(Map *))); connect(editor->map, SIGNAL(mapChanged(Map*)), this, SLOT(onMapChanged(Map *)));
@ -248,7 +253,7 @@ void MainWindow::openWarpMap(QString map_name, QString warp_num) {
} }
// Open the destination map, and select the target warp event. // Open the destination map, and select the target warp event.
setMap(map_name); setMap(map_name, true);
QList<Event*> warp_events = editor->map->events["warp_event_group"]; QList<Event*> warp_events = editor->map->events["warp_event_group"];
if (warp_events.length() > warpNum) { if (warp_events.length() > warpNum) {
Event *warp_event = warp_events.at(warpNum); Event *warp_event = warp_events.at(warpNum);
@ -450,6 +455,7 @@ void MainWindow::populateMapList() {
QString map_name = names.value(j); QString map_name = names.value(j);
QStandardItem *map = createMapItem(map_name, i, j); QStandardItem *map = createMapItem(map_name, i, j);
group->appendRow(map); group->appendRow(map);
mapListIndexes.insert(map_name, map->index());
} }
} }
@ -512,6 +518,7 @@ void MainWindow::onAddNewMapToGroupClick(QAction* triggeredAction)
int numMapsInGroup = groupItem->rowCount(); int numMapsInGroup = groupItem->rowCount();
QStandardItem *newMapItem = createMapItem(newMapName, groupNum, numMapsInGroup); QStandardItem *newMapItem = createMapItem(newMapName, groupNum, numMapsInGroup);
groupItem->appendRow(newMapItem); groupItem->appendRow(newMapItem);
mapListIndexes.insert(newMapName, newMapItem->index());
setMap(newMapName); setMap(newMapName);
} }
@ -1083,7 +1090,7 @@ void MainWindow::checkToolButtons() {
} }
void MainWindow::onLoadMapRequested(QString mapName, QString fromMapName) { void MainWindow::onLoadMapRequested(QString mapName, QString fromMapName) {
setMap(mapName); setMap(mapName, true);
editor->setSelectedConnectionFromMap(fromMapName); editor->setSelectedConnectionFromMap(fromMapName);
} }