File indexing completed on 2024-05-05 17:15:08

0001 /***************************************************************************
0002     date                 : Jan 22 2004
0003     version              : 0.10
0004     copyright            : (C) 2004 by Holger Danielsson
0005     email                : holger.danielsson@t-online.de
0006  ***************************************************************************/
0007 
0008 /***************************************************************************
0009  *                                                                         *
0010  *   This program is free software; you can redistribute it and/or modify  *
0011  *   it under the terms of the GNU General Public License as published by  *
0012  *   the Free Software Foundation; either version 2 of the License, or     *
0013  *   (at your option) any later version.                                   *
0014  *                                                                         *
0015  ***************************************************************************/
0016 
0017 #include "dialogs/cleandialog.h"
0018 #include "kiledebug.h"
0019 
0020 #include <KConfigGroup>
0021 #include <KIconLoader>
0022 #include <KLocalizedString>
0023 #include <QDialogButtonBox>
0024 #include <QFileInfo>
0025 #include <QHBoxLayout>
0026 #include <QLabel>
0027 #include <QLayout>
0028 #include <QPixmap>
0029 #include <QPushButton>
0030 #include <QTreeWidget>
0031 #include <QVBoxLayout>
0032 
0033 namespace KileDialog
0034 {
0035 Clean::Clean(QWidget *parent, const QString &filename, const QStringList &extlist)
0036     : QDialog(parent)
0037     , m_extlist(extlist)
0038 {
0039     setWindowTitle(i18n("Delete Files"));
0040     setModal(true);
0041     QVBoxLayout *mainLayout = new QVBoxLayout;
0042     setLayout(mainLayout);
0043 
0044     QWidget *page = new QWidget(this);
0045     mainLayout->addWidget(page);
0046 
0047     // Layout
0048     QVBoxLayout *vbox = new QVBoxLayout();
0049     vbox->setContentsMargins(0, 0, 0, 0);
0050     page->setLayout(vbox);
0051 
0052     // label widgets
0053     QWidget *labelwidget = new QWidget(page);
0054     mainLayout->addWidget(labelwidget);
0055     QHBoxLayout *labellayout = new QHBoxLayout();
0056     labellayout->setContentsMargins(0, 0, 0, 0);
0057     labelwidget->setLayout(labellayout);
0058 
0059     // line 1: picture and label
0060     QLabel *picture =  new QLabel("", labelwidget);
0061     picture->setPixmap(QIcon::fromTheme("dialog-warning").pixmap(KIconLoader::SizeMedium));
0062     QLabel *label =  new QLabel(i18n("Do you really want to delete these files?"), labelwidget);
0063     labellayout->addWidget(picture);
0064     labellayout->addSpacing(20);
0065     labellayout->addWidget(label);
0066 
0067     // line 2: m_listview
0068     m_listview = new QTreeWidget(page);
0069     mainLayout->addWidget(m_listview);
0070     m_listview->setHeaderLabel(i18n("Files"));
0071     m_listview->setSortingEnabled(false);
0072     m_listview->setAllColumnsShowFocus(true);
0073     m_listview->setRootIsDecorated(false);
0074 
0075     // insert items into m_listview
0076     QString base = QFileInfo(filename).completeBaseName();
0077     for(int i = 0; i <  m_extlist.count(); ++i) {
0078         QTreeWidgetItem *item = new QTreeWidgetItem(m_listview,
0079                 QStringList(base + m_extlist[i]));
0080         item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
0081         item->setCheckState(0, Qt::Checked);
0082     }
0083 
0084     vbox->addWidget(labelwidget, 0, Qt::AlignHCenter);
0085     vbox->addWidget(m_listview);
0086 
0087     // add buttons
0088     QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
0089     QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
0090     okButton->setDefault(true);
0091     okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
0092     okButton->setDefault(true);
0093     mainLayout->addWidget(buttonBox);
0094     connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
0095     connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
0096 }
0097 
0098 Clean::~Clean()
0099 {}
0100 
0101 // get all selected items
0102 
0103 QStringList Clean::cleanList()
0104 {
0105     QStringList templist;
0106 
0107     int i = 0;
0108     QTreeWidgetItemIterator it(m_listview);
0109     while (*it) {
0110         if ((*it)->checkState(0) == Qt::Checked && (*it)->text(0).endsWith(m_extlist[i])) {
0111             templist.append(m_extlist[i]);
0112         }
0113         ++it;
0114         ++i;
0115     }
0116 
0117     m_extlist = templist;
0118     return m_extlist;
0119 }
0120 }