From 6c8b49f1e687663fbe3daab2c7a324ded628c7ef Mon Sep 17 00:00:00 2001 From: Jim Evins Date: Sun, 6 Jul 2014 15:58:22 -0400 Subject: [PATCH] Added color pallette item class. --- glabels/CMakeLists.txt | 2 + glabels/ColorPalletteItem.cpp | 80 +++++++++++++++++++++++++++++++++ glabels/ColorPalletteItem.h | 84 +++++++++++++++++++++++++++++++++++ glabels/ColorSwatch.cpp | 44 +++++------------- glabels/ColorSwatch.h | 28 ++---------- 5 files changed, 179 insertions(+), 59 deletions(-) create mode 100644 glabels/ColorPalletteItem.cpp create mode 100644 glabels/ColorPalletteItem.h diff --git a/glabels/CMakeLists.txt b/glabels/CMakeLists.txt index b1c594b..c937fa6 100644 --- a/glabels/CMakeLists.txt +++ b/glabels/CMakeLists.txt @@ -10,6 +10,7 @@ set (glabels_sources BarcodeMenuItem.cpp BarcodeStyle.cpp ColorNode.cpp + ColorPalletteItem.cpp ColorSwatch.cpp File.cpp Help.cpp @@ -32,6 +33,7 @@ set (glabels_qobject_headers BarcodeMenu.h BarcodeMenuButton.h BarcodeMenuItem.h + ColorPalletteItem.h LabelModel.h LabelModelObject.h LabelModelBoxObject.h diff --git a/glabels/ColorPalletteItem.cpp b/glabels/ColorPalletteItem.cpp new file mode 100644 index 0000000..9f9bf37 --- /dev/null +++ b/glabels/ColorPalletteItem.cpp @@ -0,0 +1,80 @@ +/* ColorPalletteItem.cpp + * + * Copyright (C) 2014 Jim Evins + * + * This file is part of gLabels-qt. + * + * gLabels-qt is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * gLabels-qt is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with gLabels-qt. If not, see . + */ + +#include "ColorPalletteItem.h" + +#include "ColorSwatch.h" + + +// +// Private Configuration Data +// +namespace +{ + const double wSwatch = 20; + const double hSwatch = 20; +} + + +namespace glabels +{ + + /// + /// Constructor From Data + /// + ColorPalletteItem::ColorPalletteItem( int id, + const QColor& color, + const QString& tip, + QWidget* parent ) + : QPushButton(parent), mId(id), mColor(color), mTip(tip) + { + setIcon( QIcon( ColorSwatch( wSwatch, hSwatch, color ) ) ); + setToolTip( tip ); + + connect( this, SIGNAL(clicked()), this, SLOT(onClicked()) ); + } + + + /// + /// Color Property Setter + /// + void ColorPalletteItem::setColor( int id, + const QColor& color, + const QString& tip ) + { + mId = id; + mColor = color; + mTip = tip; + + setIcon( QIcon( ColorSwatch( wSwatch, hSwatch, color ) ) ); + setToolTip( tip ); + } + + + /// + /// onClicked slot + /// + void ColorPalletteItem::onClicked() + { + emit activated( mId ); + } + +} + diff --git a/glabels/ColorPalletteItem.h b/glabels/ColorPalletteItem.h new file mode 100644 index 0000000..3efeb2e --- /dev/null +++ b/glabels/ColorPalletteItem.h @@ -0,0 +1,84 @@ +/* ColorPalletteItem.h + * + * Copyright (C) 2014 Jim Evins + * + * This file is part of gLabels-qt. + * + * gLabels-qt is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * gLabels-qt is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with gLabels-qt. If not, see . + */ + +#ifndef glabels_ColorPalletteItem_h +#define glabels_ColorPalletteItem_h + +#include +#include + + +namespace glabels +{ + + /// + /// Barcode Menu Item + /// + class ColorPalletteItem : public QPushButton + { + Q_OBJECT + + ///////////////////////////////// + // Life Cycle + ///////////////////////////////// + public: + ColorPalletteItem( int id, + const QColor& color, + const QString& tip, + QWidget* parent = 0 ); + + + ///////////////////////////////// + // Signals + ///////////////////////////////// + signals: + void activated( int id ); + + + ///////////////////////////////// + // Properties + ///////////////////////////////// + public: + void setColor( int id, + const QColor& color, + const QString& tip ); + + + ///////////////////////////////// + // Slots + ///////////////////////////////// + private slots: + void onClicked(); + + + ///////////////////////////////// + // Private Data + ///////////////////////////////// + private: + int mId; + QColor mColor; + QString mTip; + + }; + + +} + +#endif // glabels_ColorPalletteItem_h diff --git a/glabels/ColorSwatch.cpp b/glabels/ColorSwatch.cpp index 7b3843c..304a8c2 100644 --- a/glabels/ColorSwatch.cpp +++ b/glabels/ColorSwatch.cpp @@ -20,9 +20,7 @@ #include "ColorSwatch.h" -#include -#include -#include +#include // @@ -41,43 +39,21 @@ namespace glabels /// /// Constructor /// - ColorSwatch::ColorSwatch( int w, int h, QColor& color, QWidget *parent ) - : mW(w), mH(h), mColor(color), QGraphicsView(parent) + ColorSwatch::ColorSwatch( int w, int h, const QColor& color ) { - setAttribute(Qt::WA_TranslucentBackground); - viewport()->setAutoFillBackground(false); - setFrameStyle( QFrame::NoFrame ); - setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); - resize( mW, mH ); - fitInView( 0, 0, mW, mH, Qt::KeepAspectRatio ); + fill( Qt::transparent ); - mScene = new QGraphicsScene(); - setScene( mScene ); + QPainter painter(this ); - mScene->setSceneRect( 0, 0, mW, mH ); + painter.setBackgroundMode( Qt::TransparentMode ); - QBrush brush( mColor ); + QBrush brush( color ); QPen pen( outlineColor ); - pen.setWidthF( outlineWidthPixels ); + pen.setWidth( outlineWidthPixels ); - mSwatchItem = new QGraphicsRectItem( 1, 1, mW-2, mH-2 ); - mSwatchItem->setBrush( brush ); - mSwatchItem->setPen( pen ); - - mScene->addItem( mSwatchItem ); + painter.setBrush( brush ); + painter.setPen( pen ); + painter.drawRect( 1, 1, w-2, h-2 ); } - - /// - /// Color Property Setter - /// - void ColorSwatch::setColor( QColor& color ) - { - mColor = color; - - QBrush brush( mColor ); - mSwatchItem->setBrush( brush ); - } - - } diff --git a/glabels/ColorSwatch.h b/glabels/ColorSwatch.h index 49cd986..fadc2ff 100644 --- a/glabels/ColorSwatch.h +++ b/glabels/ColorSwatch.h @@ -21,10 +21,7 @@ #ifndef glabels_ColorSwatch_h #define glabels_ColorSwatch_h -#include -#include -#include -#include +#include namespace glabels @@ -33,33 +30,14 @@ namespace glabels /// /// Simple Preview Widget /// - class ColorSwatch : public QGraphicsView + class ColorSwatch : public QPixmap { ///////////////////////////////// // Life Cycle ///////////////////////////////// public: - ColorSwatch( int w, int h, QColor& color, QWidget *parent = 0 ); - - - ///////////////////////////////// - // Properties - ///////////////////////////////// - public: - void setColor( QColor& color ); - - - ///////////////////////////////// - // Private Data - ///////////////////////////////// - private: - int mW; - int mH; - QColor mColor; - - QGraphicsScene* mScene; - QGraphicsRectItem* mSwatchItem; + ColorSwatch( int w, int h, const QColor& color ); };