History

Merge remote-tracking branch 'upstream/master' into vive-ui

Brad Davis committed 10 years ago

Commit ca6e86e2 parents b7d1659 338557328 files · +288 −165Browse files

Showing the changes to interface/src/Application.cpp (1 of 28 files). Show all

Unified · Split

interface/src/Application.cpp+63−97
@@ -19,6 +19,7 @@ · 18 unmodified lines
1919 #include <glm/gtc/type_ptr.hpp>
2020
2121 #include <QtCore/QAbstractNativeEventFilter>
22+#include <QtCore/QCommandLineParser>
2223 #include <QtCore/QMimeData>
2324 #include <QtCore/QThreadPool>
2425
@@ -197,7 +198,6 @@ static const float PHYSICS_READY_RANGE = 3.0f; // how far from avatar to check f · 172 unmodified lines
197198
198199 static const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
199200
200−static const QString INPUT_DEVICE_MENU_PREFIX = "Device: ";
201201 Setting::Handle<int> maxOctreePacketsPerSecond("maxOctreePPS", DEFAULT_MAX_OCTREE_PPS);
202202
203203 const QHash<QString, Application::AcceptURLMethod> Application::_acceptedExtensions {
@@ -999,7 +999,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : · 795 unmodified lines
999999 RenderableWebEntityItem* webEntity = dynamic_cast<RenderableWebEntityItem*>(entity.get());
10001000 if (webEntity) {
10011001 webEntity->setProxyWindow(_window->windowHandle());
1002− if (Menu::getInstance()->isOptionChecked(INPUT_DEVICE_MENU_PREFIX + KeyboardMouseDevice::NAME)) {
1002+ if (_keyboardMouseDevice->isActive()) {
10031003 _keyboardMouseDevice->pluginFocusOutEvent();
10041004 }
10051005 _keyboardFocusedItem = entityItemID;
@@ -1152,9 +1152,7 @@ void Application::aboutToQuit() { · 146 unmodified lines
11521152 emit beforeAboutToQuit();
11531153
11541154 foreach(auto inputPlugin, PluginManager::getInstance()->getInputPlugins()) {
1155− QString name = INPUT_DEVICE_MENU_PREFIX + inputPlugin->getName();
1156− QAction* action = Menu::getInstance()->getActionForOption(name);
1157− if (action->isChecked()) {
1155+ if (inputPlugin->isActive()) {
11581156 inputPlugin->deactivate();
11591157 }
11601158 }
@@ -1476,7 +1474,6 @@ void Application::initializeUi() { · 315 unmodified lines
14761474 }
14771475 }
14781476 _window->setMenuBar(new Menu());
1479− updateInputModes();
14801477
14811478 auto compositorHelper = DependencyManager::get<CompositorHelper>();
14821479 connect(compositorHelper.data(), &CompositorHelper::allowMouseCaptureChanged, [=] {
@@ -2024,7 +2021,7 @@ void Application::keyPressEvent(QKeyEvent* event) { · 541 unmodified lines
20242021 }
20252022
20262023 if (hasFocus()) {
2027− if (Menu::getInstance()->isOptionChecked(INPUT_DEVICE_MENU_PREFIX + KeyboardMouseDevice::NAME)) {
2024+ if (_keyboardMouseDevice->isActive()) {
20282025 _keyboardMouseDevice->keyPressEvent(event);
20292026 }
20302027
@@ -2359,7 +2356,7 @@ void Application::keyReleaseEvent(QKeyEvent* event) { · 328 unmodified lines
23592356 return;
23602357 }
23612358
2362− if (Menu::getInstance()->isOptionChecked(INPUT_DEVICE_MENU_PREFIX + KeyboardMouseDevice::NAME)) {
2359+ if (_keyboardMouseDevice->isActive()) {
23632360 _keyboardMouseDevice->keyReleaseEvent(event);
23642361 }
23652362
@@ -2391,9 +2388,7 @@ void Application::keyReleaseEvent(QKeyEvent* event) { · 25 unmodified lines
23912388 void Application::focusOutEvent(QFocusEvent* event) {
23922389 auto inputPlugins = PluginManager::getInstance()->getInputPlugins();
23932390 foreach(auto inputPlugin, inputPlugins) {
2394− QString name = INPUT_DEVICE_MENU_PREFIX + inputPlugin->getName();
2395− QAction* action = Menu::getInstance()->getActionForOption(name);
2396− if (action && action->isChecked()) {
2391+ if (inputPlugin->isActive()) {
23972392 inputPlugin->pluginFocusOutEvent();
23982393 }
23992394 }
@@ -2478,7 +2473,7 @@ void Application::mouseMoveEvent(QMouseEvent* event) { · 78 unmodified lines
24782473 return;
24792474 }
24802475
2481− if (Menu::getInstance()->isOptionChecked(INPUT_DEVICE_MENU_PREFIX + KeyboardMouseDevice::NAME)) {
2476+ if (_keyboardMouseDevice->isActive()) {
24822477 _keyboardMouseDevice->mouseMoveEvent(event);
24832478 }
24842479
@@ -2515,7 +2510,7 @@ void Application::mousePressEvent(QMouseEvent* event) { · 30 unmodified lines
25152510
25162511
25172512 if (hasFocus()) {
2518− if (Menu::getInstance()->isOptionChecked(INPUT_DEVICE_MENU_PREFIX + KeyboardMouseDevice::NAME)) {
2513+ if (_keyboardMouseDevice->isActive()) {
25192514 _keyboardMouseDevice->mousePressEvent(event);
25202515 }
25212516
@@ -2560,7 +2555,7 @@ void Application::mouseReleaseEvent(QMouseEvent* event) { · 38 unmodified lines
25602555 }
25612556
25622557 if (hasFocus()) {
2563− if (Menu::getInstance()->isOptionChecked(INPUT_DEVICE_MENU_PREFIX + KeyboardMouseDevice::NAME)) {
2558+ if (_keyboardMouseDevice->isActive()) {
25642559 _keyboardMouseDevice->mouseReleaseEvent(event);
25652560 }
25662561
@@ -2587,7 +2582,7 @@ void Application::touchUpdateEvent(QTouchEvent* event) { · 20 unmodified lines
25872582 return;
25882583 }
25892584
2590− if (Menu::getInstance()->isOptionChecked(INPUT_DEVICE_MENU_PREFIX + KeyboardMouseDevice::NAME)) {
2585+ if (_keyboardMouseDevice->isActive()) {
25912586 _keyboardMouseDevice->touchUpdateEvent(event);
25922587 }
25932588 }
@@ -2605,7 +2600,7 @@ void Application::touchBeginEvent(QTouchEvent* event) { · 11 unmodified lines
26052600 return;
26062601 }
26072602
2608− if (Menu::getInstance()->isOptionChecked(INPUT_DEVICE_MENU_PREFIX + KeyboardMouseDevice::NAME)) {
2603+ if (_keyboardMouseDevice->isActive()) {
26092604 _keyboardMouseDevice->touchBeginEvent(event);
26102605 }
26112606
@@ -2622,7 +2617,7 @@ void Application::touchEndEvent(QTouchEvent* event) { · 10 unmodified lines
26222617 return;
26232618 }
26242619
2625− if (Menu::getInstance()->isOptionChecked(INPUT_DEVICE_MENU_PREFIX + KeyboardMouseDevice::NAME)) {
2620+ if (_keyboardMouseDevice->isActive()) {
26262621 _keyboardMouseDevice->touchEndEvent(event);
26272622 }
26282623
@@ -2638,7 +2633,7 @@ void Application::wheelEvent(QWheelEvent* event) const { · 9 unmodified lines
26382633 return;
26392634 }
26402635
2641− if (Menu::getInstance()->isOptionChecked(INPUT_DEVICE_MENU_PREFIX + KeyboardMouseDevice::NAME)) {
2636+ if (_keyboardMouseDevice->isActive()) {
26422637 _keyboardMouseDevice->wheelEvent(event);
26432638 }
26442639 }
@@ -2771,9 +2766,7 @@ void Application::idle(float nsecsElapsed) { · 126 unmodified lines
27712766 getActiveDisplayPlugin()->idle();
27722767 auto inputPlugins = PluginManager::getInstance()->getInputPlugins();
27732768 foreach(auto inputPlugin, inputPlugins) {
2774− QString name = INPUT_DEVICE_MENU_PREFIX + inputPlugin->getName();
2775− QAction* action = Menu::getInstance()->getActionForOption(name);
2776− if (action && action->isChecked()) {
2769+ if (inputPlugin->isActive()) {
27772770 inputPlugin->idle();
27782771 }
27792772 }
@@ -2957,6 +2950,27 @@ void Application::loadSettings() { · 177 unmodified lines
29572950 //DependencyManager::get<LODManager>()->setAutomaticLODAdjust(false);
29582951
29592952 Menu::getInstance()->loadSettings();
2953+
2954+ // If there is a preferred plugin, we probably messed it up with the menu settings, so fix it.
2955+ auto pluginManager = PluginManager::getInstance();
2956+ auto plugins = pluginManager->getPreferredDisplayPlugins();
2957+ for (auto plugin : plugins) {
2958+ auto menu = Menu::getInstance();
2959+ if (auto action = menu->getActionForOption(plugin->getName())) {
2960+ action->setChecked(true);
2961+ action->trigger();
2962+ // Find and activated highest priority plugin, bail for the rest
2963+ break;
2964+ }
2965+ }
2966+
2967+ auto inputs = pluginManager->getInputPlugins();
2968+ for (auto plugin : inputs) {
2969+ if (!plugin->isActive()) {
2970+ plugin->activate();
2971+ }
2972+ }
2973+
29602974 getMyAvatar()->loadData();
29612975
29622976 _settingsLoaded = true;
@@ -4937,7 +4951,34 @@ void Application::postLambdaEvent(std::function<void()> f) { · 1974 unmodified lines
49374951 }
49384952 }
49394953
4940−void Application::initPlugins() {
4954+void Application::initPlugins(const QStringList& arguments) {
4955+ QCommandLineOption display("display", "Preferred displays", "displays");
4956+ QCommandLineOption disableDisplays("disable-displays", "Displays to disable", "displays");
4957+ QCommandLineOption disableInputs("disable-inputs", "Inputs to disable", "inputs");
4958+
4959+ QCommandLineParser parser;
4960+ parser.addOption(display);
4961+ parser.addOption(disableDisplays);
4962+ parser.addOption(disableInputs);
4963+ parser.parse(arguments);
4964+
4965+ if (parser.isSet(display)) {
4966+ auto preferredDisplays = parser.value(display).split(',', QString::SkipEmptyParts);
4967+ qInfo() << "Setting prefered display plugins:" << preferredDisplays;
4968+ PluginManager::getInstance()->setPreferredDisplayPlugins(preferredDisplays);
4969+ }
4970+
4971+ if (parser.isSet(disableDisplays)) {
4972+ auto disabledDisplays = parser.value(disableDisplays).split(',', QString::SkipEmptyParts);
4973+ qInfo() << "Disabling following display plugins:" << disabledDisplays;
4974+ PluginManager::getInstance()->disableDisplays(disabledDisplays);
4975+ }
4976+
4977+ if (parser.isSet(disableInputs)) {
4978+ auto disabledInputs = parser.value(disableInputs).split(',', QString::SkipEmptyParts);
4979+ qInfo() << "Disabling following input plugins:" << disabledInputs;
4980+ PluginManager::getInstance()->disableInputs(disabledInputs);
4981+ }
49414982 }
49424983
49434984 void Application::shutdownPlugins() {
@@ -5207,81 +5248,6 @@ void Application::updateDisplayMode() { · 263 unmodified lines
52075248 Q_ASSERT_X(_displayPlugin, "Application::updateDisplayMode", "could not find an activated display plugin");
52085249 }
52095250
5210−static void addInputPluginToMenu(InputPluginPointer inputPlugin) {
5211− auto menu = Menu::getInstance();
5212− QString name = INPUT_DEVICE_MENU_PREFIX + inputPlugin->getName();
5213− Q_ASSERT(!menu->menuItemExists(MenuOption::InputMenu, name));
5214−
5215− static QActionGroup* inputPluginGroup = nullptr;
5216− if (!inputPluginGroup) {
5217− inputPluginGroup = new QActionGroup(menu);
5218− inputPluginGroup->setExclusive(false);
5219− }
5220−
5221− auto parent = menu->getMenu(MenuOption::InputMenu);
5222− auto action = menu->addCheckableActionToQMenuAndActionHash(parent,
5223− name, 0, true, qApp,
5224− SLOT(updateInputModes()));
5225−
5226− inputPluginGroup->addAction(action);
5227− Q_ASSERT(menu->menuItemExists(MenuOption::InputMenu, name));
5228−}
5229−
5230−
5231−void Application::updateInputModes() {
5232− auto menu = Menu::getInstance();
5233− auto inputPlugins = PluginManager::getInstance()->getInputPlugins();
5234− static std::once_flag once;
5235− std::call_once(once, [&] {
5236− foreach(auto inputPlugin, inputPlugins) {
5237− addInputPluginToMenu(inputPlugin);
5238− }
5239− });
5240− auto offscreenUi = DependencyManager::get<OffscreenUi>();
5241−
5242− InputPluginList newInputPlugins;
5243− InputPluginList removedInputPlugins;
5244− foreach(auto inputPlugin, inputPlugins) {
5245− QString name = INPUT_DEVICE_MENU_PREFIX + inputPlugin->getName();
5246− QAction* action = menu->getActionForOption(name);
5247−
5248− auto it = std::find(std::begin(_activeInputPlugins), std::end(_activeInputPlugins), inputPlugin);
5249− if (action->isChecked() && it == std::end(_activeInputPlugins)) {
5250− _activeInputPlugins.push_back(inputPlugin);
5251− newInputPlugins.push_back(inputPlugin);
5252− } else if (!action->isChecked() && it != std::end(_activeInputPlugins)) {
5253− _activeInputPlugins.erase(it);
5254− removedInputPlugins.push_back(inputPlugin);
5255− }
5256− }
5257−
5258− // A plugin was checked
5259− if (newInputPlugins.size() > 0) {
5260− foreach(auto newInputPlugin, newInputPlugins) {
5261− newInputPlugin->activate();
5262− //newInputPlugin->installEventFilter(qApp);
5263− //newInputPlugin->installEventFilter(offscreenUi.data());
5264− }
5265− }
5266− if (removedInputPlugins.size() > 0) { // A plugin was unchecked
5267− foreach(auto removedInputPlugin, removedInputPlugins) {
5268− removedInputPlugin->deactivate();
5269− //removedInputPlugin->removeEventFilter(qApp);
5270− //removedInputPlugin->removeEventFilter(offscreenUi.data());
5271− }
5272− }
5273−
5274− //if (newInputPlugins.size() > 0 || removedInputPlugins.size() > 0) {
5275− // if (!_currentInputPluginActions.isEmpty()) {
5276− // auto menu = Menu::getInstance();
5277− // foreach(auto itemInfo, _currentInputPluginActions) {
5278− // menu->removeMenuItem(itemInfo.first, itemInfo.second);
5279− // }
5280− // _currentInputPluginActions.clear();
5281− // }
5282− //}
5283−}
5284−
52855251 mat4 Application::getEyeProjection(int eye) const {
52865252 QMutexLocker viewLocker(&_viewMutex);
52875253 if (isHMDMode()) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t