aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient/statusToolButton.cpp
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2010-10-08 14:18:04 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2010-10-08 14:18:04 +0000
commit4b064ca4a4b938814fdbe3d14c075d8e3de326e3 (patch)
treeef50fcbf8354e3dffab6eeb7593bcdba9978530f /examples/GuiClient/statusToolButton.cpp
parente4ffbeb064894b61c85e09e1a369a13f9906ea2f (diff)
downloadqxmpp-4b064ca4a4b938814fdbe3d14c075d8e3de326e3.tar.gz
don't use generic name
Diffstat (limited to 'examples/GuiClient/statusToolButton.cpp')
-rw-r--r--examples/GuiClient/statusToolButton.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/examples/GuiClient/statusToolButton.cpp b/examples/GuiClient/statusToolButton.cpp
new file mode 100644
index 00000000..acd8f165
--- /dev/null
+++ b/examples/GuiClient/statusToolButton.cpp
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2008-2010 The QXmpp developers
+ *
+ * Author:
+ * Manjeet Dahiya
+ *
+ * Source:
+ * http://code.google.com/p/qxmpp
+ *
+ * This file is a part of QXmpp library.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ */
+
+
+#include "statusToolButton.h"
+#include <QPainter>
+#include <QStyle>
+#include <QStyleOptionToolButton>
+
+statusToolButton::statusToolButton(QWidget* parent) : QToolButton(parent)
+{
+ setMinimumSize(QSize(20, 18));
+}
+
+void statusToolButton::paintEvent(QPaintEvent* event)
+{
+ Q_UNUSED(event);
+ QPainter painter(this);
+ if(underMouse())
+ {
+ QStyleOptionToolButton panel;
+ initStyleOption(&panel);
+ style()->drawPrimitive(QStyle::PE_PanelButtonTool, &panel, &painter, this);
+ }
+ QRect r = rect();
+ QFont font;
+ painter.setFont(font);
+ painter.setPen(Qt::gray);
+
+ QRect rectSize(0, 0, sizeHint().width(), sizeHint().height());
+ rectSize.moveCenter(r.center());
+ r = rectSize;
+ r.adjust(0, 0, -1, -1);
+ painter.setPen(Qt::black);
+ painter.setBrush(Qt::black);
+ r.moveLeft(r.left() + 3);
+ font.setBold(true);
+ painter.setFont(font);
+ painter.drawText(r, Qt::AlignVCenter|Qt::TextSingleLine, text());
+
+ QImage image(":/icons/resource/downArrow.png");
+ QRect rectDelta(0, 0, 7, 4);
+ rectDelta.moveRight(r.right() - 4);
+ rectDelta.moveCenter(QPoint(rectDelta.center().x(), r.center().y()));
+ painter.drawImage(rectDelta, image);
+}
+
+QSize statusToolButton::sizeHint() const
+{
+ QFont font;
+ font.setBold(true);
+ QFontMetrics fm(font);
+ int width = fm.width(text());
+ if(width <= (160 - 8 - 9))
+ return QSize(width+8+9, 18);
+ else
+ return QSize(160, 18);
+}