Home | History | Annotate | Download | only in QtLauncher
      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 
     30 LocationEdit::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 
     38 void LocationEdit::setProgress(int progress)
     39 {
     40     m_clearTimer.stop();
     41     m_progress = progress;
     42     update();
     43 }
     44 
     45 void LocationEdit::reset()
     46 {
     47     setProgress(0);
     48 }
     49 
     50 void 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 
     74 void 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