25 #include <QGridLayout>
26 #include <QGraphicsProxyWidget>
27 #include <QGraphicsLinearLayout>
30 #include <QProgressBar>
34 #include <KIconLoader>
36 #include <KTitleWidget>
37 #include <KWindowSystem>
38 #include <kio/global.h>
40 #include <plasma/applet.h>
41 #include <plasma/dataengine.h>
42 #include <plasma/dialog.h>
43 #include <plasma/svg.h>
44 #include <plasma/theme.h>
45 #include <plasma/widgets/iconwidget.h>
55 m_dialogLayout =
new QGridLayout(
this);
56 m_dialogLayout->setColumnStretch(0, 0);
57 m_dialogLayout->setColumnStretch(1, 0);
58 m_dialogLayout->setColumnStretch(2, 1);
59 setLayout(m_dialogLayout);
61 KTitleWidget *title =
new KTitleWidget(
this);
62 title->setText(i18n(
"KGet transfers"));
63 title->setPixmap(KIcon(
"kget").pixmap(22, 22), KTitleWidget::ImageRight);
64 m_dialogLayout->addWidget(title, 0, 0, 1, 3);
73 foreach (OrgKdeKgetTransferInterface* transfer, transfers) {
74 QLabel *icon =
new QLabel(
this);
75 QLabel *name =
new QLabel(
this);
76 QProgressBar *progressBar =
new QProgressBar(
this);
78 QString fileName = KUrl(transfer->source().value()).fileName();
79 icon->setPixmap(KIO::pixmapForUrl(fileName, 0, KIconLoader::Desktop, 16));
80 name->setText(fileName);
81 name->setStyleSheet(QString(
"color: %1;").
82 arg(Plasma::Theme::defaultTheme()->color(Plasma::Theme::TextColor).name()));
83 progressBar->setValue(transfer->percent().value());
85 int row = m_dialogLayout->rowCount();
87 m_dialogLayout->addWidget(icon, row, 0);
88 m_dialogLayout->addWidget(name, row, 1);
89 m_dialogLayout->addWidget(progressBar, row, 2);
97 foreach (OrgKdeKgetTransferInterface* transfer, transfers) {
98 int index = m_dialogLayout->indexOf(
m_transfers[transfer]);
99 int row, column, rowSpan, columnSpan;
100 m_dialogLayout->getItemPosition(index, &row, &column, &rowSpan, &columnSpan);
103 QList<QLayoutItem*> items;
104 for (
int i = 0; i != 3; i++) {
105 QLayoutItem * item = m_dialogLayout->itemAtPosition(row, i);
107 m_dialogLayout->removeItem(item);
108 delete item->widget();
119 int completedSize = 0;
120 QMap<OrgKdeKgetTransferInterface*, QProgressBar*>::const_iterator it;
121 QMap<OrgKdeKgetTransferInterface*, QProgressBar*>::const_iterator itEnd =
m_transfers.constEnd();
122 for (it =
m_transfers.constBegin(); it != itEnd; ++it) {
123 OrgKdeKgetTransferInterface *transfer = it.key();
124 (*it)->setValue(transfer->percent().value());
125 totalSize += transfer->totalSize().value();
126 completedSize += transfer->downloadedSize().value();
129 emit progressBarChanged((
int) ((completedSize * 100) / totalSize));
132 emit progressBarChanged(0);
139 for (
int row = 1; row < m_dialogLayout->rowCount(); ++row) {
140 delete m_dialogLayout->itemAtPosition(row, 0);
141 delete m_dialogLayout->itemAtPosition(row, 1);
142 delete m_dialogLayout->itemAtPosition(row, 2);
144 m_dialogLayout->removeItem(m_dialogLayout->itemAtPosition(row, 0));
145 m_dialogLayout->removeItem(m_dialogLayout->itemAtPosition(row, 1));
146 m_dialogLayout->removeItem(m_dialogLayout->itemAtPosition(row, 2));
157 d->setFocusPolicy(Qt::NoFocus);
158 connect(
this, SIGNAL(
transfersAdded(QList<OrgKdeKgetTransferInterface*>)), d, SLOT(
transfersAdded(QList<OrgKdeKgetTransferInterface*>)));
160 setBackgroundHints(Applet::NoBackground);
171 KGlobal::locale()->insertCatalog(
"plasma_applet_kget");
173 m_icon =
new Plasma::IconWidget(KIcon(
"go-down"), QString(),
this);
175 m_layout =
new QGraphicsLinearLayout(Qt::Horizontal,
this);
176 m_layout->addItem(m_icon);
180 m_bar =
new QProgressBar();
182 connect(d, SIGNAL(progressBarChanged(
int)), m_bar, SLOT(setValue(
int)));
184 proxy->setWidget(m_bar);
187 m_bar->setStyleSheet(
"background-color: transparent");
189 m_layout->addItem(proxy);
193 connect(m_icon, SIGNAL(clicked()), SLOT(showDialog()));
202 Q_UNUSED(contentsRect)
209 if(data[
"error"].toBool()) {
210 kDebug() <<
"Error : " << data[
"errorMessage"].toString();
213 else if(!data[
"error"].toBool()) {
214 setTransfers(data[
"transfers"].toMap());
219 void KGetPanelBar::showDialog()
221 if (d->isVisible()) {
226 KWindowSystem::setState(d->winId(), NET::SkipTaskbar);
227 d->move(popupPosition(d->sizeHint()));
231 #include "kgetpanelbar.moc"
232 #include "kgetpanelbar_p.moc"
void transfersAdded(const QList< OrgKdeKgetTransferInterface * > &transfers)
static const int TOP_MARGIN
void paintInterface(QPainter *painter, const QStyleOptionGraphicsItem *option, const QRect &contentsRect)
KGetPanelBar(QObject *parent, const QVariantList &args)
void transfersRemoved(const QList< OrgKdeKgetTransferInterface * > &transfers)
QHash< OrgKdeKgetTransferInterface *, Data > m_transfers
void transfersRemoved(const QList< OrgKdeKgetTransferInterface * > &transfers)
void transfersAdded(const QList< OrgKdeKgetTransferInterface * > &transfers)
static const int MAX_DOWNLOADS_PER_PAGE
Private(QWidget *parent=0)
void dataUpdated(const QString &name, const Plasma::DataEngine::Data &data)