Marble

CloudRoutesDialog.cpp
1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2013 Utku Aydın <[email protected]>
4 //
5 
6 #include "CloudRoutesDialog.h"
7 #include "ui_CloudRoutesDialog.h"
8 
9 #include "CloudRouteModel.h"
10 #include "RouteItemDelegate.h"
11 
12 #include <QTimer>
13 
14 namespace Marble {
15 
16 class Q_DECL_HIDDEN CloudRoutesDialog::Private : public Ui::CloudRoutesDialog {
17  public:
18  explicit Private( CloudRouteModel *model );
19  CloudRouteModel *m_model;
20 };
21 
22 CloudRoutesDialog::Private::Private( CloudRouteModel *model ) : Ui::CloudRoutesDialog(),
23  m_model( model )
24 {
25 }
26 
27 CloudRoutesDialog::CloudRoutesDialog( CloudRouteModel *model, QWidget *parent ) : QDialog( parent ),
28  d( new Private( model ) )
29 {
30  d->setupUi( this );
31 
32  RouteItemDelegate *delegate = new RouteItemDelegate( d->listView, d->m_model );
33  connect( delegate, SIGNAL(downloadButtonClicked(QString)), this, SIGNAL(downloadButtonClicked(QString)) );
34  connect( delegate, SIGNAL(openButtonClicked(QString)), this, SIGNAL(openButtonClicked(QString)) );
35  connect( delegate, SIGNAL(deleteButtonClicked(QString)), this, SIGNAL(deleteButtonClicked(QString)) );
36  connect( delegate, SIGNAL(removeFromCacheButtonClicked(QString)), this, SIGNAL(removeFromCacheButtonClicked(QString)) );
37  connect( delegate, SIGNAL(uploadToCloudButtonClicked(QString)), this, SIGNAL(uploadToCloudButtonClicked(QString)) );
38  connect( d->m_model, SIGNAL(modelReset()), this, SLOT(updateNoRouteLabel()) );
39 
40  d->progressBar->setHidden( true );
41  d->labelNoRoute->setHidden( true );
42 
43  d->listView->setItemDelegate( delegate );
44  d->listView->setModel( d->m_model );
45 }
46 
47 CloudRoutesDialog::~CloudRoutesDialog()
48 {
49  delete d;
50 }
51 
52 CloudRouteModel* CloudRoutesDialog::model()
53 {
54  return d->m_model;
55 }
56 
57 void CloudRoutesDialog::updateListDownloadProgressbar( qint64 received, qint64 total )
58 {
59  d->progressBar->setHidden( false );
60  d->progressBar->setValue( qRound( 100.0 * qreal( received ) / total ) );
61  if( received == total ) {
62  QTimer::singleShot( 1000, d->progressBar, SLOT(hide()) );
63  }
64 }
65 
66 void CloudRoutesDialog::updateNoRouteLabel() {
67  bool const isEmpty = d->listView->model()->rowCount() == 0;
68  d->listView->setHidden( isEmpty );
69  d->labelNoRoute->setVisible( isEmpty );
70 }
71 
72 }
73 
74 #include "moc_CloudRoutesDialog.cpp"
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Binds a QML item to a specific geodetic location in screen coordinates.
void setupUi(QWidget *widget)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Sep 25 2023 03:50:18 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.