From ea9e5d0f1e02ca8c8859bbf59f2081b819f1d329 Mon Sep 17 00:00:00 2001 From: am Date: Mon, 6 Jul 2009 08:44:14 +0000 Subject: -added some artwork -started implementing FilesystemView git-svn-id: file:///var/svn/repos2/shemov/trunk@377 f440f766-f032-0410-8965-dc7d17de2ca0 --- filesystemwidget.cpp | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'filesystemwidget.cpp') diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 5e30b66..3798dcc 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -7,16 +7,69 @@ #include #include +#include +#include +#include +#include #include "filesystemwidget.h" #include "filesystemdirproxy.h" +#include "fileview.h" +#include "shemoviconprovider.h" FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent) { mModel = new QDirModel; mModel->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); + mModel->setSorting(QDir::DirsFirst | QDir::IgnoreCase); + SheMovIconProvider *p = new SheMovIconProvider; + mModel->setIconProvider(p); + mDirProxy = new FilesystemDirProxy; mDirProxy->setSourceModel(mModel); mDirView = new QTreeView; mDirView->setModel(mDirProxy); + mDirView->setColumnHidden(1, true); + mDirView->setColumnHidden(2, true); + mDirView->setColumnHidden(3, true); + mDirView->setRootIsDecorated(false); + + mFileView = new FileView; + mFileView->setModel(mModel); + connect(mDirView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(directoryChanged(const QModelIndex &))); + + QSettings s; + QString startDir = s.value("paths/start", QDir::homePath()).toString(); + QModelIndex startIndex = mModel->index(startDir); + if(startIndex.isValid()){ + QModelIndex proxyIndex = mDirProxy->mapFromSource(startIndex); + mDirView->setCurrentIndex(proxyIndex); + mDirView->setExpanded(proxyIndex, true); + QModelIndex parent = proxyIndex.parent(); + mFileView->setRootIndex(startIndex); + do { + mDirView->setExpanded(parent, true); + parent = parent.parent(); + }while(parent.isValid()); + } + + mFileView->resizeColumnToContents(0); + QVBoxLayout *mainLayout = new QVBoxLayout; + QSplitter *splitter = new QSplitter; + splitter->addWidget(mDirView); + splitter->addWidget(mFileView); + splitter->setStretchFactor(0, 1); + splitter->setStretchFactor(1, 2); + mainLayout->addWidget(splitter); + + setLayout(mainLayout); +} + +void FilesystemWidget::directoryChanged(const QModelIndex &index){ + QModelIndex real = mDirProxy->mapToSource(index); + if(!index.isValid()){ + return; + } + mFileView->setRootIndex(real); } + -- cgit v1.2.3-70-g09d2