summaryrefslogtreecommitdiffstats
path: root/seriestreewidget.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-07-30 19:59:52 +0200
committerArno <am@disconnect.de>2010-07-30 19:59:52 +0200
commit066cc53c2506fb7f7cb7b3b0d888243df611cacd (patch)
tree73af8e7b7ea17255d95a84b3ee9dcd5d6946c171 /seriestreewidget.cpp
parenta493d6500c33a0956e0165ad53136fa6110a7a64 (diff)
downloadSheMov-066cc53c2506fb7f7cb7b3b0d888243df611cacd.tar.gz
SheMov-066cc53c2506fb7f7cb7b3b0d888243df611cacd.tar.bz2
SheMov-066cc53c2506fb7f7cb7b3b0d888243df611cacd.zip
Bugfix commit
The journey through the internals of SheMov started by fixing SeriesTreeWidget::readSettings(). The selected index didn't really get selected on startup because only QItemSelectionModel::setCurrendt() was called. Replace it with QItemSelectionModel::select() and QTreeView::setCurrent(). Also fix SeriesTreeWidget::writeSettings() to only write selected items to QSettings() when something is selected. While working on selections I realized that there is a serious bug in Helper::moveToArchive. The destination directory in the archive must be created if it doesn't exist. For a testcase I needed an easy way to move files back from the archive to incoming directory, so I added FilesTreeWiget::moveToDirectory(). This lets you move files from the FilesTreeWidget to any directory. During testing I realized that SeriesTreeWidget::deleteFromSeries() QMessageBox() doesn't show files when deleting a series part. Fixed that by adding SeriesParts to file list. Finally a newly added SeriesPart gets selected and selected by expanding it first and then calling QItemSelectionModel::select() To make a long story short: 1. fix SeriesTreeWidget::{read,write}Settings 2. add FilesTreeWidget::moveToDirectory() 3. fix SeriesTreeWidget::deleteFromSeries() QMessageBox 4. fix selecting newly added SeriesParts
Diffstat (limited to 'seriestreewidget.cpp')
-rw-r--r--seriestreewidget.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp
index 35276a1..3452931 100644
--- a/seriestreewidget.cpp
+++ b/seriestreewidget.cpp
@@ -93,6 +93,9 @@ void SeriesTreeWidget::seriesAdded(QString seriesName, int seriesPart, bool reso
}
QModelIndex destIdx = mModel->findValue(seriesName);
if(destIdx.isValid()){
+ QModelIndex proxySeries = mProxy->mapFromSource(destIdx);
+ mView->expand(proxySeries);
+ mView->scrollTo(proxySeries, QAbstractItemView::PositionAtCenter);
QModelIndex seriesPartIdx = mModel->findValue(seriesPart, destIdx, SeriesTreeModel::SeriesPart);
if(seriesPartIdx.isValid()){
destIdx = seriesPartIdx;
@@ -100,10 +103,7 @@ void SeriesTreeWidget::seriesAdded(QString seriesName, int seriesPart, bool reso
}
if(destIdx.isValid()){
QModelIndex proxyIndex = mProxy->mapFromSource(destIdx);
- if(destIdx.parent().isValid()){
- mView->expand(destIdx);
- }
- mView->selectionModel()->select(proxyIndex, QItemSelectionModel::ClearAndSelect);
+ mView->selectionModel()->select(proxyIndex, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Current | QItemSelectionModel::Rows);
}
}
@@ -136,6 +136,9 @@ void SeriesTreeWidget::deleteFromSeries(){
foreach(QPersistentModelIndex s, series){
files.append(mModel->findFiles(s));
}
+ foreach(QPersistentModelIndex p, parts){
+ files.append(mModel->findFiles(p));
+ }
QString message;
if(!files.isEmpty()){
@@ -181,7 +184,9 @@ void SeriesTreeWidget::readSettings(){
QModelIndex seriesIdx = mModel->findValue(selectedSeries);
if(seriesIdx.isValid()){
QModelIndex real = mProxy->mapFromSource(seriesIdx);
- mView->selectionModel()->setCurrentIndex(real, QItemSelectionModel::SelectCurrent);
+ mView->scrollTo(real, QAbstractItemView::PositionAtCenter);
+ mView->selectionModel()->select(real, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Current | QItemSelectionModel::Rows);
+ mView->setCurrentIndex(real);
}
}
@@ -189,8 +194,10 @@ void SeriesTreeWidget::writeSettings(){
QSettings s;
s.setValue("archive/expanded", mExpandedItems);
s.setValue("archive/sortorder", mProxy->sortOrder());
- QString selected = mView->selectionModel()->currentIndex().data(SeriesTreeModel::NameRole).toString();
- s.setValue("archive/selectedseries", selected);
+ QModelIndexList selected = mView->selectionModel()->selectedRows();
+ if(!selected.isEmpty()){
+ s.setValue("archive/selectedseries", selected.at(0).data(SeriesTreeModel::NameRole).toString());
+ }
}
void SeriesTreeWidget::expandCurrent(){