summaryrefslogtreecommitdiffstats
path: root/kget/dlgIndividual.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kget/dlgIndividual.cpp')
-rw-r--r--kget/dlgIndividual.cpp379
1 files changed, 379 insertions, 0 deletions
diff --git a/kget/dlgIndividual.cpp b/kget/dlgIndividual.cpp
new file mode 100644
index 00000000..72fc6c7d
--- /dev/null
+++ b/kget/dlgIndividual.cpp
@@ -0,0 +1,379 @@
+/***************************************************************************
+* dlgIndividual.cpp
+* -------------------
+*
+* Revision : $Id$
+* begin : Tue Jan 29 2002
+* copyright : (C) 2002 by Patrick Charbonnier
+* : Based On Caitoo v.0.7.3 (c) 1998 - 2000, Matej Koss
+* email : pch@freeshell.org
+*
+****************************************************************************/
+
+/***************************************************************************
+ *
+ * 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.
+ *
+ ***************************************************************************/
+
+
+#include <qlayout.h>
+
+#include "dockindividual.h"
+
+#include <qlabel.h>
+#include <qtabwidget.h>
+#include <kprogress.h>
+#include <qtextedit.h>
+#include <qcheckbox.h>
+#include <kpushbutton.h>
+#include <ksqueezedtextlabel.h>
+#include <kdatetimewidget.h>
+
+#include <kapplication.h>
+#include <kaction.h>
+#include <klocale.h>
+#include <ktoolbar.h>
+#include <krun.h>
+#include <kio/global.h>
+#include "common.h"
+
+#include "transfer.h"
+
+#include "settings.h"
+#include "dlgIndividual.h"
+
+
+DlgIndividual::DlgIndividual(Transfer * _item)
+ : QWidget(0, "dialog", WDestructiveClose)
+{
+ item = _item;
+
+ //create dock
+ m_pDockIndividual =new DockIndividual(this);
+
+
+ // Actions
+
+ m_paDock = new KToggleAction(i18n("&Dock"),"tool_dock.png", 0, this, SLOT(slotToggleDock()), this, "dockIndividual");
+
+
+ QVBoxLayout *topLayout = new QVBoxLayout( this, KDialog::marginHint(),KDialog::spacingHint() );
+ topLayout->addStrut( 360 ); // makes dlg at least that wide
+
+ QGridLayout *grid = new QGridLayout( 2, 3 );
+ topLayout->addLayout(grid);
+ grid->addColSpacing(1, KDialog::spacingHint());
+
+ grid->addWidget(new QLabel(i18n("Source:"), this), 0, 0);
+
+ sourceLabel = new KSqueezedTextLabel(this);
+ grid->addWidget(sourceLabel, 0, 2);
+ sourceLabel->setText(i18n("Source Label"));
+ grid->addWidget(new QLabel(i18n("Destination:"), this), 1, 0);
+
+ destLabel = new KSqueezedTextLabel(this);
+ grid->addWidget(destLabel, 1, 2);
+ destLabel->setText(i18n("Source Label"));
+
+ m_pProgressBar = new KProgress(this);
+ topLayout->addWidget( m_pProgressBar );
+
+ // processed info
+ QHBoxLayout *hBox = new QHBoxLayout();
+ topLayout->addLayout(hBox);
+
+ sizeLabel = new QLabel(this);
+ hBox->addWidget(sizeLabel);
+ resumeLabel = new QLabel(this);
+ hBox->addWidget(resumeLabel);
+
+ speedLabel = new QLabel(this);
+ speedLabel->setText(i18n("0 B/s"));
+ topLayout->addWidget(speedLabel);
+
+ // setup toolbar
+ KToolBar *toolBar = new KToolBar(this);
+ toolBar->setIconText(KToolBar::IconOnly);
+ toolBar->setBarPos(KToolBar::Bottom);
+ toolBar->setMovingEnabled(false);
+ toolBar->setFlat(true);
+
+ topLayout->addWidget( toolBar );
+
+ // insert toolbar actions
+ item->m_paResume->plug(toolBar);
+ item->m_paPause->plug(toolBar);
+ item->m_paDelete->plug(toolBar);
+
+ toolBar->insertLineSeparator();
+
+ item->m_paQueue->plug(toolBar);
+ item->m_paTimer->plug(toolBar);
+ item->m_paDelay->plug(toolBar);
+
+ toolBar->insertLineSeparator();
+ m_paDock->plug(toolBar);
+
+
+
+ QCheckBox * keepOpen = new QCheckBox( i18n("&Keep this window open after the operation is complete."), this);
+ connect( keepOpen, SIGNAL( toggled(bool) ), SLOT( slotKeepOpenToggled(bool) ) );
+ topLayout->addWidget(keepOpen);
+
+ QFrame *line3 = new QFrame( this );
+ line3->setFrameShape( QFrame::HLine );
+ line3->setFrameShadow( QFrame::Sunken );
+ topLayout->addWidget( line3 );
+
+ hBox = new QHBoxLayout();
+ topLayout->addLayout(hBox);
+
+ openFile = new KPushButton( i18n("Open &File"), this );
+ connect( openFile, SIGNAL( clicked() ), SLOT( slotOpenFile() ) );
+ hBox->addWidget( openFile );
+ openFile->setEnabled(false);
+
+ openLocation = new KPushButton( i18n("Open &Destination"), this );
+ connect( openLocation, SIGNAL( clicked() ), SLOT( slotOpenLocation() ) );
+ hBox->addWidget( openLocation );
+
+ hBox->addStretch(1);
+
+ pbAdvanced = new KPushButton( i18n("Advanced"), this );
+
+ connect(pbAdvanced, SIGNAL(clicked()), SLOT(slotToggleAdvanced()));
+
+ hBox->addWidget( pbAdvanced );
+
+
+ // setup tab dialog
+ panelAdvanced = new QTabWidget(this);
+
+ // if the time was already set somewhere in the future, keep it
+ // otherwise set it to the current time
+ QDateTime dt;
+
+ if (item->getStartTime() < QDateTime::currentDateTime() && item->getMode() != Transfer::MD_SCHEDULED)
+ {
+ dt = QDateTime::currentDateTime();
+ }
+ else
+ {
+ dt = item->getStartTime();
+ }
+
+ spins = new KDateTimeWidget(dt, this, "spins");
+
+ panelAdvanced->addTab(spins, i18n("Timer"));
+ panelAdvanced->hide();
+
+ connect(spins, SIGNAL(valueChanged(const QDateTime &)), item, SLOT(slotStartTime(const QDateTime &)));
+
+ // adding item log
+ ml_log = new QTextEdit(panelAdvanced);
+ ml_log->setTextFormat(LogText);
+ ml_log->setReadOnly(true);
+ // ml_log->setFixedSize(sizeHint());
+ ml_log->setVScrollBarMode(QScrollView::Auto);
+ ml_log->setWordWrap(QTextEdit::NoWrap);
+
+ // ml_log->setSizePolicy(policy);
+
+ panelAdvanced->addTab(ml_log, i18n("Log"));
+ // panelAdvanced->setFixedSize(sizeHint());
+
+
+
+ topLayout->addWidget(panelAdvanced);
+ advanced = ksettings.b_advancedIndividual;
+ slotToggleAdvanced();
+
+ resize( minimumSizeHint() );
+ setMaximumHeight( height() );
+
+ //bool keepOpenChecked = false;
+ //bool noCaptionYet = true;
+ setCaption(i18n("Progress Dialog"));
+
+ bKeepDlgOpen=false;
+}
+
+
+void DlgIndividual::setTotalSize(KIO::filesize_t bytes)
+{
+ m_iTotalSize = bytes;
+}
+
+
+void DlgIndividual::setPercent(unsigned long percent)
+{
+ m_pProgressBar->setValue(percent);
+ m_pDockIndividual->setValue(percent);
+ setCaption(i18n("%1% of %2 - %3").arg(percent).arg(KIO::convertSize(m_iTotalSize)).arg(m_location.fileName()));
+}
+
+
+void DlgIndividual::setProcessedSize(KIO::filesize_t bytes)
+{
+ sizeLabel->setText(i18n("%1 of %2").arg(KIO::convertSize(bytes)).arg(KIO::convertSize(m_iTotalSize)));
+}
+
+
+void DlgIndividual::setSpeed(QString speed)
+{
+ speedLabel->setText(speed);
+ m_pDockIndividual->setTip(speed);
+}
+
+
+void DlgIndividual::setCopying(const KURL & from, const KURL & to)
+{
+ m_location=to;
+ setCaption(m_location.fileName());
+
+ sourceLabel->setText(from.prettyURL());
+ destLabel->setText(to.prettyURL());
+}
+
+
+void DlgIndividual::setCanResume(bool resume)
+{
+ if (resume)
+ resumeLabel->setText(i18n("Resumed"));
+ else
+ resumeLabel->setText(i18n("Not resumed"));
+}
+
+//void DlgIndividual::slotToggleAdvanced(bool advanced)
+void DlgIndividual::slotToggleAdvanced()
+{
+#ifdef _DEBUG
+ sDebugIn<<endl;
+#endif
+
+ if (advanced)
+ panelAdvanced->show();
+ else
+ {
+ panelAdvanced->hide();
+ adjustSize();
+ }
+ advanced = !advanced;
+
+#ifdef _DEBUG
+ sDebugOut<<endl;
+#endif
+}
+
+void DlgIndividual::slotToggleDock()
+{
+#ifdef _DEBUG
+ sDebugIn<<endl;
+#endif
+
+ if (m_paDock->isChecked())
+ {
+ m_pDockIndividual->show();
+ hide();
+ }
+ else
+ m_pDockIndividual->hide();
+
+#ifdef _DEBUG
+ sDebugOut<<endl;
+#endif
+}
+
+
+/** Sets the whole log */
+void DlgIndividual::setLog(const QString & _msg)
+{
+ ml_log->setText(_msg);
+}
+
+void DlgIndividual::appendLog(const QString & _msg)
+{
+ ml_log->append(_msg);
+}
+
+
+void DlgIndividual::slotKeepOpenToggled(bool bToggled)
+{
+#ifdef _DEBUG
+ sDebugIn <<"bToggled= "<<bToggled<<endl;
+#endif
+
+
+ bKeepDlgOpen=bToggled;
+
+ if (!bKeepDlgOpen && item->getStatus()==Transfer::ST_FINISHED)
+ {
+ hide();
+ m_pDockIndividual->hide();
+ }
+
+#ifdef _DEBUG
+ sDebugOut<<endl;
+#endif
+}
+
+
+void DlgIndividual::slotOpenLocation()
+{
+#ifdef _DEBUG
+ sDebugIn<<endl;
+#endif
+
+ KURL location=m_location;
+ location.setFileName("");
+ kapp->invokeBrowser( location.url() );
+
+#ifdef _DEBUG
+ sDebugOut<<endl;
+#endif
+}
+
+void DlgIndividual::slotOpenFile()
+{
+#ifdef _DEBUG
+ sDebugIn "Starting kfmclient with url "<<m_location.prettyURL()<<endl;
+#endif
+
+ (void) new KRun( m_location );
+
+#ifdef _DEBUG
+ sDebugOut<<endl;
+#endif
+}
+
+
+void DlgIndividual::enableOpenFile()
+{
+#ifdef _DEBUG
+ sDebugIn<<endl;
+#endif
+
+
+ openFile->setEnabled(true);
+
+ if (!bKeepDlgOpen)
+ {
+ hide();
+ m_pDockIndividual->hide();
+ }
+
+#ifdef _DEBUG
+ sDebugOut<<endl;
+#endif
+}
+
+#include "dlgIndividual.moc"