Changeset 3c3f91d in subsurface


Ignore:
Timestamp:
May 27, 2017, 7:46:01 AM (3 months ago)
Author:
Dirk Hohndel <dirk@…>
Branches:
master
Children:
dec47e1
Parents:
6bfd20a
git-author:
Tomaz Canabrava <tcanabrava@…> (04/18/17 08:32:10)
git-committer:
Dirk Hohndel <dirk@…> (05/27/17 07:46:01)
Message:

Move model code to models

This makes it easery to use it on Qml.

Signed-off-by: Tomaz Canabrava <tcanabrava@…>
Signed-off-by: Dirk Hohndel <dirk@…>

Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • desktop-widgets/downloadfromdivecomputer.cpp

    re6d884c r3c3f91d  
    88#include "core/subsurface-qt/SettingsObjectWrapper.h"
    99#include "qt-models/models.h"
     10#include "qt-models/diveimportedmodel.h"
    1011
    1112#include <QTimer>
     
    651652                error = str_error(errorText, data->devname, data->vendor, data->product);
    652653}
    653 
    654 DiveImportedModel::DiveImportedModel(QObject *o) : QAbstractTableModel(o),
    655         firstIndex(0),
    656         lastIndex(-1),
    657         checkStates(0)
    658 {
    659 }
    660 
    661 int DiveImportedModel::columnCount(const QModelIndex &model) const
    662 {
    663         Q_UNUSED(model)
    664         return 3;
    665 }
    666 
    667 int DiveImportedModel::rowCount(const QModelIndex &model) const
    668 {
    669         Q_UNUSED(model)
    670         return lastIndex - firstIndex + 1;
    671 }
    672 
    673 QVariant DiveImportedModel::headerData(int section, Qt::Orientation orientation, int role) const
    674 {
    675         if (orientation == Qt::Vertical)
    676                 return QVariant();
    677         if (role == Qt::DisplayRole) {
    678                 switch (section) {
    679                 case 0:
    680                         return QVariant(tr("Date/time"));
    681                 case 1:
    682                         return QVariant(tr("Duration"));
    683                 case 2:
    684                         return QVariant(tr("Depth"));
    685                 }
    686         }
    687         return QVariant();
    688 }
    689 
    690 QVariant DiveImportedModel::data(const QModelIndex &index, int role) const
    691 {
    692         if (!index.isValid())
    693                 return QVariant();
    694 
    695         if (index.row() + firstIndex > lastIndex)
    696                 return QVariant();
    697 
    698         struct dive *d = get_dive_from_table(index.row() + firstIndex, &downloadTable);
    699         if (!d)
    700                 return QVariant();
    701         if (role == Qt::DisplayRole) {
    702                 switch (index.column()) {
    703                 case 0:
    704                         return QVariant(get_short_dive_date_string(d->when));
    705                 case 1:
    706                         return QVariant(get_dive_duration_string(d->duration.seconds, tr("h"), tr("min")));
    707                 case 2:
    708                         return QVariant(get_depth_string(d->maxdepth.mm, true, false));
    709                 }
    710         }
    711         if (role == Qt::CheckStateRole) {
    712                 if (index.column() == 0)
    713                         return checkStates[index.row()] ? Qt::Checked : Qt::Unchecked;
    714         }
    715         return QVariant();
    716 }
    717 
    718 void DiveImportedModel::changeSelected(QModelIndex clickedIndex)
    719 {
    720         checkStates[clickedIndex.row()] = !checkStates[clickedIndex.row()];
    721         dataChanged(index(clickedIndex.row(), 0), index(clickedIndex.row(), 0), QVector<int>() << Qt::CheckStateRole);
    722 }
    723 
    724 void DiveImportedModel::selectAll()
    725 {
    726         memset(checkStates, true, lastIndex - firstIndex + 1);
    727         dataChanged(index(0, 0), index(lastIndex - firstIndex, 0), QVector<int>() << Qt::CheckStateRole);
    728 }
    729 
    730 void DiveImportedModel::selectNone()
    731 {
    732         memset(checkStates, false, lastIndex - firstIndex + 1);
    733         dataChanged(index(0, 0), index(lastIndex - firstIndex,0 ), QVector<int>() << Qt::CheckStateRole);
    734 }
    735 
    736 Qt::ItemFlags DiveImportedModel::flags(const QModelIndex &index) const
    737 {
    738         if (index.column() != 0)
    739                 return QAbstractTableModel::flags(index);
    740         return QAbstractTableModel::flags(index) | Qt::ItemIsUserCheckable;
    741 }
    742 
    743 void DiveImportedModel::clearTable()
    744 {
    745         beginRemoveRows(QModelIndex(), 0, lastIndex - firstIndex);
    746         lastIndex = -1;
    747         firstIndex = 0;
    748         endRemoveRows();
    749 }
    750 
    751 void DiveImportedModel::setImportedDivesIndexes(int first, int last)
    752 {
    753         Q_ASSERT(last >= first);
    754         if (lastIndex >= firstIndex) {
    755                 beginRemoveRows(QModelIndex(), 0, lastIndex - firstIndex);
    756                 endRemoveRows();
    757         }
    758         beginInsertRows(QModelIndex(), 0, last - first);
    759         lastIndex = last;
    760         firstIndex = first;
    761         delete[] checkStates;
    762         checkStates = new bool[last - first + 1];
    763         memset(checkStates, true, last - first + 1);
    764         endInsertRows();
    765 }
  • desktop-widgets/downloadfromdivecomputer.h

    r9021a44 r3c3f91d  
    1818
    1919class QStringListModel;
     20class DiveImportedModel;
    2021
    2122class DownloadThread : public QThread {
     
    2930private:
    3031        device_data_t *data;
    31 };
    32 
    33 class DiveImportedModel : public QAbstractTableModel
    34 {
    35         Q_OBJECT
    36 public:
    37         DiveImportedModel(QObject *o);
    38         int columnCount(const QModelIndex& index = QModelIndex()) const;
    39         int rowCount(const QModelIndex& index = QModelIndex()) const;
    40         QVariant data(const QModelIndex& index, int role) const;
    41         QVariant headerData(int section, Qt::Orientation orientation, int role) const;
    42         void setImportedDivesIndexes(int first, int last);
    43         Qt::ItemFlags flags(const QModelIndex &index) const;
    44         void clearTable();
    45 
    46 public
    47 slots:
    48         void changeSelected(QModelIndex clickedIndex);
    49         void selectAll();
    50         void selectNone();
    51 
    52 private:
    53         int firstIndex;
    54         int lastIndex;
    55         bool *checkStates;
    5632};
    5733
  • qt-models/CMakeLists.txt

    r89eed5d r3c3f91d  
    2323        divelistmodel.cpp
    2424        gpslistmodel.cpp
     25        diveimportedmodel.cpp
    2526)
    2627
Note: See TracChangeset for help on using the changeset viewer.