Author: jpc                          Date: Tue Sep  6 23:06:14 2005 GMT
Module: SOURCES                       Tag: DEVEL
---- Log message:
- up to 0.10-test2

---- Files affected:
SOURCES:
   psi-adhoc_and_rc.patch (1.1 -> 1.1.2.1) , psi-empty_group-fix.patch (1.1 -> 
1.1.2.1) , psi-icon_buttons_big_return-mod.patch (1.1 -> 1.1.2.1) , 
psi-nicechats-mod.patch (1.2.2.7 -> 1.2.2.8) , psi-no_online_status-mod.patch 
(1.1.2.1 -> 1.1.2.2) , psi-roster-rich.patch (1.1.2.1 -> 1.1.2.2) , 
psi-settoggles-fix.patch (1.1 -> 1.1.2.1) , psi-status_history-add.patch 
(1.1.2.1 -> 1.1.2.2) , psi-status_indicator-add.patch (1.2.2.3 -> 1.2.2.4) 

---- Diffs:

================================================================
Index: SOURCES/psi-adhoc_and_rc.patch
diff -u SOURCES/psi-adhoc_and_rc.patch:1.1 
SOURCES/psi-adhoc_and_rc.patch:1.1.2.1
--- SOURCES/psi-adhoc_and_rc.patch:1.1  Sun Jan  2 20:22:17 2005
+++ SOURCES/psi-adhoc_and_rc.patch      Wed Sep  7 01:06:09 2005
@@ -1,7 +1,7 @@
 diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/adhoc.cpp psi.rc/psi/src/adhoc.cpp
 --- psi.clean/psi/src/adhoc.cpp        Thu Jan  1 01:00:00 1970
