Bug 118570

Summary: ER diagrams need to underline the attribute name of primary keys
Product: [Applications] umbrello Reporter: Matthias Kretz <kretz>
Component: generalAssignee: Umbrello Development Group <umbrello-devel>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Attachments: patch to print primary keys underlined

Description Matthias Kretz 2005-12-18 14:38:07 UTC
Version:           unknown (using KDE 3.5.0, Kubuntu Package 4:3.5.0-0ubuntu0breezy1 breezy)
Compiler:          Target: i486-linux-gnu
OS:                Linux (i686) release 2.6.12-10-686

The classical way to draw ER diagrams shows attributes as ellipses with primary keys underlined. To make sense of an ER diagram it is often necessary to see which attributes are primary keys.
Umbrello's ER diagrams don't mark primary keys at all. Other programs show a key next to the attribute name, which would solve the problem as well.
I'd suggest to just show the primary key attribute names underlined.

Patch follows.
Comment 1 Matthias Kretz 2005-12-18 14:40:33 UTC
Created attachment 13971 [details]
patch to print primary keys underlined
Comment 2 Oliver Kellogg 2005-12-18 17:41:33 UTC
Looks fine to me, please commit.
Thanks for your work on the ER stuff - it's badly in need of improvement :)
Comment 3 Oliver Kellogg 2005-12-20 20:09:05 UTC
SVN commit 490084 by okellogg:

draw(): Patch from Matthias Kretz displays primary keys underlined.
BUG:118570


 M  +1 -1      ChangeLog  
 M  +8 -0      umbrello/entitywidget.cpp  


--- branches/KDE/3.5/kdesdk/umbrello/ChangeLog #490083:490084
@@ -1,7 +1,7 @@
 Version 1.5.1
 
 * Bugs fixed / wishes implemented (see http://bugs.kde.org)
-109963 117875 117791
+109963 117791 117875 117990 118570
 
 Version 1.5
 
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/entitywidget.cpp #490083:490084
@@ -104,8 +104,16 @@
     for (entityattribute = list.first(); entityattribute; entityattribute = list.next()) {
         QString text = entityattribute->getName();
         p.setPen( QPen(Qt::black) );
+        UMLEntityAttribute* casted = dynamic_cast<UMLEntityAttribute*>( entityattribute );
+        if( casted && casted->getIndexType() == Uml::Primary )
+        {
+            font.setUnderline( true );
+            p.setFont( font );
+            font.setUnderline( false );
+        }
         p.drawText(offsetX + ENTITY_MARGIN, offsetY + y,
                    fontMetrics.width(text), fontHeight, Qt::AlignVCenter, text);
+        p.setFont( font );
         y+=fontHeight;
     }