File indexing completed on 2024-05-05 03:49:14

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2013 Utku Aydın <utkuaydin34@gmail.com>
0004 //
0005 
0006 #include "CloudRoutesDialog.h"
0007 #include "ui_CloudRoutesDialog.h"
0008 
0009 #include "CloudRouteModel.h"
0010 #include "RouteItemDelegate.h"
0011 
0012 #include <QTimer>
0013 
0014 namespace Marble {
0015 
0016 class Q_DECL_HIDDEN CloudRoutesDialog::Private : public Ui::CloudRoutesDialog {
0017     public:
0018         explicit Private( CloudRouteModel *model );
0019         CloudRouteModel *m_model;
0020 };
0021 
0022 CloudRoutesDialog::Private::Private( CloudRouteModel *model ) : Ui::CloudRoutesDialog(),
0023     m_model( model )
0024 {
0025 }
0026 
0027 CloudRoutesDialog::CloudRoutesDialog( CloudRouteModel *model, QWidget *parent ) : QDialog( parent ),
0028     d( new Private( model ) )
0029 {
0030     d->setupUi( this );
0031     
0032     RouteItemDelegate *delegate = new RouteItemDelegate( d->listView, d->m_model );
0033     connect( delegate, SIGNAL(downloadButtonClicked(QString)), this, SIGNAL(downloadButtonClicked(QString)) );
0034     connect( delegate, SIGNAL(openButtonClicked(QString)), this, SIGNAL(openButtonClicked(QString)) );
0035     connect( delegate, SIGNAL(deleteButtonClicked(QString)), this, SIGNAL(deleteButtonClicked(QString)) );
0036     connect( delegate, SIGNAL(removeFromCacheButtonClicked(QString)), this, SIGNAL(removeFromCacheButtonClicked(QString)) );
0037     connect( delegate, SIGNAL(uploadToCloudButtonClicked(QString)), this, SIGNAL(uploadToCloudButtonClicked(QString)) );
0038     connect( d->m_model, SIGNAL(modelReset()), this, SLOT(updateNoRouteLabel()) );
0039 
0040     d->progressBar->setHidden( true );
0041     d->labelNoRoute->setHidden( true );
0042 
0043     d->listView->setItemDelegate( delegate );
0044     d->listView->setModel( d->m_model );
0045 }
0046 
0047 CloudRoutesDialog::~CloudRoutesDialog()
0048 {
0049     delete d;
0050 }
0051 
0052 CloudRouteModel* CloudRoutesDialog::model()
0053 {
0054     return d->m_model;
0055 }
0056 
0057 void CloudRoutesDialog::updateListDownloadProgressbar( qint64 received, qint64 total )
0058 {
0059     d->progressBar->setHidden( false );
0060     d->progressBar->setValue( qRound( 100.0 * qreal( received ) / total ) );
0061     if( received == total ) {
0062         QTimer::singleShot( 1000, d->progressBar, SLOT(hide()) );
0063     }
0064 }
0065 
0066 void CloudRoutesDialog::updateNoRouteLabel() {
0067     bool const isEmpty = d->listView->model()->rowCount() == 0;
0068     d->listView->setHidden( isEmpty );
0069     d->labelNoRoute->setVisible( isEmpty );
0070 }
0071 
0072 }
0073 
0074 #include "moc_CloudRoutesDialog.cpp"