diff options
author | Lukáš Lalinský <lalinsky@gmail.com> | 2009-04-07 18:39:17 +0200 |
---|---|---|
committer | Lukáš Lalinský <lalinsky@gmail.com> | 2009-04-07 18:39:17 +0200 |
commit | 93123b2cb3a1c3b9a15de7f5b34198dc6ebacc23 (patch) | |
tree | 755f750b56290973b6e1024aba3ab9d340edbd8f /src/items/database | |
parent | 9e8b7d5b37d985c73531f8f536728c3fa217d073 (diff) | |
download | dbmodel-93123b2cb3a1c3b9a15de7f5b34198dc6ebacc23.tar.xz |
Support for custom table background colors
Diffstat (limited to 'src/items/database')
-rw-r--r-- | src/items/database/databasetable.cpp | 17 | ||||
-rw-r--r-- | src/items/database/databasetable.h | 5 | ||||
-rw-r--r-- | src/items/database/databasetableproperties.cpp | 33 | ||||
-rw-r--r-- | src/items/database/databasetableproperties.h | 1 |
4 files changed, 53 insertions, 3 deletions
diff --git a/src/items/database/databasetable.cpp b/src/items/database/databasetable.cpp index 8f36308..7f73b0d 100644 --- a/src/items/database/databasetable.cpp +++ b/src/items/database/databasetable.cpp @@ -31,6 +31,7 @@ DatabaseTable::DatabaseTable(DiagramItem *parent) setFlag(ItemIsMovable); setFlag(ItemIsSelectable); setHub(new BoxSideHub(this)); + m_color = Qt::white; m_columnList = new ColumnList(this); connect(m_columnList, SIGNAL(columnInserted(int)), this, SLOT(updateLayout())); connect(m_columnList, SIGNAL(columnRemoved(int)), this, SLOT(updateLayout())); @@ -67,8 +68,9 @@ DatabaseTable::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QPen pen(QPen(QColor(0, 0, 0))); pen.setJoinStyle(Qt::MiterJoin); + pen.setWidth(1); QPen borderPen(pen); - borderPen.setWidthF(1.5); + borderPen.setWidthF(1.3); if (!document()->isPrinting() && isSelected()) { borderPen.setColor(QColor(0, 96, 255)); } @@ -76,7 +78,7 @@ DatabaseTable::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, painter->setPen(pen); painter->setFont(font); - painter->fillRect(m_outerRect, QColor(255, 255, 255)); + painter->fillRect(m_outerRect, color()); // Draw the table name painter->fillRect(m_nameBgRect, QColor(205, 205, 205)); @@ -120,6 +122,14 @@ DatabaseTable::setName(const QString &name) } void +DatabaseTable::setColor(const QColor &color) +{ + m_color = color; + updateLayout(); + emit propertyChanged("color", color); +} + +void DatabaseTable::setInitialName(int counter) { setName(counter > 1 ? QString("table_%1").arg(counter) : "table"); @@ -217,6 +227,8 @@ DatabaseTable::loadFromXml(QDomElement element, DiagramDocument *document) QDomElement tableElement = element.firstChildElement("table"); if (!tableElement.isNull()) { setName(readStringElement(tableElement, "name")); + QColor color(readStringElement(tableElement, "color")); + setColor(color.isValid() ? color : Qt::white); QDomElement columnListElement = tableElement.firstChildElement("column-list"); QDomElement columnElement = columnListElement.firstChildElement("column"); while (!columnElement.isNull()) { @@ -239,6 +251,7 @@ DatabaseTable::saveToXml(QDomDocument doc, QDomElement element) QDomElement tableElement = doc.createElement("table"); element.appendChild(tableElement); appendStringElement(doc, tableElement, "name", name()); + appendStringElement(doc, tableElement, "color", color().name()); QDomElement columnListElement = doc.createElement("column-list"); tableElement.appendChild(columnListElement); foreach (Column *column, columnList()->columns()) { diff --git a/src/items/database/databasetable.h b/src/items/database/databasetable.h index df3d630..59eaa31 100644 --- a/src/items/database/databasetable.h +++ b/src/items/database/databasetable.h @@ -30,6 +30,7 @@ class DatabaseTable : public DiagramObject { Q_OBJECT Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(QColor color READ color WRITE setColor) public: DatabaseTable(DiagramItem *parent = 0); @@ -41,6 +42,9 @@ public: void setName(const QString &name); void setInitialName(int counter); + QColor color() const { return m_color; } + void setColor(const QColor &color); + QList<Column *> primaryKeys() const; ColumnList *columnList() const { return m_columnList; } @@ -71,6 +75,7 @@ protected: private: QString m_name; + QColor m_color; ColumnList *m_columnList; QList<QString> m_columnLabels; diff --git a/src/items/database/databasetableproperties.cpp b/src/items/database/databasetableproperties.cpp index 9b92f13..8bce7b5 100644 --- a/src/items/database/databasetableproperties.cpp +++ b/src/items/database/databasetableproperties.cpp @@ -24,6 +24,7 @@ #include "databasetable.h" #include "databasetableproperties.h" #include "diagramdocument.h" +#include "utils/colorpicker/qtcolorpicker.h" class DatabaseTableProperties::PrivateData { @@ -37,6 +38,7 @@ public: QPushButton *removeColumnButton; QPushButton *moveColumnUpButton; QPushButton *moveColumnDownButton; + QtColorPicker *colorPicker; }; DatabaseTableProperties::DatabaseTableProperties(QWidget *parent) @@ -62,7 +64,25 @@ DatabaseTableProperties::createTablePage() connect(d->nameEdit, SIGNAL(textEdited(const QString &)), SLOT(setTableName(const QString &))); layout->addWidget(new QLabel(tr("Name:"), page), 0, 0); layout->addWidget(d->nameEdit, 0, 1); - layout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding), 1, 0, 1, 2); + + d->colorPicker = new QtColorPicker(page); + d->colorPicker->insertColor(Qt::white, tr("White")); + d->colorPicker->insertColor(QColor("#AAAAAA"), tr("Gray")); + d->colorPicker->insertColor(QColor("#777777"), tr("Gray")); + d->colorPicker->insertColor(QColor("#333333"), tr("Gray")); + d->colorPicker->insertColor(QColor("#FFCCCC"), tr("Red")); + d->colorPicker->insertColor(QColor("#CC9900"), tr("Brown")); + d->colorPicker->insertColor(QColor("#FFCCFF"), tr("Pink")); + d->colorPicker->insertColor(QColor("#FFFFCC"), tr("Yellow")); + d->colorPicker->insertColor(QColor("#CCFFCC"), tr("Green")); + d->colorPicker->insertColor(QColor("#CCECFF"), tr("Blue")); + connect(d->colorPicker, SIGNAL(colorChanged(const QColor &)), SLOT(setTableColor(const QColor &))); + layout->addWidget(new QLabel(tr("Color:"), page), 1, 0); + QHBoxLayout *hbox = new QHBoxLayout(); + hbox->addWidget(d->colorPicker); + hbox->addStretch(); + layout->addLayout(hbox, 1, 1); + layout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding), 2, 0, 2, 2); return page; } @@ -106,6 +126,7 @@ DatabaseTableProperties::switchCurrentItem(DiagramItem *oldItem, DiagramItem *) DatabaseTable *table = currentTable(); if (table) { d->nameEdit->setText(table->name()); + d->colorPicker->setCurrentColor(table->color()); d->columnListView->setColumnList(table->columnList()); connect(table, SIGNAL(propertyChanged(const QString &, const QVariant &)), SLOT(updateProperty(const QString &, const QVariant &))); } @@ -122,6 +143,9 @@ DatabaseTableProperties::updateProperty(const QString &name, const QVariant &val if (name == "name") { d->nameEdit->setText(value.toString()); } + else if (name == "color") { + d->colorPicker->setCurrentColor(qVariantValue<QColor>(value)); + } } void @@ -132,6 +156,13 @@ DatabaseTableProperties::setTableName(const QString &name) } void +DatabaseTableProperties::setTableColor(const QColor &color) +{ + DatabaseTable *table = currentTable(); + table->document()->undoStack()->push(new SetObjectPropertyCommand(table, "color", color)); +} + +void DatabaseTableProperties::updateColumnSelection() { QList<int> columns = d->columnListView->selectedColumns(); diff --git a/src/items/database/databasetableproperties.h b/src/items/database/databasetableproperties.h index cd7fa14..19faf0a 100644 --- a/src/items/database/databasetableproperties.h +++ b/src/items/database/databasetableproperties.h @@ -35,6 +35,7 @@ protected slots: void updateProperty(const QString &name, const QVariant &value); void updateColumnSelection(); void setTableName(const QString &name); + void setTableColor(const QColor &color); private: class PrivateData; |