You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
4.3 KiB
191 lines
4.3 KiB
//=============================================================================
|
|
//
|
|
// File : kvi_filetransfer.cpp
|
|
// Creation date : Mon Apr 21 22:14:31 2003 GMT by Szymon Stefanek
|
|
//
|
|
// This file is part of the KVirc irc client distribution
|
|
// Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net)
|
|
//
|
|
// 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 opinion) 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 program. If not, write to the Free Software Foundation,
|
|
// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
//
|
|
//=============================================================================
|
|
#define __KVIRC__
|
|
#include "kvi_filetransfer.h"
|
|
#include "kvi_moduleextension.h"
|
|
#include "kvi_window.h"
|
|
|
|
#include "kvi_app.h"
|
|
|
|
#include "kvi_tal_listview.h"
|
|
#include "kvi_tal_popupmenu.h"
|
|
|
|
static KviFileTransferManager * g_pFileTransferManager = 0;
|
|
|
|
|
|
KviFileTransferManager::KviFileTransferManager()
|
|
: TQObject()
|
|
{
|
|
m_pTransferList = 0;
|
|
m_pTransferWindow = 0;
|
|
}
|
|
|
|
KviFileTransferManager::~KviFileTransferManager()
|
|
{
|
|
killAllTransfers();
|
|
}
|
|
|
|
KviFileTransferManager * KviFileTransferManager::instance()
|
|
{
|
|
if(!g_pFileTransferManager)g_pFileTransferManager = new KviFileTransferManager();
|
|
return g_pFileTransferManager;
|
|
}
|
|
|
|
void KviFileTransferManager::cleanup()
|
|
{
|
|
if(!g_pFileTransferManager)return;
|
|
delete g_pFileTransferManager;
|
|
g_pFileTransferManager = 0;
|
|
}
|
|
|
|
void KviFileTransferManager::killAllTransfers()
|
|
{
|
|
while(m_pTransferList)
|
|
{
|
|
KviFileTransfer * t = m_pTransferList->first();
|
|
t->die();
|
|
}
|
|
}
|
|
|
|
void KviFileTransferManager::killTerminatedTransfers()
|
|
{
|
|
if(!m_pTransferList)return;
|
|
|
|
KviPointerList<KviFileTransfer> l;
|
|
l.setAutoDelete(false);
|
|
|
|
for(KviFileTransfer * f = m_pTransferList->first();f;f = m_pTransferList->next())
|
|
{
|
|
if(f->terminated())l.append(f);
|
|
}
|
|
|
|
for(KviFileTransfer * d = l.first();d;d = l.next())
|
|
d->die();
|
|
}
|
|
|
|
void KviFileTransferManager::invokeTransferWindow(KviWindow * pWnd,bool bCreateMinimized,bool bNoRaise)
|
|
{
|
|
if(!m_pTransferWindow)
|
|
{
|
|
KviPointerHashTable<TQString,TQVariant> d(7,false);
|
|
d.setAutoDelete(true);
|
|
d.replace("bCreateMinimized",new TQVariant(bCreateMinimized));
|
|
d.replace("bNoRaise",new TQVariant(bNoRaise));
|
|
|
|
KviModuleExtensionManager::instance()->allocateExtension(
|
|
"tool",
|
|
KVI_FILE_TRANSFER_WINDOW_EXTENSION_NAME,
|
|
pWnd,&d,0,
|
|
"filetransferwindow");
|
|
}
|
|
}
|
|
|
|
void KviFileTransferManager::registerTransfer(KviFileTransfer * t)
|
|
{
|
|
if(!m_pTransferList)
|
|
{
|
|
m_pTransferList = new KviPointerList<KviFileTransfer>;
|
|
m_pTransferList->setAutoDelete(false);
|
|
}
|
|
|
|
m_pTransferList->append(t);
|
|
|
|
emit transferRegistered(t);
|
|
}
|
|
|
|
void KviFileTransferManager::unregisterTransfer(KviFileTransfer * t)
|
|
{
|
|
if(!m_pTransferList)
|
|
{
|
|
tqDebug("Ops: unregistering transfer with no transfer list!");
|
|
return;
|
|
}
|
|
|
|
emit transferUnregistering(t);
|
|
|
|
m_pTransferList->removeRef(t);
|
|
if(m_pTransferList->isEmpty())
|
|
{
|
|
delete m_pTransferList;
|
|
m_pTransferList = 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
KviFileTransfer::KviFileTransfer()
|
|
: TQObject()
|
|
{
|
|
m_pDisplayItem = 0;
|
|
m_iId = g_pApp->getGloballyUniqueId();
|
|
manager()->registerTransfer(this);
|
|
}
|
|
|
|
KviFileTransfer::~KviFileTransfer()
|
|
{
|
|
manager()->unregisterTransfer(this);
|
|
}
|
|
|
|
KviWindow * KviFileTransfer::outputWindow()
|
|
{
|
|
KviWindow * o = transferWindow();
|
|
if(o)return o;
|
|
return g_pActiveWindow;
|
|
}
|
|
|
|
void KviFileTransfer::invokeTransferWindow(KviWindow * pWnd,bool bCreateMinimized,bool bNoRaise)
|
|
{
|
|
manager()->invokeTransferWindow(pWnd,bCreateMinimized,bNoRaise);
|
|
}
|
|
|
|
TQString KviFileTransfer::localFileName()
|
|
{
|
|
return TQString();
|
|
}
|
|
|
|
TQString KviFileTransfer::retryCommand()
|
|
{
|
|
return TQString();
|
|
}
|
|
|
|
bool KviFileTransfer::terminated()
|
|
{
|
|
return !active();
|
|
}
|
|
|
|
TQString KviFileTransfer::tipText()
|
|
{
|
|
return TQString();
|
|
}
|
|
|
|
int KviFileTransfer::displayHeight(int iLineSpacing)
|
|
{
|
|
return iLineSpacing * 2;
|
|
}
|
|
|
|
void KviFileTransfer::displayUpdate()
|
|
{
|
|
if(m_pDisplayItem)m_pDisplayItem->repaint();
|
|
}
|