filebrowser.cpp Example File
documentproperties/filebrowser.cpp
#include "filebrowser.h"
#include "documentpropertieswidget.h"
#include <qdocumentgallery.h>
#include <QtGui>
FileBrowser::FileBrowser(QWidget *parent, Qt::WindowFlags flags)
: QMainWindow(parent, flags)
, gallery(new QDocumentGallery(this))
, fileSystemModel(0)
, view(0)
{
#ifdef Q_WS_MAEMO_5
setAttribute(Qt::WA_Maemo5StackedWindow);
#endif
menuBar()->addAction(tr("Documents"), this, SLOT(browseDocuments()));
menuBar()->addAction(tr("Audio"), this, SLOT(browseAudio()));
menuBar()->addAction(tr("Images"), this, SLOT(browseImages()));
menuBar()->addAction(tr("Videos"), this, SLOT(browseVideos()));
fileSystemModel = new QFileSystemModel(this);
fileSystemModel->setRootPath(QDesktopServices::storageLocation(QDesktopServices::HomeLocation));
view = new QListView;
view->setModel(fileSystemModel);
connect(view, SIGNAL(activated(QModelIndex)), this, SLOT(activated(QModelIndex)));
setCentralWidget(view);
browseDocuments();
}
void FileBrowser::browseAudio()
{
rootPath = QDesktopServices::storageLocation(QDesktopServices::MusicLocation);
fileSystemModel->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs);
view->setRootIndex(fileSystemModel->index(rootPath));
setWindowTitle(tr("Audio"));
}
void FileBrowser::browseDocuments()
{
rootPath = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation);
fileSystemModel->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs);
view->setRootIndex(fileSystemModel->index(rootPath));
setWindowTitle(tr("Documents"));
}
void FileBrowser::browseImages()
{
rootPath = QDesktopServices::storageLocation(QDesktopServices::PicturesLocation);
fileSystemModel->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs);
view->setRootIndex(fileSystemModel->index(rootPath));
setWindowTitle(tr("Images"));
}
void FileBrowser::browseVideos()
{
rootPath = QDesktopServices::storageLocation(QDesktopServices::MoviesLocation);
fileSystemModel->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs);
view->setRootIndex(fileSystemModel->index(rootPath));
setWindowTitle(tr("Videos"));
}
void FileBrowser::activated(const QModelIndex &index)
{
QFileInfo fileInfo = fileSystemModel->fileInfo(index);
if (fileInfo.isDir() && fileInfo.fileName() != QLatin1String(".")) {
if (fileInfo.fileName() == QLatin1String("..")) {
QModelIndex parent = view->rootIndex().parent();
fileInfo = fileSystemModel->fileInfo(parent);
if (fileInfo.absoluteFilePath() == rootPath)
fileSystemModel->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs);
view->setRootIndex(parent);
} else {
fileSystemModel->setFilter(QDir::AllEntries | QDir::AllDirs);
view->setRootIndex(index);
}
setWindowTitle(fileInfo.fileName());
} else {
if (fileInfo.fileName() == QLatin1String("."))
fileInfo = fileSystemModel->fileInfo(view->rootIndex());
#if defined(Q_WS_MAEMO_5)
DocumentPropertiesWidget *widget = new DocumentPropertiesWidget(fileInfo, gallery, this);
widget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred);
QScrollArea *window = new QScrollArea(this);
window->setWindowFlags(window->windowFlags() | Qt::Window);
window->setAttribute(Qt::WA_DeleteOnClose);
window->setAttribute(Qt::WA_Maemo5StackedWindow);
window->setWidgetResizable(true);
window->setWidget(widget);
window->show();
#elif defined (Q_OS_SYMBIAN)
QScrollArea *window = new QScrollArea(this);
DocumentPropertiesWidget *widget = new DocumentPropertiesWidget(fileInfo, gallery, window);
widget->setWindowModality(Qt::WindowModal);
window->setWindowFlags(window->windowFlags() | Qt::Dialog);
window->setAttribute(Qt::WA_DeleteOnClose);
window->setWidgetResizable(true);
window->setWidget(widget);
window->showMaximized();
#else
DocumentPropertiesWidget *widget = new DocumentPropertiesWidget(fileInfo, gallery, this);
widget->setWindowFlags(widget->windowFlags() | Qt::Dialog);
widget->setAttribute(Qt::WA_DeleteOnClose);
widget->setWindowModality(Qt::WindowModal);
# if defined(Q_OS_SYMBIAN)
widget->showMaximized();
# else
widget->show();
# endif
#endif
}
}
[+] Documentation Feedback