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.
743 lines
21 KiB
743 lines
21 KiB
//==================================================================================
|
|
//
|
|
// File : sharedfileswindow.cpp
|
|
// Creation date : Mon Apr 21 2003 23:14:12 CEST by Szymon Stefanek
|
|
//
|
|
// This file is part of the KVirc irc client distribution
|
|
// Copyright (C) 1999-2001 Szymon Stefanek (pragma at kvirc dot net)
|
|
//
|
|
// This program is FREE software. You can redistribute it and/or
|
|
// modify it under the linkss 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.
|
|
//
|
|
//==================================================================================
|
|
|
|
#include "sharedfileswindow.h"
|
|
|
|
#include "kvi_debug.h"
|
|
#include "kvi_iconmanager.h"
|
|
#include "kvi_ircview.h"
|
|
#include "kvi_out.h"
|
|
#include "kvi_options.h"
|
|
#include "kvi_locale.h"
|
|
#include "kvi_out.h"
|
|
#include "kvi_mirccntrl.h"
|
|
#include "kvi_themedlabel.h"
|
|
#include "kvi_input.h"
|
|
#include "kvi_filedialog.h"
|
|
#include "kvi_styled_controls.h"
|
|
|
|
#include <tqdatetimeedit.h>
|
|
#include <tqlabel.h>
|
|
#include <tqlineedit.h>
|
|
#include <tqpushbutton.h>
|
|
#include <tqsplitter.h>
|
|
#include "kvi_tal_hbox.h"
|
|
#include "kvi_tal_vbox.h"
|
|
#include <tqlayout.h>
|
|
#include <tqcheckbox.h>
|
|
#include <tqmessagebox.h>
|
|
#include <tqfileinfo.h>
|
|
|
|
extern KviSharedFilesWindow * g_pSharedFilesWindow;
|
|
extern KVIRC_API KviSharedFilesManager * g_pSharedFilesManager;
|
|
|
|
KviSharedFileEditDialog::KviSharedFileEditDialog(TQWidget * par,KviSharedFile * f)
|
|
: TQDialog(par,"shared_file_editor",true)
|
|
{
|
|
TQGridLayout * g = new TQGridLayout(this,1,1,11,6);
|
|
|
|
setCaption(__tr2qs_ctx("Edit Shared File - KVIrc","sharedfileswindow"));
|
|
|
|
TQLabel * l = new TQLabel(__tr2qs_ctx("Share name:","sharedfileswindow"),this);
|
|
g->addWidget(l, 0, 0 );
|
|
|
|
m_pShareNameEdit = new TQLineEdit(this);
|
|
g->addMultiCellWidget( m_pShareNameEdit, 0, 0, 1, 3 );
|
|
|
|
l = new TQLabel(__tr2qs_ctx("File path:","sharedfileswindow"),this);
|
|
g->addWidget(l, 1, 0 );
|
|
|
|
m_pFilePathEdit = new TQLineEdit(this);
|
|
g->addMultiCellWidget( m_pFilePathEdit, 1, 1, 1, 2 );
|
|
|
|
m_pBrowseButton = new TQPushButton(__tr2qs_ctx("&Browse...","sharedfileswindow"),this);
|
|
g->addWidget( m_pBrowseButton, 1, 3 );
|
|
connect(m_pBrowseButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(browse()));
|
|
|
|
l = new TQLabel(__tr2qs_ctx("User mask:","sharedfileswindow"),this);
|
|
g->addWidget(l, 2, 0 );
|
|
|
|
m_pUserMaskEdit = new TQLineEdit(this);
|
|
g->addMultiCellWidget( m_pUserMaskEdit, 2, 2, 1, 3 );
|
|
|
|
m_pExpireCheckBox = new KviStyledCheckBox(__tr2qs_ctx("Expire at:","sharedfileswindow"),this);
|
|
g->addWidget(m_pExpireCheckBox,3,0);
|
|
|
|
m_pExpireDateTimeEdit = new TQDateTimeEdit(this);
|
|
g->addMultiCellWidget(m_pExpireDateTimeEdit, 3, 3, 1, 3 );
|
|
|
|
connect(m_pExpireCheckBox,TQT_SIGNAL(toggled(bool)),m_pExpireDateTimeEdit,TQT_SLOT(setEnabled(bool)));
|
|
|
|
TQPushButton * pb;
|
|
|
|
pb = new TQPushButton(__tr2qs_ctx("&OK","sharedfileswindow"),this);
|
|
connect(pb,TQT_SIGNAL(clicked()),this,TQT_SLOT(okClicked()));
|
|
pb->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)));
|
|
g->addWidget(pb,5,2);
|
|
pb = new TQPushButton(__tr2qs_ctx("Cancel","sharedfileswindow"),this);
|
|
connect(pb,TQT_SIGNAL(clicked()),this,TQT_SLOT(reject()));
|
|
pb->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD)));
|
|
g->addWidget(pb,5,3);
|
|
|
|
g->setRowStretch(4,1);
|
|
g->setColStretch(0,1);
|
|
|
|
if(f)
|
|
{
|
|
m_pShareNameEdit->setText(f->name());
|
|
m_pFilePathEdit->setText(f->absFilePath());
|
|
m_pUserMaskEdit->setText(f->userMask());
|
|
TQDateTime dt;
|
|
dt.setTime_t(f->expireTime());
|
|
m_pExpireDateTimeEdit->setDateTime(dt);
|
|
m_pExpireCheckBox->setChecked(f->expires());
|
|
m_pExpireDateTimeEdit->setEnabled(f->expires());
|
|
} else {
|
|
m_pExpireCheckBox->setChecked(false);
|
|
m_pExpireDateTimeEdit->setDateTime(TQDateTime::currentDateTime());
|
|
m_pExpireDateTimeEdit->setEnabled(false);
|
|
}
|
|
|
|
}
|
|
|
|
KviSharedFileEditDialog::~KviSharedFileEditDialog()
|
|
{
|
|
|
|
}
|
|
|
|
void KviSharedFileEditDialog::browse()
|
|
{
|
|
TQString szBuf;
|
|
TQString szTxt = m_pFilePathEdit->text();
|
|
if(!KviFileDialog::askForOpenFileName(szBuf,__tr2qs("Choose the file to share"),szTxt))return;
|
|
m_pFilePathEdit->setText(szBuf);
|
|
}
|
|
|
|
KviSharedFile * KviSharedFileEditDialog::getResult()
|
|
{
|
|
TQString szName = m_pShareNameEdit->text();
|
|
TQString szPath = m_pFilePathEdit->text();
|
|
TQString szMask = m_pUserMaskEdit->text();
|
|
TQDateTime dt = m_pExpireDateTimeEdit->dateTime();
|
|
bool bExpires = m_pExpireCheckBox->isChecked();
|
|
TQFileInfo f(szPath);
|
|
return new KviSharedFile(szName,szPath,szMask,bExpires ? dt.toTime_t() : (time_t)0,f.size());
|
|
}
|
|
|
|
void KviSharedFileEditDialog::okClicked()
|
|
{
|
|
TQString szName = m_pShareNameEdit->text();
|
|
TQString szPath = m_pFilePathEdit->text();
|
|
TQDateTime dt = m_pExpireDateTimeEdit->dateTime();
|
|
bool bExpires = m_pExpireCheckBox->isChecked();
|
|
if(bExpires && (dt <= TQDateTime::currentDateTime()))
|
|
{
|
|
TQMessageBox::warning(this,__tr2qs_ctx("Invalid expire time","sharedfileswindow"),
|
|
__tr2qs_ctx("The expire date/time is in the past: please either remove the \"expires\"" \
|
|
"check mark or specify a expire date/time in the future","sharedfileswindow"),
|
|
__tr2qs_ctx("OK","sharedfileswindow"));
|
|
return;
|
|
}
|
|
|
|
if(szName.isEmpty())
|
|
{
|
|
TQMessageBox::warning(this,__tr2qs_ctx("Invalid share name","sharedfileswindow"),
|
|
__tr2qs_ctx("The share name can't be empty, please correct it","sharedfileswindow"),
|
|
__tr2qs_ctx("OK","sharedfileswindow"));
|
|
return;
|
|
}
|
|
|
|
TQFileInfo f(szPath);
|
|
if(!(f.exists() && f.isFile() && f.isReadable()))
|
|
{
|
|
TQMessageBox::warning(this,__tr2qs_ctx("Can't open the file","sharedfileswindow"),
|
|
__tr2qs_ctx("The file doesn't exist or it is not readable, please check the path","sharedfileswindow"),
|
|
__tr2qs_ctx("OK","sharedfileswindow"));
|
|
return;
|
|
}
|
|
|
|
accept();
|
|
}
|
|
|
|
|
|
KviSharedFilesListViewItem::KviSharedFilesListViewItem(KviTalListView * lv,KviSharedFile * f)
|
|
: KviTalListViewItem(lv,f->name())
|
|
{
|
|
setText(1,f->absFilePath());
|
|
setText(2,f->userMask());
|
|
if(f->expires())
|
|
{
|
|
TQDateTime dt;
|
|
dt.setTime_t(f->expireTime());
|
|
setText(3,dt.toString());
|
|
} else {
|
|
setText(3,__tr2qs_ctx("Never","sharedfileswindow"));
|
|
}
|
|
m_pSharedFilePointer = f;
|
|
}
|
|
|
|
KviSharedFilesListViewItem::~KviSharedFilesListViewItem()
|
|
{
|
|
}
|
|
|
|
|
|
KviSharedFilesWindow::KviSharedFilesWindow(KviModuleExtensionDescriptor * d,KviFrame * lpFrm)
|
|
: KviWindow(KVI_WINDOW_TYPE_TOOL,lpFrm,"shared files window",0) , KviModuleExtension(d)
|
|
{
|
|
g_pSharedFilesWindow = this;
|
|
#ifdef COMPILE_USE_QT4
|
|
m_pSplitter = new TQSplitter(Qt::Horizontal,this,"splitter");
|
|
#else
|
|
m_pSplitter = new TQSplitter(Qt::Horizontal,this,"splitter");
|
|
#endif
|
|
|
|
KviTalVBox * vbox = new KviTalVBox(m_pSplitter);
|
|
|
|
m_pListView = new KviTalListView(vbox);
|
|
//m_pListView->header()->hide();
|
|
m_pListView->setAllColumnsShowFocus(true);
|
|
m_pListView->addColumn(__tr2qs_ctx("Name","sharedfileswindow"),200);
|
|
m_pListView->addColumn(__tr2qs_ctx("Filename","sharedfileswindow"),300);
|
|
m_pListView->addColumn(__tr2qs_ctx("Mask","sharedfileswindow"),200);
|
|
m_pListView->addColumn(__tr2qs_ctx("Expires","sharedfileswindow"),200);
|
|
m_pListView->setSelectionMode(KviTalListView::Single);
|
|
connect(m_pListView,TQT_SIGNAL(selectionChanged()),this,TQT_SLOT(enableButtons()));
|
|
|
|
connect(g_pSharedFilesManager,TQT_SIGNAL(sharedFilesChanged()),this,TQT_SLOT(fillFileView()));
|
|
connect(g_pSharedFilesManager,TQT_SIGNAL(sharedFileAdded(KviSharedFile *)),this,TQT_SLOT(sharedFileAdded(KviSharedFile *)));
|
|
connect(g_pSharedFilesManager,TQT_SIGNAL(sharedFileRemoved(KviSharedFile *)),this,TQT_SLOT(sharedFileRemoved(KviSharedFile *)));
|
|
|
|
KviTalHBox * b = new KviTalHBox(vbox);
|
|
|
|
m_pAddButton = new TQPushButton(__tr2qs_ctx("&Add...","sharedfileswindow"),b);
|
|
connect(m_pAddButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(addClicked()));
|
|
m_pRemoveButton = new TQPushButton(__tr2qs_ctx("Re&move","sharedfileswindow"),b);
|
|
connect(m_pRemoveButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(removeClicked()));
|
|
m_pEditButton = new TQPushButton(__tr2qs_ctx("&Edit","sharedfileswindow"),b);
|
|
connect(m_pEditButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(editClicked()));
|
|
|
|
fillFileView();
|
|
}
|
|
|
|
KviSharedFilesWindow::~KviSharedFilesWindow()
|
|
{
|
|
g_pSharedFilesWindow = 0;
|
|
}
|
|
|
|
void KviSharedFilesWindow::enableButtons()
|
|
{
|
|
KviTalListViewItem * it = m_pListView->currentItem();
|
|
m_pEditButton->setEnabled(it);
|
|
m_pRemoveButton->setEnabled(it);
|
|
}
|
|
|
|
void KviSharedFilesWindow::removeClicked()
|
|
{
|
|
KviSharedFilesListViewItem * it = (KviSharedFilesListViewItem *)m_pListView->currentItem();
|
|
if(!it)return;
|
|
|
|
g_pSharedFilesManager->removeSharedFile(it->readOnlySharedFilePointer()->name(),it->readOnlySharedFilePointer());
|
|
}
|
|
|
|
void KviSharedFilesWindow::addClicked()
|
|
{
|
|
KviSharedFileEditDialog dlg(0);
|
|
if(dlg.exec() != TQDialog::Accepted)return;
|
|
|
|
KviSharedFile * f = dlg.getResult();
|
|
if(!f)return;
|
|
g_pSharedFilesManager->addSharedFile(f);
|
|
}
|
|
|
|
void KviSharedFilesWindow::editClicked()
|
|
{
|
|
KviSharedFilesListViewItem * it = (KviSharedFilesListViewItem *)m_pListView->currentItem();
|
|
if(!it)return;
|
|
|
|
KviSharedFileEditDialog dlg(0,it->readOnlySharedFilePointer());
|
|
if(dlg.exec() != TQDialog::Accepted)return;
|
|
|
|
KviSharedFilesListViewItem * it2 = (KviSharedFilesListViewItem *)m_pListView->currentItem();
|
|
if(it2 != it)return; // ooops ?
|
|
KviSharedFile * f = dlg.getResult();
|
|
if(!f)return; // ooops 2 ?
|
|
|
|
g_pSharedFilesManager->removeSharedFile(it->readOnlySharedFilePointer()->name(),it->readOnlySharedFilePointer());
|
|
g_pSharedFilesManager->addSharedFile(f);
|
|
}
|
|
|
|
void KviSharedFilesWindow::fillFileView()
|
|
{
|
|
m_pListView->clear();
|
|
KviPointerHashTableIterator<TQString,KviSharedFileList> it(*(g_pSharedFilesManager->sharedFileListDict()));
|
|
|
|
KviSharedFilesListViewItem * itm;
|
|
|
|
while(KviSharedFileList * l = it.current())
|
|
{
|
|
for(KviSharedFile * o = l->first();o;o = l->next())
|
|
{
|
|
itm = new KviSharedFilesListViewItem(m_pListView,o);
|
|
}
|
|
++it;
|
|
}
|
|
enableButtons();
|
|
}
|
|
|
|
void KviSharedFilesWindow::sharedFileAdded(KviSharedFile * f)
|
|
{
|
|
KviSharedFilesListViewItem * it;
|
|
it = new KviSharedFilesListViewItem(m_pListView,f);
|
|
enableButtons();
|
|
}
|
|
|
|
void KviSharedFilesWindow::sharedFileRemoved(KviSharedFile * f)
|
|
{
|
|
KviTalListViewItem * it = m_pListView->firstChild();
|
|
while(it)
|
|
{
|
|
if(((KviSharedFilesListViewItem *)it)->readOnlySharedFilePointer() == f)
|
|
{
|
|
delete ((KviSharedFilesListViewItem *)it);
|
|
return;
|
|
}
|
|
it = it->nextSibling();
|
|
}
|
|
enableButtons();
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
void KviSharedFilesWindow::tipRequest(KviDynamicToolTip * tip,const TQPoint &pnt)
|
|
{
|
|
|
|
KviSharedFilesItem * it = (KviSharedFilesItem *)m_pListView->itemAt(pnt);
|
|
if(!it)return;
|
|
TQString txt = it->transfer()->tipText();
|
|
tip->tip(m_pListView->itemRect(it),txt);
|
|
|
|
}
|
|
*/
|
|
/*
|
|
void KviSharedFilesWindow::fillTransferView()
|
|
{
|
|
KviPointerList<KviSharedFiles> * l = KviSharedFilesManager::instance()->transferList();
|
|
if(!l)return;
|
|
KviSharedFilesItem * it;
|
|
for(KviSharedFiles * t = l->first();t;t = l->next())
|
|
{
|
|
it = new KviSharedFilesItem(m_pListView,t);
|
|
t->setDisplayItem(it);
|
|
}
|
|
}
|
|
|
|
KviSharedFilesItem * KviSharedFilesWindow::findItem(KviSharedFiles * t)
|
|
{
|
|
KviSharedFilesItem * it = (KviSharedFilesItem *)m_pListView->firstChild();
|
|
while(it)
|
|
{
|
|
if(it->transfer() == t)return it;
|
|
it = (KviSharedFilesItem *)(it->nextSibling());
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void KviSharedFilesWindow::transferRegistered(KviSharedFiles * t)
|
|
{
|
|
KviSharedFilesItem * it = new KviSharedFilesItem(m_pListView,t);
|
|
//t->setDisplayItem(it);
|
|
}
|
|
|
|
void KviSharedFilesWindow::transferUnregistering(KviSharedFiles * t)
|
|
{
|
|
KviSharedFilesItem * it = findItem(t);
|
|
//t->setDisplayItem(0);
|
|
if(it)delete it;
|
|
}
|
|
|
|
void KviSharedFilesWindow::rightButtonPressed(KviTalListViewItem *it,const TQPoint &pnt,int col)
|
|
{
|
|
if(!m_pContextPopup)m_pContextPopup = new KviTalPopupMenu(this);
|
|
if(!m_pLocalFilePopup)m_pLocalFilePopup = new KviTalPopupMenu(this);
|
|
if(!m_pOpenFilePopup)
|
|
{
|
|
m_pOpenFilePopup= new KviTalPopupMenu(this);
|
|
connect(m_pOpenFilePopup,TQT_SIGNAL(activated(int)),this,TQT_SLOT(openFilePopupActivated(int)));
|
|
}
|
|
|
|
m_pContextPopup->clear();
|
|
|
|
int id;
|
|
|
|
|
|
if(it)
|
|
{
|
|
KviSharedFilesItem * i = (KviSharedFilesItem *)it;
|
|
if(i->transfer())
|
|
{
|
|
|
|
TQString szFile = i->transfer()->localFileName();
|
|
if(!szFile.isEmpty())
|
|
{
|
|
m_pLocalFilePopup->clear();
|
|
|
|
TQString tmp = "<b>file:/";
|
|
tmp += szFile;
|
|
tmp += "</b><br>";
|
|
|
|
TQFileInfo fi(szFile);
|
|
if(fi.exists())
|
|
{
|
|
tmp += "<nobr>";
|
|
tmp += __tr2qs_ctx("Size: %1 bytes","filetransferwindow").arg(fi.size());
|
|
tmp += "</nobr><br>";
|
|
}
|
|
|
|
#ifdef COMPILE_TDE_SUPPORT
|
|
tmp += "<nobr>Mime: ";
|
|
tmp += KMimeType::findByPath(szFile)->name();
|
|
tmp += "</nobr>";
|
|
#endif //COMPILE_TDE_SUPPORT
|
|
|
|
TQLabel * l = new TQLabel(tmp,m_pLocalFilePopup);
|
|
l->setFrameStyle(TQFrame::Raised | TQFrame::Panel);
|
|
m_pLocalFilePopup->insertItem(l);
|
|
|
|
#ifdef COMPILE_TDE_SUPPORT
|
|
TQString mimetype = KMimeType::findByPath(szFile)->name();
|
|
KServiceTypeProfile::OfferList offers = KServiceTypeProfile::offers(mimetype,"Application");
|
|
|
|
m_pOpenFilePopup->clear();
|
|
|
|
int id;
|
|
int idx = 0;
|
|
|
|
for(KServiceTypeProfile::OfferList::Iterator itOffers = offers.begin();
|
|
itOffers != offers.end(); ++itOffers)
|
|
{
|
|
id = m_pOpenFilePopup->insertItem((*itOffers).service()->pixmap(TDEIcon::Small),(*itOffers).service()->name());
|
|
m_pOpenFilePopup->setItemParameter(id,idx);
|
|
idx++;
|
|
}
|
|
|
|
m_pOpenFilePopup->insertSeparator();
|
|
|
|
id = m_pOpenFilePopup->insertItem(__tr2qs_ctx("Default application","filetransferwindow"),this,TQT_SLOT(openLocalFile()));
|
|
m_pOpenFilePopup->setItemParameter(id,-1);
|
|
id = m_pOpenFilePopup->insertItem(__tr2qs_ctx("&Other...","filetransferwindow"),this,TQT_SLOT(openLocalFileWith()));
|
|
m_pOpenFilePopup->setItemParameter(id,-1);
|
|
|
|
m_pLocalFilePopup->insertItem(__tr2qs_ctx("Open with","filetransferwindow"),m_pOpenFilePopup);
|
|
m_pLocalFilePopup->insertSeparator();
|
|
m_pLocalFilePopup->insertItem(__tr2qs_ctx("Open folder","filetransferwindow"),this,TQT_SLOT(openLocalFileFolder()));
|
|
m_pLocalFilePopup->insertItem(__tr2qs_ctx("Reach in terminal","filetransferwindow"),this,TQT_SLOT(openLocalFileTerminal()));
|
|
m_pLocalFilePopup->insertSeparator();
|
|
#endif //COMPILE_TDE_SUPPORT
|
|
m_pLocalFilePopup->insertItem(__tr2qs_ctx("Copy path to clipboard","filetransferwindow"),this,TQT_SLOT(copyLocalFileToClipboard()));
|
|
|
|
m_pContextPopup->insertItem(__tr2qs_ctx("Local file","filetransferwindow"),m_pLocalFilePopup);
|
|
}
|
|
|
|
i->transfer()->fillContextPopup(m_pContextPopup,col);
|
|
m_pContextPopup->insertSeparator();
|
|
}
|
|
}
|
|
|
|
|
|
bool bHaveTerminated = false;
|
|
KviSharedFilesItem * item = (KviSharedFilesItem *)m_pListView->firstChild();
|
|
while(item)
|
|
{
|
|
if(item->transfer()->terminated())
|
|
{
|
|
bHaveTerminated = true;
|
|
break;
|
|
}
|
|
item = (KviSharedFilesItem *)item->nextSibling();
|
|
}
|
|
|
|
id = m_pContextPopup->insertItem(__tr2qs_ctx("Clear terminated","filetransferwindow"),this,TQT_SLOT(clearTerminated()));
|
|
m_pContextPopup->setItemEnabled(id,bHaveTerminated);
|
|
|
|
id = m_pContextPopup->insertItem(__tr2qs_ctx("Clear all","filetransferwindow"),this,TQT_SLOT(clearAll()));
|
|
m_pContextPopup->setItemEnabled(id,it);
|
|
|
|
m_pContextPopup->popup(pnt);
|
|
}
|
|
|
|
|
|
KviSharedFiles * KviSharedFilesWindow::selectedTransfer()
|
|
{
|
|
KviTalListViewItem * it = m_pListView->selectedItem();
|
|
if(!it)return 0;
|
|
KviSharedFilesItem * i = (KviSharedFilesItem *)it;
|
|
return i->transfer();
|
|
}
|
|
|
|
void KviSharedFilesWindow::openFilePopupActivated(int id)
|
|
{
|
|
#ifdef COMPILE_TDE_SUPPORT
|
|
int ip = m_pOpenFilePopup->itemParameter(id);
|
|
if(ip < 0)return;
|
|
TQString txt = m_pOpenFilePopup->text(id);
|
|
|
|
KviSharedFiles * t = selectedTransfer();
|
|
if(!t)return;
|
|
TQString tmp = t->localFileName();
|
|
if(tmp.isEmpty())return;
|
|
|
|
TQString mimetype = KMimeType::findByPath(tmp)->name();
|
|
KServiceTypeProfile::OfferList offers = KServiceTypeProfile::offers(mimetype,"Application");
|
|
|
|
for(KServiceTypeProfile::OfferList::Iterator itOffers = offers.begin();
|
|
itOffers != offers.end(); ++itOffers)
|
|
{
|
|
if(txt == (*itOffers).service()->name())
|
|
{
|
|
KURL::List lst;
|
|
KURL url;
|
|
url.setPath(tmp);
|
|
lst.append(url);
|
|
KRun::run(*((*itOffers).service()), lst);
|
|
break;
|
|
}
|
|
}
|
|
#endif //COMPILE_TDE_SUPPORT
|
|
}
|
|
|
|
void KviSharedFilesWindow::openLocalFileTerminal()
|
|
{
|
|
#ifdef COMPILE_TDE_SUPPORT
|
|
KviSharedFiles * t = selectedTransfer();
|
|
if(!t)return;
|
|
TQString tmp = t->localFileName();
|
|
if(tmp.isEmpty())return;
|
|
|
|
int idx = tmp.findRev("/");
|
|
if(idx == -1)return;
|
|
tmp = tmp.left(idx);
|
|
|
|
tmp.prepend("konsole --workdir=\"");
|
|
tmp.append("\"");
|
|
|
|
KRun::runCommand(tmp);
|
|
#endif //COMPILE_TDE_SUPPORT
|
|
}
|
|
|
|
void KviSharedFilesWindow::openLocalFile()
|
|
{
|
|
#ifdef COMPILE_TDE_SUPPORT
|
|
KviSharedFiles * t = selectedTransfer();
|
|
if(!t)return;
|
|
TQString tmp = t->localFileName();
|
|
if(tmp.isEmpty())return;
|
|
|
|
TQString mimetype = KMimeType::findByPath(tmp)->name();
|
|
KService::Ptr offer = KServiceTypeProfile::preferredService(mimetype,"Application");
|
|
if(!offer)
|
|
{
|
|
openLocalFileWith();
|
|
return;
|
|
}
|
|
|
|
KURL::List lst;
|
|
KURL url;
|
|
url.setPath(tmp);
|
|
lst.append(url);
|
|
KRun::run(*offer, lst);
|
|
#endif //COMPILE_TDE_SUPPORT
|
|
}
|
|
|
|
void KviSharedFilesWindow::openLocalFileWith()
|
|
{
|
|
#ifdef COMPILE_TDE_SUPPORT
|
|
KviSharedFiles * t = selectedTransfer();
|
|
if(!t)return;
|
|
TQString tmp = t->localFileName();
|
|
if(tmp.isEmpty())return;
|
|
|
|
KURL::List lst;
|
|
KURL url;
|
|
url.setPath(tmp);
|
|
lst.append(url);
|
|
KRun::displayOpenWithDialog(lst);
|
|
#endif //COMPILE_TDE_SUPPORT
|
|
}
|
|
|
|
void KviSharedFilesWindow::copyLocalFileToClipboard()
|
|
{
|
|
KviSharedFiles * t = selectedTransfer();
|
|
if(!t)return;
|
|
TQString tmp = t->localFileName();
|
|
if(tmp.isEmpty())return;
|
|
TQApplication::clipboard()->setSelectionMode(false);
|
|
TQApplication::clipboard()->setText(tmp);
|
|
TQApplication::clipboard()->setSelectionMode(true);
|
|
TQApplication::clipboard()->setText(tmp);
|
|
}
|
|
|
|
void KviSharedFilesWindow::openLocalFileFolder()
|
|
{
|
|
#ifdef COMPILE_TDE_SUPPORT
|
|
KviSharedFiles * t = selectedTransfer();
|
|
if(!t)return;
|
|
TQString tmp = t->localFileName();
|
|
if(tmp.isEmpty())return;
|
|
|
|
int idx = tmp.findRev("/");
|
|
if(idx == -1)return;
|
|
tmp = tmp.left(idx);
|
|
|
|
TQString mimetype = KMimeType::findByPath(tmp)->name(); // inode/directory
|
|
KService::Ptr offer = KServiceTypeProfile::preferredService(mimetype,"Application");
|
|
if(!offer)return;
|
|
|
|
KURL::List lst;
|
|
KURL url;
|
|
url.setPath(tmp);
|
|
lst.append(url);
|
|
KRun::run(*offer, lst);
|
|
#endif //COMPILE_TDE_SUPPORT
|
|
}
|
|
|
|
void KviSharedFilesWindow::heartbeat()
|
|
{
|
|
if(m_pListView->childCount() < 1)return;
|
|
|
|
KviTalListViewItem * i1;
|
|
KviTalListViewItem * i2;
|
|
|
|
i1 = m_pListView->itemAt(TQPoint(1,1));
|
|
if(!i1)
|
|
{
|
|
m_pListView->viewport()->update();
|
|
return;
|
|
}
|
|
i2 = m_pListView->itemAt(TQPoint(1,m_pListView->viewport()->height() - 2));
|
|
if(i2)i2 = i2->nextSibling();
|
|
|
|
while(i1 && (i1 != i2))
|
|
{
|
|
if(((KviSharedFilesItem *)i1)->transfer()->active())
|
|
{
|
|
m_pListView->repaintItem(i1);
|
|
}
|
|
i1 = i1->nextSibling();
|
|
}
|
|
}
|
|
|
|
void KviSharedFilesWindow::clearAll()
|
|
{
|
|
if(TQMessageBox::information(this,__tr2qs_ctx("Clear all transfers","filetransferwindow"),
|
|
__tr2qs_ctx("Remove all the transfers including the running ones ?","filetransferwindow"),
|
|
__tr2qs_ctx("Yes","filetransferwindow"),__tr2qs_ctx("No","filetransferwindow")) != 0)return;
|
|
|
|
KviSharedFilesManager::instance()->killAllTransfers();
|
|
}
|
|
|
|
void KviSharedFilesWindow::clearTerminated()
|
|
{
|
|
KviSharedFilesManager::instance()->killTerminatedTransfers();
|
|
}
|
|
*/
|
|
void KviSharedFilesWindow::getBaseLogFileName(KviStr &buffer)
|
|
{
|
|
buffer.sprintf("SHAREDFILES");
|
|
}
|
|
|
|
TQPixmap * KviSharedFilesWindow::myIconPtr()
|
|
{
|
|
return g_pIconManager->getSmallIcon(KVI_SMALLICON_SHAREDFILES);
|
|
}
|
|
|
|
void KviSharedFilesWindow::resizeEvent(TQResizeEvent *e)
|
|
{
|
|
//int h = m_pInput->heightHint();
|
|
m_pSplitter->setGeometry(0,0,width(),height());
|
|
//m_pInput->setGeometry(0,height() - h,width(),h);
|
|
}
|
|
|
|
TQSize KviSharedFilesWindow::sizeHint() const
|
|
{
|
|
return m_pSplitter->sizeHint();
|
|
}
|
|
|
|
void KviSharedFilesWindow::fillCaptionBuffers()
|
|
{
|
|
m_szPlainTextCaption = __tr2qs_ctx("Shared Files","sharedfileswindow");
|
|
|
|
m_szHtmlActiveCaption = "<nobr><font color=\"";
|
|
m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name();
|
|
m_szHtmlActiveCaption += "\"><b>";
|
|
m_szHtmlActiveCaption += m_szPlainTextCaption;
|
|
m_szHtmlActiveCaption += "</b></font></nobr>";
|
|
|
|
m_szHtmlInactiveCaption = "<nobr><font color=\"";
|
|
m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name();
|
|
m_szHtmlInactiveCaption += "\"><b>";
|
|
m_szHtmlInactiveCaption += m_szPlainTextCaption;
|
|
m_szHtmlInactiveCaption += "</b></font></nobr>";
|
|
|
|
}
|
|
|
|
void KviSharedFilesWindow::die()
|
|
{
|
|
close();
|
|
}
|
|
|
|
|
|
|
|
//#warning "Load & save properties of this kind of window"
|
|
|
|
//void KviSharedFilesWindow::saveProperties()
|
|
//{
|
|
// KviWindowProperty p;
|
|
// p.rect = externalGeometry();
|
|
// p.isDocked = isAttacched();
|
|
// TQValueList<int> l(m_pSplitter->sizes());
|
|
// if(l.count() >= 1)p.splitWidth1 = *(l.at(0));
|
|
// if(l.count() >= 2)p.splitWidth2 = *(l.at(1));
|
|
// p.timestamp = m_pView->timestamp();
|
|
// p.imagesVisible = m_pView->imagesVisible();
|
|
// p.isMaximized = isAttacched() && isMaximized();
|
|
// p.topSplitWidth1 = 0;
|
|
// p.topSplitWidth2 = 0;
|
|
// p.topSplitWidth3 = 0;
|
|
// g_pOptions->m_pWinPropertiesList->setProperty(caption(),&p);
|
|
//}
|
|
//
|
|
//void KviSharedFilesWindow::setProperties(KviWindowProperty *p)
|
|
//{
|
|
// TQValueList<int> l;
|
|
// l.append(p->splitWidth1);
|
|
// l.append(p->splitWidth2);
|
|
// m_pVertSplitter->setSizes(l);
|
|
// m_pIrcView->setTimestamp(p->timestamp);
|
|
// m_pIrcView->setShowImages(p->imagesVisible);
|
|
//}
|
|
|
|
|
|
#include "m_sharedfileswindow.moc"
|