summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-02 17:01:35 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-02 17:02:55 -0700
commitff2ce399702d3a487316bfcc4b1fff01dbb8d309 (patch)
tree709b497e1981873b5301c68c0a906b874b7dd635 /qt-ui
parent021ef8ad09295a0ad4b5a3450a651637eea8672d (diff)
parent696c9ccacd24392ea63477c5ec8a25d6649aedf7 (diff)
downloadsubsurface-ff2ce399702d3a487316bfcc4b1fff01dbb8d309.tar.gz
Merge branch 'tomaz-css' into Qt
Tomaz' code does a much better job of shading the dive list! Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/divelistview.cpp2
-rw-r--r--qt-ui/mainwindow.cpp12
-rw-r--r--qt-ui/mainwindow.h3
-rw-r--r--qt-ui/mainwindow.ui48
-rw-r--r--qt-ui/modeldelegates.cpp18
-rw-r--r--qt-ui/modeldelegates.h7
-rw-r--r--qt-ui/models.cpp15
-rw-r--r--qt-ui/models.h6
8 files changed, 95 insertions, 16 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp
index 45b6cf4d7..0bf0b35ba 100644
--- a/qt-ui/divelistview.cpp
+++ b/qt-ui/divelistview.cpp
@@ -7,6 +7,8 @@
#include "divelistview.h"
#include "models.h"
#include "modeldelegates.h"
+#include <QApplication>
+#include <QHeaderView>
DiveListView::DiveListView(QWidget *parent) : QTreeView(parent)
{
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index 8bf03531f..cdd33ff45 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -25,6 +25,7 @@
#include "../divelist.h"
#include "../pref.h"
#include "modeldelegates.h"
+#include "models.h"
MainWindow::MainWindow() : ui(new Ui::MainWindow()),
model(new DiveTripModel(this)),
@@ -33,6 +34,7 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow()),
ui->setupUi(this);
sortModel->setSourceModel(model);
ui->ListWidget->setModel(sortModel);
+ connect(ui->ListWidget, SIGNAL(activated(QModelIndex)), this, SLOT(diveSelected(QModelIndex)));
/* figure out appropriate widths for the columns. The strings chosen
* are somewhat random (but at least we're trying to allow them to be
@@ -70,6 +72,16 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow()),
readSettings();
}
+void MainWindow::diveSelected(const QModelIndex& index)
+{
+ struct dive *dive = (struct dive*) index.model()->data(index, TreeItemDT::DIVE_ROLE).value<void*>();
+
+ if (dive)
+ selected_dive = get_index_for_dive(dive);
+
+ // Here should be the code to update the other widgets.
+}
+
void MainWindow::on_actionNew_triggered()
{
qDebug("actionNew");
diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h
index eece91ade..e94cb5b7c 100644
--- a/qt-ui/mainwindow.h
+++ b/qt-ui/mainwindow.h
@@ -8,6 +8,7 @@
#define MAINWINDOW_H
#include <QMainWindow>
+#include <QModelIndex>
class QSortFilterProxyModel;
class DiveTripModel;
@@ -66,6 +67,8 @@ private Q_SLOTS:
void on_actionAboutSubsurface_triggered();
void on_actionUserManual_triggered();
+ void diveSelected(const QModelIndex& index);
+
protected:
void closeEvent(QCloseEvent *);
diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui
index 073476918..fe97d98b4 100644
--- a/qt-ui/mainwindow.ui
+++ b/qt-ui/mainwindow.ui
@@ -28,9 +28,55 @@
<widget class="QGraphicsView" name="ProfileWidget"/>
</widget>
<widget class="DiveListView" name="ListWidget">
+ <property name="styleSheet">
+ <string notr="true"> QTreeView {
+ show-decoration-selected: 1;
+ }
+
+ QTreeView::item {
+ border: 1px solid #d9d9d9;
+ border-top-color: transparent;
+ border-bottom-color: transparent;
+ padding: 2px;
+ }
+
+ QTreeView::item:hover {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1);
+ border: 1px solid #bfcde4;
+ }
+
+ QTreeView::item:selected {
+ border: 1px solid #567dbc;
+ }
+
+ QTreeView::item:selected:active{
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6ea1f1, stop: 1 #567dbc);
+ }
+
+ QTreeView::item:selected:!active {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6b9be8, stop: 1 #577fbf);
+ }
+
+</string>
+ </property>
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>true</bool>
+ </property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
+ <property name="animated">
+ <bool>true</bool>
+ </property>
+ <property name="allColumnsShowFocus">
+ <bool>true</bool>
+ </property>
</widget>
</widget>
</item>
@@ -42,7 +88,7 @@
<x>0</x>
<y>0</y>
<width>763</width>
- <height>20</height>
+ <height>19</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
diff --git a/qt-ui/modeldelegates.cpp b/qt-ui/modeldelegates.cpp
index 2adaaebc7..be47198e2 100644
--- a/qt-ui/modeldelegates.cpp
+++ b/qt-ui/modeldelegates.cpp
@@ -7,18 +7,24 @@
#include <QtDebug>
#include <QPainter>
#include <QSortFilterProxyModel>
+#include <QStyle>
+#include <QStyleOption>
+
+StarWidgetsDelegate::StarWidgetsDelegate(QWidget* parent):
+ QStyledItemDelegate(parent),
+ parentWidget(parent)
+{
+
+}
void StarWidgetsDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
+ QStyledItemDelegate::paint(painter, option, index);
+
if (!index.isValid())
return;
- QVariant value = index.model()->data(index, Qt::DisplayRole);
-
- if(option.state & QStyle::State_Selected)
- painter->fillRect(option.rect, option.palette.highlight());
- else
- painter->fillRect(option.rect, index.model()->data(index, Qt::BackgroundRole).value<QBrush>());
+ QVariant value = index.model()->data(index, TreeItemDT::STAR_ROLE);
if (!value.isValid())
return;
diff --git a/qt-ui/modeldelegates.h b/qt-ui/modeldelegates.h
index eacbb5a1e..5f90a3061 100644
--- a/qt-ui/modeldelegates.h
+++ b/qt-ui/modeldelegates.h
@@ -1,12 +1,15 @@
#ifndef MODELDELEGATES_H
#define MODELDELEGATES_H
-#include <QAbstractItemDelegate>
+#include <QStyledItemDelegate>
-class StarWidgetsDelegate : public QAbstractItemDelegate {
+class StarWidgetsDelegate : public QStyledItemDelegate {
Q_OBJECT
public:
+ explicit StarWidgetsDelegate(QWidget* parent = 0);
virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
virtual QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const;
+private:
+ QWidget *parentWidget;
};
#endif
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
index 373770404..eb4d8974b 100644
--- a/qt-ui/models.cpp
+++ b/qt-ui/models.cpp
@@ -490,12 +490,18 @@ QVariant DiveItem::data(int column, int role) const
case LOCATION:
retVal = QString(dive->location);
break;
- case RATING:
- retVal = dive->rating;
- break;
}
break;
}
+
+ if(role == STAR_ROLE){
+ retVal = dive->rating;
+ }
+
+ if(role == DIVE_ROLE){
+ retVal = QVariant::fromValue<void*>(dive);
+ }
+
return retVal;
}
@@ -601,9 +607,6 @@ QVariant DiveTripModel::data(const QModelIndex& index, int role) const
if (!index.isValid())
return QVariant();
- if (role == Qt::BackgroundRole)
- return QBrush(QColor(index.row() % 2 ? Qt::white : QColor(Qt::lightGray).lighter(120)));
-
TreeItemDT* item = static_cast<TreeItemDT*>(index.internalPointer());
return item->data(index.column(), role);
diff --git a/qt-ui/models.h b/qt-ui/models.h
index d063874d3..307cdf5c3 100644
--- a/qt-ui/models.h
+++ b/qt-ui/models.h
@@ -82,7 +82,11 @@ private:
struct TreeItemDT {
Q_DECLARE_TR_FUNCTIONS ( TreeItemDT );
public:
- enum Column {NR, DATE, RATING, DEPTH, DURATION, TEMPERATURE, TOTALWEIGHT, SUIT, CYLINDER, NITROX, SAC, OTU, MAXCNS, LOCATION, COLUMNS };
+ enum Column {NR, DATE, RATING, DEPTH, DURATION, TEMPERATURE, TOTALWEIGHT,
+ SUIT, CYLINDER, NITROX, SAC, OTU, MAXCNS, LOCATION, DIVE, COLUMNS };
+
+ enum ExtraRoles{STAR_ROLE = Qt::UserRole + 1, DIVE_ROLE};
+
virtual ~TreeItemDT();
int columnCount() const {
return COLUMNS;