summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filestreewidget.cpp59
-rw-r--r--filestreewidget.h6
-rw-r--r--filesystemwidget.cpp1
-rw-r--r--fileview.cpp12
-rw-r--r--fileview.h7
-rw-r--r--mappingtreemodel.cpp22
-rw-r--r--mappingtreemodel.h1
-rw-r--r--pictureswidget.cpp31
-rw-r--r--pictureswidget.h8
-rw-r--r--shemov.cpp37
-rw-r--r--shemov.h2
11 files changed, 82 insertions, 104 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp
index 1a17be5..6222d99 100644
--- a/filestreewidget.cpp
+++ b/filestreewidget.cpp
@@ -54,8 +54,7 @@ FilesTreeWidget::FilesTreeWidget(QWidget *parent) : QWidget(parent), mSelectedSi
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)));
+ connect(selModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(fileSelectionChanged()));
connect(mView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(itemDoubleClicked(QModelIndex)));
//layout
@@ -70,7 +69,7 @@ FilesTreeWidget::FilesTreeWidget(QWidget *parent) : QWidget(parent), mSelectedSi
void FilesTreeWidget::resetSize(){
mSelectedSize = 0;
- emit sizeChanged(mSelectedSize);
+ emit selectedSize(mSelectedSize);
}
void FilesTreeWidget::moveToBurn(){
@@ -287,23 +286,27 @@ void FilesTreeWidget::suggest(){
mView->scrollTo(last, QAbstractItemView::PositionAtCenter);
}
-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(){
+ QModelIndexList selected = mView->selectionModel()->selectedRows();
+ qint64 selSize = 0;
+ QStringList selectedSeries;
+ foreach(QModelIndex idx, selected){
+ selSize += idx.data(FilesTreeModel::SizeRole).toLongLong();
+ int seriesPartId = idx.data(FilesTreeModel::SeriesPartIdRole).toInt();
+ int seriesId = mSeriesModel->seriesIdByPartId(seriesPartId);
+ 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 seriesString = QString("%1 %2").arg(seriesIdx.data(SeriesTreeModel::NameRole).toString()).arg(seriesNumber);
+ if(!selectedSeries.contains(seriesString)){
+ selectedSeries << seriesString;
+ }
+ }
+ }
+ emit selectedSize(selSize);
+ emit numSelected(selected.size());
+ emit statusMessage(QString(tr("Series: %1")).arg(selectedSeries.join(",")));
}
void FilesTreeWidget::itemDoubleClicked(const QModelIndex &index){
@@ -334,22 +337,6 @@ void FilesTreeWidget::itemDoubleClicked(const QModelIndex &index){
}
}
-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), mHoverWin(new HoverWindow), mHoverPics(false){
setAttribute(Qt::WA_Hover);
}
diff --git a/filestreewidget.h b/filestreewidget.h
index 940d9de..54393dd 100644
--- a/filestreewidget.h
+++ b/filestreewidget.h
@@ -41,12 +41,12 @@ class FilesTreeWidget : public QWidget {
void suggest();
private slots:
- void fileSelectionChanged(const QModelIndex &current, const QModelIndex &previous);
- void fileSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
+ void fileSelectionChanged();
void itemDoubleClicked(const QModelIndex &index);
signals:
- void sizeChanged(qint64);
+ void selectedSize(qint64);
+ void numSelected(int);
void statusMessage(QString);
private:
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index 38edbab..e86db07 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -70,6 +70,7 @@ FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent), mClipboar
mFileView->setSelectionMode(QAbstractItemView::ExtendedSelection);
mFileView->setEditTriggers(QAbstractItemView::NoEditTriggers);
mFileView->setAlternatingRowColors(true);
+ connect(mFileView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), mFileView, SLOT(selectedFilesChanged()));
mPicViewer = SmGlobals::instance()->pictureViewer();
diff --git a/fileview.cpp b/fileview.cpp
index f0169de..bd0492f 100644
--- a/fileview.cpp
+++ b/fileview.cpp
@@ -198,6 +198,18 @@ bool FileView::event(QEvent *e){
return QTreeView::event(e);
}
+void FileView::selectedFilesChanged(){
+ QModelIndexList selected = selectionModel()->selectedRows();
+ emit numSelected(selected.size());
+ qint64 selSize = 0;
+ foreach(QModelIndex i, selected){
+ QString path = i.data(QFileSystemModel::FilePathRole).toString();
+ QFileInfo fi(path);
+ selSize += fi.size();
+ }
+ emit selectedSize(selSize);
+}
+
bool FileView::exitHover(bool exitVal){
mHoverWin->setVisible(false);
mCurHover = QModelIndex();
diff --git a/fileview.h b/fileview.h
index 885eac0..2ad17ad 100644
--- a/fileview.h
+++ b/fileview.h
@@ -31,6 +31,8 @@ class FileView : public QTreeView {
void enterPressed(const QModelIndex &);
void statusbarMessage(const QString &);
void editorClosed(const QModelIndex &idx);
+ void numSelected(int);
+ void selectedSize(qint64);
public slots:
void markFiles();
@@ -46,7 +48,10 @@ class FileView : public QTreeView {
virtual void keyPressEvent(QKeyEvent *e);
virtual void resizeEvent(QResizeEvent *e);
virtual bool event(QEvent *event);
-
+
+ private slots:
+ void selectedFilesChanged();
+
private:
enum HoverFileType { Dir, Movie, Image, None };
bool exitHover(bool exitVal = true);
diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp
index 5ab6068..9b849d9 100644
--- a/mappingtreemodel.cpp
+++ b/mappingtreemodel.cpp
@@ -291,28 +291,6 @@ MappingData MappingTreeModel::mappingDataFromId(int mappingId) const{
return retval;
}
-void MappingTreeModel::setSelectedMappings(const QList<int> &mappingIds){
- //we can't change the list we're iterating over... that would wreak havoc
- QList<SmTreeItem*> iterateList = mSelectedMappings;
- foreach(SmTreeItem *item, iterateList){
- mSelectedMappings.removeAll(item);
- QModelIndex idxStart = createIndex(item->parent()->row(), 0, item);
- QModelIndex idxEnd = createIndex(item->parent()->row(), NumFields - 1, item);
- emit dataChanged(idxStart, idxEnd);
- }
- mSelectedMappings.clear();
- foreach(int id, mappingIds){
- QModelIndex idx = findRecursive(id, Id);
- if(idx.isValid()){
- SmTreeItem *item = static_cast<SmTreeItem*>(idx.internalPointer());
- mSelectedMappings << item;
- QModelIndex idxStart = createIndex(item->parent()->row(), 0, item);
- QModelIndex idxEnd = createIndex(item->parent()->row(), NumFields - 1, item);
- emit dataChanged(idxStart, idxEnd);
- }
- }
-}
-
QStringList MappingTreeModel::paths() const{
return getPathsRecursive(root());
}
diff --git a/mappingtreemodel.h b/mappingtreemodel.h
index 50843ba..7a3b5fe 100644
--- a/mappingtreemodel.h
+++ b/mappingtreemodel.h
@@ -44,7 +44,6 @@ class MappingTreeModel : public SmTreeModel {
bool deleteChild(const QModelIndex &idx);
int childCount(const QModelIndex &idx) const;
MappingData mappingDataFromId(int mappingId) const;
- void setSelectedMappings(const QList<int> &mappingData);
QStringList paths() const;
const QString &forbidden() const { return mForbidden; }
diff --git a/pictureswidget.cpp b/pictureswidget.cpp
index b420309..95e8a60 100644
--- a/pictureswidget.cpp
+++ b/pictureswidget.cpp
@@ -35,7 +35,6 @@ PicturesWidget::PicturesWidget(QWidget *parent) : QWidget(parent), mWindowTitleB
connect(mMappingTree, SIGNAL(mappingChanged(int)), mPictureView, SLOT(mappingChanged(int)));
//change window title when mapping selection changes
connect(mMappingTree, SIGNAL(mappingChanged(int)), this, SLOT(constructWindowTitle()));
- connect(mPictureView, SIGNAL(newFileMappigs()), this, SLOT(setMappingColors()));
connect(mPictureView, SIGNAL(editPicsMappings()), this, SLOT(editMappings()));
connect(mPictureView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(showInPicViewer(QModelIndex)));
splitter->addWidget(mMappingTree);
@@ -58,11 +57,6 @@ void PicturesWidget::showPicViewer(bool toggled){
mPicViewer->setVisible(toggled);
}
-void PicturesWidget::setMappingColors(){
- MappingTreeModel *mtm = static_cast<MappingTreeModel*>(SmGlobals::instance()->model("MappingTree"));
- mtm->setSelectedMappings(mPictureView->fileMappings());
-}
-
void PicturesWidget::editMappings(){
QList<int> currentMappings = mPictureView->fileMappings();
mEditDialog->editWidget()->setMappings(currentMappings);
@@ -106,12 +100,13 @@ void PicturesWidget::showInPicViewer(const QModelIndex &idx){
}
PictureView::PictureView(QWidget *parent) : QTreeView(parent) {
- //setup model
+ //setup models
mModel = new PicFilesModel(QStringList() << tr("Filename") << tr("SizeNum") << tr("Format") << tr("Full Path") << tr("Id") << tr("Added") << tr("Md5Sum") << tr("Size"), this);
mProxy = new QSortFilterProxyModel(this);
mProxy->setSourceModel(mModel);
setModel(mProxy);
- connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(setFileMappings()));
+ connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(selectedFilesChanged()));
+ mMappingTreeModel = static_cast<MappingTreeModel*>(SmGlobals::instance()->model("MappingTree"));
//read settings
QSettings s;
@@ -237,17 +232,33 @@ void PictureView::contextMenuEvent(QContextMenuEvent *e){
ctxMenu.exec(e->globalPos());
}
-void PictureView::setFileMappings(){
+void PictureView::selectedFilesChanged(){
QModelIndexList sel = selectionModel()->selectedRows();
if(sel.isEmpty()){
return;
}
+ //file mappings
QList<QVariant> fileIds;
+ qint64 selSize = 0;
foreach(QModelIndex i, sel){
fileIds << i.data(PicFilesModel::IdRole);
+ selSize += i.data(PicFilesModel::SizeRole).toInt();
}
mFilesMappings = mModel->mappingIds(fileIds);
- emit newFileMappigs();
+ QStringList mappings;
+ foreach(int m, mFilesMappings){
+ MappingData mapping = mMappingTreeModel->mappingDataFromId(m);
+ if(!mappings.contains(mapping.name)){
+ mappings << mapping.name;
+ }
+ }
+ qSort(mappings);
+ QString mappingMsg = QString(tr("Mappings: %1")).arg(mappings.join(","));
+ emit newMappings(mappingMsg);
+
+ //selected items
+ emit numSelected(sel.size());
+ emit selectedSize(selSize);
}
PicFilesModel::PicFilesModel(const QStringList &headers, QObject *parent) : SmTreeModel(headers, parent) {
diff --git a/pictureswidget.h b/pictureswidget.h
index cdc40b5..a8463a4 100644
--- a/pictureswidget.h
+++ b/pictureswidget.h
@@ -41,7 +41,6 @@ class PicturesWidget : public QWidget {
void showPicViewer(bool toggled);
private slots:
- void setMappingColors();
void editMappings();
void constructWindowTitle();
void showInPicViewer(const QModelIndex &idx);
@@ -82,10 +81,12 @@ class PictureView : public QTreeView {
virtual void contextMenuEvent(QContextMenuEvent *e);
private slots:
- void setFileMappings();
+ void selectedFilesChanged();
signals:
- void newFileMappigs();
+ void newMappings(QString);
+ void numSelected(int);
+ void selectedSize(qint64);
void editPicsMappings();
private:
@@ -96,6 +97,7 @@ class PictureView : public QTreeView {
int mCursorOffset;
QList<int> mFilesMappings;
PictureViewer2 *mPV;
+ MappingTreeModel *mMappingTreeModel;
};
class PicFilesModel : public SmTreeModel {
diff --git a/shemov.cpp b/shemov.cpp
index 77c9a98..8a8ff57 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -76,16 +76,19 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
mATree = new ArchiveTreeView;
mTab->addTab(mATree, "Archive");
connect(mATree->filesWidget(), SIGNAL(statusMessage(QString)), this, SLOT(statusbarMessage(QString)));
- connect(mATree->filesWidget(), SIGNAL(sizeChanged(qint64)), this, SLOT(setSize(qint64)));
connect(mATree, SIGNAL(needWindowTitleChange(QString)), this, SLOT(setWindowTitle(QString)));
- connect(mATree->filesWidget()->filesTree()->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(updateSelectionCount(const QItemSelection &, const QItemSelection &)));
- connect(mATree->seriesWidget()->seriesTree()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(updateSelectionCount(QItemSelection,QItemSelection)));
+ connect(mATree->filesWidget(), SIGNAL(numSelected(int)), this, SLOT(updateSelectedCount(int)));
+ connect(mATree->filesWidget(), SIGNAL(selectedSize(qint64)), this, SLOT(setSize(qint64)));
+ connect(mATree->filesWidget(), SIGNAL(statusMessage(QString)), this, SLOT(statusbarMessage(QString)));
connect(this, SIGNAL(configChanged()), mATree, SLOT(readSettings()));
//pictures
mPicWidget = new PicturesWidget;
mTab->addTab(mPicWidget, tr("Pictures"));
connect(mPicWidget, SIGNAL(needWindowTitleChange(QString)), this, SLOT(setWindowTitle(QString)));
+ connect(mPicWidget->picView(), SIGNAL(newMappings(QString)), this, SLOT(statusbarMessage(QString)));
+ connect(mPicWidget->picView(), SIGNAL(numSelected(int)), this, SLOT(updateSelectedCount(int)));
+ connect(mPicWidget->picView(), SIGNAL(selectedSize(qint64)), this, SLOT(setSize(qint64)));
//newmoviewizard + dbanalyzer
mNewMovieWizard = new NewMovieWizard(this);
@@ -103,7 +106,8 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
createToolBar();
setFsFree();
- connect(mFSWidget->fileView()->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(updateSelectionCount(const QItemSelection &, const QItemSelection &)));
+ connect(mFSWidget->fileView(), SIGNAL(selectedSize(qint64)), this, SLOT(setSize(qint64)));
+ connect(mFSWidget->fileView(), SIGNAL(numSelected(int)), this, SLOT(updateSelectedCount(int)));
connect(mFSWidget, SIGNAL(windowTitle(QString)), this, SLOT(setWindowTitle(QString)));
connect(mFSWidget->fileView(), SIGNAL(statusbarMessage(const QString &)), this, SLOT(statusbarMessage(const QString &)));
connect(mFSWidget, SIGNAL(statusbarMessage(const QString &)), this, SLOT(statusbarMessage(const QString &)));
@@ -142,28 +146,8 @@ void SheMov::closeEvent(QCloseEvent *event){
event->accept();
}
-void SheMov::updateSelectionCount(const QItemSelection & /* sel */, const QItemSelection & /* prev */){
- QLocale l;
- switch (mTab->currentIndex()) {
- case 0: {
- int selCount = mFSWidget->fileView()->selectionModel()->selectedRows().count();
- mSelectedItems->setText(QString::number(selCount));
- qint64 selSize(0);
- foreach(QModelIndex idx, mFSWidget->fileView()->selectionModel()->selectedRows()){
- QModelIndex real = mFSWidget->fileProxy()->mapToSource(idx);
- if(real.isValid()){
- QFileInfo fi = mFSWidget->dirModel()->fileInfo(real);
- selSize += fi.size();
- }
- }
- mSelectedSize->setText(QString(tr("<span style=\"color:#000000\">%1</span>")).arg(l.toString((selSize))));
- break;
- }
- case 1: {
- int selCount = mATree->filesWidget()->filesTree()->selectionModel()->selectedRows().count();
- mSelectedItems->setText(QString::number(selCount));
- }
- }
+void SheMov::updateSelectedCount(int count){
+ mSelectedItems->setText(QString::number(count));
}
void SheMov::statusbarMessage(const QString &message){
@@ -196,7 +180,6 @@ void SheMov::tabChanged(int newTab){
mShowTreeGroup->setEnabled(newTab == 1);
mPicActionGroup->setEnabled(newTab == 2);
mFilterFavoritesA->setEnabled(newTab == 1);
- updateSelectionCount(QItemSelection(), QItemSelection());
}
void SheMov::setFsFree(){
diff --git a/shemov.h b/shemov.h
index cb1ea9f..fdd3717 100644
--- a/shemov.h
+++ b/shemov.h
@@ -36,7 +36,7 @@ class SheMov : public QMainWindow {
virtual void closeEvent(QCloseEvent *event);
private slots:
- void updateSelectionCount(const QItemSelection &sel, const QItemSelection &prev);
+ void updateSelectedCount(int count);
void statusbarMessage(const QString &message);
void setTemplate(const QString &newTemplate);
void configure();