Index: plugins/qt-gui/src/filedlg.cpp
===================================================================
RCS file: /tmp/licq/qt-gui/src/filedlg.cpp,v
retrieving revision 1.58
diff -u -d -p -r1.58 filedlg.cpp
--- plugins/qt-gui/src/filedlg.cpp	2 Jul 2003 04:41:02 -0000	1.58
+++ plugins/qt-gui/src/filedlg.cpp	24 Aug 2003 15:18:45 -0000
@@ -44,7 +44,7 @@
 #include "mledit.h"
 #include "licq_icqd.h"
 #include "usercodec.h"
-
+#include "mainwin.h"
 
 //-----Constructor------------------------------------------------------------
 CFileDlg::CFileDlg(const char *szId, unsigned long nPPID, CICQDaemon *daemon,
@@ -321,18 +321,37 @@ void CFileDlg::slot_update()
 }
 
 
+static bool isAutoAcceptUser(const char *szId, unsigned long nPPID)
+{ bool bRet;
+
+  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R);
+  bRet = u->AutoFileAccept();
+  gUserManager.DropUser(u);
 
+  return bRet;
+}
 
 //-----ReceiveFiles----------------------------------------------------------
 bool CFileDlg::ReceiveFiles()
 {
-  // Get the local directory to save to
   QString d;
+  bool bAutoAccept=false;
+
+  bAutoAccept = (gMainWindow->m_bAlwaysFileLocation ||
+		 isAutoAcceptUser(m_szId, m_nPPID)) && 
+                !gMainWindow->m_FileLocation.isEmpty() && 
+                access(gMainWindow->m_FileLocation.ascii(),W_OK)==0; 
+
+  if( bAutoAccept )
+    d = gMainWindow->m_FileLocation;
+  else
+  {
 #ifdef USE_KDE
-  d = KFileDialog::getExistingDirectory(QString(QDir::homeDirPath()), this);
+    d = KFileDialog::getExistingDirectory(QString(QDir::homeDirPath()), this);
 #else
-  d = QFileDialog::getExistingDirectory(QString(QDir::homeDirPath()), this);
+    d = QFileDialog::getExistingDirectory(QString(QDir::homeDirPath()), this);
 #endif
+  }
   if (d.isNull()) return false;
 
   // Cut trailing slash
Index: plugins/qt-gui/src/mainwin.cpp
===================================================================
RCS file: /tmp/licq/qt-gui/src/mainwin.cpp,v
retrieving revision 1.296
diff -u -d -p -r1.296 mainwin.cpp
--- plugins/qt-gui/src/mainwin.cpp	24 Aug 2003 14:52:56 -0000	1.296
+++ plugins/qt-gui/src/mainwin.cpp	24 Aug 2003 15:06:29 -0000
@@ -397,6 +397,11 @@ CMainWindow::CMainWindow(CICQDaemon *the
   licqConf.ReadNum("AutoAwayMess", autoAwayMess, 0);
   licqConf.ReadNum("AutoNAMess", autoNAMess, 0);
 
+  licqConf.SetSection("files");
+  licqConf.ReadStr("FileLocation",szTemp,"");
+  m_FileLocation = szTemp;
+  licqConf.ReadBool("AlwaysFileLocation", m_bAlwaysFileLocation,false);
+
   licqConf.SetSection("functions");
   licqConf.ReadBool("AutoClose", m_bAutoClose, true);
   licqConf.ReadBool("AutoPopup", m_bAutoPopup, false);
@@ -3071,6 +3076,10 @@ void CMainWindow::saveOptions()
   licqConf.WriteBool("AutoClose", m_bAutoClose);
   licqConf.WriteBool("AutoPopup", m_bAutoPopup);
   licqConf.WriteStr("MsgPopupKey", m_MsgAutopopupKey.isEmpty() ? "none" : m_MsgAutopopupKey.latin1());
+
+  licqConf.SetSection("files");
+  licqConf.WriteStr("FileLocation", m_FileLocation);
+  licqConf.WriteBool("AlwaysFileLocation", m_bAlwaysFileLocation);
 
   licqConf.SetSection("appearance");
   licqConf.WriteStr("Skin", skin->szSkinName);
Index: plugins/qt-gui/src/mainwin.h
===================================================================
RCS file: /tmp/licq/qt-gui/src/mainwin.h,v
retrieving revision 1.113
diff -u -d -p -r1.113 mainwin.h
--- plugins/qt-gui/src/mainwin.h	24 Aug 2003 14:45:07 -0000	1.113
+++ plugins/qt-gui/src/mainwin.h	24 Aug 2003 15:06:29 -0000
@@ -138,6 +138,8 @@ public:
 
   QString m_MsgAutopopupKey;
   QString m_DefaultEncoding;
+  QString m_FileLocation;
+  bool m_bAlwaysFileLocation;
 
   ColumnInfos colInfo;
   FlashType m_nFlash;
Index: plugins/qt-gui/src/optionsdlg.cpp
===================================================================
RCS file: /tmp/licq/qt-gui/src/optionsdlg.cpp,v
retrieving revision 1.136
diff -u -d -p -r1.136 optionsdlg.cpp
--- plugins/qt-gui/src/optionsdlg.cpp	16 Apr 2003 19:03:47 -0000	1.136
+++ plugins/qt-gui/src/optionsdlg.cpp	24 Aug 2003 15:06:29 -0000
@@ -38,11 +38,15 @@
 #ifdef USE_KDE
 #include <kapp.h>
 #include <kfontdialog.h>
+
 #include <kurlrequester.h>
+#include <kfiledialog.h>
+
 #define DEFAULT_URL_VIEWER tr("KDE default")
 #else
 #include <qapplication.h>
 #include <qfontdialog.h>
+#include <qfiledialog.h>
 #define DEFAULT_URL_VIEWER tr("none")
 #endif
 
@@ -340,6 +344,9 @@ void OptionsDlg::SetupOptions()
   edtTerminal->setText(mainwin->licqDaemon->Terminal() == NULL ?
                        tr("none") : QString(mainwin->licqDaemon->Terminal()));
 
+  edtFileLocation->setText(mainwin->m_FileLocation);
+  chkAlwaysFileLocation->setChecked(mainwin->m_bAlwaysFileLocation);
+
   cmbDefaultEncoding->setCurrentItem(0);
   // first combo box item is the locale encoding, so we skip it
   for (int i = 1; i < cmbDefaultEncoding->count(); i++)
@@ -569,6 +576,9 @@ void OptionsDlg::ApplyOptions()
   mainwin->autoAwayMess = cmbAutoAwayMess->currentItem();
   mainwin->autoNAMess = cmbAutoNAMess->currentItem();
 
+  mainwin->m_FileLocation = edtFileLocation->text();
+  mainwin->m_bAlwaysFileLocation = chkAlwaysFileLocation->isChecked();
+  
   // set up the columns stuff
   unsigned short i, j = mainwin->colInfo.size();
   for (i = 0; i < j; i++) delete mainwin->colInfo[i];  // erase the old array
@@ -1356,12 +1366,38 @@ QWidget* OptionsDlg::new_misc_options()
 
   buildAutoStatusCombos(1);
 
+  // Incoming File Location
+  boxFileLocation = new QGroupBox(3, Horizontal,tr("Incoming File Location"),w);
+  lblFileLocation = new QLabel(tr("Location:"), boxFileLocation);
+  edtFileLocation = new QLineEdit(boxFileLocation);
+  btnFileLocation = new QPushButton("...", boxFileLocation);
+  btnFileLocation->setFixedWidth(20);
+  connect (btnFileLocation, SIGNAL(clicked()), this, SLOT(slot_fileLocation()));
+  chkAlwaysFileLocation = new QCheckBox(tr("Always use incoming path"),
+                                        boxFileLocation);
+  QWhatsThis::add(lblFileLocation,tr("Default path for incoming files"));
+  QWhatsThis::add(edtFileLocation,tr("Default path for incoming files"));
+  QWhatsThis::add(chkAlwaysFileLocation,tr("Determines if we use the incoming"
+                      "file location setting for all the incoming transfers?"));
+  lay->addWidget(boxFileLocation);
   lay->addStretch(1);
   lay->activate();
 
   return w;
 }
 
+
+void OptionsDlg::slot_fileLocation()
+{
+  QString d;
+  #ifdef USE_KDE
+    d = KFileDialog::getExistingDirectory(QString(QDir::homeDirPath()), this);
+  #else
+    d = QFileDialog::getExistingDirectory(QString(QDir::homeDirPath()),this);
+  #endif
+  if ( !d.isEmpty() )
+    edtFileLocation->setText( d );
+}
 
 // -----------------------------------------------------------------------------
 QWidget* OptionsDlg::new_phone_options()
Index: plugins/qt-gui/src/optionsdlg.h
===================================================================
RCS file: /tmp/licq/qt-gui/src/optionsdlg.h,v
retrieving revision 1.63
diff -u -d -p -r1.63 optionsdlg.h
--- plugins/qt-gui/src/optionsdlg.h	15 Apr 2003 02:12:20 -0000	1.63
+++ plugins/qt-gui/src/optionsdlg.h	24 Aug 2003 15:06:29 -0000
@@ -99,7 +99,7 @@ protected:
 
    // misc tab
    QWidget* new_misc_options();
-   QGroupBox *boxParanoia, *boxExtensions;
+   QGroupBox *boxParanoia, *boxExtensions,*boxFileLocation;
    QLabel *lblUrlViewer, *lblDefaultEncoding;
    QComboBox *cmbUrlViewer;
    QComboBox *cmbDefaultEncoding;
@@ -107,6 +107,10 @@ protected:
    QLineEdit *edtTerminal;
    QCheckBox *chkWebPresence, *chkHideIp, *chkIgnoreNewUsers,
              *chkIgnoreWebPanel, *chkIgnoreMassMsg, *chkIgnoreEmailPager, *chkShowAllEncodings;
+   QLineEdit *edtFileLocation;
+   QLabel *lblFileLocation;
+   QPushButton *btnFileLocation;
+   QCheckBox *chkAlwaysFileLocation;
 
    // status tab
    QWidget* new_status_options();
@@ -147,6 +151,7 @@ protected slots:
   void slot_usePortRange(bool b);
   void slot_useMsgChatView(bool);
   void slot_ok();
+  void slot_fileLocation();
 };
 
 
