summaryrefslogtreecommitdiffstats
path: root/filesystemwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filesystemwidget.cpp')
-rw-r--r--filesystemwidget.cpp76
1 files changed, 51 insertions, 25 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index bd02098..187d92c 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -82,29 +82,13 @@ FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent) {
fileWidget->setLayout(fwLayout);
connect(mDirView->selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(directoryChanged(const QModelIndex &, const QModelIndex &)));
+ connect(mDirView, SIGNAL(expanded(QModelIndex)), this, SLOT(dirExpanded(QModelIndex)));
+ connect(mDirView, SIGNAL(collapsed(QModelIndex)), this, SLOT(dirCollapsed(QModelIndex)));
connect(mFileView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(fileViewActivated(const QModelIndex &)));
connect(mFileView, SIGNAL(enterPressed(const QModelIndex &)), this, SLOT(fileViewActivated(const QModelIndex &)));
connect(mFileView, SIGNAL(upDir()), this, SLOT(parentDir()));
connect(mDirEdit, SIGNAL(returnPressed()), this, SLOT(directoryEdited()));
- QSettings s;
- QStringList expandPaths = s.value("ui/expandpaths").toStringList();
- QString last;
- foreach(QString p, expandPaths){
- QModelIndex idx = mModel->index(p);
- last = p;
- if(idx.isValid()){
- QModelIndex proxy = mDirProxy->mapFromSource(idx);
- mDirView->setExpanded(proxy, true);
- expandParents(proxy);
- }
- }
- QString select = s.value("ui/selectstartup").toString();
- windowTitle(select);
- setWindowTitle(select);
- QModelIndex sel = mModel->index(select);
- mDirView->setCurrentIndex(mDirProxy->mapFromSource(sel));
-
mFileView->resizeColumnToContents(0);
QVBoxLayout *mainLayout = new QVBoxLayout;
@@ -407,6 +391,42 @@ void FilesystemWidget::playSelected(){
QProcess::startDetached(program, programArgs);
}
+void FilesystemWidget::readSettings(){
+ QSettings s;
+ QStringList expandedDirs = s.value("paths/expandeddirs").toStringList();
+ if(expandedDirs.isEmpty()){
+ expandedDirs << QDir::homePath();
+ }
+ foreach(QString p, expandedDirs){
+ QModelIndex idx = mModel->index(p);
+ if(idx.isValid()){
+ QModelIndex pidx = mDirProxy->mapFromSource(idx);
+ if(pidx.isValid()){
+ mDirView->setExpanded(pidx, true);
+ }
+ }
+ }
+ QString selectedDir = s.value("paths/selecteddir").toString();
+ if(!selectedDir.isEmpty()){
+ QModelIndex diridx = mModel->index(selectedDir);
+ if(diridx.isValid()){
+ QModelIndex pidx = mDirProxy->mapFromSource(diridx);
+ mDirView->selectionModel()->setCurrentIndex(pidx, QItemSelectionModel::ClearAndSelect);
+ }
+ }
+}
+
+void FilesystemWidget::writeSettings(){
+ QSettings s;
+ s.setValue("paths/expandeddirs", mExpandedDirs);
+ QModelIndex currentDir = mDirView->selectionModel()->currentIndex();
+ if(currentDir.isValid()){
+ QModelIndex real = mDirProxy->mapToSource(currentDir);
+ QString dir = mModel->filePath(real);
+ s.setValue("paths/selecteddir", dir);
+ }
+}
+
void FilesystemWidget::setWindowTitle(const QString &dir){
mWindowTitle = QString("%1 - %2").arg(qApp->applicationName()).arg(dir);
emit windowTitle(mWindowTitle);
@@ -466,14 +486,20 @@ void FilesystemWidget::doRenameFile(){
emit newTemplate(mTemplate);
}
-void FilesystemWidget::expandParents(const QModelIndex &idx){
- if(idx.isValid()){
- QModelIndex parent = idx.parent();
- do{
- mDirView->setExpanded(parent, true);
- parent = parent.parent();
+void FilesystemWidget::dirExpanded(const QModelIndex &idx){
+ QModelIndex real = mDirProxy->mapToSource(idx);
+ if(real.isValid()){
+ mExpandedDirs << mModel->filePath(real);
+ }
+}
- }while(parent.isValid());
+void FilesystemWidget::dirCollapsed(const QModelIndex &idx){
+ QModelIndex real = mDirProxy->mapToSource(idx);
+ if(real.isValid()){
+ QString path = mModel->filePath(real);
+ if(mExpandedDirs.contains(path)){
+ mExpandedDirs.removeAll(path);
+ }
}
}