summaryrefslogtreecommitdiffstats
path: root/libcommuni/src/model/ircuser.cpp
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2014-10-06 15:03:54 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2014-10-06 15:03:54 +0200
commit529f38bd8878b6b1bea2b5457031ce936aab8d80 (patch)
tree1193caefcad12f6a36f818048e4547e60add4398 /libcommuni/src/model/ircuser.cpp
parent3b58b5536935adff242928ed9f30e1c0262fbd7c (diff)
downloadmanager-529f38bd8878b6b1bea2b5457031ce936aab8d80.tar.gz
manager-529f38bd8878b6b1bea2b5457031ce936aab8d80.zip
addedd communi
Diffstat (limited to 'libcommuni/src/model/ircuser.cpp')
-rw-r--r--libcommuni/src/model/ircuser.cpp266
1 files changed, 266 insertions, 0 deletions
diff --git a/libcommuni/src/model/ircuser.cpp b/libcommuni/src/model/ircuser.cpp
new file mode 100644
index 0000000..d46e7a3
--- /dev/null
+++ b/libcommuni/src/model/ircuser.cpp
@@ -0,0 +1,266 @@
+/*
+ Copyright (C) 2008-2014 The Communi Project
+
+ You may use this file under the terms of BSD license as follows:
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "ircuser.h"
+#include "ircuser_p.h"
+#include <qdebug.h>
+
+IRC_BEGIN_NAMESPACE
+
+/*!
+ \file ircuser.h
+ \brief \#include &lt;IrcUser&gt;
+ */
+
+/*!
+ \class IrcUser ircuser.h <IrcUser>
+ \ingroup models
+ \brief Keeps track of user status on a channel.
+
+ \sa IrcUserModel
+*/
+
+#ifndef IRC_DOXYGEN
+void IrcUserPrivate::setName(const QString& n)
+{
+ Q_Q(IrcUser);
+ if (name != n) {
+ name = n;
+ emit q->nameChanged(name);
+ emit q->titleChanged(q->title());
+ }
+}
+
+void IrcUserPrivate::setPrefix(const QString& p)
+{
+ Q_Q(IrcUser);
+ if (prefix != p) {
+ prefix = p;
+ emit q->prefixChanged(prefix);
+ emit q->titleChanged(q->title());
+ }
+}
+
+void IrcUserPrivate::setMode(const QString& m)
+{
+ Q_Q(IrcUser);
+ if (mode != m) {
+ mode = m;
+ emit q->modeChanged(mode);
+ }
+}
+
+void IrcUserPrivate::setServOp(const bool& o)
+{
+ Q_Q(IrcUser);
+ if (servOp != o) {
+ servOp = o;
+ emit q->servOpChanged(servOp);
+ }
+}
+
+void IrcUserPrivate::setAway(const bool& a)
+{
+ Q_Q(IrcUser);
+ if (away != a) {
+ away = a;
+ emit q->awayChanged(away);
+ }
+}
+#endif // IRC_DOXYGEN
+
+/*!
+ Constructs a new user with \a parent.
+ */
+IrcUser::IrcUser(QObject* parent)
+ : QObject(parent), d_ptr(new IrcUserPrivate)
+{
+ Q_D(IrcUser);
+ d->q_ptr = this;
+ d->channel = 0;
+ d->away = false;
+ d->servOp = false;
+}
+
+/*!
+ Destructs the user object.
+ */
+IrcUser::~IrcUser()
+{
+}
+
+/*!
+ This property holds the title.
+
+ The title consists of \ref prefix and \ref name.
+
+ \par Access function:
+ \li QString <b>title</b>() const
+
+ \par Notifier signal:
+ \li void <b>titleChanged</b>(const QString& title)
+ */
+QString IrcUser::title() const
+{
+ Q_D(const IrcUser);
+ return d->prefix.left(1) + d->name;
+}
+
+/*!
+ This property holds the name.
+
+ \par Access function:
+ \li QString <b>name</b>() const
+
+ \par Notifier signal:
+ \li void <b>nameChanged</b>(const QString& name)
+ */
+QString IrcUser::name() const
+{
+ Q_D(const IrcUser);
+ return d->name;
+}
+
+/*!
+ This property holds the prefix character.
+
+ Typical prefix characters are \c @ (op) and \c + (voice).
+
+ \par Access function:
+ \li QString <b>prefix</b>() const
+
+ \par Notifier signal:
+ \li void <b>prefixChanged</b>(const QString& prefix)
+ */
+QString IrcUser::prefix() const
+{
+ Q_D(const IrcUser);
+ return d->prefix;
+}
+
+/*!
+ This property holds the mode letter.
+
+ Typical mode letters are \c o (op) and \c v (voice).
+
+ \par Access function:
+ \li QString <b>mode</b>() const
+
+ \par Notifier signal:
+ \li void <b>modeChanged</b>(const QString& mode)
+ */
+QString IrcUser::mode() const
+{
+ Q_D(const IrcUser);
+ return d->mode;
+}
+
+/*!
+ \since 3.1
+
+ \property bool IrcUser::servOp
+ This property holds whether the user is a server operator.
+
+ \note IRC servers do not send this information by default.
+ In order to fetch the information for all users on a channel,
+ issue a WHO command on the channel:
+ \code
+ IrcChannel* channel = user->channel();
+ IrcCommand* command = IrcCommand::createWho(channel->title());
+ channel->sendCommand(command);
+ \endcode
+
+ \par Access function:
+ \li bool <b>isServOp</b>() const
+
+ \par Notifier signal:
+ \li void <b>servOpChanged</b>(bool servOp)
+ */
+bool IrcUser::isServOp() const
+{
+ Q_D(const IrcUser);
+ return d->servOp;
+}
+
+/*!
+ \since 3.1
+
+ \property bool IrcUser::away
+ This property holds whether the user is marked as being away.
+
+ \note IRC servers do not send this information by default.
+ In order to fetch the information for all users on a channel,
+ issue a WHO command on the channel:
+ \code
+ IrcChannel* channel = user->channel();
+ IrcCommand* command = IrcCommand::createWho(channel->title());
+ channel->sendCommand(command);
+ \endcode
+
+ \par Access function:
+ \li bool <b>isAway</b>() const
+
+ \par Notifier signal:
+ \li void <b>awayChanged</b>(bool away)
+ */
+bool IrcUser::isAway() const
+{
+ Q_D(const IrcUser);
+ return d->away;
+}
+
+/*!
+ This property holds the channel of the user.
+
+ \par Access function:
+ \li \ref IrcChannel* <b>channel</b>() const
+ */
+IrcChannel* IrcUser::channel() const
+{
+ Q_D(const IrcUser);
+ return d->channel;
+}
+
+#ifndef QT_NO_DEBUG_STREAM
+QDebug operator<<(QDebug debug, const IrcUser* user)
+{
+ if (!user)
+ return debug << "IrcUser(0x0) ";
+ debug.nospace() << user->metaObject()->className() << '(' << (void*) user;
+ if (!user->objectName().isEmpty())
+ debug.nospace() << ", name=" << qPrintable(user->objectName());
+ if (!user->name().isEmpty())
+ debug.nospace() << ", user=" << qPrintable(user->name());
+ debug.nospace() << ')';
+ return debug.space();
+}
+#endif // QT_NO_DEBUG_STREAM
+
+#include "moc_ircuser.cpp"
+
+IRC_END_NAMESPACE