aboutsummaryrefslogtreecommitdiffstats
path: root/qt-models/tableprintmodel.cpp
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2015-05-29 13:53:07 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-05-29 14:13:12 -0700
commit60dc9f4ab36acf83ed599a7909ca164af3c9c227 (patch)
tree2d7b6ab2111e06fafda1ef4dd4c92159d9e0ceee /qt-models/tableprintmodel.cpp
parent85d4bb8a7016fa856e5e1278352ce18939450e36 (diff)
downloadsubsurface-60dc9f4ab36acf83ed599a7909ca164af3c9c227.tar.gz
Move TablePrintModel to Qt-models
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models/tableprintmodel.cpp')
-rw-r--r--qt-models/tableprintmodel.cpp127
1 files changed, 127 insertions, 0 deletions
diff --git a/qt-models/tableprintmodel.cpp b/qt-models/tableprintmodel.cpp
new file mode 100644
index 000000000..c3ed3c118
--- /dev/null
+++ b/qt-models/tableprintmodel.cpp
@@ -0,0 +1,127 @@
+#include "tableprintmodel.h"
+#include "metrics.h"
+#include "color.h"
+
+TablePrintModel::TablePrintModel()
+{
+ columns = 7;
+ rows = 0;
+}
+
+TablePrintModel::~TablePrintModel()
+{
+ for (int i = 0; i < list.size(); i++)
+ delete list.at(i);
+}
+
+void TablePrintModel::insertRow(int index)
+{
+ struct TablePrintItem *item = new struct TablePrintItem();
+ item->colorBackground = 0xffffffff;
+ if (index == -1) {
+ beginInsertRows(QModelIndex(), rows, rows);
+ list.append(item);
+ } else {
+ beginInsertRows(QModelIndex(), index, index);
+ list.insert(index, item);
+ }
+ endInsertRows();
+ rows++;
+}
+
+void TablePrintModel::callReset()
+{
+ beginResetModel();
+ endResetModel();
+}
+
+QVariant TablePrintModel::data(const QModelIndex &index, int role) const
+{
+ if (!index.isValid())
+ return QVariant();
+ if (role == Qt::BackgroundRole)
+ return QColor(list.at(index.row())->colorBackground);
+ if (role == Qt::DisplayRole)
+ switch (index.column()) {
+ case 0:
+ return list.at(index.row())->number;
+ case 1:
+ return list.at(index.row())->date;
+ case 2:
+ return list.at(index.row())->depth;
+ case 3:
+ return list.at(index.row())->duration;
+ case 4:
+ return list.at(index.row())->divemaster;
+ case 5:
+ return list.at(index.row())->buddy;
+ case 6:
+ return list.at(index.row())->location;
+ }
+ if (role == Qt::FontRole) {
+ QFont font;
+ font.setPointSizeF(7.5);
+ if (index.row() == 0 && index.column() == 0) {
+ font.setBold(true);
+ }
+ return QVariant::fromValue(font);
+ }
+ return QVariant();
+}
+
+bool TablePrintModel::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+ if (index.isValid()) {
+ if (role == Qt::DisplayRole) {
+ switch (index.column()) {
+ case 0:
+ list.at(index.row())->number = value.toString();
+ case 1:
+ list.at(index.row())->date = value.toString();
+ case 2:
+ list.at(index.row())->depth = value.toString();
+ case 3:
+ list.at(index.row())->duration = value.toString();
+ case 4:
+ list.at(index.row())->divemaster = value.toString();
+ case 5:
+ list.at(index.row())->buddy = value.toString();
+ case 6: {
+ /* truncate if there are more than N lines of text,
+ * we don't want a row to be larger that a single page! */
+ QString s = value.toString();
+ const int maxLines = 15;
+ int count = 0;
+ for (int i = 0; i < s.length(); i++) {
+ if (s.at(i) != QChar('\n'))
+ continue;
+ count++;
+ if (count > maxLines) {
+ s = s.left(i - 1);
+ break;
+ }
+ }
+ list.at(index.row())->location = s;
+ }
+ }
+ return true;
+ }
+ if (role == Qt::BackgroundRole) {
+ list.at(index.row())->colorBackground = value.value<unsigned int>();
+ return true;
+ }
+ }
+ return false;
+}
+
+int TablePrintModel::rowCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ return rows;
+}
+
+int TablePrintModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ return columns;
+}