-+++ psi.rc/psi/src/adhoc.cpp   Tue Dec 28 23:07:13 2004
-@@ -0,0 +1,893 @@
++++ psi.rc/psi/src/adhoc.cpp   Sun Jan  2 20:10:54 2005
+@@ -0,0 +1,911 @@
 +/*
 + * adhoc.cpp - Client & Server implementation of JEP-50 (Ad-Hoc Commands)
 + * Copyright (C) 2005  Remko Troncon
@@ -135,6 +135,13 @@
 +      r.setStatus(Completed);
 +      return r;
 +}
++
++AHCommand AHCommand::completedReply(const AHCommand& c, const XData& d) 
++{
++      AHCommand r(c.node(), d, c.sessionId());
++      r.setStatus(Completed);
++      return r;
++}
 +      
 +//AHCommand AHCommand::errorReply(const AHCommand& c, const AHCError& error)
 +//{
@@ -513,7 +520,7 @@
 +              }
 +              else
 +                      // Execute the command & send back the response
-+                      server_task_->sendReply(c->execute(command), requester, 
id);
++                      server_task_->sendReply(c->execute(command, requester), 
requester, id);
 +      }
 +      else {
 +              
//server_task_->sendReply(AHCommand::errorReply(command,AHCError(AHCError::Forbidden)),
 requester, id);
@@ -652,6 +659,10 @@
 +                              AHCFormDlg *w = new 
AHCFormDlg(c,receiver_,account_);
 +                              w->show();
 +                      }
++                      else if (c.status() == AHCommand::Completed && 
i.childNodes().count() > 0) {
++                              AHCFormDlg *w = new 
AHCFormDlg(c,receiver_,account_, true);
++                              w->show();
++                      }
 +                      setSuccess();
 +                      return true;
 +              }
@@ -756,7 +767,7 @@
 +
 +// -------------------------------------------------------------------------- 
 +
-+AHCFormDlg::AHCFormDlg(const AHCommand& r, const Jid& receiver, PsiAccount* 
account) : receiver_(receiver), account_(account)
++AHCFormDlg::AHCFormDlg(const AHCommand& r, const Jid& receiver, PsiAccount* 
account, bool final) : receiver_(receiver), account_(account)
 +{
 +      // Save node
 +      node_ = r.node();
@@ -777,69 +788,76 @@
 +
 +      // Buttons
 +      QHBoxLayout *hb = new QHBoxLayout(vb);
-+      pb_prev = pb_next = 0;
-+      if (r.actions().empty()) {
-+              // Single stage dialog
-+              pb_complete = new QPushButton(tr("Finish"),this);
-+              connect(pb_complete,SIGNAL(clicked()),SLOT(doExecute()));
-+              hb->addWidget(pb_complete);
-+      }
-+      else {
-+              // Multi-stage dialog
-+
-+              // Previous
-+              pb_prev = new QPushButton(tr("Previous"),this);
-+              if (r.actions().contains(AHCommand::Prev)) {
-+                      if (r.defaultAction() == AHCommand::Prev) {
-+                              
connect(pb_prev,SIGNAL(clicked()),SLOT(doExecute()));
-+                              pb_prev->setDefault(true);
-+                              pb_prev->setFocus();
-+                      }
-+                      else
-+                              
connect(pb_prev,SIGNAL(clicked()),SLOT(doPrev()));
-+                      pb_prev->setEnabled(true);
++      pb_complete = pb_cancel = pb_prev = pb_next = 0;
++      if (!final) {
++              if (r.actions().empty()) {
++                      // Single stage dialog
++                      pb_complete = new QPushButton(tr("Finish"),this);
++                      
connect(pb_complete,SIGNAL(clicked()),SLOT(doExecute()));
++                      hb->addWidget(pb_complete);
 +              }
-+              else 
-+                      pb_prev->setEnabled(false);
-+              hb->addWidget(pb_prev);
++              else {
++                      // Multi-stage dialog
 +
-+              // Next
-+              pb_next = new QPushButton(tr("Next"),this);
-+              if (r.actions().contains(AHCommand::Next)) {
-+                      if (r.defaultAction() == AHCommand::Next) {
-+                              
connect(pb_next,SIGNAL(clicked()),SLOT(doExecute()));
-+                              pb_next->setDefault(true);
-+                              pb_next->setFocus();
++                      // Previous
++                      pb_prev = new QPushButton(tr("Previous"),this);
++                      if (r.actions().contains(AHCommand::Prev)) {
++                              if (r.defaultAction() == AHCommand::Prev) {
++                                      
connect(pb_prev,SIGNAL(clicked()),SLOT(doExecute()));
++                                      pb_prev->setDefault(true);
++                                      pb_prev->setFocus();
++                              }
++                              else
++                                      
connect(pb_prev,SIGNAL(clicked()),SLOT(doPrev()));
++                              pb_prev->setEnabled(true);
 +                      }
-+                      else
-+                              
connect(pb_next,SIGNAL(clicked()),SLOT(doNext()));
-+                      pb_next->setEnabled(true);
-+              }
-+              else {
-+                      pb_next->setEnabled(false);
-+              }
-+              hb->addWidget(pb_next);
-+              
-+              // Complete
-+              pb_complete = new QPushButton(tr("Finish"),this);
-+              if (r.actions().contains(AHCommand::Complete)) {
-+                      if (r.defaultAction() == AHCommand::Complete) {
-+                              
connect(pb_complete,SIGNAL(clicked()),SLOT(doExecute()));
-+                              pb_complete->setDefault(true);
-+                              pb_complete->setFocus();
++                      else 
++                              pb_prev->setEnabled(false);
++                      hb->addWidget(pb_prev);
++
++                      // Next
++                      pb_next = new QPushButton(tr("Next"),this);
++                      if (r.actions().contains(AHCommand::Next)) {
++                              if (r.defaultAction() == AHCommand::Next) {
++                                      
connect(pb_next,SIGNAL(clicked()),SLOT(doExecute()));
++                                      pb_next->setDefault(true);
++                                      pb_next->setFocus();
++                              }
++                              else
++                                      
connect(pb_next,SIGNAL(clicked()),SLOT(doNext()));
++                              pb_next->setEnabled(true);
 +                      }
-+                      else
-+                              
connect(pb_complete,SIGNAL(clicked()),SLOT(doComplete()));
-+                      pb_complete->setEnabled(true);
-+              }
-+              else {
-+                      pb_complete->setEnabled(false);
++                      else {
++                              pb_next->setEnabled(false);
++                      }
++                      hb->addWidget(pb_next);
++                      
++                      // Complete
++                      pb_complete = new QPushButton(tr("Finish"),this);
++                      if (r.actions().contains(AHCommand::Complete)) {
++                              if (r.defaultAction() == AHCommand::Complete) {
++                                      
connect(pb_complete,SIGNAL(clicked()),SLOT(doExecute()));
++                                      pb_complete->setDefault(true);
++                                      pb_complete->setFocus();
++                              }
++                              else
++                                      
connect(pb_complete,SIGNAL(clicked()),SLOT(doComplete()));
++                              pb_complete->setEnabled(true);
++                      }
++                      else {
++                              pb_complete->setEnabled(false);
++                      }
++                      hb->addWidget(pb_complete);
 +              }
++              pb_cancel = new QPushButton(tr("Cancel"), this);
++              connect(pb_cancel, SIGNAL(clicked()),SLOT(doCancel()));
++              hb->addWidget(pb_cancel);
++      }
++      else {
++              pb_complete = new QPushButton(tr("Ok"),this);
++              connect(pb_complete,SIGNAL(clicked()),SLOT(close()));
 +              hb->addWidget(pb_complete);
 +      }
-+      pb_cancel = new QPushButton(tr("Cancel"), this);
-+      connect(pb_cancel, SIGNAL(clicked()),SLOT(doCancel()));
-+      hb->addWidget(pb_cancel);
 +
 +      if (!r.data().title().isEmpty()) {
 +              setCaption(QString("%1 
(%2)").arg(r.data().title()).arg(receiver.full()));
@@ -897,8 +915,8 @@
 +#include "adhoc.moc"
 diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/adhoc.h psi.rc/psi/src/adhoc.h
 --- psi.clean/psi/src/adhoc.h  Thu Jan  1 01:00:00 1970
-+++ psi.rc/psi/src/adhoc.h     Tue Dec 28 23:06:24 2004
-@@ -0,0 +1,228 @@
++++ psi.rc/psi/src/adhoc.h     Sun Jan  2 20:09:22 2005
+@@ -0,0 +1,229 @@
 +/*
 + * adhoc.h - Client & Server implementation of JEP-50 (Ad-Hoc Commands)
 + * Copyright (C) 2005  Remko Troncon
@@ -996,6 +1014,7 @@
 +      static AHCommand formReply(const AHCommand&, const XData&, const 
QString& sessionId);
 +      static AHCommand canceledReply(const AHCommand&);
 +      static AHCommand completedReply(const AHCommand&);
++      static AHCommand completedReply(const AHCommand&, const XData&);
 +      //static AHCommand errorReply(const AHCommand&, const AHCError&);
 +      
 +protected:
@@ -1037,7 +1056,7 @@
 +      virtual QString name() const = 0; 
 +      virtual QString node() const = 0; 
 +      virtual bool isAllowed(const Jid&) const { return true; }
-+      virtual AHCommand execute(const AHCommand&) = 0;
++      virtual AHCommand execute(const AHCommand&, const Jid& requester) = 0;
 +      virtual void cancel(const AHCommand&) { }
 +
 +protected:
@@ -1105,7 +1124,7 @@
 +{
 +      Q_OBJECT
 +public:
-+      AHCFormDlg(const AHCommand& r, const Jid& receiver, PsiAccount* 
account);
++      AHCFormDlg(const AHCommand& r, const Jid& receiver, PsiAccount* 
account, bool final = false);
 +
 +protected:
 +      XData data() const;
@@ -1127,6 +1146,142 @@
 +};
 +
 +#endif
+diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/adhoc_fileserver.cpp psi.rc/psi/src/adhoc_fileserver.cpp
+--- psi.clean/psi/src/adhoc_fileserver.cpp     Thu Jan  1 01:00:00 1970
++++ psi.rc/psi/src/adhoc_fileserver.cpp        Sun Jan  2 20:11:22 2005
+@@ -0,0 +1,90 @@
++/*
++ * adhoc_fileserver.cpp - Implementation of a personal ad-hoc fileserver
++ * Copyright (C) 2005  Remko Troncon
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2
++ * of the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
++ *
++ */
++
++#include <qdir.h>
++#include <qfileinfo.h>
++
++#include "common.h"
++#include "psiaccount.h"
++#include "adhoc_fileserver.h"
++#include "xmpp_xdata.h"
++
++using namespace XMPP;
++
++bool AHFileServer::isAllowed(const Jid& j) const
++{
++      return manager()->account()->jid().compare(j,false);
++}
++
++AHCommand AHFileServer::execute(const AHCommand& c, const Jid& requester)
++{
++      // Extract the file
++      QString file;
++      if (c.hasData()) {
++              QString fileName, curDir;
++              XData::FieldList fl = c.data().fields();
++              for (unsigned int i=0; i < fl.count(); i++) {
++                      if (fl[i].var() == "file" && 
!(fl[i].value().isEmpty())) {
++                              file = fl[i].value().first();
++                      }
++              }
++      }
++      else {
++              file = QDir::currentDirPath();
++      }
++
++      if (QFileInfo(file).isDir()) {
++              // Return a form with a filelist
++              XData form;
++              form.setTitle(QObject::tr("Choose file"));
++              form.setInstructions(QObject::tr("Choose a file"));
++              form.setType(XData::Data_Form);
++              XData::FieldList fields;
++
++              XData::Field files_field;
++              files_field.setType(XData::Field::Field_ListSingle);
++              files_field.setVar("file");
++              files_field.setLabel(QObject::tr("File"));
++              files_field.setRequired(true);
++
++              XData::Field::OptionList file_options;
++      QDir d(file);
++              //d.setFilter(QDir::Files|QDir::Hidden|QDir::NoSymLinks);
++              QStringList l = d.entryList();
++              for (QStringList::Iterator it = l.begin(); it != l.end(); ++it 
) {
++                      XData::Field::Option file_option;
++                      QFileInfo fi(QDir(file).filePath(*it));
++                      file_option.label = *it + (fi.isDir() ? QString(" 
[DIR]") : QString(" (%1 bytes)").arg(QString::number(fi.size())));
++                      file_option.value = QDir(file).absFilePath(*it);
++                      file_options += file_option;
++              }
++              files_field.setOptions(file_options);
++              fields += files_field;
++              
++              form.setFields(fields);
++
++              return AHCommand::formReply(c, form);
++      }
++      else {
++              QStringList l(file);
++              manager()->account()->sendFiles(requester,l,true);
++              return AHCommand::completedReply(c);
++      }
++}
+diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/adhoc_fileserver.h psi.rc/psi/src/adhoc_fileserver.h
+--- psi.clean/psi/src/adhoc_fileserver.h       Thu Jan  1 01:00:00 1970
++++ psi.rc/psi/src/adhoc_fileserver.h  Sun Jan  2 20:11:51 2005
+@@ -0,0 +1,38 @@
++/*
++ * adhoc_fileserver.h - Implementation of a personal file server using ad-hoc 
++ *            commands
++ * Copyright (C) 2005  Remko Troncon
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2
++ * of the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
++ *
++ */
++
++#ifndef AHFILESERVER_H
++#define AHFILESERVER_H
++
++#include "adhoc.h"
++
++class AHFileServer : public AHCommandServer
++{
++public:
++      AHFileServer(AHCServerManager* m) : AHCommandServer(m) { }
++      virtual QString node() const 
++              { return QString("http://psi.affinix.com/commands/files";); }
++      virtual bool isAllowed(const Jid&) const;
++      virtual QString name() const { return QString("Send file"); }
++      virtual AHCommand execute(const AHCommand& c, const Jid&);
++};
++
++#endif
 diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/contactview.cpp psi.rc/psi/src/contactview.cpp
 --- psi.clean/psi/src/contactview.cpp  Fri Oct 29 19:00:38 2004
 +++ psi.rc/psi/src/contactview.cpp     Tue Dec 28 01:12:36 2004
@@ -1195,19 +1350,55 @@
        void actionDisco(const Jid &, const QString &);
        void actionInvite(const Jid &, const QString &);
        void actionAssignKey(const Jid &);
+diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/filetransdlg.cpp psi.rc/psi/src/filetransdlg.cpp
+--- psi.clean/psi/src/filetransdlg.cpp Sat Nov  6 11:48:40 2004
++++ psi.rc/psi/src/filetransdlg.cpp    Sun Jan  2 19:57:59 2005
+@@ -500,7 +500,7 @@
+ }
+ 
+ 
+-FileRequestDlg::FileRequestDlg(const Jid &jid, PsiCon *psi, PsiAccount *pa, 
const QStringList& files)
++FileRequestDlg::FileRequestDlg(const Jid &jid, PsiCon *psi, PsiAccount *pa, 
const QStringList& files, bool direct)
+ :FileTransUI(0, 0, false, psi_dialog_flags | WDestructiveClose)
+ {
+       d = new Private;
+@@ -567,6 +567,10 @@
+               lastPath = fi.dirPath();
+               le_fname->setText(QDir::convertSeparators(fi.filePath()));
+               lb_size->setText(tr("%1 byte(s)").arg(fi.size())); // TODO: 
large file support
++      }
++
++      if (direct) {
++              doStart();
+       }
+ }
+ 
+diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/filetransdlg.h psi.rc/psi/src/filetransdlg.h
+--- psi.clean/psi/src/filetransdlg.h   Wed Jun 30 13:51:30 2004
++++ psi.rc/psi/src/filetransdlg.h      Sun Jan  2 19:55:42 2005
+@@ -78,7 +78,7 @@
+       Q_OBJECT
+ public:
+       FileRequestDlg(const Jid &j, PsiCon *psi, PsiAccount *pa);
+-      FileRequestDlg(const Jid &j, PsiCon *psi, PsiAccount *pa, const 
QStringList& files);
++      FileRequestDlg(const Jid &j, PsiCon *psi, PsiAccount *pa, const 
QStringList& files, bool direct = false);
+       FileRequestDlg(const QDateTime &ts, FileTransfer *ft, PsiAccount *pa);
+       ~FileRequestDlg();
+ 
 diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/psiaccount.cpp psi.rc/psi/src/psiaccount.cpp
 --- psi.clean/psi/src/psiaccount.cpp   Wed Dec  8 15:42:39 2004
