mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	citra_qt/multiplayer: Add View Profile option
				
					
				
			Adds an UI action to navigate to the user's profile located in Citra Community.
This commit is contained in:
		
							parent
							
								
									4df4b90795
								
							
						
					
					
						commit
						7a379ee03a
					
				
					 1 changed files with 36 additions and 23 deletions
				
			
		|  | @ -5,6 +5,7 @@ | |||
| #include <array> | ||||
| #include <future> | ||||
| #include <QColor> | ||||
| #include <QDesktopServices> | ||||
| #include <QFutureWatcher> | ||||
| #include <QImage> | ||||
| #include <QList> | ||||
|  | @ -411,34 +412,46 @@ void ChatRoom::PopupContextMenu(const QPoint& menu_location) { | |||
| 
 | ||||
|     std::string nickname = | ||||
|         player_list->item(item.row())->data(PlayerListItem::NicknameRole).toString().toStdString(); | ||||
|     if (auto room = Network::GetRoomMember().lock()) { | ||||
|         // You can't block, kick or ban yourself
 | ||||
|         if (nickname == room->GetNickname()) | ||||
|             return; | ||||
|     } | ||||
| 
 | ||||
|     QMenu context_menu; | ||||
|     QAction* block_action = context_menu.addAction(tr("Block Player")); | ||||
| 
 | ||||
|     block_action->setCheckable(true); | ||||
|     block_action->setChecked(block_list.count(nickname) > 0); | ||||
|     QString username = player_list->item(item.row())->data(PlayerListItem::UsernameRole).toString(); | ||||
|     if (!username.isEmpty()) { | ||||
|         QAction* view_profile_action = context_menu.addAction(tr("View Profile")); | ||||
|         connect(view_profile_action, &QAction::triggered, [username] { | ||||
|             QDesktopServices::openUrl( | ||||
|                 QString("https://community.citra-emu.org/u/%1").arg(username)); | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     connect(block_action, &QAction::triggered, [this, nickname] { | ||||
|         if (block_list.count(nickname)) { | ||||
|             block_list.erase(nickname); | ||||
|         } else { | ||||
|             QMessageBox::StandardButton result = QMessageBox::question( | ||||
|                 this, tr("Block Player"), | ||||
|                 tr("When you block a player, you will no longer receive chat messages from " | ||||
|                    "them.<br><br>Are you sure you would like to block %1?") | ||||
|                     .arg(QString::fromStdString(nickname)), | ||||
|                 QMessageBox::Yes | QMessageBox::No); | ||||
|             if (result == QMessageBox::Yes) | ||||
|                 block_list.emplace(nickname); | ||||
|         } | ||||
|     }); | ||||
|     std::string cur_nickname; | ||||
|     if (auto room = Network::GetRoomMember().lock()) { | ||||
|         cur_nickname = room->GetNickname(); | ||||
|     } | ||||
| 
 | ||||
|     if (has_mod_perms) { | ||||
|     if (nickname != cur_nickname) { // You can't block yourself
 | ||||
|         QAction* block_action = context_menu.addAction(tr("Block Player")); | ||||
| 
 | ||||
|         block_action->setCheckable(true); | ||||
|         block_action->setChecked(block_list.count(nickname) > 0); | ||||
| 
 | ||||
|         connect(block_action, &QAction::triggered, [this, nickname] { | ||||
|             if (block_list.count(nickname)) { | ||||
|                 block_list.erase(nickname); | ||||
|             } else { | ||||
|                 QMessageBox::StandardButton result = QMessageBox::question( | ||||
|                     this, tr("Block Player"), | ||||
|                     tr("When you block a player, you will no longer receive chat messages from " | ||||
|                        "them.<br><br>Are you sure you would like to block %1?") | ||||
|                         .arg(QString::fromStdString(nickname)), | ||||
|                     QMessageBox::Yes | QMessageBox::No); | ||||
|                 if (result == QMessageBox::Yes) | ||||
|                     block_list.emplace(nickname); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     if (has_mod_perms && nickname != cur_nickname) { // You can't kick or ban yourself
 | ||||
|         context_menu.addSeparator(); | ||||
| 
 | ||||
|         QAction* kick_action = context_menu.addAction(tr("Kick")); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue