File indexing completed on 2024-04-28 04:37:24
0001 /* 0002 SPDX-FileCopyrightText: 2002 Harald Fernengel <harry@kdevelop.org> 0003 SPDX-FileCopyrightText: 2008 Hamish Rodda <rodda@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "savedialog.h" 0009 0010 #include <QLabel> 0011 #include <QListWidget> 0012 #include <QListWidgetItem> 0013 #include <QVBoxLayout> 0014 0015 #include <KLocalizedString> 0016 0017 #include <interfaces/idocument.h> 0018 #include <QDialogButtonBox> 0019 #include <QPushButton> 0020 0021 using namespace KDevelop; 0022 0023 class DocumentItem : public QListWidgetItem 0024 { 0025 public: 0026 DocumentItem( IDocument* doc, QListWidget* parent ) 0027 : QListWidgetItem(parent) 0028 , m_doc( doc ) 0029 { 0030 setFlags(Qt::ItemIsUserCheckable | flags()); 0031 setData(Qt::CheckStateRole, Qt::Checked); 0032 setText(m_doc->url().toDisplayString(QUrl::PreferLocalFile)); 0033 } 0034 0035 IDocument* doc() const { return m_doc; } 0036 0037 private: 0038 IDocument* const m_doc; 0039 }; 0040 0041 KSaveSelectDialog::KSaveSelectDialog( const QList<IDocument*>& files, QWidget * parent ) 0042 : QDialog( parent ) 0043 { 0044 setWindowTitle( i18nc("@title:window", "Save Modified Files?") ); 0045 0046 auto mainLayout = new QVBoxLayout(this); 0047 mainLayout->addWidget(new QLabel( i18n("The following files have been modified. Save them?"), this )); 0048 0049 m_listWidget = new QListWidget(this); 0050 mainLayout->addWidget(m_listWidget); 0051 // m_listWidget->addColumn( "" ); 0052 // m_listWidget->header()->hide(); 0053 // m_listWidget->setSectionResizeMode( QListView::LastColumn ); 0054 0055 for (IDocument* doc : files) { 0056 new DocumentItem( doc, m_listWidget ); 0057 } 0058 0059 auto* buttonBox = new QDialogButtonBox(QDialogButtonBox::Save|QDialogButtonBox::Cancel); 0060 QPushButton *okButton = buttonBox->button(QDialogButtonBox::Save); 0061 okButton->setDefault(true); 0062 okButton->setShortcut(Qt::CTRL | Qt::Key_Return); 0063 connect(buttonBox, &QDialogButtonBox::accepted, this, &KSaveSelectDialog::save); 0064 connect(buttonBox, &QDialogButtonBox::rejected, this, &KSaveSelectDialog::reject); 0065 auto user1Button = buttonBox->addButton(i18nc("@action:button", "Save &None" ), QDialogButtonBox::ActionRole); 0066 user1Button->setToolTip(i18nc("@info:tooltip", "Discard all modifications" )); 0067 connect(user1Button, &QPushButton::clicked, this, &KSaveSelectDialog::accept); 0068 mainLayout->addWidget(buttonBox); 0069 } 0070 0071 KSaveSelectDialog::~KSaveSelectDialog() 0072 { 0073 } 0074 0075 void KSaveSelectDialog::save( ) 0076 { 0077 for (int i = 0; i < m_listWidget->count(); ++i) { 0078 auto* item = static_cast<DocumentItem*>(m_listWidget->item(i)); 0079 if (item->data(Qt::CheckStateRole).toBool()) 0080 item->doc()->save(IDocument::Silent); 0081 } 0082 0083 accept(); 0084 } 0085 0086 #include "moc_savedialog.cpp"