From 02b00b151168ffa2c4e306248d37a5a328e58903 Mon Sep 17 00:00:00 2001 From: Jim Evins Date: Tue, 18 Aug 2015 23:48:25 -0400 Subject: [PATCH] Tweaking color button menu. --- glabels/ColorButton.cpp | 29 +++++++++++++++++++---------- glabels/ColorButton.h | 2 +- glabels/ColorPaletteButtonItem.cpp | 2 ++ glabels/ColorPaletteDialog.cpp | 9 +++++---- glabels/ColorPaletteItem.cpp | 2 ++ 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/glabels/ColorButton.cpp b/glabels/ColorButton.cpp index b1e210a..3680650 100644 --- a/glabels/ColorButton.cpp +++ b/glabels/ColorButton.cpp @@ -22,6 +22,9 @@ #include "ColorSwatch.h" #include +#include +#include +#include namespace @@ -50,10 +53,16 @@ namespace glabels setCheckable( true ); mDialog = new ColorPaletteDialog( defaultLabel, defaultColor, color ); - mDialog->setModal( true ); + //mDialog->setModal( true ); - connect( this, SIGNAL(pressed()), this, SLOT(onButtonPressed()) ); - connect( mDialog, SIGNAL(colorChanged(colorNode,bool)), this, SLOT(onColorPaletteDialogChanged(colorNode,bool)) ); + mMenu = new QMenu(); + QHBoxLayout* layout = new QHBoxLayout; + layout->addWidget( mDialog ); + mMenu->setLayout( layout ); + setMenu( mMenu ); + + connect( mDialog, SIGNAL(colorChanged(ColorNode,bool)), + this, SLOT(onPaletteDialogChanged(ColorNode,bool)) ); } @@ -121,18 +130,18 @@ namespace glabels } - void ColorButton::onButtonPressed() - { - // TODO: move dialog -- see menu_position_function is VALA version - mDialog->show(); - } - - void ColorButton::onPaletteDialogChanged( ColorNode colorNode, bool isDefault ) { + qDebug() << "Palette Dialog Changed."; + mColorNode = colorNode; mIsDefault = isDefault; + setIcon( QIcon( ColorSwatch( SWATCH_W, SWATCH_H, colorNode.color() ) ) ); + setText( "" ); + + mMenu->setVisible( false ); + emit colorChanged(); } diff --git a/glabels/ColorButton.h b/glabels/ColorButton.h index 5b1cefc..af01a75 100644 --- a/glabels/ColorButton.h +++ b/glabels/ColorButton.h @@ -69,7 +69,6 @@ namespace glabels // Slots ///////////////////////////////// private slots: - void onButtonPressed(); void onPaletteDialogChanged( ColorNode colorNode, bool isDefault ); @@ -88,6 +87,7 @@ namespace glabels ColorNode mColorNode; ColorPaletteDialog* mDialog; + QMenu* mMenu; }; } diff --git a/glabels/ColorPaletteButtonItem.cpp b/glabels/ColorPaletteButtonItem.cpp index cc1730a..7ee0d6e 100644 --- a/glabels/ColorPaletteButtonItem.cpp +++ b/glabels/ColorPaletteButtonItem.cpp @@ -22,6 +22,7 @@ #include +#include // @@ -123,6 +124,7 @@ namespace glabels /// void ColorPaletteButtonItem::mousePressEvent( QMouseEvent* event ) { + event->ignore(); // Allow event to propagate to parent emit activated(); } diff --git a/glabels/ColorPaletteDialog.cpp b/glabels/ColorPaletteDialog.cpp index 28f7ec5..a4307df 100644 --- a/glabels/ColorPaletteDialog.cpp +++ b/glabels/ColorPaletteDialog.cpp @@ -87,11 +87,15 @@ namespace glabels mColorHistory = ColorHistory::instance(); connect( mColorHistory, SIGNAL(changed()), this, SLOT(onColorHistoryChanged()) ); + mDefaultColor = defaultColor; + mColorNode = ColorNode( color ); + QVBoxLayout* vLayout = new QVBoxLayout(); vLayout->setContentsMargins( 0, 0, 0, 0 ); vLayout->setSpacing( 0 ); ColorPaletteButtonItem* defaultButton = new ColorPaletteButtonItem( defaultLabel ); + connect( defaultButton, SIGNAL(activated()), this, SLOT(onDefaultItemActivated()) ); vLayout->addWidget( defaultButton ); QFrame* hline1 = new QFrame; @@ -141,6 +145,7 @@ namespace glabels vLayout->addWidget( hline3 ); ColorPaletteButtonItem* customColorButton = new ColorPaletteButtonItem( tr("Custom color") ); + connect( customColorButton, SIGNAL(activated()), this, SLOT(onCustomColorItemActivated()) ); vLayout->addWidget( customColorButton ); QFrame* hline4 = new QFrame; @@ -175,7 +180,6 @@ namespace glabels mColorNode.setColor( mDefaultColor ); mColorNode.setKey( "" ); - setVisible( false ); emit colorChanged( mColorNode, true ); } @@ -186,7 +190,6 @@ namespace glabels mColorNode.setColor( QColor( mColorTable[id].colorSpec ) ); mColorNode.setKey( "" ); - setVisible( false ); emit colorChanged( mColorNode, false ); } @@ -197,14 +200,12 @@ namespace glabels mColorNode.setColor( mColorHistory->getColor( id ) ); mColorNode.setKey( "" ); - setVisible( false ); emit colorChanged( mColorNode, false ); } void ColorPaletteDialog::onCustomColorItemActivated() { - setVisible( false ); // TODO } diff --git a/glabels/ColorPaletteItem.cpp b/glabels/ColorPaletteItem.cpp index 22dc32e..d3c573b 100644 --- a/glabels/ColorPaletteItem.cpp +++ b/glabels/ColorPaletteItem.cpp @@ -22,6 +22,7 @@ #include +#include // @@ -162,6 +163,7 @@ namespace glabels /// void ColorPaletteItem::mousePressEvent( QMouseEvent* event ) { + event->ignore(); // Allow event to propagate to parent emit activated( mId ); }