| #include <QtGui>#include "directoryviewer.h"
 #include "ui_directoryviewer.h"
 
 
 
 DirectoryViewer::DirectoryViewer(QWidget *parent)
 : QDialog(parent), ui(new Ui::DirectoryViewer)
 {
 ui->setupUi(this);
 
 model = new QDirModel;
 model->setReadOnly(false);
 model->setSorting(QDir::DirsFirst | QDir::IgnoreCase | QDir::Name);
 
 treeView = new QTreeView;
 treeView->setModel(model);
 treeView->header()->setStretchLastSection(true);
 treeView->header()->setSortIndicator(0,Qt::AscendingOrder);
 treeView->header()->setSortIndicatorShown(true);
 treeView->header()->setClickable(true);
 QModelIndex index = model->index(QDir::currentPath());
 treeView->expand(index);
 treeView->scrollTo(index);
 treeView->resizeColumnToContents(0);
 
 buttonBox = new QDialogButtonBox(Qt::Horizontal);
 QPushButton *mkdirButton = buttonBox->addButton(tr("&Create Directory"),QDialogButtonBox::ActionRole);
 QPushButton *removeButton = buttonBox->addButton(tr("&Remove"),QDialogButtonBox::ActionRole);
 buttonBox->addButton(tr("&Quit"),QDialogButtonBox::AcceptRole);
 
 
 connect(mkdirButton,SIGNAL(clicked()),this,SLOT(createDirectory()));
 connect(removeButton,SIGNAL(clicked()),this,SLOT(remove()));
 connect(buttonBox,SIGNAL(accepted()),this,SLOT(accept()));
 
 QVBoxLayout *layout = new QVBoxLayout;
 layout->addWidget(treeView);
 layout->addWidget(buttonBox);
 setLayout(layout);
 setWindowTitle(tr("Directory Viewer by Killua"));
 }
 
 
 
 DirectoryViewer::~DirectoryViewer()
 {
 delete ui;
 }
 
 
 
 void DirectoryViewer::createDirectory()
 {
 QModelIndex index = treeView->currentIndex();
 if (!index.isValid())
 return ;
 QString dirName = QInputDialog::getText(this,tr("Create Directory"),tr("Directory Name"));
 if (!dirName.isEmpty()) {
 if (!model->mkdir(index,dirName).isValid())
 QMessageBox::information(this,tr("Create Directory"),tr("Failed to create"));
 }
 }
 
 
 
 void DirectoryViewer::remove()
 {
 QModelIndex index =treeView->currentIndex();
 if (!index.isValid())
 return ;
 bool ok;
 if (model->fileInfo(index).isDir()) {
 ok = model->rmdir(index);
 } else {
 ok = model->remove(index);
 }
 if (!ok)
 QMessageBox::information(this,tr("Remove"),tr("Failed to remvoe"));
 }
 
 |