mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-10 00:05:25 -04:00
92 lines
2.8 KiB
C++
92 lines
2.8 KiB
C++
/***************************************************************************
|
|
qgsstatusbar.cpp
|
|
----------------
|
|
begin : May 2017
|
|
copyright : (C) 2017 by Nyall Dawson
|
|
email : nyall dot dawson at gmail dot com
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* 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) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "qgsstatusbar.h"
|
|
#include <QLayout>
|
|
#include <QLineEdit>
|
|
#include <QPalette>
|
|
#include <QTimer>
|
|
|
|
QgsStatusBar::QgsStatusBar( QWidget *parent )
|
|
: QWidget( parent )
|
|
{
|
|
mLayout = new QHBoxLayout();
|
|
mLayout->setMargin( 0 );
|
|
mLayout->setContentsMargins( 2, 0, 2, 0 );
|
|
mLayout->setSpacing( 6 );
|
|
|
|
mLineEdit = new QLineEdit( QString() );
|
|
mLineEdit->setDisabled( true );
|
|
mLineEdit->setFrame( false );
|
|
mLineEdit->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum );
|
|
QPalette palette;
|
|
palette.setColor( QPalette::Disabled, QPalette::Text, QPalette::WindowText );
|
|
mLineEdit->setPalette( palette );
|
|
mLineEdit->setStyleSheet( QStringLiteral( "* { background-color: rgba(0, 0, 0, 0); }" ) );
|
|
mLayout->addWidget( mLineEdit, 10 );
|
|
setLayout( mLayout );
|
|
}
|
|
|
|
void QgsStatusBar::addPermanentWidget( QWidget *widget, int stretch, Anchor anchor )
|
|
{
|
|
switch ( anchor )
|
|
{
|
|
case AnchorLeft:
|
|
mLayout->insertWidget( 0, widget, stretch, Qt::AlignLeft );
|
|
break;
|
|
|
|
case AnchorRight:
|
|
mLayout->addWidget( widget, stretch, Qt::AlignLeft );
|
|
break;
|
|
}
|
|
}
|
|
|
|
void QgsStatusBar::removeWidget( QWidget *widget )
|
|
{
|
|
mLayout->removeWidget( widget );
|
|
}
|
|
|
|
QString QgsStatusBar::currentMessage() const
|
|
{
|
|
return mLineEdit->text();
|
|
}
|
|
|
|
void QgsStatusBar::showMessage( const QString &text, int timeout )
|
|
{
|
|
mLineEdit->setText( text );
|
|
mLineEdit->setCursorPosition( 0 );
|
|
if ( timeout > 0 )
|
|
{
|
|
if ( !mTempMessageTimer )
|
|
{
|
|
mTempMessageTimer = new QTimer( this );
|
|
connect( mTempMessageTimer, &QTimer::timeout, this, &QgsStatusBar::clearMessage );
|
|
}
|
|
mTempMessageTimer->start( timeout );
|
|
}
|
|
else if ( mTempMessageTimer )
|
|
{
|
|
delete mTempMessageTimer;
|
|
mTempMessageTimer = nullptr;
|
|
}
|
|
}
|
|
|
|
void QgsStatusBar::clearMessage()
|
|
{
|
|
mLineEdit->setText( QString() );
|
|
}
|