File indexing completed on 2024-04-28 15:52:01
0001 /* 0002 SPDX-FileCopyrightText: 2015 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "widgetconfigurationtoolsbase.h" 0008 0009 #include <KLocalizedString> 0010 #include <QIcon> 0011 0012 #include <QDialogButtonBox> 0013 #include <QHBoxLayout> 0014 #include <QListWidget> 0015 #include <QListWidgetItem> 0016 #include <QPushButton> 0017 #include <QVBoxLayout> 0018 0019 WidgetConfigurationToolsBase::WidgetConfigurationToolsBase(QWidget *parent) 0020 : QWidget(parent) 0021 { 0022 QHBoxLayout *hBoxLayout = new QHBoxLayout(this); 0023 m_list = new QListWidget(this); 0024 m_list->setIconSize(QSize(32, 32)); 0025 hBoxLayout->addWidget(m_list); 0026 0027 QVBoxLayout *vBoxLayout = new QVBoxLayout(); 0028 m_btnAdd = new QPushButton(i18n("&Add..."), this); 0029 m_btnAdd->setIcon(QIcon::fromTheme(QStringLiteral("list-add"))); 0030 vBoxLayout->addWidget(m_btnAdd); 0031 m_btnEdit = new QPushButton(i18n("&Edit..."), this); 0032 m_btnEdit->setIcon(QIcon::fromTheme(QStringLiteral("edit-rename"))); 0033 m_btnEdit->setEnabled(false); 0034 vBoxLayout->addWidget(m_btnEdit); 0035 m_btnRemove = new QPushButton(i18n("&Remove"), this); 0036 m_btnRemove->setIcon(QIcon::fromTheme(QStringLiteral("list-remove"))); 0037 m_btnRemove->setEnabled(false); 0038 vBoxLayout->addWidget(m_btnRemove); 0039 m_btnMoveUp = new QPushButton(i18n("Move &Up"), this); 0040 m_btnMoveUp->setIcon(QIcon::fromTheme(QStringLiteral("arrow-up"))); 0041 m_btnMoveUp->setEnabled(false); 0042 vBoxLayout->addWidget(m_btnMoveUp); 0043 m_btnMoveDown = new QPushButton(i18n("Move &Down"), this); 0044 m_btnMoveDown->setIcon(QIcon::fromTheme(QStringLiteral("arrow-down"))); 0045 m_btnMoveDown->setEnabled(false); 0046 vBoxLayout->addWidget(m_btnMoveDown); 0047 vBoxLayout->addStretch(); 0048 hBoxLayout->addLayout(vBoxLayout); 0049 0050 connect(m_list, &QListWidget::itemDoubleClicked, this, &WidgetConfigurationToolsBase::slotEdit); 0051 connect(m_list, &QListWidget::currentRowChanged, this, &WidgetConfigurationToolsBase::updateButtons); 0052 connect(m_btnAdd, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotAdd); 0053 connect(m_btnEdit, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotEdit); 0054 connect(m_btnRemove, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotRemove); 0055 connect(m_btnMoveUp, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotMoveUp); 0056 connect(m_btnMoveDown, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotMoveDown); 0057 } 0058 0059 WidgetConfigurationToolsBase::~WidgetConfigurationToolsBase() 0060 { 0061 } 0062 0063 void WidgetConfigurationToolsBase::updateButtons() 0064 { 0065 const int row = m_list->currentRow(); 0066 const int last = m_list->count() - 1; 0067 0068 m_btnEdit->setEnabled(row != -1); 0069 m_btnRemove->setEnabled(row != -1); 0070 m_btnMoveUp->setEnabled(row > 0); 0071 m_btnMoveDown->setEnabled(row != -1 && row != last); 0072 } 0073 0074 void WidgetConfigurationToolsBase::slotRemove() 0075 { 0076 const int row = m_list->currentRow(); 0077 delete m_list->takeItem(row); 0078 updateButtons(); 0079 Q_EMIT changed(); 0080 } 0081 0082 void WidgetConfigurationToolsBase::slotMoveUp() 0083 { 0084 const int row = m_list->currentRow(); 0085 m_list->insertItem(row, m_list->takeItem(row - 1)); 0086 m_list->scrollToItem(m_list->currentItem()); 0087 updateButtons(); 0088 Q_EMIT changed(); 0089 } 0090 0091 void WidgetConfigurationToolsBase::slotMoveDown() 0092 { 0093 const int row = m_list->currentRow(); 0094 m_list->insertItem(row, m_list->takeItem(row + 1)); 0095 m_list->scrollToItem(m_list->currentItem()); 0096 updateButtons(); 0097 Q_EMIT changed(); 0098 }