1 /* This file is part of the KDE project
3 Copyright (C) 2005 Dario Massarin <nekkar@libero.it>
4 Copyright (C) 2007 by Javier Goday <jgoday@gmail.com>
5 Copyright (C) 2008 by Lukas Appelhans <l.appelhans@gmx.de>
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public
9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version.
13 #include "newtransferdialog.h"
15 #include "core/kget.h"
16 #include "core/transfertreemodel.h"
20 #include <QApplication>
25 #include <KListWidget>
26 #include <QListWidgetItem>
31 NewTransferDialog::NewTransferDialog(QWidget
*parent
)
35 setCaption(i18n("New Download"));
36 showButtonSeparator(true);
38 QWidget
*mainWidget
= new QWidget(this);
40 Ui::NewTransferWidget widget
;
41 widget
.setupUi(mainWidget
);
43 m_gridLayout1
= widget
.gridLayout1
;
44 m_titleWidget
= widget
.titleWidget
;
45 m_destRequester
= widget
.destRequester
;
46 m_groupComboBox
= widget
.groupComboBox
;
47 m_defaultFolderButton
= widget
.defaultFolderButton
;
48 m_groupLabel
= widget
.groupLabel
;
49 setMainWidget(mainWidget
);
53 void NewTransferDialog::showNewTransferDialog(const QString
&srcUrl
)
55 NewTransferDialog
*dialog
= new NewTransferDialog();
56 dialog
->setMultiple(false);
57 dialog
->setSource(srcUrl
);
59 NewTransferDialog::showNewTransferDialog(dialog
);
62 void NewTransferDialog::showNewTransferDialog(const KUrl::List
&list
)
64 NewTransferDialog
*dialog
= new NewTransferDialog();
65 dialog
->setMultiple(true);
66 dialog
->setSource(list
);
68 NewTransferDialog::showNewTransferDialog(dialog
);
71 bool NewTransferDialog::multiple() const
76 void NewTransferDialog::setMultiple(bool value
)
81 listWidget
= new KListWidget();
82 m_gridLayout1
->addWidget(listWidget
, 0, 1, 1, 1);
83 m_destRequester
->setMode(KFile::Directory
);
87 urlRequester
= new KLineEdit();
88 urlRequester
->setClearButtonShown(true);
89 m_gridLayout1
->addWidget(urlRequester
, 0, 1, 1, 1);
90 m_destRequester
->setMode(KFile::File
);
94 void NewTransferDialog::setSource(const QString
&srcUrl
)
96 KUrl m_srcUrl
= srcUrl
;
97 urlRequester
->clear();
98 if (m_srcUrl
.isEmpty())
99 m_srcUrl
= KUrl(QApplication::clipboard()->text(QClipboard::Clipboard
).trimmed());
101 if (m_srcUrl
.isValid())
102 urlRequester
->insert(m_srcUrl
.url());
105 void NewTransferDialog::setSource(const KUrl::List
&list
)
107 KUrl::List::const_iterator it
= list
.begin();
108 KUrl::List::const_iterator itEnd
= list
.end();
110 for (; it
!=itEnd
; ++it
)
112 if (it
->url() != KUrl(it
->url()).fileName())
114 kDebug(5001) << "Insert " + it
->url();
115 QListWidgetItem
*newItem
= new QListWidgetItem(it
->url(), listWidget
);
116 newItem
->setCheckState(Qt::Checked
);
121 KUrl::List
NewTransferDialog::source() const
126 foreach (QListWidgetItem
*item
, listWidget
->findItems(QString('*'), Qt::MatchWrap
| Qt::MatchWildcard
))
128 if (item
->checkState() == Qt::Checked
)
129 list
.append(KUrl(item
->text()));
134 list
.append(KUrl(urlRequester
->text()));
139 void NewTransferDialog::setDestination(const QString
&destination
)
141 if (!QUrl(destination
).isValid())
144 m_destRequester
->comboBox()->insertItem(0, destination
);
145 m_destRequester
->comboBox()->setCurrentIndex(0);
148 QString
NewTransferDialog::destination() const
150 return m_destRequester
->url().url();
153 QString
NewTransferDialog::transferGroup() const
155 return m_groupComboBox
->currentText();
158 void NewTransferDialog::showNewTransferDialog(NewTransferDialog
*dialog
)
162 if (Settings::useDefaultDirectory())
163 #ifdef Q_OS_WIN //krazy:exclude=cpp
164 destDir
= Settings::defaultDirectory().remove("file:///");
166 destDir
= Settings::defaultDirectory().remove("file://");
169 if (!dialog
->source().isEmpty())
171 QString checkExceptions
= KGet::getSaveDirectoryFromExceptions(dialog
->source().first());
173 if (Settings::enableExceptions() && !checkExceptions
.isEmpty())
175 destDir
= checkExceptions
;
179 if (!Settings::lastDirectory().isEmpty() &&
180 QString::compare(Settings::lastDirectory(), Settings::defaultDirectory()) != 0)
182 if (dialog
->multiple())
183 dialog
->setDestination(Settings::lastDirectory());
185 dialog
->setDestination(Settings::lastDirectory() + '/' + dialog
->source().first().fileName());
188 if (!destDir
.isEmpty())
190 if (dialog
->multiple())
191 dialog
->setDestination(destDir
);
193 dialog
->setDestination(destDir
+ '/' + dialog
->source().first().fileName());
196 if (dialog
->destination().isEmpty())
197 dialog
->setDestination(QDir::home().path() + '/' + dialog
->source().first().fileName());
201 KUrl::List srcUrls
= dialog
->source();
202 destDir
= dialog
->destination();
204 if (dialog
->result() == KDialog::Accepted
)
206 #ifdef Q_OS_WIN //krazy:exclude=cpp
207 destDir
= destDir
.remove("file:///");
209 destDir
= destDir
.remove("file://");
212 if (dialog
->multiple())
215 dir
= KUrl(destDir
).directory();
217 if(dialog
->m_defaultFolderButton
->checkState() == Qt::Checked
)
219 Settings::setDefaultDirectory(dir
);
220 Settings::setUseDefaultDirectory(true);
221 Settings::self()->writeConfig();
225 Settings::setLastDirectory(dir
);
226 Settings::self()->writeConfig();
228 kDebug(5001) << srcUrls
;
229 if (srcUrls
.count() == 1)
230 KGet::addTransfer(srcUrls
.takeFirst(), destDir
, dialog
->transferGroup());
232 KGet::addTransfer(srcUrls
, destDir
, dialog
->transferGroup());
236 void NewTransferDialog::prepareGui()
238 // properties of the m_destRequester combobox
239 m_destRequester
->comboBox()->setDuplicatesEnabled(false);
242 m_groupComboBox
->addItems(KGet::transferGroupNames());
244 if (KGet::transferGroupNames().count() < 2)
246 m_groupComboBox
->hide();
247 m_groupLabel
->hide();
248 setMinimumSize(420, 250);
251 setMinimumSize(420, 300);
253 m_groupComboBox
->setCurrentIndex(0);
254 m_titleWidget
->setPixmap(KIcon("document-new").pixmap(22, 22), KTitleWidget::ImageLeft
);
257 #include "newtransferdialog.moc"