custom buttons
authorSerge Ziryukin <ftrvxmtrx@gmail.com>
Tue, 13 Apr 2010 16:10:00 +0000 (19:10 +0300)
committerSerge Ziryukin <ftrvxmtrx@gmail.com>
Tue, 13 Apr 2010 16:10:00 +0000 (19:10 +0300)
colorflood/src/CMakeLists.txt
colorflood/src/colorbutton.cpp [new file with mode: 0644]
colorflood/src/colorbutton.hpp [new file with mode: 0644]
colorflood/src/colorbuttons.cpp

index 265ea9f..a73889e 100644 (file)
@@ -10,6 +10,7 @@
 # GNU General Public License for more details.
 
 set(src
+  colorbutton.cpp
   colorbuttons.cpp
   colorscheme.cpp
   field.cpp
@@ -19,6 +20,7 @@ set(src
   )
 
 set(moc
+  colorbutton.hpp
   colorbuttons.hpp
   field.hpp
   #fullscreenexitbutton.hpp
diff --git a/colorflood/src/colorbutton.cpp b/colorflood/src/colorbutton.cpp
new file mode 100644 (file)
index 0000000..81a69fd
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+  Copyright 2010 Serge Ziryukin <ftrvxmtrx@gmail.com>
+
+  This program 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; version 2 of the License.
+
+  This program 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.
+*/
+
+#include <QPainter>
+#include "colorbutton.hpp"
+#include "colorscheme.hpp"
+
+ColorButton::ColorButton (QWidget *parent, int brush)
+    : QPushButton(parent),
+      brush(brush)
+{
+    setFixedSize(64, 64);
+}
+
+void ColorButton::paintEvent (QPaintEvent * /* event */)
+{
+    QPainter painter;
+    painter.begin(this);
+
+    const QVector<QBrush> &scheme = ColorScheme::instance().getScheme();
+    painter.fillRect(0, 0, 64, 64, scheme.at(brush));
+
+    painter.end();
+}
diff --git a/colorflood/src/colorbutton.hpp b/colorflood/src/colorbutton.hpp
new file mode 100644 (file)
index 0000000..4058fcc
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+  Copyright 2010 Serge Ziryukin <ftrvxmtrx@gmail.com>
+
+  This program 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; version 2 of the License.
+
+  This program 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.
+*/
+
+#ifndef _COLORBUTTON_HPP
+#define _COLORBUTTON_HPP
+
+#include <QPushButton>
+
+class ColorButton : public QPushButton
+{
+    Q_OBJECT;
+
+public:
+    ColorButton (QWidget *parent, int brush);
+
+private:
+    const int brush;
+
+protected:
+    void paintEvent (QPaintEvent *event);
+};
+
+#endif // !_COLORBUTTON_HPP
index d8275f6..1d46bf1 100644 (file)
 #include <QPainter>
 #include <QPixmap>
 #include <QPushButton>
-#include <QVBoxLayout>
+#include <QGridLayout>
 #include "colorbuttons.hpp"
 #include "colorscheme.hpp"
+#include "colorbutton.hpp"
 
 ColorButtons::ColorButtons (QWidget *parent)
     : QGroupBox(parent)
@@ -25,19 +26,12 @@ ColorButtons::ColorButtons (QWidget *parent)
     Q_ASSERT(parent);
 
     const QVector<QBrush> &scheme = ColorScheme::instance().getScheme();
-    QVBoxLayout *layout = new QVBoxLayout;
+    QGridLayout *layout = new QGridLayout;
 
     for (int i = 0; i < scheme.size(); i++)
     {
-        QPixmap pixmap(64, 64);
-        QPainter painter;
-        painter.begin(&pixmap);
-        painter.fillRect(pixmap.rect(), scheme.at(i));
-        painter.end();
-
-        QPushButton *button = new QPushButton(pixmap, "", this);
-        button->setFixedSize(48, 48);
-        layout->addWidget(button);
+        ColorButton *button = new ColorButton(this, i);
+        layout->addWidget(button, (i - (i % 3)) / 3, i % 3);
         group.addButton(button, i);
     }