diff demos/browser/searchlineedit.d @ 72:b149ef2cb18b

more porting
author mandel
date Wed, 20 May 2009 22:44:31 +0000
parents 71b382c10ef6
children 7bfd46c330dc
line wrap: on
line diff
--- a/demos/browser/searchlineedit.d	Wed May 20 21:06:33 2009 +0000
+++ b/demos/browser/searchlineedit.d	Wed May 20 22:44:31 2009 +0000
@@ -39,18 +39,17 @@
 **
 ****************************************************************************/
 
+module searchlineedit;
+
 import urllineedit;
 
-import QtGui.QLineEdit;
-import QtGui.QAbstractButton;
-
-import searchlineedit;
-
-import QtGui.QPainter;
-import QtGui.QMouseEvent;
-import QtGui.QMenu;
-import QtGui.QStyle;
-import QtGui.QStyleOptionFrameV2;
+import qt.gui.QLineEdit;
+import qt.gui.QAbstractButton;
+import qt.gui.QPainter;
+import qt.gui.QMouseEvent;
+import qt.gui.QMenu;
+import qt.gui.QStyle;
+import qt.gui.QStyleOptionFrameV2;
 
 /*
 QT_BEGIN_NAMESPACE
@@ -67,46 +66,42 @@
  */
 class ClearButton : public QAbstractButton
 {
-    Q_OBJECT
+public:
 
-public:
-    this(QWidget *parent = null)
-{
-	super(parent);
-    setCursor(Qt.ArrowCursor);
-    setToolTip(tr("Clear"));
-    setVisible(false);
-    setFocusPolicy(Qt.NoFocus);
-}
-    void paintEvent(QPaintEvent *event)
-{
-    Q_UNUSED(event);
-    QPainter painter(this);
-    int height = this.height();
+	this(QWidget parent = null)
+	{
+		super(parent);
+		setCursor(Qt.ArrowCursor);
+		setToolTip(tr("Clear"));
+		setVisible(false);
+		setFocusPolicy(Qt.NoFocus);
+	}
+	
+	void paintEvent(QPaintEvent *event)
+	{
+		//Q_UNUSED(event);
+		QPainter painter(this);
+		int height = this.height();
 
-    painter.setRenderHint(QPainter::Antialiasing, true);
-    QColor color = palette().color(QPalette.Mid);
-    painter.setBrush(isDown()
-                     ? palette().color(QPalette.Dark)
-                     : palette().color(QPalette.Mid));
-    painter.setPen(painter.brush().color());
-    int size = width();
-    int offset = size / 5;
-    int radius = size - offset * 2;
-    painter.drawEllipse(offset, offset, radius, radius);
+		painter.setRenderHint(QPainter.Antialiasing, true);
+		QColor color = palette().color(QPalette.Mid);
+		painter.setBrush(isDown() ? palette().color(QPalette.Dark) : palette().color(QPalette.Mid));
+		painter.setPen(painter.brush().color());
+		int size = width();
+		int offset = size / 5;
+		int radius = size - offset * 2;
+		painter.drawEllipse(offset, offset, radius, radius);
 
-    painter.setPen(palette().color(QPalette.Base));
-    int border = offset * 2;
-    painter.drawLine(border, border, width() - border, height - border);
-    painter.drawLine(border, height - border, width() - border, border);
-}
+		painter.setPen(palette().color(QPalette.Base));
+		int border = offset * 2;
+		painter.drawLine(border, border, width() - border, height - border);
+		painter.drawLine(border, height - border, width() - border, border);
+	}
 
-public slots:
-    void textChanged(QString &text)
-{
-    setVisible(!text.isEmpty());
-}
-
+	void textChanged(QString &text)
+	{
+		setVisible(!text.isEmpty());
+	}
 }
 
 /*
@@ -114,75 +109,76 @@
     When a menu is set a down arrow appears
  */
 class SearchButton : public QAbstractButton {
+
 public:
-    SearchButton(QWidget *parent = null)
-{
-	super(parent);
-	m_menu = 0;
-    setObjectName(QLatin1String("SearchButton"));
-    setCursor(Qt.ArrowCursor);
-    setFocusPolicy(Qt.NoFocus);
-}
 
-    void paintEvent(QPaintEvent *event)
-{
-    Q_UNUSED(event);
-    QPainterPath myPath;
+	SearchButton(QWidget parent = null)
+	{
+		super(parent);
+		m_menu = 0;
+		setObjectName(QLatin1String("SearchButton"));
+		setCursor(Qt.ArrowCursor);
+		setFocusPolicy(Qt.NoFocus);
+	}
 
-    int radius = (height() / 5) * 2;
-    QRect circle(height() / 3 - 1, height() / 4, radius, radius);
-    myPath.addEllipse(circle);
+	void paintEvent(QPaintEvent event)
+	{
+		//Q_UNUSED(event);
+		QPainterPath myPath;
+
+		int radius = (height() / 5) * 2;
+		QRect circle(height() / 3 - 1, height() / 4, radius, radius);
+		myPath.addEllipse(circle);
 
-    myPath.arcMoveTo(circle, 300);
-    QPointF c = myPath.currentPosition();
-    int diff = height() / 7;
-    myPath.lineTo(qMin(width() - 2, (int)c.x() + diff), c.y() + diff);
+		myPath.arcMoveTo(circle, 300);
+		QPointF c = myPath.currentPosition();
+		int diff = height() / 7;
+		myPath.lineTo(qMin(width() - 2, (int)c.x() + diff), c.y() + diff);
 
-    QPainter painter(this);
-    painter.setRenderHint(QPainter::Antialiasing, true);
-    painter.setPen(QPen(Qt.darkGray, 2));
-    painter.drawPath(myPath);
+		QPainter painter(this);
+		painter.setRenderHint(QPainter.Antialiasing, true);
+		painter.setPen(QPen(Qt.darkGray, 2));
+		painter.drawPath(myPath);
 
-    if (m_menu) {
-        QPainterPath dropPath;
-        dropPath.arcMoveTo(circle, 320);
-        QPointF c = dropPath.currentPosition();
-        c = QPointF(c.x() + 3.5, c.y() + 0.5);
-        dropPath.moveTo(c);
-        dropPath.lineTo(c.x() + 4, c.y());
-        dropPath.lineTo(c.x() + 2, c.y() + 2);
-        dropPath.closeSubpath();
-        painter.setPen(Qt.darkGray);
-        painter.setBrush(Qt.darkGray);
-        painter.setRenderHint(QPainter::Antialiasing, false);
-        painter.drawPath(dropPath);
-    }
-    painter.end();
-}
-    QMenu *m_menu;
+		if (m_menu) {
+			QPainterPath dropPath;
+			dropPath.arcMoveTo(circle, 320);
+			QPointF c = dropPath.currentPosition();
+			c = QPointF(c.x() + 3.5, c.y() + 0.5);
+			dropPath.moveTo(c);
+			dropPath.lineTo(c.x() + 4, c.y());
+			dropPath.lineTo(c.x() + 2, c.y() + 2);
+			dropPath.closeSubpath();
+			painter.setPen(Qt.darkGray);
+			painter.setBrush(Qt.darkGray);
+			painter.setRenderHint(QPainter.Antialiasing, false);
+			painter.drawPath(dropPath);
+		}
+		painter.end();
+	}
+
+	QMenu m_menu;
 
 protected:
-    void mousePressEvent(QMouseEvent *event)
-{
-    if (m_menu && event.button() == Qt.LeftButton) {
-        QWidget *p = parentWidget();
-        if (p) {
-            QPoint r = p.mapToGlobal(QPoint(0, p.height()));
-            m_menu.exec(QPoint(r.x() + height() / 2, r.y()));
-        }
-        event.accept();
-    }
-    QAbstractButton::mousePressEvent(event);
-}
+	void mousePressEvent(QMouseEvent event)
+	{
+		if (m_menu && event.button() == Qt.LeftButton) {
+			QWidget p = parentWidget();
+			if (p) {
+				QPoint r = p.mapToGlobal(QPoint(0, p.height()));
+				m_menu.exec(QPoint(r.x() + height() / 2, r.y()));
+			}
+			event.accept();
+		}
+		QAbstractButton.mousePressEvent(event);
+	}
 }
 
 class SearchLineEdit : public ExLineEdit
 {
-    Q_OBJECT
-    Q_PROPERTY(QString inactiveText READ inactiveText WRITE setInactiveText)
+    //Q_PROPERTY(QString inactiveText READ inactiveText WRITE setInactiveText)
 
-signals:
-    void textChanged(QString &text);
+    mixin Signal!("textChanged", QString &text);
 
 public:
 /*
@@ -191,82 +187,81 @@
     - When there is no text and doesn't have focus an "inactive text" is displayed
     - When there is text a clear button is displayed on the right hand side
  */
-this(QWidget *parent = null) : ExLineEdit(parent),
-    m_searchButton(new SearchButton(this))
-{
-    connect(lineEdit(), SIGNAL(textChanged(QString &)),
-            this, SIGNAL(textChanged(QString &)));
-    setLeftWidget(m_searchButton);
-    m_inactiveText = tr("Search");
+	this(QWidget parent = null) : ExLineEdit(parent)
+	{
+		m_searchButton = new SearchButton(this);
+		lineEdit.textChanged.connect(&this.textChanged);
+		setLeftWidget(m_searchButton);
+		m_inactiveText = tr("Search");
 
-    QSizePolicy policy = sizePolicy();
-    setSizePolicy(QSizePolicy::Preferred, policy.verticalPolicy());
-}
+		QSizePolicy policy = sizePolicy();
+		setSizePolicy(QSizePolicy.Preferred, policy.verticalPolicy());
+	}
 
-    QString inactiveText()
-{
-    return m_inactiveText;
-}
+	QString inactiveText()
+	{
+		return m_inactiveText;
+	}
 
-    void setInactiveText(QString &text)
-{
-    m_inactiveText = text;
-}
+	void setInactiveText(QString &text)
+	{
+		m_inactiveText = text;
+	}
 
-    QMenu *menu()
-{
-    if (!m_searchButton.m_menu) {
-        m_searchButton.m_menu = new QMenu(m_searchButton);
-        if (isVisible())
-            (const_cast<SearchLineEdit*>(this)).updateGeometries();
-    }
-    return m_searchButton.m_menu;
-}
+	QMenu menu()
+	{
+		if (!m_searchButton.m_menu) {
+			m_searchButton.m_menu = new QMenu(m_searchButton);
+			if (isVisible())
+				(const_cast<SearchLineEdit>(this)).updateGeometries();
+		}
+		return m_searchButton.m_menu;
+	}
 
-    void setMenu(QMenu *menu)
-{
-    if (m_searchButton.m_menu)
-        m_searchButton.m_menu.deleteLater();
-    m_searchButton.m_menu = menu;
-    updateGeometries();
-}
+	void setMenu(QMenu menu)
+	{
+		if (m_searchButton.m_menu)
+			m_searchButton.m_menu.deleteLater();
+		m_searchButton.m_menu = menu;
+		updateGeometries();
+	}
 
 protected:
-    void resizeEvent(QResizeEvent *event)
-{
-    updateGeometries();
-    ExLineEdit.resizeEvent(event);
-}
+	void resizeEvent(QResizeEvent event)
+	{
+		updateGeometries();
+		ExLineEdit.resizeEvent(event);
+	}
 
-    void paintEvent(QPaintEvent *event)
-{
-    if (lineEdit().text().isEmpty() && !hasFocus() && !m_inactiveText.isEmpty()) {
-        ExLineEdit.paintEvent(event);
-        QStyleOptionFrameV2 panel;
-        initStyleOption(&panel);
-        QRect r = style().subElementRect(QStyle::SE_LineEditContents, &panel, this);
-        QFontMetrics fm = fontMetrics();
-        int horizontalMargin = lineEdit().x();
-        QRect lineRect(horizontalMargin + r.x(), r.y() + (r.height() - fm.height() + 1) / 2,
-                       r.width() - 2 * horizontalMargin, fm.height());
-        QPainter painter(this);
-        painter.setPen(palette().brush(QPalette.Disabled, QPalette.Text).color());
-        painter.drawText(lineRect, Qt.AlignLeft|Qt.AlignVCenter, m_inactiveText);
-    } else {
-        ExLineEdit.paintEvent(event);
-    }
-}
+	void paintEvent(QPaintEvent event)
+	{
+		if (lineEdit().text().isEmpty() && !hasFocus() && !m_inactiveText.isEmpty()) {
+			ExLineEdit.paintEvent(event);
+			QStyleOptionFrameV2 panel;
+			initStyleOption(&panel);
+			QRect r = style().subElementRect(QStyle.SE_LineEditContents, &panel, this);
+			QFontMetrics fm = fontMetrics();
+			int horizontalMargin = lineEdit().x();
+			QRect lineRect(horizontalMargin + r.x(), r.y() + (r.height() - fm.height() + 1) / 2, r.width() - 2 * horizontalMargin, fm.height());
+			QPainter painter(this);
+			painter.setPen(palette().brush(QPalette.Disabled, QPalette.Text).color());
+			painter.drawText(lineRect, Qt.AlignLeft|Qt.AlignVCenter, m_inactiveText);
+		} else {
+			ExLineEdit.paintEvent(event);
+		}
+	}
 
 private:
-    void updateGeometries()
-{
-    int menuHeight = height();
-    int menuWidth = menuHeight + 1;
-    if (!m_searchButton.m_menu)
-        menuWidth = (menuHeight / 5) * 4;
-    m_searchButton.resize(QSize(menuWidth, menuHeight));
+
+	void updateGeometries()
+	{
+		int menuHeight = height();
+		int menuWidth = menuHeight + 1;
+		if (!m_searchButton.m_menu)
+			menuWidth = (menuHeight / 5) * 4;
+		m_searchButton.resize(QSize(menuWidth, menuHeight));
+	}
+
+	SearchButton m_searchButton;
+	QString m_inactiveText;
 }
-
-    SearchButton *m_searchButton;
-    QString m_inactiveText;
-}