Skip to content
This repository has been archived by the owner on Dec 28, 2021. It is now read-only.

Commit

Permalink
api: Use a single signal for UI events
Browse files Browse the repository at this point in the history
This allows additional UI events to be added as sub signals instead
of taking up bits in the signal mask.
  • Loading branch information
flynd committed Dec 21, 2011
1 parent d1275f2 commit ab59e4c
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 27 deletions.
4 changes: 0 additions & 4 deletions licq/include/licq/daemon.h
Expand Up @@ -115,10 +115,6 @@ class Daemon : private boost::noncopyable
bool ignoreType(unsigned type) const { return (myIgnoreTypes & type); }
void setIgnoreType(unsigned type, bool ignore);

void pluginUIViewEvent(const UserId& userId);

void pluginUIMessage(const UserId& userId);

/**
* Get path for the base dir (e.g. /home/fred/.licq/)
*
Expand Down
11 changes: 8 additions & 3 deletions licq/include/licq/pluginsignal.h
Expand Up @@ -43,15 +43,14 @@ class PluginSignal
SignalLogon = 1<<2, // Owner logged on, userId is owner
SignalLogoff = 1<<3, // Owner logged off, userId is owner
SignalOnEvent = 1<<4, // ?
SignalUiViewEvent = 1<<5, // UI should popup oldest unread event for userId (if set)
SignalUiMessage = 1<<6, // UI should open message dialog for userId
SignalAddedToServer = 1<<7, // userId has been successfully added to server list
SignalNewProtocol = 1<<8, // A new protocol plugin has been loaded, subtype is protocolId
SignalConversation = 1<<9, // Conversation signal
SignalVerifyImage = 1<<17, // A registration verification image is available as basedir/verify.jpg
SignalNewOwner = 1<<18, // Registration complete, userId is new owner
SignalPluginEvent = 1<<19, // Event to perform in a plugin, subtype specifies event

SignalAll = 0x000603ff, // Mask for all known signals
SignalAll = 0x000e039f, // Mask for all known signals
};

enum ListSubSignal
Expand Down Expand Up @@ -95,6 +94,12 @@ class PluginSignal
ConvoLeave = 3, // userId left conversation
};

enum PluginSubSignal
{
PluginViewEvent = 1, // UI should popup oldest unread event for userId (if set)
PluginStartMessage = 2, // UI should open message dialog for userId
};

/**
* Constructor
*
Expand Down
11 changes: 0 additions & 11 deletions licq/src/daemon.cpp
Expand Up @@ -57,7 +57,6 @@
using namespace std;
using namespace LicqDaemon;
using Licq::gLog;
using Licq::PluginSignal;
using Licq::User;
using Licq::UserId;

Expand Down Expand Up @@ -435,16 +434,6 @@ void Licq::Daemon::cancelEvent(Licq::Event* event)
gIcqProtocol.CancelEvent(event);
}

void Licq::Daemon::pluginUIViewEvent(const Licq::UserId& userId)
{
gPluginManager.pushPluginSignal(new PluginSignal(PluginSignal::SignalUiViewEvent, 0, userId));
}

void Licq::Daemon::pluginUIMessage(const Licq::UserId& userId)
{
gPluginManager.pushPluginSignal(new PluginSignal(PluginSignal::SignalUiMessage, 0, userId));
}

void Daemon::shutdownPlugins()
{
licq->ShutdownPlugins();
Expand Down
9 changes: 7 additions & 2 deletions licq/src/fifo.cpp
Expand Up @@ -53,6 +53,7 @@
#include "licq.h"

using std::string;
using Licq::PluginSignal;
using Licq::UserId;
using Licq::gDaemon;
using Licq::gLog;
Expand Down Expand Up @@ -647,7 +648,8 @@ static int fifo_ui_viewevent(int argc, const char* const* argv)
return 0;
}

gDaemon.pluginUIViewEvent(UserId(szId, nPPID));
gPluginManager.pushPluginSignal(new PluginSignal(PluginSignal::SignalPluginEvent,
PluginSignal::PluginViewEvent, UserId(szId, nPPID)));

if (szId != NULL)
free(szId);
Expand All @@ -668,7 +670,10 @@ static int fifo_ui_message(int argc, const char* const* argv)
nRet = -1;
}
else if (atoid(argv[1], true, &szId, &nPPID))
gDaemon.pluginUIMessage(UserId(szId, nPPID));
{
gPluginManager.pushPluginSignal(new PluginSignal(PluginSignal::SignalPluginEvent,
PluginSignal::PluginStartMessage, UserId(szId, nPPID)));
}
else
{
ReportBadBuddy(argv[0],argv[1]);
Expand Down
19 changes: 12 additions & 7 deletions qt4-gui/src/core/signalmanager.cpp
Expand Up @@ -100,15 +100,20 @@ void SignalManager::ProcessSignal(Licq::PluginSignal* sig)
emit logoff();
break;

case Licq::PluginSignal::SignalUiViewEvent:
emit ui_viewevent(userId);
break;
case Licq::PluginSignal::SignalPluginEvent:
{
switch (sig->subSignal())
{
case Licq::PluginSignal::PluginViewEvent:
emit ui_viewevent(userId);
break;

case Licq::PluginSignal::SignalUiMessage:
//TODO
emit ui_message(userId);
case Licq::PluginSignal::PluginStartMessage:
emit ui_message(userId);
break;
}
break;

}
case Licq::PluginSignal::SignalAddedToServer:
//TODO
gProtocolManager.updateUserAlias(userId);
Expand Down

0 comments on commit ab59e4c

Please sign in to comment.