1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2013 Utku Aydın <utkuaydin34@gmail.com>
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
Private(CloudRouteModel * model)22 CloudRoutesDialog::Private::Private( CloudRouteModel *model ) : Ui::CloudRoutesDialog(),
23 m_model( model )
24 {
25 }
26
CloudRoutesDialog(CloudRouteModel * model,QWidget * parent)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
~CloudRoutesDialog()47 CloudRoutesDialog::~CloudRoutesDialog()
48 {
49 delete d;
50 }
51
model()52 CloudRouteModel* CloudRoutesDialog::model()
53 {
54 return d->m_model;
55 }
56
updateListDownloadProgressbar(qint64 received,qint64 total)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
updateNoRouteLabel()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"
75