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