mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Add a method to update the dive pictures on the model.
Call that method from the mainWindow when the dive changes. The updateDivePictures walks around the events of the first dc (since all pictures are distributed allong all dive computers) to get the events of type '123' (I wonder if there's not a better way to save pictures on the dive, like an linked list of char* named pictures.) Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
4b520a8fbc
commit
e140703d34
4 changed files with 42 additions and 2 deletions
|
@ -1,10 +1,41 @@
|
||||||
#include "divepicturewidget.h"
|
#include "divepicturewidget.h"
|
||||||
|
#include <dive.h>
|
||||||
|
|
||||||
void DivePictureDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
|
void DivePictureDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
QStyledItemDelegate::paint(painter, option, index);
|
QStyledItemDelegate::paint(painter, option, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DivePictureModel::DivePictureModel(QObject *parent): QAbstractTableModel(parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void DivePictureModel::updateDivePictures(int divenr)
|
||||||
|
{
|
||||||
|
beginRemoveRows(QModelIndex(), 0, numberOfPictures-1);
|
||||||
|
numberOfPictures = 0;
|
||||||
|
endRemoveRows();
|
||||||
|
|
||||||
|
struct dive *d = get_dive(divenr);
|
||||||
|
if (!d)
|
||||||
|
return;
|
||||||
|
// All pictures are set in *all* divecomputers. ( waste of memory if > 100 pictures? )
|
||||||
|
// so just get from the first one.
|
||||||
|
struct event *ev = d->dc.events;
|
||||||
|
while(ev){
|
||||||
|
if(ev->type == 123){ // 123 means PICTURE.
|
||||||
|
numberOfPictures++;
|
||||||
|
}
|
||||||
|
ev = ev->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numberOfPictures == 0)
|
||||||
|
return;
|
||||||
|
beginInsertRows(QModelIndex(), 0, numberOfPictures-1);
|
||||||
|
endInsertRows();
|
||||||
|
}
|
||||||
|
|
||||||
int DivePictureModel::columnCount(const QModelIndex &parent) const
|
int DivePictureModel::columnCount(const QModelIndex &parent) const
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -17,7 +48,7 @@ QVariant DivePictureModel::data(const QModelIndex &index, int role) const
|
||||||
|
|
||||||
int DivePictureModel::rowCount(const QModelIndex &parent) const
|
int DivePictureModel::rowCount(const QModelIndex &parent) const
|
||||||
{
|
{
|
||||||
|
return numberOfPictures;
|
||||||
}
|
}
|
||||||
|
|
||||||
DivePictureWidget::DivePictureWidget(QWidget *parent): QListView(parent)
|
DivePictureWidget::DivePictureWidget(QWidget *parent): QListView(parent)
|
||||||
|
|
|
@ -7,9 +7,15 @@
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
|
||||||
class DivePictureModel : QAbstractTableModel {
|
class DivePictureModel : QAbstractTableModel {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
DivePictureModel(QObject *parent);
|
||||||
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
|
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
|
||||||
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
|
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
|
||||||
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
|
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
|
||||||
|
void updateDivePictures(int divenr);
|
||||||
|
private:
|
||||||
|
int numberOfPictures;
|
||||||
};
|
};
|
||||||
|
|
||||||
class DivePictureDelegate : QStyledItemDelegate {
|
class DivePictureDelegate : QStyledItemDelegate {
|
||||||
|
|
|
@ -59,7 +59,8 @@ MainWindow::MainWindow() : QMainWindow(),
|
||||||
yearlyStatsModel(0),
|
yearlyStatsModel(0),
|
||||||
state(VIEWALL),
|
state(VIEWALL),
|
||||||
updateManager(0),
|
updateManager(0),
|
||||||
fakeDiveId(0)
|
fakeDiveId(0),
|
||||||
|
divePictureModel(new DivePictureModel(this))
|
||||||
{
|
{
|
||||||
Q_ASSERT_X(m_Instance == NULL, "MainWindow", "MainWindow recreated!");
|
Q_ASSERT_X(m_Instance == NULL, "MainWindow", "MainWindow recreated!");
|
||||||
m_Instance = this;
|
m_Instance = this;
|
||||||
|
@ -165,6 +166,7 @@ void MainWindow::current_dive_changed(int divenr)
|
||||||
*/
|
*/
|
||||||
ui.newProfile->plotDives(QList<dive *>() << (current_dive));
|
ui.newProfile->plotDives(QList<dive *>() << (current_dive));
|
||||||
ui.InfoWidget->updateDiveInfo(divenr);
|
ui.InfoWidget->updateDiveInfo(divenr);
|
||||||
|
divePictureModel->updateDivePictures(divenr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionNew_triggered()
|
void MainWindow::on_actionNew_triggered()
|
||||||
|
|
|
@ -180,6 +180,7 @@ private:
|
||||||
bool plannerStateClean();
|
bool plannerStateClean();
|
||||||
void createFakeDiveForAddAndPlan();
|
void createFakeDiveForAddAndPlan();
|
||||||
int fakeDiveId;
|
int fakeDiveId;
|
||||||
|
DivePictureModel *divePictureModel;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|
Loading…
Add table
Reference in a new issue