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

marble

  • sources
  • kde-4.14
  • kdeedu
  • marble
  • src
  • plugins
  • runner
  • monav
MonavMapsModel.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2010 Dennis Nienhüser <earthwings@gentoo.org>
9 //
10 
11 #include "MonavMapsModel.h"
12 
13 #include <QDate>
14 
15 namespace Marble
16 {
17 
18 void MonavMapsModel::deleteMapFiles( int row )
19 {
20  if ( row >= 0 && row < m_data.size() ) {
21  m_data.at( row ).remove();
22  beginRemoveRows( QModelIndex(), row, row );
23  m_data.remove( row );
24  endRemoveRows();
25  }
26 }
27 
28 void MonavMapsModel::setInstallableVersions( const QMap<QString, QString> remoteMaps )
29 {
30  m_remoteMaps = remoteMaps;
31  beginResetModel();
32  endResetModel();
33 }
34 
35 MonavMapsModel::MonavMapsModel( const QVector<MonavMap> &data, QObject * parent ) :
36  QAbstractTableModel( parent ), m_data( data )
37 {
38  qSort( m_data.begin(), m_data.end(), &MonavMap::nameLessThan );
39 }
40 
41 QVariant MonavMapsModel::headerData ( int section, Qt::Orientation orientation, int role ) const
42 {
43  if ( orientation == Qt::Horizontal && role == Qt::DisplayRole ) {
44  switch( section ) {
45  case 0:
46  return tr( "Name" );
47  case 1:
48  return tr( "Transport" );
49  case 2:
50  return tr( "Size" );
51  case 3:
52  return tr( "Update" );
53  case 4:
54  return tr( "Delete" );
55  case 5:
56  return tr( "Date" );
57  }
58  }
59 
60  return QVariant();
61 }
62 
63 QVariant MonavMapsModel::data ( const QModelIndex & index, int role ) const
64 {
65  if ( index.isValid() && role == Qt::DisplayRole ) {
66  int const row = index.row();
67  if ( row >= 0 && row < m_data.size() )
68  switch( index.column() ) {
69  case 0:
70  return m_data.at( row ).name();
71  case 1:
72  return m_data.at( row ).transport();
73  case 2:
74  return QString( "%1 MB" ).arg( 1 + m_data.at( row ).size() / 1024 / 1024 );
75  case 3: {
76  QString payload = m_data.at( row ).payload();
77  payload = payload.mid( payload.lastIndexOf( "/" ) + 1 );
78  if ( m_remoteMaps.contains( payload ) ) {
79  QDate remote = QDate::fromString( m_remoteMaps[payload], "MM/dd/yy" );
80  QDate local = QDate::fromString( m_data.at( row ).date(), "MM/dd/yy" );
81  return remote > local;
82  }
83 
84  return false;
85  }
86  case 4:
87  return QFileInfo( m_data.at( row ).directory().absolutePath() ).isWritable();
88  case 5:
89  {
90  QDate date = QDate::fromString( m_data.at( row ).date(), "MM/dd/yy" );
91  if ( date.year() < 2000 ) {
92  // Qt interprets 11 as 1911
93  date.setDate( date.year() + 100, date.month(), date.day() );
94  }
95  return date.toString( Qt::SystemLocaleShortDate );
96  }
97  }
98  }
99 
100  return QVariant();
101 }
102 
103 int MonavMapsModel::rowCount ( const QModelIndex & parent ) const
104 {
105  return parent.isValid() ? 0 : m_data.size();
106 }
107 
108 int MonavMapsModel::columnCount ( const QModelIndex & parent ) const
109 {
110  return parent.isValid() ? 0 : 6;
111 }
112 
113 QString MonavMapsModel::payload( int index ) const
114 {
115  if ( index >= 0 && index <= m_data.size() ) {
116  return m_data.at( index ).payload();
117  }
118 
119  return QString();
120 }
121 
122 }
123 
124 #include "MonavMapsModel.moc"
Marble::MonavMap::nameLessThan
static bool nameLessThan(const MonavMap &first, const MonavMap &second)
Definition: MonavMap.cpp:175
QModelIndex
QMap::contains
bool contains(const Key &key) const
QDate::toString
QString toString(Qt::DateFormat format) const
Marble::MonavMapsModel::MonavMapsModel
MonavMapsModel(const QVector< MonavMap > &data, QObject *parent=0)
Definition: MonavMapsModel.cpp:35
QAbstractTableModel
Marble::MonavMapsModel::deleteMapFiles
void deleteMapFiles(int index)
Definition: MonavMapsModel.cpp:18
Marble::MonavMapsModel::data
virtual QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
Definition: MonavMapsModel.cpp:63
QMap< QString, QString >
QDate::month
int month() const
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
QString::lastIndexOf
int lastIndexOf(QChar ch, int from, Qt::CaseSensitivity cs) const
Marble::MonavMapsModel::setInstallableVersions
void setInstallableVersions(const QMap< QString, QString > localMaps)
Definition: MonavMapsModel.cpp:28
QAbstractItemModel::beginResetModel
void beginResetModel()
MonavMapsModel.h
QDate::fromString
QDate fromString(const QString &string, Qt::DateFormat format)
QModelIndex::isValid
bool isValid() const
Marble::MonavMapsModel::headerData
virtual QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
Definition: MonavMapsModel.cpp:41
Marble::MonavMapsModel::payload
QString payload(int index) const
Definition: MonavMapsModel.cpp:113
QObject
QAbstractItemModel::beginRemoveRows
void beginRemoveRows(const QModelIndex &parent, int first, int last)
QDate::day
int day() const
QModelIndex::row
int row() const
QDate
QDate::year
int year() const
QString
Marble::MonavMapsModel::rowCount
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
Definition: MonavMapsModel.cpp:103
QFileInfo
QDate::setDate
bool setDate(int year, int month, int day)
QString::mid
QString mid(int position, int n) const
QVector
Marble::MonavMapsModel::columnCount
virtual int columnCount(const QModelIndex &parent=QModelIndex()) const
Definition: MonavMapsModel.cpp:108
QModelIndex::column
int column() const
QAbstractItemModel::endRemoveRows
void endRemoveRows()
QAbstractItemModel::endResetModel
void endResetModel()
QString::arg
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
QVariant
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:41 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

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