Changeset 414:873cd91b02be

Show
Ignore:
Timestamp:
06/21/2010 01:08:00 PM (20 months ago)
Author:
Sidgyck <sidgyck@…>
Branch:
default
Children:
415:c17256e1dc79, 418:db5fa97c4e4c
Message:

[NEW]: !muc seenjid[ex] <jid>

Location:
src/plugins/muc
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • src/plugins/muc/conference.cpp

    r400 r414  
    158158} 
    159159 
    160 QString Conference::seen(const QString&n, bool ext) 
    161 { 
    162         Nick* nick=myNicks.byName(n); 
    163 //      int cnt=0; 
     160QString Conference::seen(const QString& n, bool ext, bool byjid) 
     161{ 
     162        Nick *nick = (byjid) ? myNicks.byJid(n): myNicks.byName(n); 
    164163        if (nick) 
    165164        { 
    166                 return QString("\"%1\" is already in room (Joined %2 ago)").arg(n) 
     165                return QString("\"%1\" is already in room (Joined %2 ago)").arg(nick->nick()) 
    167166                        .arg(secsToString(nick->joined().secsTo(QDateTime::currentDateTime()))); 
    168167        } 
    169         QSqlQuery query=DataStorage::instance() 
    170                 ->prepareQuery("SELECT jid FROM conference_nicks WHERE conference_id=? AND nick=? ORDER BY lastaction DESC LIMIT 1"); 
    171         query.addBindValue(myId); 
    172         query.addBindValue(n); 
     168 
     169        QSqlQuery query; 
     170        if (byjid) 
     171        { 
     172                query=DataStorage::instance() 
     173                        ->prepareQuery("SELECT id from conference_jids WHERE conference_id=? AND jid=?"); 
     174                query.addBindValue(myId); 
     175                query.addBindValue(n); 
     176        } 
     177        else 
     178        { 
     179                query=DataStorage::instance() 
     180                        ->prepareQuery("SELECT jid FROM conference_nicks WHERE conference_id=? AND nick=? ORDER BY lastaction DESC LIMIT 1"); 
     181                query.addBindValue(myId); 
     182                query.addBindValue(n); 
     183        } 
     184 
    173185        if (query.exec() && query.next()) 
    174186        { 
     
    224236                        } 
    225237                        QString reply; 
    226                         if (newNick == n) 
     238                        if (!byjid && newNick == n) 
    227239                                reply = QString("%1 %2 %3 ago").arg(n, token, secs); 
    228240                        else 
     
    230242                        if (!reason.isEmpty()) 
    231243                                reply += QString(" (%1)").arg(reason); 
    232                         if (!version.isEmpty()) 
     244                        if (!version.isEmpty() && ext) 
    233245                                reply += QString(", Client: %1").arg(version); 
    234246                        return reply; 
  • src/plugins/muc/conference.h

    r400 r414  
    4141        AList* acommand() { return myCommand; }; 
    4242        QStringList* alistTraceList() { return alistTraceList_; } 
    43  
    44         QString seen(const QString& nick, bool ext = false); 
     43         
     44        QString seen(const QString& nick, bool ext = false, bool byjid = false); 
    4545        QString clientStat(); 
    4646        void setNick(const QString& name); 
  • src/plugins/muc/mucplugin.cpp

    r413 r414  
    3434{ 
    3535        commands << "WHEREAMI" << "NICK" << "IDLE" << "KNOWN" << "JOIN" << "LEAVE" 
    36                         << "KICK" << "VISITOR" << "PARTICIPANT" << "MODERATOR" << "BAN" 
    37                         << "BANJID" << "UNBAN" << "NONE" << "MEMBER" << "ADMIN" << "OWNER"; 
     36                 << "KICK" << "VISITOR" << "PARTICIPANT" << "MODERATOR" << "BAN" 
     37                 << "BANJID" << "UNBAN" << "NONE" << "MEMBER" << "ADMIN" << "OWNER"; 
    3838        commands << "ABAN" << "AKICK" << "AVISITOR" << "ACMD" << "AMODERATOR" << "APARTICIPANT" << "AFIND" 
    39                         << "ATRACE"  << "SEEN" << "SEENEX" << "CLIENTS" << "SETNICK" << "CHECKVCARD" << "ROLE" << "VERSION"; 
     39                 << "ATRACE"  << "SEEN" << "SEENEX" << "SEENJID" << "CLIENTS" << "SETNICK" << "CHECKVCARD" << "ROLE" << "VERSION"; 
    4040        commands << "HERE" << "STATUS" << "AGE" << "AGESTAT"; 
    4141 
     
    880880        } 
    881881 
    882         if (cmd=="SEEN" || cmd=="SEENEX") 
    883         { 
    884           if( arg.isEmpty() ) { 
    885             Nick *n = getNick(s); 
    886             if(!n) return true; 
    887             reply(s, conf->seen(n->nick(), "SEENEX" == cmd)); 
    888             return true; 
    889           } 
    890                 reply(s, conf->seen(arg, "SEENEX" == cmd)); 
     882        if (cmd=="SEEN" || cmd=="SEENEX" || cmd=="SEENJID" || cmd=="SEENJIDEX") 
     883        { 
     884                if (arg.isEmpty()) 
     885                { 
     886                        if (cmd.startsWith("SEENJID")) 
     887                        { 
     888                                reply(s, "!muc seenjid[ex] <jid>"); 
     889                                return true; 
     890                        } 
     891                        Nick *n = getNick(s); 
     892                        if (!n) 
     893                                return true; 
     894                        reply(s, conf->seen(n->nick(), cmd.endsWith("EX"), false)); 
     895                        return true; 
     896                } 
     897                reply(s, conf->seen(arg, cmd.endsWith("EX"), cmd.startsWith("SEENJID"))); 
    891898                return true; 
    892899        } 
  • src/plugins/muc/nicklist.cpp

    r400 r414  
    1111// 
    1212#include "nicklist.h" 
    13  
    1413#include <QtDebug> 
    1514 
     
    1716{ 
    1817} 
    19  
    2018 
    2119NickList::~NickList() 
     
    5856} 
    5957 
     58Nick* NickList::byJid(const QString& j) const 
     59{ 
     60        int cnt=count(); 
     61        Jid* jid; 
     62        for (int i = 0; i < cnt; i++) 
     63        { 
     64          jid = value(i)->jid(); 
     65          if (j.toLower() == jid->jid().toLower()) 
     66                return value(i); 
     67        } 
     68        return 0; 
     69} 
     70 
    6071void NickList::remove(Nick* nick) 
    6172{ 
  • src/plugins/muc/nicklist.h

    r400 r414  
    33 
    44#include "nick.h" 
    5  
     5#include "jid.h" 
    66#include <QList> 
    7  
    87/** 
    98        @author Dmitry Nezhevenko <dion@inhex.net> 
    109*/ 
     10class Jid; 
     11 
    1112class NickList: public QList<Nick*> 
    1213{ 
     
    1920        void remove(Nick* nick); 
    2021        Nick *byName(const QString&) const; 
     22        Nick *byJid(const QString&) const; 
    2123}; 
    2224