mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-28 00:04:04 -04:00
111 lines
3.6 KiB
C++
111 lines
3.6 KiB
C++
/***************************************************************************
|
|
testqgsvaluerelationwidgetwrapper.cpp
|
|
--------------------------------------
|
|
Date : 21 07 2017
|
|
Copyright : (C) 2017 Paul Blottiere
|
|
Email : paul dot blottiere at oslandia 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 "qgstest.h"
|
|
#include <QScrollBar>
|
|
|
|
#include <editorwidgets/core/qgseditorwidgetregistry.h>
|
|
#include <qgsapplication.h>
|
|
#include <qgsproject.h>
|
|
#include <qgsvectorlayer.h>
|
|
#include "qgseditorwidgetwrapper.h"
|
|
#include <editorwidgets/qgsvaluerelationwidgetwrapper.h>
|
|
#include "qgsgui.h"
|
|
|
|
class TestQgsValueRelationWidgetWrapper : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
TestQgsValueRelationWidgetWrapper() = default;
|
|
|
|
private slots:
|
|
void initTestCase(); // will be called before the first testfunction is executed.
|
|
void cleanupTestCase(); // will be called after the last testfunction was executed.
|
|
void init(); // will be called before each testfunction is executed.
|
|
void cleanup(); // will be called after every testfunction.
|
|
|
|
void testScrollBarUnlocked();
|
|
};
|
|
|
|
void TestQgsValueRelationWidgetWrapper::initTestCase()
|
|
{
|
|
QgsApplication::init();
|
|
QgsApplication::initQgis();
|
|
QgsGui::editorWidgetRegistry()->initEditors();
|
|
}
|
|
|
|
void TestQgsValueRelationWidgetWrapper::cleanupTestCase()
|
|
{
|
|
QgsApplication::exitQgis();
|
|
}
|
|
|
|
void TestQgsValueRelationWidgetWrapper::init()
|
|
{
|
|
}
|
|
|
|
void TestQgsValueRelationWidgetWrapper::cleanup()
|
|
{
|
|
}
|
|
|
|
void TestQgsValueRelationWidgetWrapper::testScrollBarUnlocked()
|
|
{
|
|
// create a vector layer
|
|
QgsVectorLayer vl1( QStringLiteral( "LineString?crs=epsg:3111&field=pk:int&field=fk|:int" ), QStringLiteral( "vl1" ), QStringLiteral( "memory" ) );
|
|
QgsProject::instance()->addMapLayer( &vl1, false, false );
|
|
|
|
// build a value relation widget wrapper
|
|
QListWidget lw;
|
|
QWidget editor;
|
|
QgsValueRelationWidgetWrapper w( &vl1, 0, &editor, nullptr );
|
|
w.setEnabled( true );
|
|
w.initWidget( &lw );
|
|
|
|
// add an item virtually
|
|
QListWidgetItem item;
|
|
item.setText( QStringLiteral( "MyText" ) );
|
|
w.mListWidget->addItem( &item );
|
|
QCOMPARE( w.mListWidget->item( 0 )->text(), QString( "MyText" ) );
|
|
|
|
// when the widget wrapper is enabled, the container should be enabled
|
|
// as well as items
|
|
w.setEnabled( true );
|
|
|
|
QCOMPARE( w.widget()->isEnabled(), true );
|
|
|
|
bool itemEnabled = w.mListWidget->item( 0 )->flags() & Qt::ItemIsEnabled;
|
|
QCOMPARE( itemEnabled, true );
|
|
|
|
// when the widget wrapper is disabled, the container should still be enabled
|
|
// to keep the scrollbar available but items should be disabled to avoid
|
|
// edition
|
|
w.setEnabled( false );
|
|
|
|
itemEnabled = w.mListWidget->item( 0 )->flags() & Qt::ItemIsEnabled;
|
|
QCOMPARE( itemEnabled, false );
|
|
|
|
QCOMPARE( w.widget()->isEnabled(), true );
|
|
|
|
// recheck after re-enabled
|
|
w.setEnabled( true );
|
|
|
|
QCOMPARE( w.widget()->isEnabled(), true );
|
|
itemEnabled = w.mListWidget->item( 0 )->flags() & Qt::ItemIsEnabled;
|
|
QCOMPARE( itemEnabled, true );
|
|
}
|
|
|
|
QGSTEST_MAIN( TestQgsValueRelationWidgetWrapper )
|
|
#include "testqgsvaluerelationwidgetwrapper.moc"
|