void MainWindow::on_goToActivity_activated(const QString &arg1) { MyRect * r = MyRect::m_selectedRect; if(!ui->goToActivity->currentIndex()) { cout << "Setting MyRect with " << r->id() << " 0" << endl; r->setId(0); r->setGameType(GameType::NONE); ui->actPieceWidg->setHidden(true); r->setActPieceFilepath(QString("None")); if(!ui->graphicsView->actsAreInScene()) ui->chooseRewardBadge->setEnabled(false); return; } QString actType = ui->goToActivity->currentText().section(QChar('-'), 0, 0); actType = actType.remove(QChar(' ')); QString str = ui->goToActivity->currentText().section(QChar('-'), 1, 1); if(ui->graphicsView->rewardBadgeId()) ui->actPieceWidg->setHidden(false); if(!r->id()) { r->setActPieceFilepath(m_fileManager.errorImgFilepath()); ui->actPieceImg->setPixmap(QPixmap(r->actPieceFilepath()).scaled(50, 50, Qt::KeepAspectRatioByExpanding, Qt::FastTransformation)); } if(actType == QString("Pairing")) { r->setId(m_pairActs->id(str.remove(0, 1))); r->setGameType(GameType::PAIR); } else if(actType == QString("Matching")) { r->setId(m_matchActs->id(str.remove(0, 1))); r->setGameType(GameType::MATCHING); cout << "set matching" << endl; } if(r->id()) { string actFileName = MyRect::m_selectedRect->actFileName().toStdString(); Activity *act = new Activity(actFileName, NULL); act->load(); ui->actPieceImg->setPixmap(QPixmap(QString::fromStdWString(act->m_badge_piece.m_image)).scaled(50, 50, Qt::KeepAspectRatioByExpanding, Qt::FastTransformation)); r->setActPieceFilepath(QString::fromStdWString(act->m_badge_piece.m_image)); } if(ui->graphicsView->actsAreInScene()) ui->chooseRewardBadge->setEnabled(true); }
void Scene::renameBadge(wstring old_badge_name, wstring new_badge_name) { if(m_badge.m_name == old_badge_name) { m_badge.m_name = new_badge_name; // Save the badge name to the pieces of all Activity objects used in the scene for(size_t i = 0; i < m_activities.size(); ++i) { if(m_activities[i].first != GameType::NONE) { QString qActFileName = QString::fromStdString(m_activities[i].second); string actFileName = qActFileName.toStdString(); cout << "Saving data for the Activity " << actFileName << endl; Activity *saveAct = new Activity(actFileName, NULL); saveAct->load(); saveAct->m_badge_piece.m_badge_name = new_badge_name; saveAct->save(); } } } }