qskinny/src/dialogs/QskSelectionSubWindow.cpp

135 lines
3.6 KiB
C++
Raw Normal View History

2017-07-21 16:21:34 +00:00
/******************************************************************************
2024-01-17 13:31:45 +00:00
* QSkinny - Copyright (C) The authors
2023-04-06 07:23:37 +00:00
* SPDX-License-Identifier: BSD-3-Clause
2017-07-21 16:21:34 +00:00
*****************************************************************************/
#include "QskSelectionSubWindow.h"
2018-11-06 17:54:21 +00:00
#include "QskLinearBox.h"
2017-07-21 16:21:34 +00:00
#include "QskSimpleListBox.h"
2018-11-06 17:54:21 +00:00
#include "QskTextLabel.h"
2017-07-21 16:21:34 +00:00
namespace
{
2018-11-06 17:54:21 +00:00
class TextLabel final : public QskTextLabel
{
public:
TextLabel( QskSelectionSubWindow* subWindow )
{
setObjectName( QStringLiteral( "QskSelectionSubWindowTextLabel" ) );
initSizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Constrained );
setAlignment( Qt::AlignLeft | Qt::AlignTop );
setWrapMode( QskTextOptions::WordWrap );
connect( this, &QskTextLabel::textChanged,
subWindow, &QskSelectionSubWindow::infoTextChanged );
connect( this, &QskTextLabel::textOptionsChanged,
subWindow, &QskSelectionSubWindow::infoTextOptionsChanged );
}
};
2017-07-21 16:21:34 +00:00
class ListBox final : public QskSimpleListBox
{
2018-08-03 06:15:28 +00:00
public:
ListBox( QskSelectionSubWindow* subWindow )
2017-07-21 16:21:34 +00:00
{
setObjectName( QStringLiteral( "QskSelectionSubWindowListBox" ) );
2018-08-03 06:15:28 +00:00
connect( this, &QskSimpleListBox::selectedRowChanged,
subWindow, &QskSelectionSubWindow::selectedRowChanged );
2017-07-21 16:21:34 +00:00
2018-08-03 06:15:28 +00:00
connect( this, &QskSimpleListBox::selectedEntryChanged,
subWindow, &QskSelectionSubWindow::selectedEntryChanged );
2017-07-21 16:21:34 +00:00
2018-08-03 06:15:28 +00:00
connect( this, &QskSimpleListBox::entriesChanged,
subWindow, &QskSelectionSubWindow::entriesChanged );
2017-07-21 16:21:34 +00:00
}
};
}
2018-11-06 17:54:21 +00:00
class QskSelectionSubWindow::PrivateData
{
public:
QskTextLabel* textLabel;
QskSimpleListBox* listBox;
};
2018-08-03 06:15:28 +00:00
QskSelectionSubWindow::QskSelectionSubWindow( QQuickItem* parent )
: Inherited( parent )
2018-11-06 17:54:21 +00:00
, m_data( new PrivateData )
2017-07-21 16:21:34 +00:00
{
2018-11-06 17:54:21 +00:00
m_data->textLabel = new TextLabel( this );
m_data->textLabel->setVisible( false );
m_data->listBox = new ListBox( this );
#if 1
m_data->listBox->setPreferredSize( 500, 500 );
#endif
2018-11-06 17:54:21 +00:00
auto box = new QskLinearBox( Qt::Vertical );
box->setSpacing( 10 ); // hint
box->addItem( m_data->textLabel );
box->addItem( m_data->listBox );
box->setStretchFactor( 1, 10 );
setContentItem( box );
2018-11-05 12:50:41 +00:00
setDialogActions( QskDialog::Ok | QskDialog::Cancel );
2017-07-21 16:21:34 +00:00
}
QskSelectionSubWindow::~QskSelectionSubWindow()
{
}
2018-11-06 17:54:21 +00:00
void QskSelectionSubWindow::setInfoText( const QString& text )
{
m_data->textLabel->setText( text );
m_data->textLabel->setVisible( !text.isEmpty() );
}
QString QskSelectionSubWindow::infoText() const
{
return m_data->textLabel->text();
}
void QskSelectionSubWindow::setInfoTextOptions( const QskTextOptions& options )
{
if ( options != infoTextOptions() )
{
m_data->textLabel->setTextOptions( options );
Q_EMIT infoTextOptionsChanged( options );
}
}
QskTextOptions QskSelectionSubWindow::infoTextOptions() const
{
return m_data->textLabel->textOptions();
}
2017-07-21 16:21:34 +00:00
void QskSelectionSubWindow::setEntries( const QStringList& entries )
{
2018-11-06 17:54:21 +00:00
m_data->listBox->setEntries( entries );
2017-07-21 16:21:34 +00:00
}
QStringList QskSelectionSubWindow::entries() const
{
2018-11-06 17:54:21 +00:00
return m_data->listBox->entries();
2017-07-21 16:21:34 +00:00
}
void QskSelectionSubWindow::setSelectedRow( int row )
{
2018-11-06 17:54:21 +00:00
m_data->listBox->setSelectedRow( row );
2017-07-21 16:21:34 +00:00
}
int QskSelectionSubWindow::selectedRow() const
{
2018-11-06 17:54:21 +00:00
return m_data->listBox->selectedRow();
2017-07-21 16:21:34 +00:00
}
QString QskSelectionSubWindow::selectedEntry() const
{
2018-11-06 17:54:21 +00:00
return m_data->listBox->selectedEntry();
2017-07-21 16:21:34 +00:00
}
#include "moc_QskSelectionSubWindow.cpp"