2022-08-19 15:59:36 +02:00
// Copyright (C) 2020 The Qt Company Ltd.
2022-12-21 10:12:09 +01:00
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
2019-12-11 15:55:03 +01:00
2020-07-28 01:04:15 +02:00
# include "../common/themeselector.h"
2019-12-11 15:55:03 +01:00
# include <QApplication>
2019-12-21 22:58:24 +01:00
# include <QFormLayout>
2019-12-11 15:55:03 +01:00
# include <QMessageBox>
# include <QSettings>
# include <utils/infolabel.h>
# include <coreplugin/manhattanstyle.h>
using namespace Utils ;
int main ( int argc , char * argv [ ] )
{
QApplication app ( argc , argv ) ;
auto widget = new QWidget ;
auto mainLayout = new QVBoxLayout ( widget ) ;
2020-07-28 01:04:15 +02:00
mainLayout - > addWidget ( new ManualTest : : ThemeSelector ) ;
2019-12-11 15:55:03 +01:00
auto variationsLayout = new QGridLayout ;
mainLayout - > addLayout ( variationsLayout ) ;
const static struct {
const InfoLabel : : InfoType type ;
const char * text ;
2022-04-06 14:45:34 +02:00
const char * tooltip ;
const char * tooltipSeparator ;
2019-12-11 15:55:03 +01:00
} labels [ ] = {
2022-04-06 14:45:34 +02:00
{ InfoLabel : : Information , " Information " , " This is an informative Tooltip for you " , " \n \n " } ,
{ InfoLabel : : Warning , " Warning " , " This is a warning Tooltip for you " , " - " } ,
{ InfoLabel : : Error , " Error " , " This is an erroneous Tooltip for you " , " | " } ,
{ InfoLabel : : Ok , " Ok " , " This is an ok Tooltip for you " , " :) " } ,
{ InfoLabel : : NotOk , " NotOk " , " This Tooltip is just not ok " , " " } ,
{ InfoLabel : : None , " None " , " " , " ---- " } ,
2019-12-11 15:55:03 +01:00
} ;
int gridRow = 0 ;
for ( auto filled : { false , true } ) {
for ( auto label : labels ) {
for ( auto enabled : { true , false } ) {
auto infoLabel = new Utils : : InfoLabel (
label . text + QLatin1String ( filled ? " (filled) " : " " )
+ QLatin1String ( enabled ? " " : " (disabled) " ) , label . type ) ;
infoLabel - > setEnabled ( enabled ) ;
infoLabel - > setFilled ( filled ) ;
2022-04-06 14:45:34 +02:00
infoLabel - > setAdditionalToolTip ( label . tooltip ) ;
infoLabel - > setAdditionalToolTipSeparator ( label . tooltipSeparator ) ;
2019-12-11 15:55:03 +01:00
variationsLayout - > addWidget ( infoLabel , gridRow , enabled ? 0 : 1 ) ;
}
gridRow + + ;
}
variationsLayout - > addItem ( new QSpacerItem ( 0 , 10 ) , gridRow + + , 0 ) ;
}
auto withLink = new Utils : : InfoLabel ( " With <a href= \" link clicked! \" >link</a> " , InfoLabel : : Error ) ;
withLink - > setElideMode ( Qt : : ElideNone ) ;
2023-08-01 20:35:59 +02:00
QObject : : connect ( withLink , & QLabel : : linkActivated , & app , [ widget ] ( const QString & link ) {
2019-12-11 15:55:03 +01:00
QMessageBox : : information ( widget , { } , link ) ;
} ) ;
mainLayout - > addWidget ( withLink ) ;
auto stretching = new Utils : : InfoLabel ( " Stretching and centering vertically " , InfoLabel : : Warning ) ;
stretching - > setFilled ( true ) ;
mainLayout - > addWidget ( stretching , 2 ) ;
2019-12-21 22:58:24 +01:00
auto formLayout = new QFormLayout ;
auto multiLine = new Utils : : InfoLabel ( " Multi line<br/>in<br/>QFormLayout " ) ;
multiLine - > setElideMode ( Qt : : ElideNone ) ;
multiLine - > setFilled ( true ) ;
formLayout - > addRow ( " Label: " , multiLine ) ;
mainLayout - > addLayout ( formLayout ) ;
2019-12-11 15:55:03 +01:00
const QString lorem =
" Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt "
" ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation "
" ullamco laboris nisi ut aliquid ex ea commodi consequat. " ;
2022-04-06 14:45:34 +02:00
auto elideRight = new Utils : : InfoLabel ( " Qt::ElideRight: " + lorem , InfoLabel : : Information ) ;
elideRight - > setAdditionalToolTip ( " This control will elide the right side and show an Information Icon to its left. The Elided text will be separated from this text by two \\ n " ) ;
mainLayout - > addWidget ( elideRight ) ;
auto elideLeft = new Utils : : InfoLabel ( " Qt::ElideLeft: " + lorem , InfoLabel : : Warning ) ;
elideLeft - > setElideMode ( Qt : : ElideLeft ) ;
elideLeft - > setAdditionalToolTip ( " This control will elide the left side and show a Warning Icon to its left. The Elided text will be separated from this text by \" :) \" " ) ;
elideLeft - > setAdditionalToolTipSeparator ( " :) " ) ;
mainLayout - > addWidget ( elideLeft ) ;
auto elideMid = new Utils : : InfoLabel ( " Qt::ElideMiddle: " + lorem , InfoLabel : : Ok ) ;
elideMid - > setElideMode ( Qt : : ElideMiddle ) ;
elideMid - > setAdditionalToolTip ( " This control will elide the middle and show an Ok Icon to its left. The Elided text will be separated from this text by \" -> \" " ) ;
elideMid - > setAdditionalToolTipSeparator ( " -> " ) ;
mainLayout - > addWidget ( elideMid ) ;
2019-12-11 15:55:03 +01:00
auto elideNone = new Utils : : InfoLabel ( " Qt::ElideNone: " + lorem , InfoLabel : : Information ) ;
elideNone - > setElideMode ( Qt : : ElideNone ) ;
elideNone - > setWordWrap ( true ) ;
2022-04-06 14:45:34 +02:00
elideNone - > setAdditionalToolTip ( " This control is never elided due to setElideMode(Qt::ElideNone) being used " ) ;
2019-12-11 15:55:03 +01:00
mainLayout - > addWidget ( elideNone ) ;
widget - > resize ( 350 , 500 ) ;
widget - > show ( ) ;
return app . exec ( ) ;
}