-+++ psi.rc/psi/src/psiaccount.cpp      Tue Dec 28 16:30:07 2004
-@@ -35,6 +35,8 @@
++++ psi.rc/psi/src/psiaccount.cpp      Sun Jan  2 20:24:08 2005
+@@ -35,6 +35,9 @@
  #include<qfileinfo.h>
  
  #include"psicon.h"
 +#include"adhoc.h"
 +#include"rc.h"
++#include"adhoc_fileserver.h"
  #include"profiles.h"
  #include"im.h"
  //#include"xmpp_client.h"
-@@ -300,6 +302,9 @@
+@@ -300,6 +303,9 @@
        BlockTransportPopupList *blockTransportPopupList;
        int userCounter;
  
@@ -1217,7 +1408,7 @@
        // Avatars
        //AvatarFactory* avatarFactory;
  
-@@ -459,11 +464,19 @@
+@@ -459,11 +465,25 @@
        connect(d->cp, SIGNAL(actionTest(const Jid &)),SLOT(actionTest(const 
Jid &)));
        connect(d->cp, SIGNAL(actionSendFile(const Jid 
&)),SLOT(actionSendFile(const Jid &)));
        connect(d->cp, SIGNAL(actionSendFiles(const Jid &, const 
QStringList&)),SLOT(actionSendFiles(const Jid &, const QStringList&)));
@@ -1233,16 +1424,58 @@
 +      new RCSetStatusServer(d->ahcManager);
 +      //new RCForwardServer(d->ahcManager);
 +      new RCSetOptionsServer(d->ahcManager, d->psi);
