From a7a6b1c9f8f718b3082e6cc373459a1eba508848 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 17 Jul 2010 17:43:01 +0200 Subject: 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. --- filestreewidget.cpp | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'filestreewidget.cpp') 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(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(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){} -- cgit v1.2.3-70-g09d2