diff options
author | Arno <am@disconnect.de> | 2010-07-17 17:43:01 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-07-17 17:43:01 +0200 |
commit | a7a6b1c9f8f718b3082e6cc373459a1eba508848 (patch) | |
tree | 9b78f8735222d5386a8f88b06dd5b57ee510bb70 /filestreewidget.cpp | |
parent | 7be84b2dfb0d300ba03801f43b49364a41ed02f8 (diff) | |
download | SheMov-a7a6b1c9f8f718b3082e6cc373459a1eba508848.tar.gz SheMov-a7a6b1c9f8f718b3082e6cc373459a1eba508848.tar.bz2 SheMov-a7a6b1c9f8f718b3082e6cc373459a1eba508848.zip |
Preparation for new move to burn implementation
Show size of selected items in status bar when files are selected in the
FileView. Also show series name of current selected file in the general
status bar.
Diffstat (limited to 'filestreewidget.cpp')
-rw-r--r-- | filestreewidget.cpp | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp index 8d9a435..7af3f6f 100644 --- a/filestreewidget.cpp +++ b/filestreewidget.cpp @@ -12,20 +12,63 @@ #include "filestreewidget.h" #include "smmodelsingleton.h" #include "filestreemodel.h" +#include "seriestreemodel.h" -FilesTreeWidget::FilesTreeWidget(QWidget *parent) : QWidget(parent){ +FilesTreeWidget::FilesTreeWidget(QWidget *parent) : QWidget(parent), mSelectedSize(0){ //the view mView = new FilesTreeView; + mView->setSelectionMode(QAbstractItemView::ExtendedSelection); mModel = static_cast<FilesTreeModel*>(SmModelSingleton::instance()->model("FilesModel")); mProxy = new FilesTreeSortModel(this); mProxy->setSourceModel(mModel); mView->setModel(mProxy); mView->setSortingEnabled(true); + QItemSelectionModel *selModel = mView->selectionModel(); + connect(selModel, SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(fileSelectionChanged(QModelIndex,QModelIndex))); + connect(selModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(fileSelectionChanged(QItemSelection,QItemSelection))); //layout QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addWidget(mView); setLayout(mainLayout); + + //series model + mSeriesModel = static_cast<SeriesTreeModel*>(SmModelSingleton::instance()->model("SeriesModel")); +} + +void FilesTreeWidget::fileSelectionChanged(const QModelIndex ¤t, const QModelIndex &previous){ + Q_UNUSED(previous); + int seriesPartId = current.data(FilesTreeModel::SeriesPartIdRole).toInt(); + int seriesId = mSeriesModel->seriesIdByPartId(seriesPartId); + int filePart = current.data(FilesTreeModel::PartNoRole).toInt(); + QModelIndex seriesIdx = mSeriesModel->findValue(seriesId, QModelIndex(), SeriesTreeModel::SeriesId); + if(seriesIdx.isValid()){ + QModelIndex seriesPartIdx = mSeriesModel->findValue(seriesPartId, seriesIdx, SeriesTreeModel::SeriesPartId); + QString seriesNumber = QString::number(seriesPartIdx.data(SeriesTreeModel::SeriesPartRole).toInt()); + QString msg; + if(filePart != 0){ + msg = QString(tr("%1 %2 (%3)")).arg(seriesIdx.data(SeriesTreeModel::NameRole).toString()).arg(seriesNumber).arg(filePart); + }else{ + msg = QString(tr("%1 %2")).arg(seriesIdx.data(SeriesTreeModel::NameRole).toString()).arg(seriesNumber); + } + emit statusMessage(msg); + } +} + +void FilesTreeWidget::fileSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected){ + QModelIndexList sel = selected.indexes(); + QModelIndexList desel = deselected.indexes(); + foreach(QModelIndex i, sel){ + if(i.column() == 0){ + mSelectedSize += i.data(FilesTreeModel::SizeRole).toLongLong(); + } + } + foreach(QModelIndex i, desel){ + if(i.column() == 0){ + mSelectedSize -= i.data(FilesTreeModel::SizeRole).toLongLong(); + } + } + emit sizeChanged(mSelectedSize); } FilesTreeView::FilesTreeView(QWidget *parent) : QTreeView(parent){} |