emit userModesSet(modes);
}
-void IrcUser::addUserMode(const QString &mode) {
- if(!_userModes.contains(mode)) {
- _userModes += mode;
- emit userModeAdded(mode);
+void IrcUser::addUserModes(const QString &modes) {
+ if(modes.isEmpty())
+ return;
+
+ for(int i = 0; i < modes.count(); i++) {
+ if(!_userModes.contains(modes[i]))
+ _userModes += modes[i];
}
+
+ emit userModesAdded(modes);
}
-void IrcUser::removeUserMode(const QString &mode) {
- if(_userModes.contains(mode)) {
- _userModes.remove(mode);
- emit userModeRemoved(mode);
+void IrcUser::removeUserModes(const QString &modes) {
+ if(modes.isEmpty())
+ return;
+
+ for(int i = 0; i < modes.count(); i++) {
+ _userModes.remove(modes[i]);
}
+ emit userModesRemoved(modes);
}
Q_PROPERTY(int lastAwayMessage READ lastAwayMessage WRITE setLastAwayMessage STORED false)
Q_PROPERTY(QStringList channels READ channels STORED false)
- // Q_PROPERTY(QStringList usermodes READ usermodes WRITE setUsermodes)
+ Q_PROPERTY(QString userModes READ userModes WRITE setUserModes)
public:
IrcUser(const QString &hostmask, Network *network);
void partChannel(IrcChannel *channel);
void partChannel(const QString &channelname);
- void addUserMode(const QString &mode);
- void removeUserMode(const QString &mode);
+ void addUserModes(const QString &modes);
+ void removeUserModes(const QString &modes);
signals:
void userSet(QString user);
// void channelJoined(QString channel);
void channelParted(QString channel);
- void userModeAdded(QString mode);
- void userModeRemoved(QString mode);
-
-// void setUsermodes(const QSet<QString> &usermodes);
-// QSet<QString> usermodes() const;
+ void userModesAdded(QString modes);
+ void userModesRemoved(QString modes);
private slots:
void updateObjectName();
QString networkName() const;
QString currentServer() const;
QString myNick() const;
+ inline IrcUser *me() const { return ircUser(myNick()); }
IdentityId identity() const;
QStringList nicks() const;
QStringList channels() const;
} else {
// pure User Modes
+ IrcUser *ircUser = network()->newIrcUser(params[0]);
+ QString modeString(serverDecode(params[1]));
+ QString addModes;
+ QString removeModes;
+ bool add = false;
+ for(int c = 0; c < modeString.count(); c++) {
+ if(modeString[c] == '+') {
+ add = true;
+ continue;
+ }
+ if(modeString[c] == '-') {
+ add = false;
+ continue;
+ }
+ if(add)
+ addModes += modeString[c];
+ else
+ removeModes += modeString[c];
+ }
+ if(!addModes.isEmpty())
+ ircUser->addUserModes(addModes);
+ if(!removeModes.isEmpty())
+ ircUser->removeUserModes(removeModes);
+
// FIXME: redirect
emit displayMsg(Message::Mode, BufferInfo::StatusBuffer, "", serverDecode(params).join(" "), prefix);
}
#include "inputwidget.h"
+#include "ircuser.h"
#include "client.h"
#include "networkmodel.h"
#include "jumpkeyhandler.h"
+
InputWidget::InputWidget(QWidget *parent)
: QWidget(parent),
validBuffer(false),
connect(this, SIGNAL(userInput(BufferInfo, QString)), Client::instance(), SIGNAL(sendInput(BufferInfo, QString)));
setFocusProxy(ui.inputEdit);
+ ui.ownNick->installEventFilter(new MouseWheelFilter(this));
ui.inputEdit->installEventFilter(new JumpKeyHandler(this));
}
return;
const Network *previousNet = Client::network(_networkId);
- if(previousNet)
+ if(previousNet) {
disconnect(previousNet, 0, this, 0);
+ if(previousNet->me())
+ disconnect(previousNet->me(), 0, this, 0);
+ }
if(network) {
_networkId = network->networkId();
- connect(network, SIGNAL(myNickSet(QString)),
- this, SLOT(updateNickSelector()));
- connect(network, SIGNAL(identitySet(IdentityId)),
- this, SLOT(setIdentity(IdentityId)));
+ connect(network, SIGNAL(identitySet(IdentityId)), this, SLOT(setIdentity(IdentityId)));
+ if(network->me()) {
+ connect(network->me(), SIGNAL(nickSet(QString)), this, SLOT(updateNickSelector()));
+ connect(network->me(), SIGNAL(userModesSet(QString)), this, SLOT(updateNickSelector()));
+ connect(network->me(), SIGNAL(userModesAdded(QString)), this, SLOT(updateNickSelector()));
+ connect(network->me(), SIGNAL(userModesRemoved(QString)), this, SLOT(updateNickSelector()));
+ }
}
setIdentity(network->identity());
}
nicks.prepend(net->myNick());
nickIdx = 0;
}
-
+
+ if(net->me() && nickIdx < nicks.count())
+ nicks[nickIdx] = net->myNick() + QString(" (%1)").arg(net->me()->userModes());
+
ui.ownNick->addItems(nicks);
ui.ownNick->setCurrentIndex(nickIdx);
}
void InputWidget::sendText(QString text) {
emit userInput(currentBufferInfo, text);
}
+
+
+// MOUSE WHEEL FILTER
+MouseWheelFilter::MouseWheelFilter(QObject *parent)
+ : QObject(parent)
+{
+}
+
+bool MouseWheelFilter::eventFilter(QObject *obj, QEvent *event) {
+ if(event->type() != QEvent::Wheel)
+ return QObject::eventFilter(obj, event);
+ else
+ return true;
+}
};
+
+class MouseWheelFilter : public QObject {
+ Q_OBJECT
+
+public:
+ MouseWheelFilter(QObject *parent = 0);
+ virtual bool eventFilter(QObject *obj, QEvent *event);
+};
+
#endif // INPUTWIDGET_H
{ using namespace Global;
quasselVersion = "0.2.0-alpha3-pre";
- quasselDate = "2008-03-10";
- quasselBuild = 624;
+ quasselDate = "2008-03-11";
+ quasselBuild = 628;
//! Minimum client build number the core needs
- clientBuildNeeded = 620;
+ clientBuildNeeded = 628;
clientVersionNeeded = quasselVersion;
//! Minimum core build number the client needs
- coreBuildNeeded = 620;
+ coreBuildNeeded = 628;
coreVersionNeeded = quasselVersion;
}