Fix the chat widget's visibility when not logged in

This commit is contained in:
Mohammed Nafees 2014-05-17 20:38:43 +05:30
parent 2c8efa05b7
commit b35134e325

View file

@ -34,6 +34,7 @@
#include <UUID.h> #include <UUID.h>
#include "Application.h" #include "Application.h"
#include "AccountManager.h"
#include "Menu.h" #include "Menu.h"
#include "scripting/MenuScriptingInterface.h" #include "scripting/MenuScriptingInterface.h"
#include "Util.h" #include "Util.h"
@ -193,10 +194,10 @@ Menu::Menu() :
QAction::PreferencesRole); QAction::PreferencesRole);
addActionToQMenuAndActionHash(editMenu, MenuOption::Attachments, 0, this, SLOT(editAttachments())); addActionToQMenuAndActionHash(editMenu, MenuOption::Attachments, 0, this, SLOT(editAttachments()));
addDisabledActionAndSeparator(editMenu, "Physics"); addDisabledActionAndSeparator(editMenu, "Physics");
QObject* avatar = appInstance->getAvatar(); QObject* avatar = appInstance->getAvatar();
addCheckableActionToQMenuAndActionHash(editMenu, MenuOption::ObeyEnvironmentalGravity, Qt::SHIFT | Qt::Key_G, false, addCheckableActionToQMenuAndActionHash(editMenu, MenuOption::ObeyEnvironmentalGravity, Qt::SHIFT | Qt::Key_G, false,
avatar, SLOT(updateMotionBehaviorsFromMenu())); avatar, SLOT(updateMotionBehaviorsFromMenu()));
@ -1013,24 +1014,24 @@ void Menu::multipleDestinationsDecision(const QJsonObject& userData, const QJson
void Menu::muteEnvironment() { void Menu::muteEnvironment() {
int headerSize = numBytesForPacketHeaderGivenPacketType(PacketTypeMuteEnvironment); int headerSize = numBytesForPacketHeaderGivenPacketType(PacketTypeMuteEnvironment);
int packetSize = headerSize + sizeof(glm::vec3) + sizeof(float); int packetSize = headerSize + sizeof(glm::vec3) + sizeof(float);
glm::vec3 position = Application::getInstance()->getAvatar()->getPosition(); glm::vec3 position = Application::getInstance()->getAvatar()->getPosition();
char* packet = (char*)malloc(packetSize); char* packet = (char*)malloc(packetSize);
populatePacketHeader(packet, PacketTypeMuteEnvironment); populatePacketHeader(packet, PacketTypeMuteEnvironment);
memcpy(packet + headerSize, &position, sizeof(glm::vec3)); memcpy(packet + headerSize, &position, sizeof(glm::vec3));
memcpy(packet + headerSize + sizeof(glm::vec3), &MUTE_RADIUS, sizeof(float)); memcpy(packet + headerSize + sizeof(glm::vec3), &MUTE_RADIUS, sizeof(float));
QByteArray mutePacket(packet, packetSize); QByteArray mutePacket(packet, packetSize);
// grab our audio mixer from the NodeList, if it exists // grab our audio mixer from the NodeList, if it exists
SharedNodePointer audioMixer = NodeList::getInstance()->soloNodeOfType(NodeType::AudioMixer); SharedNodePointer audioMixer = NodeList::getInstance()->soloNodeOfType(NodeType::AudioMixer);
if (audioMixer) { if (audioMixer) {
// send off this mute packet // send off this mute packet
NodeList::getInstance()->writeDatagram(mutePacket, audioMixer); NodeList::getInstance()->writeDatagram(mutePacket, audioMixer);
} }
free(packet); free(packet);
} }
@ -1188,19 +1189,22 @@ void Menu::showScriptEditor() {
} }
void Menu::showChat() { void Menu::showChat() {
QMainWindow* mainWindow = Application::getInstance()->getWindow(); if (AccountManager::getInstance().isLoggedIn()) {
if (!_chatWindow) { QMainWindow* mainWindow = Application::getInstance()->getWindow();
_chatWindow = new ChatWindow(mainWindow); if (!_chatWindow) {
} _chatWindow = new ChatWindow(mainWindow);
if (_chatWindow->isHidden()) { }
_chatWindow->show();
if (_chatWindow->isHidden()) {
_chatWindow->show();
}
} }
} }
void Menu::toggleChat() { void Menu::toggleChat() {
#ifdef HAVE_QXMPP #ifdef HAVE_QXMPP
_chatAction->setEnabled(XmppClient::getInstance().getXMPPClient().isConnected()); _chatAction->setEnabled(XmppClient::getInstance().getXMPPClient().isConnected());
if (!_chatAction->isEnabled() && _chatWindow) { if (!_chatAction->isEnabled() && _chatWindow && AccountManager::getInstance().isLoggedIn()) {
if (_chatWindow->isHidden()) { if (_chatWindow->isHidden()) {
_chatWindow->show(); _chatWindow->show();
} else { } else {