Add new map to group that was selected (UI functionality only)

This commit is contained in:
Marcus Huderle
2018-02-14 20:33:55 -08:00
parent 794b814c47
commit 3fcad085c3
5 changed files with 80 additions and 24 deletions

View File

@@ -289,11 +289,12 @@ void MainWindow::populateMapList() {
QIcon folderIcon;
folderIcon.addFile(QStringLiteral(":/icons/folder_closed.ico"), QSize(), QIcon::Normal, QIcon::Off);
QIcon mapIcon;
mapIcon.addFile(QStringLiteral(":/icons/map.ico"), QSize(), QIcon::Normal, QIcon::Off);
mapIcon.addFile(QStringLiteral(":/icons/image.ico"), QSize(), QIcon::Normal, QIcon::On);
mapIcon = new QIcon;
mapIcon->addFile(QStringLiteral(":/icons/map.ico"), QSize(), QIcon::Normal, QIcon::Off);
mapIcon->addFile(QStringLiteral(":/icons/image.ico"), QSize(), QIcon::Normal, QIcon::On);
mapListModel = new QStandardItemModel;
mapGroupsModel = new QList<QStandardItem*>;
QStandardItem *entry = new QStandardItem;
entry->setText(project->getProjectTitle());
@@ -316,16 +317,13 @@ void MainWindow::populateMapList() {
group->setEditable(false);
group->setData(group_name, Qt::UserRole);
group->setData("map_group", MapListUserRoles::TypeRole);
group->setData(i, MapListUserRoles::GroupRole);
maps->appendRow(group);
mapGroupsModel->append(group);
QStringList *names = project->groupedMapNames->value(i);
for (int j = 0; j < names->length(); j++) {
QString map_name = names->value(j);
QStandardItem *map = new QStandardItem;
map->setText(QString("[%1.%2] ").arg(i).arg(j, 2, 10, QLatin1Char('0')) + map_name);
map->setIcon(mapIcon);
map->setEditable(false);
map->setData(map_name, Qt::UserRole);
map->setData("map_name", MapListUserRoles::TypeRole);
QStandardItem *map = createMapItem(map_name, i, j);
group->appendRow(map);
}
}
@@ -341,6 +339,16 @@ void MainWindow::populateMapList() {
ui->mapList->repaint();
}
QStandardItem* MainWindow::createMapItem(QString mapName, int groupNum, int inGroupNum) {
QStandardItem *map = new QStandardItem;
map->setText(QString("[%1.%2] ").arg(groupNum).arg(inGroupNum, 2, 10, QLatin1Char('0')) + mapName);
map->setIcon(*mapIcon);
map->setEditable(false);
map->setData(mapName, Qt::UserRole);
map->setData("map_name", MapListUserRoles::TypeRole);
return map;
}
void MainWindow::onOpenMapListContextMenu(const QPoint &point)
{
QModelIndex index = ui->mapList->indexAt(point);
@@ -357,18 +365,26 @@ void MainWindow::onOpenMapListContextMenu(const QPoint &point)
// Build custom context menu depending on which type of item was selected (map group, map name, etc.)
if (itemType == "map_group") {
QString groupName = selectedItem->data(Qt::UserRole).toString();
int groupNum = selectedItem->data(MapListUserRoles::GroupRole).toInt();
QMenu* menu = new QMenu();
QActionGroup* actions = new QActionGroup(menu);
actions->addAction(menu->addAction("Add New Map to Group"))->setData(groupName);
connect(actions, SIGNAL(triggered(QAction*)), this, SLOT(addNewMapToGroup(QAction*)));
actions->addAction(menu->addAction("Add New Map to Group"))->setData(groupNum);
connect(actions, SIGNAL(triggered(QAction*)), this, SLOT(onAddNewMapToGroupClick(QAction*)));
menu->exec(QCursor::pos());
}
}
void MainWindow::addNewMapToGroup(QAction* triggeredAction)
void MainWindow::onAddNewMapToGroupClick(QAction* triggeredAction)
{
QString groupName = triggeredAction->data().toString();
qDebug() << "Adding new map " << groupName;
int groupNum = triggeredAction->data().toInt();
QStandardItem* groupItem = mapGroupsModel->at(groupNum);
QString newMapName = editor->project->getNewMapName();
editor->project->addNewMapToGroup(newMapName, groupNum);
int numMapsInGroup = groupItem->rowCount();
QStandardItem *newMapItem = createMapItem(newMapName, groupNum, numMapsInGroup);
groupItem->appendRow(newMapItem);
}
void MainWindow::on_mapList_activated(const QModelIndex &index)