summaryrefslogtreecommitdiff
path: root/src/items/database
diff options
context:
space:
mode:
authorLukáš Lalinský <lalinsky@gmail.com>2009-04-07 18:39:17 +0200
committerLukáš Lalinský <lalinsky@gmail.com>2009-04-07 18:39:17 +0200
commit93123b2cb3a1c3b9a15de7f5b34198dc6ebacc23 (patch)
tree755f750b56290973b6e1024aba3ab9d340edbd8f /src/items/database
parent9e8b7d5b37d985c73531f8f536728c3fa217d073 (diff)
downloaddbmodel-93123b2cb3a1c3b9a15de7f5b34198dc6ebacc23.tar.xz
Support for custom table background colors
Diffstat (limited to 'src/items/database')
-rw-r--r--src/items/database/databasetable.cpp17
-rw-r--r--src/items/database/databasetable.h5
-rw-r--r--src/items/database/databasetableproperties.cpp33
-rw-r--r--src/items/database/databasetableproperties.h1
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;