diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-09-03 13:57:38 -0300 |
---|---|---|
committer | Tomaz Canabrava <tcanabrava@kde.org> | 2013-09-03 13:57:38 -0300 |
commit | 46a20e7dd819b0c2cf9d18c3a9e046b984442958 (patch) | |
tree | 59af7fde86bb54d51d57839e654b18f4b0775acf | |
parent | 5666f6573e70c3b472703bddeba240c202fe00de (diff) | |
download | subsurface-46a20e7dd819b0c2cf9d18c3a9e046b984442958.tar.gz |
Missing Files.
This should have been in the last commit - sorry.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
-rw-r--r-- | qt-ui/tableview.cpp | 90 | ||||
-rw-r--r-- | qt-ui/tableview.h | 45 | ||||
-rw-r--r-- | qt-ui/tableview.ui | 63 |
3 files changed, 198 insertions, 0 deletions
diff --git a/qt-ui/tableview.cpp b/qt-ui/tableview.cpp new file mode 100644 index 000000000..6956d3941 --- /dev/null +++ b/qt-ui/tableview.cpp @@ -0,0 +1,90 @@ +#include "tableview.h" +#include "ui_tableview.h" +#include "models.h" + +#include <QPushButton> +#include <QFile> +#include <QTextStream> +#include <QSettings> + +TableView::TableView(QWidget *parent) : QWidget(parent), ui(new Ui::TableView){ + ui->setupUi(this); + QFile cssFile(":table-css"); + cssFile.open(QIODevice::ReadOnly); + QTextStream reader(&cssFile); + QString css = reader.readAll(); + ui->tableView->setStyleSheet(css); + + QIcon plusIcon(":plus"); + plusBtn = new QPushButton(plusIcon, QString(), ui->groupBox); + plusBtn->setFlat(true); + plusBtn->setToolTip(tr("Add Cylinder")); + connect(plusBtn, SIGNAL(clicked(bool)), this, SIGNAL(addButtonClicked())); +} + +TableView::~TableView() +{ + QSettings s; + s.beginGroup(objectName()); + for (int i = 0; i < ui->tableView->model()->columnCount(); i++) { + s.setValue(QString("colwidth%1").arg(i), ui->tableView->columnWidth(i)); + } + s.endGroup(); + s.sync(); +} + +void TableView::setBtnToolTip(const QString& tooltip) +{ + plusBtn->setToolTip(tooltip); +} + +void TableView::setTitle(const QString& title) +{ + ui->groupBox->setTitle(title); +} + +void TableView::setModel(QAbstractItemModel *model){ + ui->tableView->setModel(model); + connect(ui->tableView, SIGNAL(clicked(QModelIndex)), model, SLOT(remove(QModelIndex))); + + QSettings s; + s.beginGroup(objectName()); + for (int i = 0; i < ui->tableView->model()->columnCount(); i++) { + QVariant width = s.value(QString("colwidth%1").arg(i)); + if (width.isValid()) + ui->tableView->setColumnWidth(i, width.toInt()); + else + ui->tableView->resizeColumnToContents(i); + } + s.endGroup(); + + ui->tableView->horizontalHeader()->setResizeMode(0, QHeaderView::Fixed); + QFontMetrics metrics(defaultModelFont()); + ui->tableView->verticalHeader()->setDefaultSectionSize( metrics.height() + 8 ); +} + +void TableView::fixPlusPosition() +{ + plusBtn->setGeometry(ui->groupBox->contentsRect().width() - 30, 2, 24,24); +} + +// We need to manually position the 'plus' on cylinder and weight. +void TableView::resizeEvent(QResizeEvent* event) +{ + fixPlusPosition(); + QWidget::resizeEvent(event); +} + +void TableView::showEvent(QShowEvent* event) +{ + QWidget::showEvent(event); + fixPlusPosition(); +} + +void TableView::edit(const QModelIndex& index){ + ui->tableView->edit(index); +} + +QTableView *TableView::view(){ + return ui->tableView; +} diff --git a/qt-ui/tableview.h b/qt-ui/tableview.h new file mode 100644 index 000000000..d22f466b5 --- /dev/null +++ b/qt-ui/tableview.h @@ -0,0 +1,45 @@ +#ifndef TABLEVIEW_H +#define TABLEVIEW_H + +/* This TableView is prepared to have the CSS, + * the methods to restore / save the state of + * the column widths and the 'plus' button. + */ +#include <QWidget> + +class QPushButton; +class QAbstractItemModel; +class QModelIndex; +class QTableView; +namespace Ui{ + class TableView; +}; + +class TableView : public QWidget { +Q_OBJECT +public: + TableView(QWidget *parent = 0); + virtual ~TableView(); + void setTitle(const QString& title); + /* The model is expected to have a 'remove' slot, that takes a QModelIndex as parameter. + * It's also expected to have the column '1' as a trash icon. I most probably should create a + * proxy model and add that column, will mark that as TODO. see? marked. + */ + void setModel(QAbstractItemModel* model); + void setBtnToolTip(const QString& tooltip); + void fixPlusPosition(); + void edit(const QModelIndex& index); + QTableView *view(); +protected: + virtual void showEvent(QShowEvent* ); + virtual void resizeEvent(QResizeEvent* ); + +signals: + void addButtonClicked(); + +private: + Ui::TableView *ui; + QPushButton *plusBtn; +}; + +#endif diff --git a/qt-ui/tableview.ui b/qt-ui/tableview.ui new file mode 100644 index 000000000..10b5f79f9 --- /dev/null +++ b/qt-ui/tableview.ui @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>TableView</class> + <widget class="QWidget" name="TableView"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string/> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QTableView" name="tableView"/> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> |