You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

104 lines
3.9 KiB

/***************************************************************************
* Copyright (C) 2015 by Laurent Montel <montel@kde.org> *
* *
* 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 "widgetconfigurationtoolsbase.h"
#include <QIcon>
#include <KLocalizedString>
#include <QHBoxLayout>
#include <QListWidget>
#include <QListWidgetItem>
#include <QDialogButtonBox>
#include <QPushButton>
#include <QVBoxLayout>
WidgetConfigurationToolsBase::WidgetConfigurationToolsBase( QWidget * parent )
: QWidget( parent )
{
QHBoxLayout *hBoxLayout = new QHBoxLayout( this );
m_list = new QListWidget( this );
m_list->setIconSize( QSize( 64, 64 ) );
hBoxLayout->addWidget( m_list );
QVBoxLayout *vBoxLayout = new QVBoxLayout();
m_btnAdd = new QPushButton( i18n("&Add..."), this );
m_btnAdd->setIcon( QIcon::fromTheme(QStringLiteral("list-add")) );
vBoxLayout->addWidget( m_btnAdd );
m_btnEdit = new QPushButton( i18n("&Edit..."), this );
m_btnEdit->setIcon( QIcon::fromTheme(QStringLiteral("edit-rename")) );
m_btnEdit->setEnabled( false );
vBoxLayout->addWidget( m_btnEdit );
m_btnRemove = new QPushButton( i18n("&Remove"), this );
m_btnRemove->setIcon( QIcon::fromTheme(QStringLiteral("list-remove")) );
m_btnRemove->setEnabled( false );
vBoxLayout->addWidget( m_btnRemove );
m_btnMoveUp = new QPushButton( i18n("Move &Up"), this );
m_btnMoveUp->setIcon( QIcon::fromTheme(QStringLiteral("arrow-up")) );
m_btnMoveUp->setEnabled( false );
vBoxLayout->addWidget( m_btnMoveUp );
m_btnMoveDown = new QPushButton( i18n("Move &Down"), this );
m_btnMoveDown->setIcon( QIcon::fromTheme(QStringLiteral("arrow-down")) );
m_btnMoveDown->setEnabled( false );
vBoxLayout->addWidget( m_btnMoveDown );
vBoxLayout->addStretch();
hBoxLayout->addLayout( vBoxLayout );
connect(m_list, &QListWidget::itemDoubleClicked, this, &WidgetConfigurationToolsBase::slotEdit);
connect(m_list, &QListWidget::currentRowChanged, this, &WidgetConfigurationToolsBase::updateButtons);
connect(m_btnAdd, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotAdd);
connect(m_btnEdit, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotEdit);
connect(m_btnRemove, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotRemove);
connect(m_btnMoveUp, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotMoveUp);
connect(m_btnMoveDown, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotMoveDown);
}
WidgetConfigurationToolsBase::~WidgetConfigurationToolsBase()
{
}
void WidgetConfigurationToolsBase::updateButtons()
{
const int row = m_list->currentRow();
const int last = m_list->count() - 1;
m_btnEdit->setEnabled( row != -1 );
m_btnRemove->setEnabled( row != -1 );
m_btnMoveUp->setEnabled( row > 0 );
m_btnMoveDown->setEnabled( row != -1 && row != last );
}
void WidgetConfigurationToolsBase::slotRemove()
{
const int row = m_list->currentRow();
delete m_list->takeItem(row);
updateButtons();
emit changed();
}
void WidgetConfigurationToolsBase::slotMoveUp()
{
const int row = m_list->currentRow();
m_list->insertItem( row, m_list->takeItem(row-1) );
m_list->scrollToItem( m_list->currentItem() );
updateButtons();
emit changed();
}
void WidgetConfigurationToolsBase::slotMoveDown()
{
const int row = m_list->currentRow();
m_list->insertItem( row, m_list->takeItem(row+1) );
m_list->scrollToItem( m_list->currentItem() );
updateButtons();
emit changed();
}