summaryrefslogtreecommitdiffstats
path: root/kio/kio/defaultprogress.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kio/kio/defaultprogress.cpp')
-rw-r--r--kio/kio/defaultprogress.cpp507
1 files changed, 0 insertions, 507 deletions
diff --git a/kio/kio/defaultprogress.cpp b/kio/kio/defaultprogress.cpp
deleted file mode 100644
index 72bec0cfc..000000000
--- a/kio/kio/defaultprogress.cpp
+++ /dev/null
@@ -1,507 +0,0 @@
-/* This file is part of the KDE libraries
- Copyright (C) 2000 Matej Koss <koss@miesto.sk>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License version 2 as published by the Free Software Foundation.
-
- This library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include <tqtimer.h>
-#include <tqlayout.h>
-#include <tqtooltip.h>
-#include <tqdatetime.h>
-#include <tqcheckbox.h>
-
-#include <kapplication.h>
-#include <kdebug.h>
-#include <kdialog.h>
-#include <kstringhandler.h>
-#include <kglobal.h>
-#include <klocale.h>
-#include <kiconloader.h>
-#include <kprocess.h>
-#include <kpushbutton.h>
-#include <kstandarddirs.h>
-#include <kstdguiitem.h>
-#include <klineedit.h>
-
-#ifdef Q_WS_X11
-#include <twin.h>
-#endif
-
-#include "jobclasses.h"
-#include "defaultprogress.h"
-
-namespace TDEIO {
-
-class DefaultProgress::DefaultProgressPrivate
-{
-public:
- bool keepOpenChecked;
- bool noCaptionYet;
- KPushButton *cancelClose;
- KPushButton *openFile;
- KPushButton *openLocation;
- TQCheckBox *keepOpen;
- KURL location;
- TQTime startTime;
-};
-
-DefaultProgress::DefaultProgress( bool showNow )
- : ProgressBase( 0 ),
- m_iTotalSize(0), m_iTotalFiles(0), m_iTotalDirs(0),
- m_iProcessedSize(0), m_iProcessedDirs(0), m_iProcessedFiles(0)
-{
- init();
-
- if ( showNow ) {
- show();
- }
-}
-
-DefaultProgress::DefaultProgress( TQWidget* parent, const char* /*name*/ )
- : ProgressBase( parent ),
- m_iTotalSize(0), m_iTotalFiles(0), m_iTotalDirs(0),
- m_iProcessedSize(0), m_iProcessedDirs(0), m_iProcessedFiles(0)
-{
- init();
-}
-
-bool DefaultProgress::keepOpen() const
-{
- return d->keepOpenChecked;
-}
-
-void DefaultProgress::init()
-{
- d = new DefaultProgressPrivate;
-
-#ifdef Q_WS_X11 //FIXME(E): Remove once all the KWin::foo calls have been ported to QWS
- // Set a useful icon for this window!
- KWin::setIcons( winId(),
- TDEGlobal::iconLoader()->loadIcon( "filesave", KIcon::NoGroup, 32 ),
- TDEGlobal::iconLoader()->loadIcon( "filesave", KIcon::NoGroup, 16 ) );
-#endif
-
- TQVBoxLayout *topLayout = new TQVBoxLayout( this, KDialog::marginHint(),
- KDialog::spacingHint() );
- topLayout->addStrut( 360 ); // makes dlg at least that wide
-
- TQGridLayout *grid = new TQGridLayout( 2, 3 );
- topLayout->addLayout(TQT_TQLAYOUT(grid));
- grid->addColSpacing(1, KDialog::spacingHint());
- // filenames or action name
- grid->addWidget(new TQLabel(i18n("Source:"), this), 0, 0);
-
- sourceEdit = new KLineEdit(this);
- sourceEdit->setReadOnly(true);
- sourceEdit->setEnableSqueezedText(true);
- grid->addWidget(sourceEdit, 0, 2);
-
- destInvite = new TQLabel(i18n("Destination:"), this);
- grid->addWidget(destInvite, 1, 0);
-
- destEdit = new KLineEdit(this);
- destEdit->setReadOnly (true);
- destEdit->setEnableSqueezedText(true);
- grid->addWidget(destEdit, 1, 2);
-
- m_pProgressBar = new KProgress(this);
- topLayout->addWidget( m_pProgressBar );
-
- // processed info
- TQHBoxLayout *hBox = new TQHBoxLayout();
- topLayout->addLayout(hBox);
-
- sizeLabel = new TQLabel(this);
- hBox->addWidget(sizeLabel);
-
- resumeLabel = new TQLabel(this);
- hBox->addWidget(resumeLabel);
-
- progressLabel = new TQLabel( this );
-/* progressLabel->setSizePolicy( TQSizePolicy( TQSizePolicy::MinimumExpanding,
- TQSizePolicy::Preferred ) );*/
- progressLabel->setAlignment( TQLabel::AlignRight );
- hBox->addWidget( progressLabel );
-
- hBox = new TQHBoxLayout();
- topLayout->addLayout(hBox);
-
- speedLabel = new TQLabel(this);
- hBox->addWidget(speedLabel, 1);
-
- TQFrame *line = new TQFrame( this );
- line->setFrameShape( TQFrame::HLine );
- line->setFrameShadow( TQFrame::Sunken );
- topLayout->addWidget( line );
-
- d->keepOpen = new TQCheckBox( i18n("&Keep this window open after transfer is complete"), this);
- connect( d->keepOpen, TQT_SIGNAL( toggled(bool) ), TQT_SLOT( slotKeepOpenToggled(bool) ) );
- topLayout->addWidget(d->keepOpen);
- d->keepOpen->hide();
-
- hBox = new TQHBoxLayout();
- topLayout->addLayout(hBox);
-
- d->openFile = new KPushButton( i18n("Open &File"), this );
- connect( d->openFile, TQT_SIGNAL( clicked() ), TQT_SLOT( slotOpenFile() ) );
- hBox->addWidget( d->openFile );
- d->openFile->setEnabled(false);
- d->openFile->hide();
-
- d->openLocation = new KPushButton( i18n("Open &Destination"), this );
- connect( d->openLocation, TQT_SIGNAL( clicked() ), TQT_SLOT( slotOpenLocation() ) );
- hBox->addWidget( d->openLocation );
- d->openLocation->hide();
-
- hBox->addStretch(1);
-
- d->cancelClose = new KPushButton( KStdGuiItem::cancel(), this );
- connect( d->cancelClose, TQT_SIGNAL( clicked() ), TQT_SLOT( slotStop() ) );
- hBox->addWidget( d->cancelClose );
-
- resize( sizeHint() );
- setMaximumHeight(sizeHint().height());
-
- d->keepOpenChecked = false;
- d->noCaptionYet = true;
- setCaption(i18n("Progress Dialog")); // show something better than kio_uiserver
-}
-
-DefaultProgress::~DefaultProgress()
-{
- delete d;
-}
-
-void DefaultProgress::slotTotalSize( TDEIO::Job*, TDEIO::filesize_t size )
-{
- // size is measured in bytes
- if ( m_iTotalSize == size )
- return;
- m_iTotalSize = size;
- if (d->startTime.isNull())
- d->startTime.start();
-}
-
-
-void DefaultProgress::slotTotalFiles( TDEIO::Job*, unsigned long files )
-{
- if ( m_iTotalFiles == files )
- return;
- m_iTotalFiles = files;
- showTotals();
-}
-
-
-void DefaultProgress::slotTotalDirs( TDEIO::Job*, unsigned long dirs )
-{
- if ( m_iTotalDirs == dirs )
- return;
- m_iTotalDirs = dirs;
- showTotals();
-}
-
-void DefaultProgress::showTotals()
-{
- // Show the totals in the progress label, if we still haven't
- // processed anything. This is useful when the stat'ing phase
- // of CopyJob takes a long time (e.g. over networks).
- if ( m_iProcessedFiles == 0 && m_iProcessedDirs == 0 )
- {
- TQString tmps;
- if ( m_iTotalDirs > 1 )
- // that we have a singular to translate looks weired but is only logical
- // xgettext: no-c-format
- tmps = i18n("%n folder", "%n folders", m_iTotalDirs) + " ";
- // xgettext: no-c-format
- tmps += i18n("%n file", "%n files", m_iTotalFiles);
- progressLabel->setText( tmps );
- }
-}
-
-//static
-TQString DefaultProgress::makePercentString( unsigned long percent,
- TDEIO::filesize_t totalSize,
- unsigned long totalFiles )
-{
- if ( totalSize )
- return i18n( "%1 % of %2 " ).arg( TQString::number(percent) , TDEIO::convertSize( totalSize ) );
- else if ( totalFiles )
- return i18n( "%1 % of 1 file", "%1 % of %n files", totalFiles ).arg( percent );
- else
- return i18n( "%1 %" ).arg( percent );
-}
-
-void DefaultProgress::slotPercent( TDEIO::Job*, unsigned long percent )
-{
- TQString caption = makePercentString( percent, m_iTotalSize, m_iTotalFiles );
- m_pProgressBar->setValue( percent );
- switch(mode) {
- case Copy:
- caption.append(i18n(" (Copying)"));
- break;
- case Move:
- caption.append(i18n(" (Moving)"));
- break;
- case Delete:
- caption.append(i18n(" (Deleting)"));
- break;
- case Create:
- caption.append(i18n(" (Creating)"));
- break;
- case Done:
- caption.append(i18n(" (Done)"));
- break;
- }
-
- setCaption( caption );
- d->noCaptionYet = false;
-}
-
-
-void DefaultProgress::slotInfoMessage( TDEIO::Job*, const TQString & msg )
-{
- speedLabel->setText( msg );
- speedLabel->setAlignment( speedLabel->alignment() & ~TQt::WordBreak );
-}
-
-
-void DefaultProgress::slotProcessedSize( TDEIO::Job*, TDEIO::filesize_t bytes ) {
- if ( m_iProcessedSize == bytes )
- return;
- m_iProcessedSize = bytes;
-
- TQString tmp = i18n( "%1 of %2 complete")
- .arg( TDEIO::convertSize(bytes) )
- .arg( TDEIO::convertSize(m_iTotalSize));
- sizeLabel->setText( tmp );
-}
-
-
-void DefaultProgress::slotProcessedDirs( TDEIO::Job*, unsigned long dirs )
-{
- if ( m_iProcessedDirs == dirs )
- return;
- m_iProcessedDirs = dirs;
-
- TQString tmps;
- tmps = i18n("%1 / %n folder", "%1 / %n folders", m_iTotalDirs).arg( m_iProcessedDirs );
- tmps += " ";
- tmps += i18n("%1 / %n file", "%1 / %n files", m_iTotalFiles).arg( m_iProcessedFiles );
- progressLabel->setText( tmps );
-}
-
-
-void DefaultProgress::slotProcessedFiles( TDEIO::Job*, unsigned long files )
-{
- if ( m_iProcessedFiles == files )
- return;
- m_iProcessedFiles = files;
-
- TQString tmps;
- if ( m_iTotalDirs > 1 ) {
- tmps = i18n("%1 / %n folder", "%1 / %n folders", m_iTotalDirs).arg( m_iProcessedDirs );
- tmps += " ";
- }
- tmps += i18n("%1 / %n file", "%1 / %n files", m_iTotalFiles).arg( m_iProcessedFiles );
- progressLabel->setText( tmps );
-}
-
-
-void DefaultProgress::slotSpeed( TDEIO::Job*, unsigned long speed )
-{
- if ( speed == 0 ) {
- speedLabel->setText( i18n( "Stalled") );
- } else {
- speedLabel->setText( i18n( "%1/s ( %2 remaining )").arg( TDEIO::convertSize( speed ))
- .arg( TDEIO::convertSeconds( TDEIO::calculateRemainingSeconds( m_iTotalSize, m_iProcessedSize, speed ))) );
- }
-}
-
-
-void DefaultProgress::slotCopying( TDEIO::Job*, const KURL& from, const KURL& to )
-{
- if ( d->noCaptionYet ) {
- setCaption(i18n("Copy File(s) Progress"));
- d->noCaptionYet = false;
- }
- mode = Copy;
- sourceEdit->setText(from.prettyURL());
- setDestVisible( true );
- checkDestination( to );
- destEdit->setText(to.prettyURL());
-}
-
-
-void DefaultProgress::slotMoving( TDEIO::Job*, const KURL& from, const KURL& to )
-{
- if ( d->noCaptionYet ) {
- setCaption(i18n("Move File(s) Progress"));
- d->noCaptionYet = false;
- }
- mode = Move;
- sourceEdit->setText(from.prettyURL());
- setDestVisible( true );
- checkDestination( to );
- destEdit->setText(to.prettyURL());
-}
-
-
-void DefaultProgress::slotCreatingDir( TDEIO::Job*, const KURL& dir )
-{
- if ( d->noCaptionYet ) {
- setCaption(i18n("Creating Folder"));
- d->noCaptionYet = false;
- }
- mode = Create;
- sourceEdit->setText(dir.prettyURL());
- setDestVisible( false );
-}
-
-
-void DefaultProgress::slotDeleting( TDEIO::Job*, const KURL& url )
-{
- if ( d->noCaptionYet ) {
- setCaption(i18n("Delete File(s) Progress"));
- d->noCaptionYet = false;
- }
- mode = Delete;
- sourceEdit->setText(url.prettyURL());
- setDestVisible( false );
-}
-
-void DefaultProgress::slotTransferring( TDEIO::Job*, const KURL& url )
-{
- if ( d->noCaptionYet ) {
- setCaption(i18n("Loading Progress"));
- d->noCaptionYet = false;
- }
- sourceEdit->setText(url.prettyURL());
- setDestVisible( false );
-}
-
-void DefaultProgress::slotStating( TDEIO::Job*, const KURL& url )
-{
- setCaption(i18n("Examining File Progress"));
- sourceEdit->setText(url.prettyURL());
- setDestVisible( false );
-}
-
-void DefaultProgress::slotMounting( TDEIO::Job*, const TQString & dev, const TQString & point )
-{
- setCaption(i18n("Mounting %1").arg(dev));
- sourceEdit->setText(point);
- setDestVisible( false );
-}
-
-void DefaultProgress::slotUnmounting( TDEIO::Job*, const TQString & point )
-{
- setCaption(i18n("Unmounting"));
- sourceEdit->setText(point);
- setDestVisible( false );
-}
-
-void DefaultProgress::slotCanResume( TDEIO::Job*, TDEIO::filesize_t resume )
-{
- if ( resume ) {
- resumeLabel->setText( i18n("Resuming from %1").arg(TDEIO::number(resume)) );
- } else {
- resumeLabel->setText( i18n("Not resumable") );
- }
-}
-
-void DefaultProgress::setDestVisible( bool visible )
-{
- // We can't hide the destInvite/destEdit labels,
- // because it screws up the TQGridLayout.
- if (visible)
- {
- destInvite->show();
- destEdit->show();
-
- destInvite->setText( i18n("Destination:") );
- }
- else
- {
- destInvite->hide();
- destEdit->hide();
- destInvite->setText( TQString::null );
- destEdit->setText( TQString::null );
- }
-}
-
-void DefaultProgress::slotClean() {
- if (d->keepOpenChecked) {
- mode = Done;
- slotPercent(0, 100);
- d->cancelClose->setGuiItem( KStdGuiItem::close() );
- d->openFile->setEnabled(true);
- slotProcessedSize(0, m_iTotalSize);
- d->keepOpen->setEnabled(false);
- if (!d->startTime.isNull()) {
- int s = d->startTime.elapsed();
- if (!s)
- s = 1;
- speedLabel->setText(i18n("%1/s (done)").arg(TDEIO::convertSize(1000 * m_iTotalSize / s)));
- }
- setOnlyClean(false);
- }
- else
- hide();
-}
-
-void DefaultProgress::slotKeepOpenToggled(bool keepopen)
-{
- d->keepOpenChecked=keepopen;
-}
-
-void DefaultProgress::checkDestination(const KURL& dest) {
- bool ok = true;
- if ( dest.isLocalFile() ) {
- TQString path = dest.path( -1 );
- TQStringList tmpDirs = TDEGlobal::dirs()->resourceDirs( "tmp" );
- for ( TQStringList::Iterator it = tmpDirs.begin() ; ok && it != tmpDirs.end() ; ++it )
- if ( path.contains( *it ) )
- ok = false; // it's in the tmp resource
- }
-
- if ( ok ) {
- d->openFile->show();
- d->openLocation->show();
- d->keepOpen->show();
- d->location=dest;
- }
-}
-
-void DefaultProgress::slotOpenFile()
-{
- TDEProcess proc;
- proc << "konqueror" << d->location.prettyURL();
- proc.start(TDEProcess::DontCare);
-}
-
-void DefaultProgress::slotOpenLocation()
-{
- TDEProcess proc;
- d->location.setFileName("");
- proc << "konqueror" << d->location.prettyURL();
- proc.start(TDEProcess::DontCare);
-}
-
-void DefaultProgress::virtual_hook( int id, void* data )
-{ ProgressBase::virtual_hook( id, data ); }
-
-} /* namespace */
-
-#include "defaultprogress.moc"