topic line edit has now a clear button
authorMarcus Eggenberger <egs@quassel-irc.org>
Wed, 12 Mar 2008 13:51:48 +0000 (13:51 +0000)
committerMarcus Eggenberger <egs@quassel-irc.org>
Wed, 12 Mar 2008 13:51:48 +0000 (13:51 +0000)
src/qtui/ui/topicwidget.ui
src/uisupport/clearablelineedit.cpp [new file with mode: 0644]
src/uisupport/clearablelineedit.h [new file with mode: 0644]
src/uisupport/uisupport.pri
version.inc

index 4993bf8..528fc21 100644 (file)
    <string>Form</string>
   </property>
   <layout class="QHBoxLayout" >
-   <property name="margin" >
+   <property name="leftMargin" >
+    <number>2</number>
+   </property>
+   <property name="topMargin" >
+    <number>2</number>
+   </property>
+   <property name="rightMargin" >
+    <number>2</number>
+   </property>
+   <property name="bottomMargin" >
     <number>2</number>
    </property>
    <item>
-    <widget class="QLineEdit" name="topicLineEdit" />
+    <widget class="ClearableLineEdit" name="topicLineEdit" />
    </item>
    <item>
     <widget class="TopicButton" native="1" name="topicButton" >
@@ -56,9 +65,7 @@
       <string>...</string>
      </property>
      <property name="icon" >
-      <iconset>
-       <normaloff/>
-      </iconset>
+      <iconset/>
      </property>
      <property name="iconSize" >
       <size>
    <header location="global" >topicbutton.h</header>
    <container>1</container>
   </customwidget>
+  <customwidget>
+   <class>ClearableLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header location="global" >clearablelineedit.h</header>
+  </customwidget>
  </customwidgets>
  <resources>
   <include location="../../icons/icons.qrc" />
diff --git a/src/uisupport/clearablelineedit.cpp b/src/uisupport/clearablelineedit.cpp
new file mode 100644 (file)
index 0000000..ae99be6
--- /dev/null
@@ -0,0 +1,54 @@
+/***************************************************************************
+ *   Copyright (C) 2005/06 by the Quassel Project                          *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   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; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   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.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include "clearablelineedit.h"
+
+#include <QToolButton>
+#include <QStyle>
+
+ClearableLineEdit::ClearableLineEdit(QWidget *parent)
+  : QLineEdit(parent)
+{
+  clearButton = new QToolButton(this);
+  clearButton->setIcon(QIcon(":/22x22/actions/oxygen/22x22/actions/edit-clear-locationbar-rtl.png"));
+  clearButton->setCursor(Qt::ArrowCursor);
+  clearButton->setStyleSheet("QToolButton { border: none; padding: 0px; }");
+  clearButton->hide();
+  
+  connect(clearButton, SIGNAL(clicked()), this, SLOT(clear()));
+  connect(this, SIGNAL(textChanged(const QString&)), this, SLOT(updateClearButton(const QString&)));
+  
+  int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
+  setStyleSheet(QString("QLineEdit { padding-right: %1px; } ").arg(clearButton->sizeHint().width() + frameWidth + 1));
+  QSize msz = minimumSizeHint();
+  setMinimumSize(qMax(msz.width(), clearButton->sizeHint().height() + frameWidth * 2 + 2),
+                qMax(msz.height(), clearButton->sizeHint().height() + frameWidth * 2 + 2));
+}
+
+void ClearableLineEdit::resizeEvent(QResizeEvent *) {
+  QSize size = clearButton->sizeHint();
+  int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
+  clearButton->move(rect().right() - frameWidth - size.width(),
+                   (rect().bottom() + 1 - size.height())/2);
+}
+
+void ClearableLineEdit::updateClearButton(const QString& text) {
+  clearButton->setVisible(!text.isEmpty());
+}
diff --git a/src/uisupport/clearablelineedit.h b/src/uisupport/clearablelineedit.h
new file mode 100644 (file)
index 0000000..2bef8eb
--- /dev/null
@@ -0,0 +1,44 @@
+/***************************************************************************
+ *   Copyright (C) 2005/06 by the Quassel Project                          *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   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; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   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.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef CLEARABLELINEEDIT_H
+#define CLEARABLELINEEDIT_H
+
+#include <QLineEdit>
+
+class QToolButton;
+
+class ClearableLineEdit : public QLineEdit {
+  Q_OBJECT
+
+public:
+  ClearableLineEdit(QWidget *parent = 0);
+
+protected:
+  void resizeEvent(QResizeEvent *event);
+
+private slots:
+  void updateClearButton(const QString &text);
+
+private:
+  QToolButton *clearButton;
+};
+
+#endif // CLEARABLELINEEDIT_H
index 496382b..426515a 100644 (file)
@@ -1,8 +1,8 @@
 DEPMOD = common client
 QT_MOD = core gui network
 
-SRCS += abstractitemview.cpp bufferview.cpp bufferviewfilter.cpp colorbutton.cpp nickviewfilter.cpp inputline.cpp nickview.cpp settingspage.cpp tabcompleter.cpp uisettings.cpp uistyle.cpp uistylesettings.cpp
-HDRS += abstractitemview.h bufferview.h bufferviewfilter.h colorbutton.h nickviewfilter.h inputline.h nickview.h settingspage.h tabcompleter.h uisettings.h uistyle.h uistylesettings.h
+SRCS += abstractitemview.cpp bufferview.cpp bufferviewfilter.cpp clearablelineedit.cpp colorbutton.cpp nickviewfilter.cpp inputline.cpp nickview.cpp settingspage.cpp tabcompleter.cpp uisettings.cpp uistyle.cpp uistylesettings.cpp
+HDRS += abstractitemview.h bufferview.h bufferviewfilter.h clearablelineedit.h colorbutton.h nickviewfilter.h inputline.h nickview.h settingspage.h tabcompleter.h uisettings.h uistyle.h uistylesettings.h
 
 FORMNAMES = 
 
index dc19cb6..a20557b 100644 (file)
@@ -5,7 +5,7 @@
 
   quasselVersion = "0.2.0-alpha3-pre";
   quasselDate = "2008-03-12";
-  quasselBuild = 630;
+  quasselBuild = 632;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 628;