• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdenetwork API Reference
  • KDE Home
  • Contact Us
 

kget

  • sources
  • kde-4.12
  • kdenetwork
  • kget
  • plasma
  • applet
  • barapplet
kgetbarapplet.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * *
3  * This program is free software; you can redistribute it and/or modify *
4  * it under the terms of the GNU General Public License as published by *
5  * the Free Software Foundation; either version 2 of the License, or *
6  * (at your option) any later version. *
7  * *
8  * Copyright (C) 2007 by Javier Goday <jgoday@gmail.com> *
9  * Copyright (C) 2009 by Matthias Fuchs <mat69@gmx.net> *
10  * *
11  * This program is distributed in the hope that it will be useful, *
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14  * GNU General Public License for more details. *
15  * *
16  * You should have received a copy of the GNU General Public License *
17  * along with this program; if not, write to the *
18  * Free Software Foundation, Inc., *
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
20  ***************************************************************************/
21 
22 #include "barapplet/kgetbarapplet.h"
23 #include "barapplet/kgetbarapplet_p.h"
24 
25 #include "../../../core/transferhandler.h"
26 
27 #include <QProgressBar>
28 #include <QGraphicsLinearLayout>
29 #include <QGraphicsProxyWidget>
30 
31 #include <KDebug>
32 
33 #include <Plasma/ScrollWidget>
34 
35 
36 KGetBarApplet::Private::Private(QGraphicsWidget *parent)
37  : QGraphicsWidget(parent)
38 {
39  QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, this);
40 
41  m_scrollWidget = new Plasma::ScrollWidget();
42  m_containerWidget = new QGraphicsWidget(m_scrollWidget);
43  m_scrollWidget->setWidget(m_containerWidget);
44  m_containerLayout = new QGraphicsLinearLayout(Qt::Vertical, m_containerWidget);
45 
46  layout->addItem(m_scrollWidget);
47 
48  setLayout(layout);
49 }
50 
51 KGetBarApplet::Private::~Private()
52 {
53 }
54 
55 void KGetBarApplet::Private::addTransfers(const QList<OrgKdeKgetTransferInterface*> &transfers)
56 {
57  foreach (OrgKdeKgetTransferInterface *transfer, transfers) {
58  if (m_items.contains(transfer)) {
59  continue;
60  }
61 
62  connect(transfer, SIGNAL(transferChangedEvent(int)), this, SLOT(slotUpdateTransfer(int)));
63 
64  QString fileName = KUrl(transfer->dest().value()).fileName();
65  kDebug() << fileName;
66 
67  Item *item = new Item;
68  item->proxy = new QGraphicsProxyWidget();
69  item->progressBar = new QProgressBar();
70  item->proxy->setWidget(item->progressBar);
71  item->progressBar->setFormat(fileName + " %v%");
72  m_items[transfer] = item;
73 
74  //running downloads are prepended, others appended
75  if (transfer->percent() == 100) {
76  m_containerLayout->addItem(item->proxy);
77  } else {
78  m_containerLayout->insertItem(0, item->proxy);
79  }
80 
81  item->progressBar->setValue(transfer->percent().value());
82  }
83 }
84 
85 void KGetBarApplet::Private::removeTransfers(const QList<OrgKdeKgetTransferInterface*> &transfers)
86 {
87  // remove the progressbars for the deleted transfers
88  QHash<OrgKdeKgetTransferInterface*, Item*>::iterator it;
89  QHash<OrgKdeKgetTransferInterface*, Item*>::iterator itEnd = m_items.end();
90  for (it = m_items.begin(); it != itEnd; ) {
91  OrgKdeKgetTransferInterface *transfer = it.key();
92  if (transfers.contains(transfer)) {
93  Item *item = it.value();
94  it = m_items.erase(it);
95 
96  m_containerLayout->removeItem(item->proxy);
97  item->proxy->deleteLater();
98  item->progressBar->deleteLater();
99  delete item;
100  } else {
101  ++it;
102  }
103  }
104 }
105 
106 void KGetBarApplet::Private::slotUpdateTransfer(int transferChange)
107 {
108  OrgKdeKgetTransferInterface *transfer = qobject_cast<OrgKdeKgetTransferInterface*>(QObject::sender());
109 
110  if (transfer && m_items.contains(transfer)) {
111  Item *item = m_items[transfer];
112 
113  if (transferChange & Transfer::Tc_Percent) {
114  item->progressBar->setValue(transfer->percent());
115  }
116  if (transferChange & Transfer::Tc_FileName) {
117  const QString fileName = KUrl(transfer->dest().value()).fileName();
118  item->progressBar->setFormat(fileName + " %v%");
119  item->progressBar->setValue(transfer->percent());
120  }
121  }
122 }
123 
124 KGetBarApplet::KGetBarApplet(QObject *parent, const QVariantList &args)
125  : KGetApplet(parent, args)
126 {
127 }
128 
129 KGetBarApplet::~KGetBarApplet()
130 {
131 }
132 
133 void KGetBarApplet::init()
134 {
135  d = new KGetBarApplet::Private(this);
136  setDataWidget(d);
137  connect(this, SIGNAL(transfersAdded(QList<OrgKdeKgetTransferInterface*>)), d, SLOT(addTransfers(QList<OrgKdeKgetTransferInterface*>)));
138  connect(this, SIGNAL(transfersRemoved(QList<OrgKdeKgetTransferInterface*>)), d, SLOT(removeTransfers(QList<OrgKdeKgetTransferInterface*>)));
139 
140  KGetApplet::init();
141 }
142 
143 #include "kgetbarapplet.moc"
144 #include "kgetbarapplet_p.moc"
KGetBarApplet::KGetBarApplet
KGetBarApplet(QObject *parent, const QVariantList &args)
Definition: kgetbarapplet.cpp:124
KGetApplet::transfersAdded
void transfersAdded(const QList< OrgKdeKgetTransferInterface * > &transfers)
Transfer::Tc_FileName
Definition: transfer.h:52
kgetbarapplet_p.h
KGetBarApplet::init
void init()
Definition: kgetbarapplet.cpp:133
QObject
KGetBarApplet::Private::addTransfers
void addTransfers(const QList< OrgKdeKgetTransferInterface * > &transfers)
Definition: kgetbarapplet.cpp:55
KGetBarApplet::~KGetBarApplet
~KGetBarApplet()
Definition: kgetbarapplet.cpp:129
KGetBarApplet::Private
Definition: kgetbarapplet_p.h:35
KGetBarApplet::Private::Private
Private(QGraphicsWidget *parent=0)
Definition: kgetbarapplet.cpp:36
KGetBarApplet::Private::~Private
~Private()
Definition: kgetbarapplet.cpp:51
KGetApplet::init
void init()
Definition: kgetapplet.cpp:139
KGetApplet::transfersRemoved
void transfersRemoved(const QList< OrgKdeKgetTransferInterface * > &transfers)
KGetBarApplet::Private::removeTransfers
void removeTransfers(const QList< OrgKdeKgetTransferInterface * > &transfers)
Definition: kgetbarapplet.cpp:85
QGraphicsProxyWidget
KGetApplet
Definition: kgetapplet.h:68
KGetApplet::setDataWidget
void setDataWidget(QGraphicsWidget *widget)
Definition: kgetapplet.cpp:285
Transfer::Tc_Percent
Definition: transfer.h:55
kgetbarapplet.h
QGraphicsWidget
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:53:17 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kget

Skip menu "kget"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdenetwork API Reference

Skip menu "kdenetwork API Reference"
  • kget
  • kopete
  •   kopete
  •   libkopete
  • krdc
  • krfb

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal