summaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/models.cpp124
-rw-r--r--qt-models/models.h39
-rw-r--r--qt-models/tableprintmodel.cpp127
-rw-r--r--qt-models/tableprintmodel.h45
4 files changed, 172 insertions, 163 deletions
diff --git a/qt-models/models.cpp b/qt-models/models.cpp
index f2aba0b1b..bca8032eb 100644
--- a/qt-models/models.cpp
+++ b/qt-models/models.cpp
@@ -58,130 +58,6 @@ const QPixmap &trashIcon()
* #
* ################################################################
*/
-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;
-}
-
/*#################################################################
* #
* # Profile Print Model
diff --git a/qt-models/models.h b/qt-models/models.h
index 32f0f4321..94fcc5129 100644
--- a/qt-models/models.h
+++ b/qt-models/models.h
@@ -22,45 +22,6 @@
#include "cleanertablemodel.h"
#include "treemodel.h"
-/* TablePrintModel:
- * for now we use a blank table model with row items TablePrintItem.
- * these are pretty much the same as DiveItem, but have color
- * properties, as well. perhaps later one a more unified model has to be
- * considered, but the current TablePrintModel idea has to be extended
- * to support variadic column lists and column list orders that can
- * be controlled by the user.
- */
-struct TablePrintItem {
- QString number;
- QString date;
- QString depth;
- QString duration;
- QString divemaster;
- QString buddy;
- QString location;
- unsigned int colorBackground;
-};
-
-class TablePrintModel : public QAbstractTableModel {
- Q_OBJECT
-
-private:
- QList<struct TablePrintItem *> list;
-
-public:
- ~TablePrintModel();
- TablePrintModel();
-
- int rows, columns;
- void insertRow(int index = -1);
- void callReset();
-
- QVariant data(const QModelIndex &index, int role) const;
- bool setData(const QModelIndex &index, const QVariant &value, int role);
- int rowCount(const QModelIndex &parent) const;
- int columnCount(const QModelIndex &parent) const;
-};
-
/* ProfilePrintModel:
* this model is used when printing a data table under a profile. it requires
* some exact usage of setSpan(..) on the target QTableView widget.
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;
+}
diff --git a/qt-models/tableprintmodel.h b/qt-models/tableprintmodel.h
new file mode 100644
index 000000000..9263d10d2
--- /dev/null
+++ b/qt-models/tableprintmodel.h
@@ -0,0 +1,45 @@
+#ifndef TABLEPRINTMODEL_H
+#define TABLEPRINTMODEL_H
+
+#include <QAbstractTableModel>
+
+/* TablePrintModel:
+ * for now we use a blank table model with row items TablePrintItem.
+ * these are pretty much the same as DiveItem, but have color
+ * properties, as well. perhaps later one a more unified model has to be
+ * considered, but the current TablePrintModel idea has to be extended
+ * to support variadic column lists and column list orders that can
+ * be controlled by the user.
+ */
+struct TablePrintItem {
+ QString number;
+ QString date;
+ QString depth;
+ QString duration;
+ QString divemaster;
+ QString buddy;
+ QString location;
+ unsigned int colorBackground;
+};
+
+class TablePrintModel : public QAbstractTableModel {
+ Q_OBJECT
+
+private:
+ QList<TablePrintItem *> list;
+
+public:
+ ~TablePrintModel();
+ TablePrintModel();
+
+ int rows, columns;
+ void insertRow(int index = -1);
+ void callReset();
+
+ QVariant data(const QModelIndex &index, int role) const;
+ bool setData(const QModelIndex &index, const QVariant &value, int role);
+ int rowCount(const QModelIndex &parent) const;
+ int columnCount(const QModelIndex &parent) const;
+};
+
+#endif