#include "MessageListWidget.h" #include #include #include #include #include #include MessageListWidget::MessageListWidget() : messageList( new QListWidget() ), addButton( new QPushButton ("+" ) ), removeButton( new QPushButton( "-" ) ), dialog( new QInputDialog() ) { QVBoxLayout *vLayout = new QVBoxLayout(); QHBoxLayout *hLayout = new QHBoxLayout(); messageList->setSelectionMode( QAbstractItemView::SingleSelection ); dialog->setInputMode( QInputDialog::TextInput ); dialog->setModal( true ); dialog->setWindowTitle( "New Entry" ); connect( addButton, &QPushButton::clicked, this, &MessageListWidget::showInputDialog ); connect( removeButton, &QPushButton::clicked, this, &MessageListWidget::removeSelectedMessage ); hLayout->addStretch(); hLayout->addWidget( addButton ); hLayout->addWidget( removeButton ); vLayout->addWidget( messageList ); vLayout->addLayout( hLayout ); setWindowTitle( "Todo" ); setLayout( vLayout ); resize( 400, 400 ); } void MessageListWidget::showInputDialog() { dialog->setTextValue( "" ); dialog->exec(); if( dialog->textValue().trimmed().size() > 0 ) { messageList->addItem( dialog->textValue() ); emit entryAdded( dialog->textValue() ); emit numEntriesChanged( messageList->count() ); } } void MessageListWidget::removeSelectedMessage() { QList items = messageList->selectedItems(); if( items.size() > 0 ) { for( int i = 0; i < messageList->count(); i++ ) { if( messageList->item( i ) == items.first() ) { QListWidgetItem *item = messageList->takeItem( i ); QString text = item->text(); delete item; emit entryRemoved( text ); emit numEntriesChanged( messageList->count() ); return; } } } }