++      // !!!!!!!!!! WARNING !!!!!!!
++      // Uncommenting the following line is a *huge* security risk. Anyone who
++      // is able to impersonate you in the Jabber protocol (such as your 
server
++      // admin) can download _every_ file from your computer you have access 
to.
++      // Uncomment this only if you want to do some quick tests !
++      //new AHFileServer(d->ahcManager);
 +
        // restore cached roster
        for(Roster::ConstIterator it = acc.roster.begin(); it != 
acc.roster.end(); ++it)
                client_rosterItemUpdated(*it);
-@@ -2248,6 +2261,26 @@
-               FileRequestDlg *w = new FileRequestDlg(j2, d->psi, this, l);
+@@ -2220,13 +2240,7 @@
+       w->show();
+ }
+ 
+-void PsiAccount::actionSendFile(const Jid &j)
+-{
+-      QStringList l;
+-      actionSendFiles(j, l);
+-}
+-
+-void PsiAccount::actionSendFiles(const Jid &j, const QStringList& l)
++void PsiAccount::sendFiles(const Jid& j, const QStringList& l, bool direct)
+ {
+       Jid j2 = j;
+       if(j.resource().isEmpty()) {
+@@ -2240,14 +2254,45 @@
+       if (!l.isEmpty()) {
+               for (QStringList::ConstIterator f = l.begin(); f != l.end(); 
++f ) {
+                       QStringList fl(*f);
+-                      FileRequestDlg *w = new FileRequestDlg(j2, d->psi, 
this, fl);
++                      FileRequestDlg *w = new FileRequestDlg(j2, d->psi, 
this, fl, direct);
+                       w->show();
+               }
+       }
+       else {
+-              FileRequestDlg *w = new FileRequestDlg(j2, d->psi, this, l);
++              FileRequestDlg *w = new FileRequestDlg(j2, d->psi, this, l, 
direct);
                w->show();
        }
 +}
 +
++void PsiAccount::actionSendFile(const Jid &j)
++{
++      QStringList l;
++      sendFiles(j,l);
++}
++
++void PsiAccount::actionSendFiles(const Jid &j, const QStringList& l)
++{
++      sendFiles(j, l);
++}
++
 +void PsiAccount::actionExecuteCommand(const Jid& j)
 +{
 +      printf("Non-specific\n");
@@ -1266,8 +1499,16 @@
  void PsiAccount::actionDefault(const Jid &j)
 diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/psiaccount.h psi.rc/psi/src/psiaccount.h
 --- psi.clean/psi/src/psiaccount.h     Wed Aug 18 03:35:35 2004
-+++ psi.rc/psi/src/psiaccount.h        Tue Dec 28 00:58:26 2004
-@@ -263,6 +263,8 @@
++++ psi.rc/psi/src/psiaccount.h        Sun Jan  2 19:52:36 2005
+@@ -204,6 +204,7 @@
+       static void getErrorInfo(int err, AdvancedConnector *conn, Stream 
*stream, QCATLSHandler *tlsHandler, QString *_str, bool *_reconn);
+ 
+       void deleteQueueFile();
++      void sendFiles(const Jid&, const QStringList&, bool direct = false);
+ 
+ signals:
+       void disconnected();
+@@ -263,6 +264,8 @@
        void actionInvite(const Jid &, const QString &);
        void actionSendFile(const Jid &);
        void actionSendFiles(const Jid &, const QStringList&);
@@ -1278,7 +1519,7 @@
        void actionAssignKey(const Jid &);
 diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/rc.cpp psi.rc/psi/src/rc.cpp
 --- psi.clean/psi/src/rc.cpp   Thu Jan  1 01:00:00 1970
-+++ psi.rc/psi/src/rc.cpp      Tue Dec 28 23:05:51 2004
++++ psi.rc/psi/src/rc.cpp      Sun Jan  2 20:10:10 2005
 @@ -0,0 +1,220 @@
 +/*
 + * rc.cpp - Implementation of JEP-146 (Remote Controlling Clients)
@@ -1316,7 +1557,7 @@
 +      return manager()->account()->jid().compare(j,false);
 +}
 +
-+AHCommand RCSetStatusServer::execute(const AHCommand& c)
++AHCommand RCSetStatusServer::execute(const AHCommand& c, const Jid&)
 +{
 +      // Check if the session ID is correct
 +      //if (c.sessionId() != "") 
@@ -1325,7 +1566,7 @@
 +      if (!c.hasData()) {
 +              // Initial set status form
 +              XData form;
-+              form.setTitle(QObject::QObject::tr("Set Status"));
++              form.setTitle(QObject::tr("Set Status"));
 +              form.setInstructions(QObject::tr("Choose the status and status 
message"));
 +              form.setType(XData::Data_Form);
 +              XData::FieldList fields;
@@ -1425,7 +1666,7 @@
 +}
 +
 +
-+AHCommand RCSetOptionsServer::execute(const AHCommand& c)
++AHCommand RCSetOptionsServer::execute(const AHCommand& c, const Jid&)
 +{
 +      if (!c.hasData()) {
 +              // Initial set options form
@@ -1502,7 +1743,7 @@
 +}
 diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/rc.h psi.rc/psi/src/rc.h
 --- psi.clean/psi/src/rc.h     Thu Jan  1 01:00:00 1970
-+++ psi.rc/psi/src/rc.h        Tue Dec 28 19:59:35 2004
++++ psi.rc/psi/src/rc.h        Sun Jan  2 20:09:50 2005
 @@ -0,0 +1,69 @@
 +/*
 + * rc.h - Implementation of JEP-146 (Remote Controlling Clients)
@@ -1548,7 +1789,7 @@
 +      RCSetStatusServer(AHCServerManager* m) : RCCommandServer(m) { }
 +      virtual QString name() const { return "Set Status"; }
 +      virtual QString rcNode() const { return "set-status"; }
-+      virtual AHCommand execute(const AHCommand&);
++      virtual AHCommand execute(const AHCommand&, const Jid&);
 +};
 +
 +/*class RCForwardServer : public RCCommandServer
@@ -1566,35 +1807,36 @@
 +      RCSetOptionsServer(AHCServerManager* m, PsiCon* c) : 
RCCommandServer(m), psiCon_(c) { }
 +      virtual QString name() const { return "Set Options"; }
 +      virtual QString rcNode() const { return "set-options"; }
-+      virtual AHCommand execute(const AHCommand& c);
++      virtual AHCommand execute(const AHCommand& c, const Jid&);
 +
 +private:
 +      PsiCon* psiCon_;
 +};
 +
 +#endif
-diff -urN -x *.o -x CVS -x .gdb_history -x Makefile -x conf.log -x conf.pri -x 
extra.pri -x *.moc -x *.dylib -x moc_* -x disk -x *.dmg* -x .ui -x .moc -x 
*.out -x config.h -x Info.plist -x *.app -x .DS_Store -x .#* 
psi.clean/psi/src/src.pro psi.rc/psi/src/src.pro
---- psi.clean/psi/src/src.pro  Fri Dec 10 01:31:07 2004
-+++ psi.rc/psi/src/src.pro     Sat Dec 25 21:50:57 2004
-@@ -128,7 +128,9 @@
+--- psi-0.10-test2/src/src.pro.orig    2005-09-07 00:21:38.584676952 +0200
++++ xxx/psi-0.10-test2/src/src.pro     2005-09-07 00:22:57.554671688 +0200
+@@ -135,7 +135,10 @@
        $$PSI_CPP/actionlist.h \
        $$PSI_CPP/psiactionlist.h \
        $$PSI_CPP/xdata_widget.h \
 -      $$PSI_CPP/xmpp_xdata.h
 +      $$PSI_CPP/xmpp_xdata.h \
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    
http://cvs.pld-linux.org/SOURCES/psi-adhoc_and_rc.patch?r1=1.1&r2=1.1.2.1&f=u
    
http://cvs.pld-linux.org/SOURCES/psi-empty_group-fix.patch?r1=1.1&r2=1.1.2.1&f=u
    
http://cvs.pld-linux.org/SOURCES/psi-icon_buttons_big_return-mod.patch?r1=1.1&r2=1.1.2.1&f=u
    
http://cvs.pld-linux.org/SOURCES/psi-nicechats-mod.patch?r1=1.2.2.7&r2=1.2.2.8&f=u
    
http://cvs.pld-linux.org/SOURCES/psi-no_online_status-mod.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/SOURCES/psi-roster-rich.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/SOURCES/psi-settoggles-fix.patch?r1=1.1&r2=1.1.2.1&f=u
    
http://cvs.pld-linux.org/SOURCES/psi-status_history-add.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/SOURCES/psi-status_indicator-add.patch?r1=1.2.2.3&r2=1.2.2.4&f=u

_______________________________________________
pld-cvs-commit mailing list
pld-cvs-commit@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to