Showing the changes to interface/src/Menu.cpp (1 of 3 files). Show all
Unified · Split
| @@ -37,18 +37,18 @@ Menu* Menu::_instance = NULL; · 36 unmodified lines | ||
| 37 | 37 | |
| 38 | 38 | Menu* Menu::getInstance() { |
| 39 | 39 | static QMutex menuInstanceMutex; |
| 40 | − | |
| 40 | + | |
| 41 | 41 | // lock the menu instance mutex to make sure we don't race and create two menus and crash |
| 42 | 42 | menuInstanceMutex.lock(); |
| 43 | − | |
| 43 | + | |
| 44 | 44 | if (!_instance) { |
| 45 | 45 | qDebug("First call to Menu::getInstance() - initing menu."); |
| 46 | − | |
| 46 | + | |
| 47 | 47 | _instance = new Menu(); |
| 48 | 48 | } |
| 49 | − | |
| 49 | + | |
| 50 | 50 | menuInstanceMutex.unlock(); |
| 51 | − | |
| 51 | + | |
| 52 | 52 | return _instance; |
| 53 | 53 | } |
| 54 | 54 | |
| @@ -72,9 +72,9 @@ Menu::Menu() : · 17 unmodified lines | ||
| 72 | 72 | _maxVoxelPacketsPerSecond(DEFAULT_MAX_VOXEL_PPS) |
| 73 | 73 | { |
| 74 | 74 | Application *appInstance = Application::getInstance(); |
| 75 | − | |
| 75 | + | |
| 76 | 76 | QMenu* fileMenu = addMenu("File"); |
| 77 | − | |
| 77 | + | |
| 78 | 78 | #ifdef Q_OS_MAC |
| 79 | 79 | addActionToQMenuAndActionHash(fileMenu, |
| 80 | 80 | MenuOption::AboutApp, |
| @@ -83,7 +83,7 @@ Menu::Menu() : · 2 unmodified lines | ||
| 83 | 83 | SLOT(aboutApp()), |
| 84 | 84 | QAction::AboutRole); |
| 85 | 85 | #endif |
| 86 | − | |
| 86 | + | |
| 87 | 87 | (addActionToQMenuAndActionHash(fileMenu, |
| 88 | 88 | MenuOption::Login, |
| 89 | 89 | 0, |
| @@ -97,7 +97,7 @@ Menu::Menu() : · 7 unmodified lines | ||
| 97 | 97 | addDisabledActionAndSeparator(fileMenu, "Voxels"); |
| 98 | 98 | addActionToQMenuAndActionHash(fileMenu, MenuOption::ExportVoxels, Qt::CTRL | Qt::Key_E, appInstance, SLOT(exportVoxels())); |
| 99 | 99 | addActionToQMenuAndActionHash(fileMenu, MenuOption::ImportVoxels, Qt::CTRL | Qt::Key_I, appInstance, SLOT(importVoxels())); |
| 100 | − | |
| 100 | + | |
| 101 | 101 | addDisabledActionAndSeparator(fileMenu, "Go"); |
| 102 | 102 | addActionToQMenuAndActionHash(fileMenu, |
| 103 | 103 | MenuOption::GoHome, |
| @@ -120,45 +120,45 @@ Menu::Menu() : · 16 unmodified lines | ||
| 120 | 120 | this, |
| 121 | 121 | SLOT(goToUser())); |
| 122 | 122 | |
| 123 | − | |
| 123 | + | |
| 124 | 124 | addDisabledActionAndSeparator(fileMenu, "Settings"); |
| 125 | 125 | addActionToQMenuAndActionHash(fileMenu, MenuOption::SettingsImport, 0, this, SLOT(importSettings())); |
| 126 | 126 | addActionToQMenuAndActionHash(fileMenu, MenuOption::SettingsExport, 0, this, SLOT(exportSettings())); |
| 127 | − | |
| 127 | + | |
| 128 | 128 | addDisabledActionAndSeparator(fileMenu, "Devices"); |
| 129 | 129 | addActionToQMenuAndActionHash(fileMenu, MenuOption::Pair, 0, PairingHandler::getInstance(), SLOT(sendPairRequest())); |
| 130 | 130 | addCheckableActionToQMenuAndActionHash(fileMenu, MenuOption::TransmitterDrive, 0, true); |
| 131 | − | |
| 131 | + | |
| 132 | 132 | addActionToQMenuAndActionHash(fileMenu, |
| 133 | 133 | MenuOption::Quit, |
| 134 | 134 | Qt::CTRL | Qt::Key_Q, |
| 135 | 135 | appInstance, |
| 136 | 136 | SLOT(quit()), |
| 137 | 137 | QAction::QuitRole); |
| 138 | − | |
| 139 | − | |
| 138 | + | |
| 139 | + | |
| 140 | 140 | QMenu* editMenu = addMenu("Edit"); |
| 141 | − | |
| 141 | + | |
| 142 | 142 | addActionToQMenuAndActionHash(editMenu, |
| 143 | 143 | MenuOption::Preferences, |
| 144 | 144 | Qt::CTRL | Qt::Key_Comma, |
| 145 | 145 | this, |
| 146 | 146 | SLOT(editPreferences()), |
| 147 | 147 | QAction::PreferencesRole); |
| 148 | − | |
| 148 | + | |
| 149 | 149 | addDisabledActionAndSeparator(editMenu, "Voxels"); |
| 150 | − | |
| 150 | + | |
| 151 | 151 | addActionToQMenuAndActionHash(editMenu, MenuOption::CutVoxels, Qt::CTRL | Qt::Key_X, appInstance, SLOT(cutVoxels())); |
| 152 | 152 | addActionToQMenuAndActionHash(editMenu, MenuOption::CopyVoxels, Qt::CTRL | Qt::Key_C, appInstance, SLOT(copyVoxels())); |
| 153 | 153 | addActionToQMenuAndActionHash(editMenu, MenuOption::PasteVoxels, Qt::CTRL | Qt::Key_V, appInstance, SLOT(pasteVoxels())); |
| 154 | 154 | addActionToQMenuAndActionHash(editMenu, MenuOption::NudgeVoxels, Qt::CTRL | Qt::Key_N, appInstance, SLOT(nudgeVoxels())); |
| 155 | − | |
| 155 | + | |
| 156 | 156 | #ifdef __APPLE__ |
| 157 | 157 | addActionToQMenuAndActionHash(editMenu, MenuOption::DeleteVoxels, Qt::Key_Backspace, appInstance, SLOT(deleteVoxels())); |
| 158 | 158 | #else |
| 159 | 159 | addActionToQMenuAndActionHash(editMenu, MenuOption::DeleteVoxels, Qt::Key_Delete, appInstance, SLOT(deleteVoxels())); |
| 160 | 160 | #endif |
| 161 | − | |
| 161 | + | |
| 162 | 162 | addDisabledActionAndSeparator(editMenu, "Physics"); |
| 163 | 163 | addCheckableActionToQMenuAndActionHash(editMenu, MenuOption::Gravity, Qt::SHIFT | Qt::Key_G, true); |
| 164 | 164 | addCheckableActionToQMenuAndActionHash(editMenu, |
| @@ -167,47 +167,47 @@ Menu::Menu() : · 2 unmodified lines | ||
| 167 | 167 | true, |
| 168 | 168 | appInstance->getAvatar(), |
| 169 | 169 | SLOT(setWantCollisionsOn(bool))); |
| 170 | − | |
| 170 | + | |
| 171 | 171 | QMenu* toolsMenu = addMenu("Tools"); |
| 172 | − | |
| 172 | + | |
| 173 | 173 | _voxelModeActionsGroup = new QActionGroup(this); |
| 174 | 174 | _voxelModeActionsGroup->setExclusive(false); |
| 175 | − | |
| 175 | + | |
| 176 | 176 | QAction* addVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelAddMode, Qt::Key_V); |
| 177 | 177 | _voxelModeActionsGroup->addAction(addVoxelMode); |
| 178 | − | |
| 178 | + | |
| 179 | 179 | QAction* deleteVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelDeleteMode, Qt::Key_R); |
| 180 | 180 | _voxelModeActionsGroup->addAction(deleteVoxelMode); |
| 181 | − | |
| 181 | + | |
| 182 | 182 | QAction* colorVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelColorMode, Qt::Key_B); |
| 183 | 183 | _voxelModeActionsGroup->addAction(colorVoxelMode); |
| 184 | − | |
| 184 | + | |
| 185 | 185 | QAction* selectVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelSelectMode, Qt::Key_O); |
| 186 | 186 | _voxelModeActionsGroup->addAction(selectVoxelMode); |
| 187 | − | |
| 187 | + | |
| 188 | 188 | QAction* getColorMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelGetColorMode, Qt::Key_G); |
| 189 | 189 | _voxelModeActionsGroup->addAction(getColorMode); |
| 190 | − | |
| 190 | + | |
| 191 | 191 | addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::ClickToFly); |
| 192 | − | |
| 193 | − | |
| 192 | + | |
| 193 | + | |
| 194 | 194 | // connect each of the voxel mode actions to the updateVoxelModeActionsSlot |
| 195 | 195 | foreach (QAction* action, _voxelModeActionsGroup->actions()) { |
| 196 | 196 | connect(action, SIGNAL(triggered()), this, SLOT(updateVoxelModeActions())); |
| 197 | 197 | } |
| 198 | − | |
| 198 | + | |
| 199 | 199 | QAction* voxelPaintColor = addActionToQMenuAndActionHash(toolsMenu, |
| 200 | 200 | MenuOption::VoxelPaintColor, |
| 201 | 201 | Qt::META | Qt::Key_C, |
| 202 | 202 | this, |
| 203 | 203 | SLOT(chooseVoxelPaintColor())); |
| 204 | − | |
| 204 | + | |
| 205 | 205 | Application::getInstance()->getSwatch()->setAction(voxelPaintColor); |
| 206 | − | |
| 206 | + | |
| 207 | 207 | QColor paintColor(128, 128, 128); |
| 208 | 208 | voxelPaintColor->setData(paintColor); |
| 209 | 209 | voxelPaintColor->setIcon(Swatch::createIcon(paintColor)); |
| 210 | − | |
| 210 | + | |
| 211 | 211 | addActionToQMenuAndActionHash(toolsMenu, |
| 212 | 212 | MenuOption::DecreaseVoxelSize, |
| 213 | 213 | QKeySequence::ZoomOut, |
| @@ -220,9 +220,9 @@ Menu::Menu() : · 6 unmodified lines | ||
| 220 | 220 | SLOT(increaseVoxelSize())); |
| 221 | 221 | addActionToQMenuAndActionHash(toolsMenu, MenuOption::ResetSwatchColors, 0, this, SLOT(resetSwatchColors())); |
| 222 | 222 | |
| 223 | − | |
| 223 | + | |
| 224 | 224 | QMenu* viewMenu = addMenu("View"); |
| 225 | − | |
| 225 | + | |
| 226 | 226 | addCheckableActionToQMenuAndActionHash(viewMenu, |
| 227 | 227 | MenuOption::Fullscreen, |
| 228 | 228 | Qt::CTRL | Qt::META | Qt::Key_F, |
| @@ -233,10 +233,10 @@ Menu::Menu() : · 4 unmodified lines | ||
| 233 | 233 | addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Mirror, Qt::SHIFT | Qt::Key_H); |
| 234 | 234 | addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FullscreenMirror, Qt::Key_H); |
| 235 | 235 | addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Enable3DTVMode, 0, false); |
| 236 | − | |
| 237 | − | |
| 236 | + | |
| 237 | + | |
| 238 | 238 | QMenu* avatarSizeMenu = viewMenu->addMenu("Avatar Size"); |
| 239 | − | |
| 239 | + | |
| 240 | 240 | addActionToQMenuAndActionHash(avatarSizeMenu, |
| 241 | 241 | MenuOption::IncreaseAvatarSize, |
| 242 | 242 | Qt::Key_Plus, |
| @@ -263,8 +263,8 @@ Menu::Menu() : · 20 unmodified lines | ||
| 263 | 263 | true); |
| 264 | 264 | addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::MoveWithLean, 0, false); |
| 265 | 265 | addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::HeadMouse, 0, false); |
| 266 | − | |
| 267 | − | |
| 266 | + | |
| 267 | + | |
| 268 | 268 | addDisabledActionAndSeparator(viewMenu, "Stats"); |
| 269 | 269 | addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Stats, Qt::Key_Slash); |
| 270 | 270 | addActionToQMenuAndActionHash(viewMenu, MenuOption::Log, Qt::CTRL | Qt::Key_L, appInstance, SLOT(toggleLogDialog())); |
| @@ -272,7 +272,7 @@ Menu::Menu() : · 1 unmodified line | ||
| 272 | 272 | addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Bandwidth, 0, true); |
| 273 | 273 | addActionToQMenuAndActionHash(viewMenu, MenuOption::BandwidthDetails, 0, this, SLOT(bandwidthDetails())); |
| 274 | 274 | addActionToQMenuAndActionHash(viewMenu, MenuOption::VoxelStats, 0, this, SLOT(voxelStatsDetails())); |
| 275 | − | |
| 275 | + | |
| 276 | 276 | QMenu* developerMenu = addMenu("Developer"); |
| 277 | 277 | |
| 278 | 278 | QMenu* renderOptionsMenu = developerMenu->addMenu("Rendering Options"); |
| @@ -284,11 +284,11 @@ Menu::Menu() : · 5 unmodified lines | ||
| 284 | 284 | 0, |
| 285 | 285 | appInstance->getGlowEffect(), |
| 286 | 286 | SLOT(cycleRenderMode())); |
| 287 | − | |
| 287 | + | |
| 288 | 288 | addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::ParticleCloud, 0, false); |
| 289 | 289 | addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, false); |
| 290 | 290 | addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Metavoxels, 0, false); |
| 291 | − | |
| 291 | + | |
| 292 | 292 | |
| 293 | 293 | QMenu* voxelOptionsMenu = developerMenu->addMenu("Voxel Options"); |
| 294 | 294 | |
| @@ -301,19 +301,20 @@ Menu::Menu() : · 6 unmodified lines | ||
| 301 | 301 | addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontRenderVoxels); |
| 302 | 302 | addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontCallOpenGLForVoxels); |
| 303 | 303 | |
| 304 | − _useVoxelShader = addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::UseVoxelShader, 0, | |
| 304 | + _useVoxelShader = addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::UseVoxelShader, 0, | |
| 305 | 305 | false, appInstance->getVoxels(), SLOT(setUseVoxelShader(bool))); |
| 306 | 306 | |
| 307 | − addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::VoxelsAsPoints, 0, | |
| 307 | + addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::VoxelsAsPoints, 0, | |
| 308 | 308 | false, appInstance->getVoxels(), SLOT(setVoxelsAsPoints(bool))); |
| 309 | 309 | |
| 310 | 310 | addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::VoxelTextures); |
| 311 | 311 | addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::AmbientOcclusion); |
| 312 | 312 | addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontFadeOnVoxelServerChanges); |
| 313 | 313 | addActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::LodTools, Qt::SHIFT | Qt::Key_L, this, SLOT(lodTools())); |
| 314 | + addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DisableLocalVoxelCache); | |
| 314 | 315 | |
| 315 | 316 | QMenu* voxelProtoOptionsMenu = voxelOptionsMenu->addMenu("Voxel Server Protocol Options"); |
| 316 | − | |
| 317 | + | |
| 317 | 318 | addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DisableColorVoxels); |
| 318 | 319 | addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DisableLowRes); |
| 319 | 320 | addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DisableDeltaSending); |
| @@ -322,16 +323,16 @@ Menu::Menu() : · 2 unmodified lines | ||
| 322 | 323 | addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DestructiveAddVoxel); |
| 323 | 324 | |
| 324 | 325 | QMenu* avatarOptionsMenu = developerMenu->addMenu("Avatar Options"); |
| 325 | − | |
| 326 | + | |
| 326 | 327 | addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::Avatars, 0, true); |
| 327 | 328 | addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::CollisionProxies); |
| 328 | − | |
| 329 | + | |
| 329 | 330 | addActionToQMenuAndActionHash(avatarOptionsMenu, |
| 330 | 331 | MenuOption::FaceMode, |
| 331 | 332 | 0, |
| 332 | 333 | &appInstance->getAvatar()->getHead().getVideoFace(), |
| 333 | 334 | SLOT(cycleRenderMode())); |
| 334 | − | |
| 335 | + | |
| 335 | 336 | addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::LookAtVectors, 0, true); |
| 336 | 337 | addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::LookAtIndicator, 0, true); |
| 337 | 338 | addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, |
| @@ -375,12 +376,12 @@ Menu::Menu() : · 37 unmodified lines | ||
| 375 | 376 | addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::SimulateLeapHand); |
| 376 | 377 | addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayLeapHands, 0, true); |
| 377 | 378 | addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::LeapDrive, 0, false); |
| 378 | − addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHandTargets, 0, false); | |
| 379 | + addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHandTargets, 0, false); | |
| 379 | 380 | addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::BallFromHand, 0, false); |
| 380 | 381 | addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::VoxelDrumming, 0, false); |
| 381 | 382 | addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::PlaySlaps, 0, false); |
| 382 | − | |
| 383 | − | |
| 383 | + | |
| 384 | + | |
| 384 | 385 | |
| 385 | 386 | QMenu* trackingOptionsMenu = developerMenu->addMenu("Tracking Options"); |
| 386 | 387 | addCheckableActionToQMenuAndActionHash(trackingOptionsMenu, |
| @@ -389,14 +390,14 @@ Menu::Menu() : · 2 unmodified lines | ||
| 389 | 390 | false, |
| 390 | 391 | appInstance->getWebcam(), |
| 391 | 392 | SLOT(setSkeletonTrackingOn(bool))); |
| 392 | − | |
| 393 | + | |
| 393 | 394 | addCheckableActionToQMenuAndActionHash(trackingOptionsMenu, |
| 394 | 395 | MenuOption::LEDTracking, |
| 395 | 396 | 0, |
| 396 | 397 | false, |
| 397 | 398 | appInstance->getWebcam()->getGrabber(), |
| 398 | 399 | SLOT(setLEDTrackingOn(bool))); |
| 399 | − | |
| 400 | + | |
| 400 | 401 | addDisabledActionAndSeparator(developerMenu, "Testing"); |
| 401 | 402 | |
| 402 | 403 | QMenu* timingMenu = developerMenu->addMenu("Timing and Statistics Tools"); |
| @@ -408,7 +409,7 @@ Menu::Menu() : · 5 unmodified lines | ||
| 408 | 409 | Qt::SHIFT | Qt::Key_S, |
| 409 | 410 | appInstance->getVoxels(), |
| 410 | 411 | SLOT(collectStatsForTreesAndVBOs())); |
| 411 | − | |
| 412 | + | |
| 412 | 413 | QMenu* frustumMenu = developerMenu->addMenu("View Frustum Debugging Tools"); |
| 413 | 414 | addCheckableActionToQMenuAndActionHash(frustumMenu, MenuOption::DisplayFrustum, Qt::SHIFT | Qt::Key_F); |
| 414 | 415 | addActionToQMenuAndActionHash(frustumMenu, |
| @@ -417,8 +418,8 @@ Menu::Menu() : · 2 unmodified lines | ||
| 417 | 418 | this, |
| 418 | 419 | SLOT(cycleFrustumRenderMode())); |
| 419 | 420 | updateFrustumRenderModeAction(); |
| 420 | − | |
| 421 | − | |
| 421 | + | |
| 422 | + | |
| 422 | 423 | QMenu* renderDebugMenu = developerMenu->addMenu("Render Debugging Tools"); |
| 423 | 424 | addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::PipelineWarnings, Qt::CTRL | Qt::SHIFT | Qt::Key_P); |
| 424 | 425 | addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::SuppressShortTimings, Qt::CTRL | Qt::SHIFT | Qt::Key_S); |
| @@ -431,48 +432,48 @@ Menu::Menu() : · 6 unmodified lines | ||
| 431 | 432 | Qt::CTRL | Qt::Key_A, |
| 432 | 433 | appInstance->getVoxels(), |
| 433 | 434 | SLOT(showAllLocalVoxels())); |
| 434 | − | |
| 435 | + | |
| 435 | 436 | addActionToQMenuAndActionHash(renderDebugMenu, |
| 436 | 437 | MenuOption::KillLocalVoxels, |
| 437 | 438 | Qt::CTRL | Qt::Key_K, |
| 438 | 439 | appInstance, SLOT(doKillLocalVoxels())); |
| 439 | − | |
| 440 | + | |
| 440 | 441 | addActionToQMenuAndActionHash(renderDebugMenu, |
| 441 | 442 | MenuOption::RandomizeVoxelColors, |
| 442 | 443 | Qt::CTRL | Qt::Key_R, |
| 443 | 444 | appInstance->getVoxels(), |
| 444 | 445 | SLOT(randomizeVoxelColors())); |
| 445 | − | |
| 446 | + | |
| 446 | 447 | addActionToQMenuAndActionHash(renderDebugMenu, |
| 447 | 448 | MenuOption::FalseColorRandomly, |
| 448 | 449 | 0, |
| 449 | 450 | appInstance->getVoxels(), |
| 450 | 451 | SLOT(falseColorizeRandom())); |
| 451 | − | |
| 452 | + | |
| 452 | 453 | addActionToQMenuAndActionHash(renderDebugMenu, |
| 453 | 454 | MenuOption::FalseColorEveryOtherVoxel, |
| 454 | 455 | 0, |
| 455 | 456 | appInstance->getVoxels(), |
| 456 | 457 | SLOT(falseColorizeRandomEveryOther())); |
| 457 | − | |
| 458 | + | |
| 458 | 459 | addActionToQMenuAndActionHash(renderDebugMenu, |
| 459 | 460 | MenuOption::FalseColorByDistance, |
| 460 | 461 | 0, |
| 461 | 462 | appInstance->getVoxels(), |
| 462 | 463 | SLOT(falseColorizeDistanceFromView())); |
| 463 | − | |
| 464 | + | |
| 464 | 465 | addActionToQMenuAndActionHash(renderDebugMenu, |
| 465 | 466 | MenuOption::FalseColorOutOfView, |
| 466 | 467 | 0, |
| 467 | 468 | appInstance->getVoxels(), |
| 468 | 469 | SLOT(falseColorizeInView())); |
| 469 | − | |
| 470 | + | |
| 470 | 471 | addActionToQMenuAndActionHash(renderDebugMenu, |
| 471 | 472 | MenuOption::FalseColorBySource, |
| 472 | 473 | 0, |
| 473 | 474 | appInstance->getVoxels(), |
| 474 | 475 | SLOT(falseColorizeBySource())); |
| 475 | − | |
| 476 | + | |
| 476 | 477 | addActionToQMenuAndActionHash(renderDebugMenu, |
| 477 | 478 | MenuOption::ShowTrueColors, |
| 478 | 479 | Qt::CTRL | Qt::Key_T, |
| @@ -485,32 +486,32 @@ Menu::Menu() : · 6 unmodified lines | ||
| 485 | 486 | 0, |
| 486 | 487 | appInstance->getVoxels(), |
| 487 | 488 | SLOT(falseColorizeOccluded())); |
| 488 | − | |
| 489 | + | |
| 489 | 490 | addActionToQMenuAndActionHash(renderDebugMenu, |
| 490 | 491 | MenuOption::FalseColorOccludedV2, |
| 491 | 492 | 0, |
| 492 | 493 | appInstance->getVoxels(), |
| 493 | 494 | SLOT(falseColorizeOccludedV2())); |
| 494 | − | |
| 495 | + | |
| 495 | 496 | addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::CoverageMap, Qt::SHIFT | Qt::CTRL | Qt::Key_O); |
| 496 | 497 | addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::CoverageMapV2, Qt::SHIFT | Qt::CTRL | Qt::Key_P); |
| 497 | − | |
| 498 | + | |
| 498 | 499 | QMenu* audioDebugMenu = developerMenu->addMenu("Audio Debugging Tools"); |
| 499 | 500 | addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoServerAudio); |
| 500 | 501 | addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoLocalAudio); |
| 501 | 502 | |
| 502 | − addActionToQMenuAndActionHash(developerMenu, MenuOption::PasteToVoxel, | |
| 503 | − Qt::CTRL | Qt::SHIFT | Qt::Key_V, | |
| 503 | + addActionToQMenuAndActionHash(developerMenu, MenuOption::PasteToVoxel, | |
| 504 | + Qt::CTRL | Qt::SHIFT | Qt::Key_V, | |
| 504 | 505 | this, |
| 505 | 506 | SLOT(pasteToVoxel())); |
| 506 | − | |
| 507 | − | |
| 507 | + | |
| 508 | + | |
| 508 | 509 | #ifndef Q_OS_MAC |
| 509 | 510 | QMenu* helpMenu = addMenu("Help"); |
| 510 | 511 | QAction* helpAction = helpMenu->addAction(MenuOption::AboutApp); |
| 511 | 512 | connect(helpAction, SIGNAL(triggered()), this, SLOT(aboutApp())); |
| 512 | 513 | #endif |
| 513 | − | |
| 514 | + | |
| 514 | 515 | } |
| 515 | 516 | |
| 516 | 517 | Menu::~Menu() { |
| @@ -522,7 +523,7 @@ void Menu::loadSettings(QSettings* settings) { · 5 unmodified lines | ||
| 522 | 523 | if (!settings) { |
| 523 | 524 | settings = Application::getInstance()->getSettings(); |
| 524 | 525 | } |
| 525 | − | |
| 526 | + | |
| 526 | 527 | _audioJitterBufferSamples = loadSetting(settings, "audioJitterBufferSamples", 0); |
| 527 | 528 | _fieldOfView = loadSetting(settings, "fieldOfView", DEFAULT_FIELD_OF_VIEW_DEGREES); |
| 528 | 529 | _faceshiftEyeDeflection = loadSetting(settings, "faceshiftEyeDeflection", DEFAULT_FACESHIFT_EYE_DEFLECTION); |
| @@ -530,7 +531,7 @@ void Menu::loadSettings(QSettings* settings) { · 1 unmodified line | ||
| 530 | 531 | _maxVoxelPacketsPerSecond = loadSetting(settings, "maxVoxelsPPS", DEFAULT_MAX_VOXEL_PPS); |
| 531 | 532 | _voxelSizeScale = loadSetting(settings, "voxelSizeScale", DEFAULT_OCTREE_SIZE_SCALE); |
| 532 | 533 | _boundaryLevelAdjust = loadSetting(settings, "boundaryLevelAdjust", 0); |
| 533 | − | |
| 534 | + | |
| 534 | 535 | settings->beginGroup("View Frustum Offset Camera"); |
| 535 | 536 | // in case settings is corrupt or missing loadSetting() will check for NaN |
| 536 | 537 | _viewFrustumOffset.yaw = loadSetting(settings, "viewFrustumOffsetYaw", 0.0f); |
| @@ -539,7 +540,7 @@ void Menu::loadSettings(QSettings* settings) { · 2 unmodified lines | ||
| 539 | 540 | _viewFrustumOffset.distance = loadSetting(settings, "viewFrustumOffsetDistance", 0.0f); |
| 540 | 541 | _viewFrustumOffset.up = loadSetting(settings, "viewFrustumOffsetUp", 0.0f); |
| 541 | 542 | settings->endGroup(); |
| 542 | − | |
| 543 | + | |
| 543 | 544 | scanMenuBar(&loadAction, settings); |
| 544 | 545 | Application::getInstance()->getAvatar()->loadData(settings); |
| 545 | 546 | Application::getInstance()->getSwatch()->loadData(settings); |
| @@ -552,7 +553,7 @@ void Menu::saveSettings(QSettings* settings) { · 6 unmodified lines | ||
| 552 | 553 | if (!settings) { |
| 553 | 554 | settings = Application::getInstance()->getSettings(); |
| 554 | 555 | } |
| 555 | − | |
| 556 | + | |
| 556 | 557 | settings->setValue("audioJitterBufferSamples", _audioJitterBufferSamples); |
| 557 | 558 | settings->setValue("fieldOfView", _fieldOfView); |
| 558 | 559 | settings->setValue("faceshiftEyeDeflection", _faceshiftEyeDeflection); |
| @@ -567,7 +568,7 @@ void Menu::saveSettings(QSettings* settings) { · 8 unmodified lines | ||
| 567 | 568 | settings->setValue("viewFrustumOffsetDistance", _viewFrustumOffset.distance); |
| 568 | 569 | settings->setValue("viewFrustumOffsetUp", _viewFrustumOffset.up); |
| 569 | 570 | settings->endGroup(); |
| 570 | − | |
| 571 | + | |
| 571 | 572 | scanMenuBar(&saveAction, settings); |
| 572 | 573 | Application::getInstance()->getAvatar()->saveData(settings); |
| 573 | 574 | Application::getInstance()->getSwatch()->saveData(settings); |
| @@ -612,7 +613,7 @@ void Menu::saveAction(QSettings* set, QAction* action) { · 38 unmodified lines | ||
| 612 | 613 | |
| 613 | 614 | void Menu::scanMenuBar(settingsAction modifySetting, QSettings* set) { |
| 614 | 615 | QList<QMenu*> menus = this->findChildren<QMenu *>(); |
| 615 | − | |
| 616 | + | |
| 616 | 617 | for (QList<QMenu *>::const_iterator it = menus.begin(); menus.end() != it; ++it) { |
| 617 | 618 | scanMenu(*it, modifySetting, set); |
| 618 | 619 | } |
| @@ -620,7 +621,7 @@ void Menu::scanMenuBar(settingsAction modifySetting, QSettings* set) { · 1 unmodified line | ||
| 620 | 621 | |
| 621 | 622 | void Menu::scanMenu(QMenu* menu, settingsAction modifySetting, QSettings* set) { |
| 622 | 623 | QList<QAction*> actions = menu->actions(); |
| 623 | − | |
| 624 | + | |
| 624 | 625 | set->beginGroup(menu->title()); |
| 625 | 626 | for (QList<QAction *>::const_iterator it = actions.begin(); actions.end() != it; ++it) { |
| 626 | 627 | if ((*it)->menu()) { |
| @@ -636,48 +637,48 @@ void Menu::scanMenu(QMenu* menu, settingsAction modifySetting, QSettings* set) { · 9 unmodified lines | ||
| 636 | 637 | void Menu::handleViewFrustumOffsetKeyModifier(int key) { |
| 637 | 638 | const float VIEW_FRUSTUM_OFFSET_DELTA = 0.5f; |
| 638 | 639 | const float VIEW_FRUSTUM_OFFSET_UP_DELTA = 0.05f; |
| 639 | − | |
| 640 | + | |
| 640 | 641 | switch (key) { |
| 641 | 642 | case Qt::Key_BracketLeft: |
| 642 | 643 | _viewFrustumOffset.yaw -= VIEW_FRUSTUM_OFFSET_DELTA; |
| 643 | 644 | break; |
| 644 | − | |
| 645 | + | |
| 645 | 646 | case Qt::Key_BracketRight: |
| 646 | 647 | _viewFrustumOffset.yaw += VIEW_FRUSTUM_OFFSET_DELTA; |
| 647 | 648 | break; |
| 648 | − | |
| 649 | + | |
| 649 | 650 | case Qt::Key_BraceLeft: |
| 650 | 651 | _viewFrustumOffset.pitch -= VIEW_FRUSTUM_OFFSET_DELTA; |
| 651 | 652 | break; |
| 652 | − | |
| 653 | + | |
| 653 | 654 | case Qt::Key_BraceRight: |
| 654 | 655 | _viewFrustumOffset.pitch += VIEW_FRUSTUM_OFFSET_DELTA; |
| 655 | 656 | break; |
| 656 | − | |
| 657 | + | |
| 657 | 658 | case Qt::Key_ParenLeft: |
| 658 | 659 | _viewFrustumOffset.roll -= VIEW_FRUSTUM_OFFSET_DELTA; |
| 659 | 660 | break; |
| 660 | − | |
| 661 | + | |
| 661 | 662 | case Qt::Key_ParenRight: |
| 662 | 663 | _viewFrustumOffset.roll += VIEW_FRUSTUM_OFFSET_DELTA; |
| 663 | 664 | break; |
| 664 | − | |
| 665 | + | |
| 665 | 666 | case Qt::Key_Less: |
| 666 | 667 | _viewFrustumOffset.distance -= VIEW_FRUSTUM_OFFSET_DELTA; |
| 667 | 668 | break; |
| 668 | − | |
| 669 | + | |
| 669 | 670 | case Qt::Key_Greater: |
| 670 | 671 | _viewFrustumOffset.distance += VIEW_FRUSTUM_OFFSET_DELTA; |
| 671 | 672 | break; |
| 672 | − | |
| 673 | + | |
| 673 | 674 | case Qt::Key_Comma: |
| 674 | 675 | _viewFrustumOffset.up -= VIEW_FRUSTUM_OFFSET_UP_DELTA; |
| 675 | 676 | break; |
| 676 | − | |
| 677 | + | |
| 677 | 678 | case Qt::Key_Period: |
| 678 | 679 | _viewFrustumOffset.up += VIEW_FRUSTUM_OFFSET_UP_DELTA; |
| 679 | 680 | break; |
| 680 | − | |
| 681 | + | |
| 681 | 682 | default: |
| 682 | 683 | break; |
| 683 | 684 | } |
| @@ -695,7 +696,7 @@ QAction* Menu::addActionToQMenuAndActionHash(QMenu* destinationMenu, · 11 unmodified lines | ||
| 695 | 696 | const char* member, |
| 696 | 697 | QAction::MenuRole role) { |
| 697 | 698 | QAction* action; |
| 698 | − | |
| 699 | + | |
| 699 | 700 | if (receiver && member) { |
| 700 | 701 | action = destinationMenu->addAction(actionName, receiver, member, shortcut); |
| 701 | 702 | } else { |
| @@ -703,9 +704,9 @@ QAction* Menu::addActionToQMenuAndActionHash(QMenu* destinationMenu, · 1 unmodified line | ||
| 703 | 704 | action->setShortcut(shortcut); |
| 704 | 705 | } |
| 705 | 706 | action->setMenuRole(role); |
| 706 | − | |
| 707 | + | |
| 707 | 708 | _actionHash.insert(actionName, action); |
| 708 | − | |
| 709 | + | |
| 709 | 710 | return action; |
| 710 | 711 | } |
| 711 | 712 | |
| @@ -718,7 +719,7 @@ QAction* Menu::addCheckableActionToQMenuAndActionHash(QMenu* destinationMenu, · 6 unmodified lines | ||
| 718 | 719 | QAction* action = addActionToQMenuAndActionHash(destinationMenu, actionName, shortcut, receiver, member); |
| 719 | 720 | action->setCheckable(true); |
| 720 | 721 | action->setChecked(checked); |
| 721 | − | |
| 722 | + | |
| 722 | 723 | return action; |
| 723 | 724 | } |
| 724 | 725 | |
| @@ -755,7 +756,7 @@ void Menu::aboutApp() { · 30 unmodified lines | ||
| 755 | 756 | void sendFakeEnterEvent() { |
| 756 | 757 | QPoint lastCursorPosition = QCursor::pos(); |
| 757 | 758 | QGLWidget* glWidget = Application::getInstance()->getGLWidget(); |
| 758 | − | |
| 759 | + | |
| 759 | 760 | QPoint windowPosition = glWidget->mapFromGlobal(lastCursorPosition); |
| 760 | 761 | QEnterEvent enterEvent = QEnterEvent(windowPosition, windowPosition, lastCursorPosition); |
| 761 | 762 | QCoreApplication::sendEvent(glWidget, &enterEvent); |
| @@ -772,62 +773,62 @@ void Menu::login() { · 10 unmodified lines | ||
| 772 | 773 | loginDialog.setTextValue(username); |
| 773 | 774 | loginDialog.setWindowFlags(Qt::Sheet); |
| 774 | 775 | loginDialog.resize(loginDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, loginDialog.size().height()); |
| 775 | − | |
| 776 | + | |
| 776 | 777 | int dialogReturn = loginDialog.exec(); |
| 777 | − | |
| 778 | + | |
| 778 | 779 | if (dialogReturn == QDialog::Accepted && !loginDialog.textValue().isEmpty() && loginDialog.textValue() != username) { |
| 779 | 780 | // there has been a username change |
| 780 | 781 | // ask for a profile reset with the new username |
| 781 | 782 | Application::getInstance()->resetProfile(loginDialog.textValue()); |
| 782 | − | |
| 783 | + | |
| 783 | 784 | } |
| 784 | − | |
| 785 | + | |
| 785 | 786 | sendFakeEnterEvent(); |
| 786 | 787 | } |
| 787 | 788 | |
| 788 | 789 | void Menu::editPreferences() { |
| 789 | 790 | Application* applicationInstance = Application::getInstance(); |
| 790 | − | |
| 791 | + | |
| 791 | 792 | QDialog dialog(applicationInstance->getWindow()); |
| 792 | 793 | dialog.setWindowTitle("Interface Preferences"); |
| 793 | 794 | QBoxLayout* layout = new QBoxLayout(QBoxLayout::TopToBottom); |
| 794 | 795 | dialog.setLayout(layout); |
| 795 | − | |
| 796 | + | |
| 796 | 797 | QFormLayout* form = new QFormLayout(); |
| 797 | 798 | layout->addLayout(form, 1); |
| 798 | − | |
| 799 | + | |
| 799 | 800 | QString faceURLString = applicationInstance->getProfile()->getFaceModelURL().toString(); |
| 800 | 801 | QLineEdit* faceURLEdit = new QLineEdit(faceURLString); |
| 801 | 802 | faceURLEdit->setMinimumWidth(QLINE_MINIMUM_WIDTH); |
| 802 | 803 | form->addRow("Face URL:", faceURLEdit); |
| 803 | − | |
| 804 | + | |
| 804 | 805 | QString skeletonURLString = applicationInstance->getProfile()->getSkeletonModelURL().toString(); |
| 805 | 806 | QLineEdit* skeletonURLEdit = new QLineEdit(skeletonURLString); |
| 806 | 807 | skeletonURLEdit->setMinimumWidth(QLINE_MINIMUM_WIDTH); |
| 807 | 808 | form->addRow("Skeleton URL:", skeletonURLEdit); |
| 808 | − | |
| 809 | + | |
| 809 | 810 | QSlider* pupilDilation = new QSlider(Qt::Horizontal); |
| 810 | 811 | pupilDilation->setValue(applicationInstance->getAvatar()->getHead().getPupilDilation() * pupilDilation->maximum()); |
| 811 | 812 | form->addRow("Pupil Dilation:", pupilDilation); |
| 812 | − | |
| 813 | + | |
| 813 | 814 | QSlider* faceshiftEyeDeflection = new QSlider(Qt::Horizontal); |
| 814 | 815 | faceshiftEyeDeflection->setValue(_faceshiftEyeDeflection * faceshiftEyeDeflection->maximum()); |
| 815 | 816 | form->addRow("Faceshift Eye Deflection:", faceshiftEyeDeflection); |
| 816 | − | |
| 817 | + | |
| 817 | 818 | QSpinBox* fieldOfView = new QSpinBox(); |
| 818 | 819 | fieldOfView->setMaximum(180); |
| 819 | 820 | fieldOfView->setMinimum(1); |
| 820 | 821 | fieldOfView->setValue(_fieldOfView); |
| 821 | 822 | form->addRow("Vertical Field of View (Degrees):", fieldOfView); |
| 822 | − | |
| 823 | + | |
| 823 | 824 | QDoubleSpinBox* leanScale = new QDoubleSpinBox(); |
| 824 | 825 | leanScale->setValue(applicationInstance->getAvatar()->getLeanScale()); |
| 825 | 826 | form->addRow("Lean Scale:", leanScale); |
| 826 | − | |
| 827 | + | |
| 827 | 828 | QDoubleSpinBox* avatarScale = new QDoubleSpinBox(); |
| 828 | 829 | avatarScale->setValue(applicationInstance->getAvatar()->getScale()); |
| 829 | 830 | form->addRow("Avatar Scale:", avatarScale); |
| 830 | − | |
| 831 | + | |
| 831 | 832 | QSpinBox* audioJitterBufferSamples = new QSpinBox(); |
| 832 | 833 | audioJitterBufferSamples->setMaximum(10000); |
| 833 | 834 | audioJitterBufferSamples->setMinimum(-10000); |
| @@ -853,93 +854,93 @@ void Menu::editPreferences() { · 19 unmodified lines | ||
| 853 | 854 | maxVoxelsPPS->setSingleStep(STEP_MAX_VOXELS_PPS); |
| 854 | 855 | maxVoxelsPPS->setValue(_maxVoxelPacketsPerSecond); |
| 855 | 856 | form->addRow("Maximum Voxels Packets Per Second:", maxVoxelsPPS); |
| 856 | − | |
| 857 | + | |
| 857 | 858 | QDialogButtonBox* buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); |
| 858 | 859 | dialog.connect(buttons, SIGNAL(accepted()), SLOT(accept())); |
| 859 | 860 | dialog.connect(buttons, SIGNAL(rejected()), SLOT(reject())); |
| 860 | 861 | layout->addWidget(buttons); |
| 861 | − | |
| 862 | + | |
| 862 | 863 | int ret = dialog.exec(); |
| 863 | 864 | if (ret == QDialog::Accepted) { |
| 864 | 865 | QUrl faceModelURL(faceURLEdit->text()); |
| 865 | − | |
| 866 | + | |
| 866 | 867 | if (faceModelURL.toString() != faceURLString) { |
| 867 | 868 | // change the faceModelURL in the profile, it will also update this user's BlendFace |
| 868 | 869 | applicationInstance->getProfile()->setFaceModelURL(faceModelURL); |
| 869 | − | |
| 870 | + | |
| 870 | 871 | // send the new face mesh URL to the data-server (if we have a client UUID) |
| 871 | 872 | DataServerClient::putValueForKey(DataServerKey::FaceMeshURL, |
| 872 | 873 | faceModelURL.toString().toLocal8Bit().constData()); |
| 873 | 874 | } |
| 874 | − | |
| 875 | + | |
| 875 | 876 | QUrl skeletonModelURL(skeletonURLEdit->text()); |
| 876 | − | |
| 877 | + | |
| 877 | 878 | if (skeletonModelURL.toString() != skeletonURLString) { |
| 878 | 879 | // change the skeletonModelURL in the profile, it will also update this user's Body |
| 879 | 880 | applicationInstance->getProfile()->setSkeletonModelURL(skeletonModelURL); |
| 880 | − | |
| 881 | + | |
| 881 | 882 | // send the new skeleton model URL to the data-server (if we have a client UUID) |
| 882 | 883 | DataServerClient::putValueForKey(DataServerKey::SkeletonURL, |
| 883 | 884 | skeletonModelURL.toString().toLocal8Bit().constData()); |
| 884 | 885 | } |
| 885 | − | |
| 886 | + | |
| 886 | 887 | applicationInstance->getAvatar()->getHead().setPupilDilation(pupilDilation->value() / (float)pupilDilation->maximum()); |
| 887 | − | |
| 888 | + | |
| 888 | 889 | _maxVoxels = maxVoxels->value(); |
| 889 | 890 | applicationInstance->getVoxels()->setMaxVoxels(_maxVoxels); |
| 890 | 891 | |
| 891 | 892 | _maxVoxelPacketsPerSecond = maxVoxelsPPS->value(); |
| 892 | − | |
| 893 | + | |
| 893 | 894 | applicationInstance->getAvatar()->setLeanScale(leanScale->value()); |
| 894 | 895 | applicationInstance->getAvatar()->setClampedTargetScale(avatarScale->value()); |
| 895 | − | |
| 896 | + | |
| 896 | 897 | _audioJitterBufferSamples = audioJitterBufferSamples->value(); |
| 897 | − | |
| 898 | + | |
| 898 | 899 | if (_audioJitterBufferSamples != 0) { |
| 899 | 900 | applicationInstance->getAudio()->setJitterBufferSamples(_audioJitterBufferSamples); |
| 900 | 901 | } |
| 901 | − | |
| 902 | + | |
| 902 | 903 | _fieldOfView = fieldOfView->value(); |
| 903 | 904 | applicationInstance->resizeGL(applicationInstance->getGLWidget()->width(), applicationInstance->getGLWidget()->height()); |
| 904 | − | |
| 905 | + | |
| 905 | 906 | _faceshiftEyeDeflection = faceshiftEyeDeflection->value() / (float)faceshiftEyeDeflection->maximum(); |
| 906 | 907 | } |
| 907 | − | |
| 908 | + | |
| 908 | 909 | sendFakeEnterEvent(); |
| 909 | 910 | } |
| 910 | 911 | |
| 911 | 912 | void Menu::goToDomain() { |
| 912 | − | |
| 913 | + | |
| 913 | 914 | QString currentDomainHostname = NodeList::getInstance()->getDomainHostname(); |
| 914 | − | |
| 915 | + | |
| 915 | 916 | if (NodeList::getInstance()->getDomainPort() != DEFAULT_DOMAIN_SERVER_PORT) { |
| 916 | 917 | // add the port to the currentDomainHostname string if it is custom |
| 917 | 918 | currentDomainHostname.append(QString(":%1").arg(NodeList::getInstance()->getDomainPort())); |
| 918 | 919 | } |
| 919 | − | |
| 920 | + | |
| 920 | 921 | QInputDialog domainDialog(Application::getInstance()->getWindow()); |
| 921 | 922 | domainDialog.setWindowTitle("Go to Domain"); |
| 922 | 923 | domainDialog.setLabelText("Domain server:"); |
| 923 | 924 | domainDialog.setTextValue(currentDomainHostname); |
| 924 | 925 | domainDialog.setWindowFlags(Qt::Sheet); |
| 925 | 926 | domainDialog.resize(domainDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, domainDialog.size().height()); |
| 926 | − | |
| 927 | + | |
| 927 | 928 | int dialogReturn = domainDialog.exec(); |
| 928 | 929 | if (dialogReturn == QDialog::Accepted) { |
| 929 | 930 | QString newHostname(DEFAULT_DOMAIN_HOSTNAME); |
| 930 | − | |
| 931 | + | |
| 931 | 932 | if (domainDialog.textValue().size() > 0) { |
| 932 | 933 | // the user input a new hostname, use that |
| 933 | 934 | newHostname = domainDialog.textValue(); |
| 934 | 935 | } |
| 935 | − | |
| 936 | + | |
| 936 | 937 | // send a node kill request, indicating to other clients that they should play the "disappeared" effect |
| 937 | 938 | NodeList::getInstance()->sendKillNode(&NODE_TYPE_AVATAR_MIXER, 1); |
| 938 | − | |
| 939 | + | |
| 939 | 940 | // give our nodeList the new domain-server hostname |
| 940 | 941 | NodeList::getInstance()->setDomainHostname(domainDialog.textValue()); |
| 941 | 942 | } |
| 942 | − | |
| 943 | + | |
| 943 | 944 | sendFakeEnterEvent(); |
| 944 | 945 | } |
| 945 | 946 | |
| @@ -948,8 +949,8 @@ void Menu::goToLocation() { · 2 unmodified lines | ||
| 948 | 949 | glm::vec3 avatarPos = myAvatar->getPosition(); |
| 949 | 950 | QString currentLocation = QString("%1, %2, %3").arg(QString::number(avatarPos.x), |
| 950 | 951 | QString::number(avatarPos.y), QString::number(avatarPos.z)); |
| 951 | − | |
| 952 | − | |
| 952 | + | |
| 953 | + | |
| 953 | 954 | QInputDialog coordinateDialog(Application::getInstance()->getWindow()); |
| 954 | 955 | coordinateDialog.setWindowTitle("Go to Location"); |
| 955 | 956 | coordinateDialog.setLabelText("Coordinate as x,y,z:"); |
| @@ -960,10 +961,10 @@ void Menu::goToLocation() { · 4 unmodified lines | ||
| 960 | 961 | int dialogReturn = coordinateDialog.exec(); |
| 961 | 962 | if (dialogReturn == QDialog::Accepted && !coordinateDialog.textValue().isEmpty()) { |
| 962 | 963 | QByteArray newCoordinates; |
| 963 | − | |
| 964 | + | |
| 964 | 965 | QString delimiterPattern(","); |
| 965 | 966 | QStringList coordinateItems = coordinateDialog.textValue().split(delimiterPattern); |
| 966 | − | |
| 967 | + | |
| 967 | 968 | const int NUMBER_OF_COORDINATE_ITEMS = 3; |
| 968 | 969 | const int X_ITEM = 0; |
| 969 | 970 | const int Y_ITEM = 1; |
| @@ -973,17 +974,17 @@ void Menu::goToLocation() { · 3 unmodified lines | ||
| 973 | 974 | double y = coordinateItems[Y_ITEM].toDouble(); |
| 974 | 975 | double z = coordinateItems[Z_ITEM].toDouble(); |
| 975 | 976 | glm::vec3 newAvatarPos(x, y, z); |
| 976 | − | |
| 977 | + | |
| 977 | 978 | if (newAvatarPos != avatarPos) { |
| 978 | 979 | // send a node kill request, indicating to other clients that they should play the "disappeared" effect |
| 979 | 980 | NodeList::getInstance()->sendKillNode(&NODE_TYPE_AVATAR_MIXER, 1); |
| 980 | − | |
| 981 | + | |
| 981 | 982 | qDebug("Going To Location: %f, %f, %f...", x, y, z); |
| 982 | − myAvatar->setPosition(newAvatarPos); | |
| 983 | + myAvatar->setPosition(newAvatarPos); | |
| 983 | 984 | } |
| 984 | 985 | } |
| 985 | 986 | } |
| 986 | − | |
| 987 | + | |
| 987 | 988 | sendFakeEnterEvent(); |
| 988 | 989 | } |
| 989 | 990 | |
| @@ -995,7 +996,7 @@ void Menu::goToUser() { · 5 unmodified lines | ||
| 995 | 996 | userDialog.setTextValue(username); |
| 996 | 997 | userDialog.setWindowFlags(Qt::Sheet); |
| 997 | 998 | userDialog.resize(userDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, userDialog.size().height()); |
| 998 | − | |
| 999 | + | |
| 999 | 1000 | int dialogReturn = userDialog.exec(); |
| 1000 | 1001 | if (dialogReturn == QDialog::Accepted && !userDialog.textValue().isEmpty()) { |
| 1001 | 1002 | // there's a username entered by the user, make a request to the data-server |
| @@ -1003,7 +1004,7 @@ void Menu::goToUser() { · 1 unmodified line | ||
| 1003 | 1004 | QStringList() << DataServerKey::Domain << DataServerKey::Position << DataServerKey::Orientation, |
| 1004 | 1005 | userDialog.textValue()); |
| 1005 | 1006 | } |
| 1006 | − | |
| 1007 | + | |
| 1007 | 1008 | sendFakeEnterEvent(); |
| 1008 | 1009 | } |
| 1009 | 1010 | |
| @@ -1014,15 +1015,15 @@ void Menu::pasteToVoxel() { · 4 unmodified lines | ||
| 1014 | 1015 | QString octalCode = ""; |
| 1015 | 1016 | pasteToOctalCodeDialog.setTextValue(octalCode); |
| 1016 | 1017 | pasteToOctalCodeDialog.setWindowFlags(Qt::Sheet); |
| 1017 | − pasteToOctalCodeDialog.resize(pasteToOctalCodeDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, | |
| 1018 | + pasteToOctalCodeDialog.resize(pasteToOctalCodeDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, | |
| 1018 | 1019 | pasteToOctalCodeDialog.size().height()); |
| 1019 | − | |
| 1020 | + | |
| 1020 | 1021 | int dialogReturn = pasteToOctalCodeDialog.exec(); |
| 1021 | 1022 | if (dialogReturn == QDialog::Accepted && !pasteToOctalCodeDialog.textValue().isEmpty()) { |
| 1022 | 1023 | // we got an octalCode to paste to... |
| 1023 | 1024 | QString locationToPaste = pasteToOctalCodeDialog.textValue(); |
| 1024 | 1025 | unsigned char* octalCodeDestination = hexStringToOctalCode(locationToPaste); |
| 1025 | − | |
| 1026 | + | |
| 1026 | 1027 | // check to see if it was a legit octcode... |
| 1027 | 1028 | if (locationToPaste == octalCodeToHexString(octalCodeDestination)) { |
| 1028 | 1029 | Application::getInstance()->pasteVoxelsToOctalCode(octalCodeDestination); |
| @@ -1030,7 +1031,7 @@ void Menu::pasteToVoxel() { · 1 unmodified line | ||
| 1030 | 1031 | qDebug() << "Problem with octcode..."; |
| 1031 | 1032 | } |
| 1032 | 1033 | } |
| 1033 | − | |
| 1034 | + | |
| 1034 | 1035 | sendFakeEnterEvent(); |
| 1035 | 1036 | } |
| 1036 | 1037 | |
| @@ -1039,7 +1040,7 @@ void Menu::bandwidthDetails() { · 2 unmodified lines | ||
| 1039 | 1040 | _bandwidthDialog = new BandwidthDialog(Application::getInstance()->getGLWidget(), |
| 1040 | 1041 | Application::getInstance()->getBandwidthMeter()); |
| 1041 | 1042 | connect(_bandwidthDialog, SIGNAL(closed()), SLOT(bandwidthDetailsClosed())); |
| 1042 | − | |
| 1043 | + | |
| 1043 | 1044 | _bandwidthDialog->show(); |
| 1044 | 1045 | } |
| 1045 | 1046 | _bandwidthDialog->raise(); |
| @@ -1112,7 +1113,7 @@ void Menu::updateVoxelModeActions() { · 66 unmodified lines | ||
| 1112 | 1113 | void Menu::chooseVoxelPaintColor() { |
| 1113 | 1114 | Application* appInstance = Application::getInstance(); |
| 1114 | 1115 | QAction* paintColor = _actionHash.value(MenuOption::VoxelPaintColor); |
| 1115 | − | |
| 1116 | + | |
| 1116 | 1117 | QColor selected = QColorDialog::getColor(paintColor->data().value<QColor>(), |
| 1117 | 1118 | appInstance->getGLWidget(), |
| 1118 | 1119 | "Voxel Paint Color"); |
| @@ -1120,7 +1121,7 @@ void Menu::chooseVoxelPaintColor() { · 1 unmodified line | ||
| 1120 | 1121 | paintColor->setData(selected); |
| 1121 | 1122 | paintColor->setIcon(Swatch::createIcon(selected)); |
| 1122 | 1123 | } |
| 1123 | − | |
| 1124 | + | |
| 1124 | 1125 | // restore the main window's active state |
| 1125 | 1126 | appInstance->getWindow()->activateWindow(); |
| 1126 | 1127 | } |