1/* 2 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 3 * 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 16 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 19 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 23 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28#include "locationedit.h" 29 30LocationEdit::LocationEdit(QWidget* parent) 31 : QLineEdit(parent) 32 , m_progress(0) 33{ 34 m_clearTimer.setSingleShot(true); 35 connect(&m_clearTimer, SIGNAL(timeout()), this, SLOT(reset())); 36} 37 38void LocationEdit::setProgress(int progress) 39{ 40 m_clearTimer.stop(); 41 m_progress = progress; 42 update(); 43} 44 45void LocationEdit::reset() 46{ 47 setProgress(0); 48} 49 50void LocationEdit::paintEvent(QPaintEvent* ev) 51{ 52 QColor backgroundColor = QApplication::palette().color(QPalette::Base); 53 QColor progressColor = QColor(120, 180, 240); 54 QPalette p = palette(); 55 56 if (!m_progress) 57 p.setBrush(QPalette::Base, backgroundColor); 58 else { 59 QLinearGradient gradient(0, 0, width(), 0); 60 gradient.setColorAt(0, progressColor); 61 gradient.setColorAt(((double) m_progress) / 100, progressColor); 62 if (m_progress != 100) 63 gradient.setColorAt((double) m_progress / 100 + 0.001, backgroundColor); 64 p.setBrush(QPalette::Base, gradient); 65 } 66 setPalette(p); 67 68 QLineEdit::paintEvent(ev); 69 70 if (m_progress == 100) 71 m_clearTimer.start(100); 72} 73 74void LocationEdit::focusInEvent(QFocusEvent* ev) 75{ 76 QLineEdit::focusInEvent(ev); 77#ifdef Q_WS_MAEMO_5 78 QTimer::singleShot(0, this, SLOT(selectAll())); 79#endif 80} 81