summaryrefslogtreecommitdiffstats
path: root/filestreewidget.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-07-17 17:43:01 +0200
committerArno <am@disconnect.de>2010-07-17 17:43:01 +0200
commita7a6b1c9f8f718b3082e6cc373459a1eba508848 (patch)
tree9b78f8735222d5386a8f88b06dd5b57ee510bb70 /filestreewidget.cpp
parent7be84b2dfb0d300ba03801f43b49364a41ed02f8 (diff)
downloadSheMov-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.cpp45
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 &current, 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){}