[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdenetwork/kget
From: Urs Wolfer <uwolfer () kde ! org>
Date: 2007-10-13 9:15:59
Message-ID: 1192266959.186906.25137.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 724749 by uwolfer:
Usability improvment: New-Transfer dialog also shown when started KGet with downloads \
in startup args (e.g. Konqueror Plugin does it this way). New functionality to edit, \
activate / deactitivate downloads in this dialog. More consistent look and feel now.
Work done by Lukas Appelhans. Thanks! (slightly modified by me)
CCMAIL: l.appelhans@gmx.de
M +1 -1 CMakeLists.txt
M +14 -9 main.cpp
M +10 -3 mainwindow.cpp
M +9 -7 ui/droptarget.cpp
M +153 -90 ui/newtransferdialog.cpp
M +28 -24 ui/newtransferdialog.h
D ui/newtransferdialog.ui
A ui/newtransferwidget.ui ui/newtransferdialog.ui#724745
--- trunk/KDE/kdenetwork/kget/CMakeLists.txt #724748:724749
@@ -77,7 +77,7 @@
conf/dlgdirectories.ui
conf/dlgnetwork.ui
ui/transferdetailsfrm.ui
- ui/newtransferdialog.ui
+ ui/newtransferwidget.ui
)
kde4_add_executable(kget ${kget_SRCS})
--- trunk/KDE/kdenetwork/kget/main.cpp #724748:724749
@@ -23,6 +23,7 @@
#include "settings.h"
#include "ui/splash.h"
#include "mainwindow.h"
+#include "ui/newtransferdialog.h"
class KGetApp : public KUniqueApplication
{
@@ -77,25 +78,29 @@
l.push_back(KUrl(args->arg(i)));
}
- // the last arg read (when we have more than 1 arg) is considered
- // as destination dir for the previous downloads
+ args->clear();
+ if (splash)
+ splash->removeSplash();
+
+ // the last arg read (when we have more than 1 arg) is considered
+ // as destination dir for the previous downloads
// if there is a valid local file
QString destUrl;
if (l.count() >= 2 && l.last().isLocalFile()) {
if (!QFileInfo(l.last().path()).isDir())
destUrl = l.last().directory();
- else
+ else
destUrl = l.last().path();
l.removeLast();
+ KGet::addTransfer(l, destUrl, QString(), true);
+ return 0;
}
// all the args read from command line are downloads
- if (l.count() >= 1)
- KGet::addTransfer(l, destUrl, QString(), true);
-
- args->clear();
- if ( splash )
- splash->removeSplash();
+ if (l.count() == 1)
+ NewTransferDialog::showNewTransferDialog(l.takeFirst().url());
+ if (l.count() > 1 && !l.last().isLocalFile())
+ NewTransferDialog::showNewTransferDialog(l);
return 0;
}
--- trunk/KDE/kdenetwork/kget/mainwindow.cpp #724748:724749
@@ -604,11 +604,18 @@
QString str;
if (!list.isEmpty())
- KGet::addTransfer(list);
+ {
+ if (list.count() == 1)
+ {
+ str = event->mimeData()->text();
+ NewTransferDialog::showNewTransferDialog(str);
+ }
+ else
+ NewTransferDialog::showNewTransferDialog(list);
+ }
else
{
- str = event->mimeData()->text();
- KGet::addTransfer(KUrl(str));
+ NewTransferDialog::showNewTransferDialog();
}
}
--- trunk/KDE/kdenetwork/kget/ui/droptarget.cpp #724748:724749
@@ -14,6 +14,7 @@
#include "core/kget.h"
#include "settings.h"
#include "mainwindow.h"
+#include "ui/newtransferdialog.h"
#include <kwindowsystem.h>
#include <klocale.h>
@@ -212,16 +213,17 @@
if (!list.isEmpty())
{
- KUrl::List::Iterator it = list.begin();
- KUrl::List::Iterator itEnd = list.end();
-
- for( ; it!=itEnd ; ++it )
- KGet::addTransfer(*it, QString(), QString(), true);
+ if (list.count() == 1)
+ {
+ str = event->mimeData()->text();
+ NewTransferDialog::showNewTransferDialog(str);
+ }
+ else
+ NewTransferDialog::showNewTransferDialog(list);
}
else
{
- str = event->mimeData()->text();
- KGet::addTransfer(KUrl(str), QString(), QString(), true);
+ NewTransferDialog::showNewTransferDialog(str);
}
if ( Settings::animateDropTarget() )
--- trunk/KDE/kdenetwork/kget/ui/newtransferdialog.cpp #724748:724749
@@ -16,63 +16,140 @@
#include "settings.h"
#include <QWidget>
-#include <QVBoxLayout>
#include <QApplication>
#include <QClipboard>
-#include <KUrl>
#include <KLocale>
+#include <KListWidget>
+#include <QListWidgetItem>
+#include <KLineEdit>
#include <KComboBox>
-#include <KTitleWidget>
+#include <KDebug>
NewTransferDialog::NewTransferDialog(QWidget *parent)
- : KDialog(parent)
+ : KDialog(parent),
+ m_multiple(false)
{
setCaption(i18n("New Download"));
+ setMinimumSize(400, 300);
+ showButtonSeparator(true);
- m_transferWidget = new NewTransferWidget();
+ QWidget *mainWidget = new QWidget(this);
- QVBoxLayout *layout = new QVBoxLayout();
- QWidget *mainWidget = new QWidget();
- KTitleWidget *title = new KTitleWidget(this);
+ Ui::NewTransferWidget widget;
+ widget.setupUi(mainWidget);
- title->setText(i18n("New Download"));
- title->setPixmap(KIcon("document-new").pixmap(22), KTitleWidget::ImageLeft);
- layout->addWidget(title);
- layout->addWidget(m_transferWidget);
- mainWidget->setLayout(layout);
-
+ m_gridLayout = widget.gridLayout;
+ m_titleWidget = widget.titleWidget;
+ m_folderRequester = widget.folderRequester;
+ m_groupComboBox = widget.groupComboBox;
+ m_defaultFolderButton = widget.defaultFolderButton;
setMainWidget(mainWidget);
+ prepareGui();
}
-NewTransferDialog::~NewTransferDialog()
+void NewTransferDialog::showNewTransferDialog(const QString &srcUrl)
{
+ NewTransferDialog *dialog = new NewTransferDialog();
+ dialog->setMultiple(false);
+ dialog->setSource(srcUrl);
+
+ NewTransferDialog::showNewTransferDialog(dialog);
}
-NewTransferWidget *NewTransferDialog::transferWidget()
+void NewTransferDialog::showNewTransferDialog(const KUrl::List &list)
{
- return m_transferWidget;
+ NewTransferDialog *dialog = new NewTransferDialog();
+ dialog->setMultiple(true);
+ dialog->setSource(list);
+
+ NewTransferDialog::showNewTransferDialog(dialog);
}
-void NewTransferDialog::slotButtonClicked(int button)
+bool NewTransferDialog::multiple() const
{
- if(button == KDialog::Cancel) {
- transferWidget()->setUrl(QString());
- transferWidget()->setFolderPath(QString());
+ return m_multiple;
+}
+
+void NewTransferDialog::setMultiple(bool value)
+{
+ m_multiple = value;
+ if (multiple())
+ {
+ listWidget = new KListWidget();
+ m_gridLayout->addWidget(listWidget, 0, 1, 1, 1);
}
+ else
+ {
+ urlRequester = new KLineEdit();
+ m_gridLayout->addWidget(urlRequester, 0, 1, 1, 1);
+ }
+}
- KDialog::slotButtonClicked(button);
+void NewTransferDialog::setSource(const QString &srcUrl)
+{
+ urlRequester->clear();
+ if (srcUrl.isEmpty())
+ {
+ KUrl clipboardUrl = \
KUrl(QApplication::clipboard()->text(QClipboard::Clipboard).trimmed()); + if \
(clipboardUrl.isValid()) + urlRequester->insert(clipboardUrl.url());
+ }
+ else
+ {
+ urlRequester->insert(srcUrl);
+ }
}
-void NewTransferDialog::showNewTransferDialog()
+void NewTransferDialog::setSource(const KUrl::List &list)
{
- QString srcUrl;
+ KUrl::List::const_iterator it = list.begin();
+ KUrl::List::const_iterator itEnd = list.end();
+
+ for (; it!=itEnd ; ++it)
+ {
+ QListWidgetItem *newItem = new QListWidgetItem(it->url(), listWidget);
+ newItem->setCheckState(Qt::Checked);
+ }
+}
+
+KUrl::List NewTransferDialog::source() const
+{
+ KUrl::List list;
+ if (multiple())
+ {
+ foreach (QListWidgetItem *item, listWidget->findItems(QString('*'), \
Qt::MatchWrap | Qt::MatchWildcard)) + {
+ if (item->checkState() == Qt::Checked)
+ list.append(KUrl(item->text()));
+ }
+ }
+ else
+ {
+ list.append(KUrl(urlRequester->text()));
+ }
+ return list;
+}
+
+void NewTransferDialog::setDestination(const QString &destination)
+{
+ m_folderRequester->comboBox()->addItem(destination);
+}
+
+QString NewTransferDialog::destination() const
+{
+ return m_folderRequester->url().url();
+}
+
+QString NewTransferDialog::transferGroup() const
+{
+ return m_groupComboBox->currentText();
+}
+
+void NewTransferDialog::showNewTransferDialog(NewTransferDialog *dialog)
+{
QString destDir;
- KUrl clipboardUrl = \
KUrl(QApplication::clipboard()->text(QClipboard::Clipboard).trimmed());
- if (clipboardUrl.isValid())
- srcUrl = clipboardUrl.url();
-
if (Settings::useDefaultDirectory())
#ifdef Q_OS_WIN //krazy:exclude=cpp
destDir = Settings::defaultDirectory().remove("file:///");
@@ -80,93 +157,79 @@
destDir = Settings::defaultDirectory().remove("file://");
#endif
- QString checkExceptions = KGet::getSaveDirectoryFromExceptions(srcUrl);
+ if (!dialog->source().isEmpty())
+ {
+ QString checkExceptions;
+ KGet::getSaveDirectoryFromExceptions(dialog->source().takeFirst());
+
if (Settings::enableExceptions() && !checkExceptions.isEmpty())
destDir = checkExceptions;
+ }
- NewTransferDialog dialog;
- dialog.transferWidget()->setFolderPath(destDir);
- dialog.transferWidget()->setUrl(srcUrl);
+ dialog->setDestination(destDir);
+ dialog->exec();
- dialog.exec();
+ KUrl::List srcUrls = dialog->source();
+ destDir = dialog->destination();
- srcUrl = dialog.transferWidget()->url();
- destDir = dialog.transferWidget()->folderPath();
-
- if(!srcUrl.isEmpty() && !destDir.isEmpty() && KGet::isValidSource(srcUrl)) {
+ if (dialog->result() == KDialog::Accepted)
+ {
+ if (!srcUrls.isEmpty() && !destDir.isEmpty()) {
#ifdef Q_OS_WIN //krazy:exclude=cpp
- destDir = destDir.remove("file:///");
+ destDir = destDir.remove("file:///");
+#else
+ destDir = destDir.remove("file://");
#endif
- destDir = destDir.remove("file://");
+ if(dialog->m_defaultFolderButton->checkState() == Qt::Checked)
+ {
+ Settings::setDefaultDirectory(destDir);
+ Settings::self()->writeConfig();
+ }
- if(dialog.transferWidget()->setAsDefaultFolder()) {
- Settings::setDefaultDirectory(destDir);
- Settings::self()->writeConfig();
+ QMutableListIterator <KUrl> it(srcUrls);
+ while (it.hasNext())
+ {
+ KUrl url = it.next();
+ if (!KGet::isValidSource(url))
+ {
+ srcUrls.removeAll(url);
+ }
+ }
+ KGet::addTransfer(srcUrls, destDir, dialog->transferGroup());
}
- KGet::addTransfer(srcUrl, destDir, dialog.transferWidget()->groupName());
}
}
-NewTransferWidget::NewTransferWidget(QWidget *parent)
- : QWidget(parent)
+void NewTransferDialog::prepareGui()
{
- setupUi(this);
-
// Only select directories
- folderRequester->setMode(KFile::Directory);
+ m_folderRequester->setMode(KFile::Directory);
- // properties of the folderRequester combobox
- folderRequester->comboBox()->setDuplicatesEnabled(false);
+ // properties of the m_folderRequester combobox
+ m_folderRequester->comboBox()->setDuplicatesEnabled(false);
// transfer groups
- groupComboBox->addItems(KGet::transferGroupNames());
+ m_groupComboBox->addItems(KGet::transferGroupNames());
// common usefull folders for the combobox of the url requester
- if(!Settings::defaultDirectory().isEmpty()) {
+ if (!Settings::defaultDirectory().isEmpty())
+ {
#ifdef Q_OS_WIN //krazy:exclude=cpp
- folderRequester->comboBox()->addItem(Settings::defaultDirectory().remove("file:///"));
+ m_folderRequester->comboBox()->addItem(Settings::defaultDirectory().remove("file:///"));
#else
- folderRequester->comboBox()->addItem(Settings::defaultDirectory().remove("file://"));
+ m_folderRequester->comboBox()->addItem(Settings::defaultDirectory().remove("file://"));
#endif
}
- if(!Settings::lastDirectory().isEmpty() &&
- QString::compare(Settings::lastDirectory(), Settings::defaultDirectory()) != \
0) {
- folderRequester->comboBox()->addItem(Settings::lastDirectory());
+ if (!Settings::lastDirectory().isEmpty() &&
+ QString::compare(Settings::lastDirectory(), Settings::defaultDirectory()) != \
0) + {
+ m_folderRequester->comboBox()->addItem(Settings::lastDirectory());
}
- groupComboBox->setCurrentIndex(0);
- folderRequester->comboBox()->setCurrentIndex(0);
+ m_groupComboBox->setCurrentIndex(0);
+ m_folderRequester->comboBox()->setCurrentIndex(0);
+ m_titleWidget->setPixmap(KIcon("document-new").pixmap(22, 22), \
KTitleWidget::ImageLeft); }
-void NewTransferWidget::setFolderPath(QString path)
-{
- if(!path.isEmpty()) {
- folderRequester->setPath(path);
- }
-}
-
-void NewTransferWidget::setUrl(QString url)
-{
- urlRequester->setText(url);
-}
-
-QString NewTransferWidget::folderPath() const
-{
- return folderRequester->url().url();
-}
-
-QString NewTransferWidget::url() const
-{
- return urlRequester->text();
-}
-
-QString NewTransferWidget::groupName() const
-{
- return groupComboBox->currentText();
-}
-
-bool NewTransferWidget::setAsDefaultFolder() const
-{
- return (defaultFolderButton->checkState() == Qt::Checked);
-}
+#include "newtransferdialog.moc"
--- trunk/KDE/kdenetwork/kget/ui/newtransferdialog.h #724748:724749
@@ -12,43 +12,47 @@
#ifndef NEW_TRANSFER_DIALOG_H
#define NEW_TRANSFER_DIALOG_H
-#include <QWidget>
#include <KDialog>
+#include <KUrl>
-#include "ui_newtransferdialog.h"
+#include "ui_newtransferwidget.h"
-class NewTransferWidget : public QWidget, Ui::NewTransferWidget
+class KListWidget;
+
+class NewTransferDialog : public KDialog, Ui::NewTransferWidget
{
Q_OBJECT
public:
- NewTransferWidget(QWidget *parent=0);
+ NewTransferDialog(QWidget *parent = 0);
- void setFolderPath(QString folder);
- void setUrl(QString url);
+ static void showNewTransferDialog(const QString &srcUrl = QString());
+ static void showNewTransferDialog(const KUrl::List &list);
- QString folderPath() const;
- QString url() const;
- QString groupName() const;
- bool setAsDefaultFolder() const;
-};
+ void setSource(const QString &srcUrl = QString());
+ void setSource(const KUrl::List &list);
+ KUrl::List source() const;
+ void setDestination(const QString &destUrl);
+ QString destination() const;
+ QString transferGroup() const;
-class NewTransferDialog : public KDialog
-{
- Q_OBJECT
+ void setMultiple(bool multiple);
+ bool multiple() const;
-public:
- NewTransferDialog(QWidget *parent=0);
- ~NewTransferDialog();
+private:
+ static void showNewTransferDialog(NewTransferDialog *dialog);
+ void prepareGui();
- static void showNewTransferDialog();
- NewTransferWidget *transferWidget();
+ bool m_multiple;
-protected slots:
- void slotButtonClicked(int button);
-
-private:
- NewTransferWidget *m_transferWidget;
+ KListWidget *listWidget;
+ KLineEdit *urlRequester;
+ QGridLayout *m_gridLayout;
+ KTitleWidget *m_titleWidget;
+ QGridLayout *m_gridLayout1;
+ KUrlComboRequester *m_folderRequester;
+ QComboBox *m_groupComboBox;
+ QCheckBox *m_defaultFolderButton;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic