History

merge upstream master into "radians" project

Andrew Meadows committed 12 years ago

Commit 793a7602 parents aa8c2fc 19c60ce63 files · +4447 −444Browse files

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

Unified · Split

interface/src/Menu.cpp+50−13
@@ -26,6 +26,7 @@ · 25 unmodified lines
2626 #include <QWindow>
2727
2828 #include <AccountManager.h>
29+#include <XmppClient.h>
2930 #include <UUID.h>
3031
3132 #include "Application.h"
@@ -66,7 +67,7 @@ Menu::Menu() : · 34 unmodified lines
6667 _faceshiftEyeDeflection(DEFAULT_FACESHIFT_EYE_DEFLECTION),
6768 _frustumDrawMode(FRUSTUM_DRAW_MODE_ALL),
6869 _viewFrustumOffset(DEFAULT_FRUSTUM_OFFSET),
69− _voxelStatsDialog(NULL),
70+ _octreeStatsDialog(NULL),
7071 _lodToolsDialog(NULL),
7172 _maxVoxels(DEFAULT_MAX_VOXELS_PER_SYSTEM),
7273 _voxelSizeScale(DEFAULT_OCTREE_SIZE_SCALE),
@@ -162,6 +163,15 @@ Menu::Menu() : · 89 unmodified lines
162163 addActionToQMenuAndActionHash(toolsMenu, MenuOption::MetavoxelEditor, 0, this, SLOT(showMetavoxelEditor()));
163164 addActionToQMenuAndActionHash(toolsMenu, MenuOption::FstUploader, 0, Application::getInstance(), SLOT(uploadFST()));
164165
166+ _chatAction = addActionToQMenuAndActionHash(toolsMenu, MenuOption::Chat, 0, this, SLOT(showChat()));
167+#ifdef HAVE_QXMPP
168+ const QXmppClient& xmppClient = XmppClient::getInstance().getXMPPClient();
169+ toggleChat();
170+ connect(&xmppClient, SIGNAL(connected()), this, SLOT(toggleChat()));
171+ connect(&xmppClient, SIGNAL(disconnected()), this, SLOT(toggleChat()));
172+#else
173+ _chatAction->setEnabled(false);
174+#endif
165175
166176 QMenu* viewMenu = addMenu("View");
167177
@@ -213,7 +223,7 @@ Menu::Menu() : · 45 unmodified lines
213223 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Oscilloscope, 0, true);
214224 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Bandwidth, 0, true);
215225 addActionToQMenuAndActionHash(viewMenu, MenuOption::BandwidthDetails, 0, this, SLOT(bandwidthDetails()));
216− addActionToQMenuAndActionHash(viewMenu, MenuOption::VoxelStats, 0, this, SLOT(voxelStatsDetails()));
226+ addActionToQMenuAndActionHash(viewMenu, MenuOption::OctreeStats, 0, this, SLOT(octreeStatsDetails()));
217227
218228 QMenu* developerMenu = addMenu("Developer");
219229
@@ -341,7 +351,7 @@ Menu::Menu() : · 121 unmodified lines
341351
342352 Menu::~Menu() {
343353 bandwidthDetailsClosed();
344− voxelStatsDetailsClosed();
354+ octreeStatsDetailsClosed();
345355 }
346356
347357 void Menu::loadSettings(QSettings* settings) {
@@ -1021,6 +1031,33 @@ void Menu::showMetavoxelEditor() { · 673 unmodified lines
10211031 _MetavoxelEditor->raise();
10221032 }
10231033
1034+void Menu::showChat() {
1035+ if (!_chatWindow) {
1036+ _chatWindow = new ChatWindow();
1037+ QMainWindow* mainWindow = Application::getInstance()->getWindow();
1038+
1039+ // the height of the title bar is given by frameGeometry().height() - geometry().height()
1040+ // however, frameGeometry() is initialised after showing (Qt queries the OS windowing system)
1041+ // on the other hand, moving a window after showing it flickers; so just use some reasonable value
1042+ int titleBarHeight = 16;
1043+ _chatWindow->setGeometry(mainWindow->width() - _chatWindow->width(),
1044+ mainWindow->geometry().y() + titleBarHeight,
1045+ _chatWindow->width(),
1046+ mainWindow->height() - titleBarHeight);
1047+ _chatWindow->show();
1048+ }
1049+ _chatWindow->raise();
1050+}
1051+
1052+void Menu::toggleChat() {
1053+#ifdef HAVE_QXMPP
1054+ _chatAction->setEnabled(XmppClient::getInstance().getXMPPClient().isConnected());
1055+ if (!_chatAction->isEnabled() && _chatWindow) {
1056+ _chatWindow->close();
1057+ }
1058+#endif
1059+}
1060+
10241061 void Menu::audioMuteToggled() {
10251062 QAction *muteAction = _actionHash.value(MenuOption::MuteAudio);
10261063 muteAction->setChecked(Application::getInstance()->getAudio()->getMuted());
@@ -1033,20 +1070,20 @@ void Menu::bandwidthDetailsClosed() { · 6 unmodified lines
10331070 }
10341071 }
10351072
1036−void Menu::voxelStatsDetails() {
1037− if (!_voxelStatsDialog) {
1038− _voxelStatsDialog = new VoxelStatsDialog(Application::getInstance()->getGLWidget(),
1073+void Menu::octreeStatsDetails() {
1074+ if (!_octreeStatsDialog) {
1075+ _octreeStatsDialog = new OctreeStatsDialog(Application::getInstance()->getGLWidget(),
10391076 Application::getInstance()->getOcteeSceneStats());
1040− connect(_voxelStatsDialog, SIGNAL(closed()), SLOT(voxelStatsDetailsClosed()));
1041− _voxelStatsDialog->show();
1077+ connect(_octreeStatsDialog, SIGNAL(closed()), SLOT(octreeStatsDetailsClosed()));
1078+ _octreeStatsDialog->show();
10421079 }
1043− _voxelStatsDialog->raise();
1080+ _octreeStatsDialog->raise();
10441081 }
10451082
1046−void Menu::voxelStatsDetailsClosed() {
1047− if (_voxelStatsDialog) {
1048− delete _voxelStatsDialog;
1049− _voxelStatsDialog = NULL;
1083+void Menu::octreeStatsDetailsClosed() {
1084+ if (_octreeStatsDialog) {
1085+ delete _octreeStatsDialog;
1086+ _octreeStatsDialog = NULL;
10501087 }
10511088 }
10521089