summaryrefslogtreecommitdiffstats
path: root/pictureswidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pictureswidget.cpp')
-rw-r--r--pictureswidget.cpp191
1 files changed, 19 insertions, 172 deletions
diff --git a/pictureswidget.cpp b/pictureswidget.cpp
index 59007ca..7cbf288 100644
--- a/pictureswidget.cpp
+++ b/pictureswidget.cpp
@@ -24,6 +24,7 @@
#include <QApplication>
#include "pictureswidget.h"
+#include "picturelistview.h"
#include "picfilesmodel.h"
#include "mappingtreewidget.h"
#include "smtreeitem.h"
@@ -37,23 +38,23 @@ PicturesWidget::PicturesWidget(QWidget *parent) : QWidget(parent), mWindowTitleB
//setup gui
QSplitter *splitter = new QSplitter;
mMappingTree = new MappingTreeWidget;
- mPictureView = new PictureView;
- mPictureView->setItemDelegateForColumn(PicFilesModel::Size, new SizeDelegate(this));
- connect(mMappingTree, SIGNAL(mappingChanged(int)), mPictureView, SLOT(mappingChanged(int)));
+ mPictureListView = new PictureListView;
+ mPictureListView->setItemDelegateForColumn(PicFilesModel::Size, new SizeDelegate(this));
+ connect(mMappingTree, SIGNAL(mappingChanged(int)), mPictureListView, SLOT(mappingChanged(int)));
//change window title when mapping selection changes
connect(mMappingTree, SIGNAL(mappingChanged(int)), this, SLOT(constructWindowTitle()));
- connect(mPictureView, SIGNAL(editPicsMappings()), this, SLOT(editMappings()));
- connect(mPictureView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(showInPicViewer(QModelIndex)));
- connect(this, SIGNAL(editMappingsDone()), mPictureView, SLOT(refresh()));
+ connect(mPictureListView, SIGNAL(editPicsMappings()), this, SLOT(editMappings()));
+ connect(mPictureListView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(showInPicViewer(QModelIndex)));
+ connect(this, SIGNAL(editMappingsDone()), mPictureListView, SLOT(refresh()));
splitter->addWidget(mMappingTree);
- splitter->addWidget(mPictureView);
+ splitter->addWidget(mPictureListView);
splitter->setStretchFactor(0, 1);
splitter->setStretchFactor(1, 3);
//misc
mEditDialog = new MappingEditDialog(this);
mPicViewer = SmGlobals::instance()->pictureViewer();
- mPictureView->setPV(mPicViewer);
+ mPictureListView->setPV(mPicViewer);
//put it all togehter
QHBoxLayout *mainLayout = new QHBoxLayout;
@@ -75,7 +76,7 @@ void PicturesWidget::writeSettings(){
}
s.setValue("ui/selectedmapping", v.join(","));
}
- mPictureView->writeHeaderConfig();
+ mPictureListView->writeHeaderConfig();
}
void PicturesWidget::readSettings(){
@@ -85,16 +86,16 @@ void PicturesWidget::readSettings(){
for(int i = 0; i < ps.count(); ++i){
path << ps.at(i).toInt();
}
- mPictureView->readHeaderConfig();
+ mPictureListView->readHeaderConfig();
}
void PicturesWidget::editMappings(){
- QModelIndexList selectedFids = mPictureView->selectionModel()->selectedRows(PicFilesModel::Id);
+ QModelIndexList selectedFids = mPictureListView->selectionModel()->selectedRows(PicFilesModel::Id);
QList<int> fileIds;
foreach(QModelIndex idx, selectedFids){
fileIds << idx.data().toInt();
}
- QList<MappingData> mappings = mPictureView->filesModel()->mappingDataFromFiles(fileIds);
+ QList<MappingData> mappings = mPictureListView->filesModel()->mappingDataFromFiles(fileIds);
mEditDialog->editWidget()->setMappings(mappings);
int retval = mEditDialog->exec();
if(retval == QDialog::Accepted){
@@ -103,12 +104,12 @@ void PicturesWidget::editMappings(){
QMessageBox::critical(this, tr("Error"), tr("No mappings selected! Cowardly bailing out."));
return;
}
- QModelIndexList selectedFids = mPictureView->selectionModel()->selectedRows(PicFilesModel::Id);
+ QModelIndexList selectedFids = mPictureListView->selectionModel()->selectedRows(PicFilesModel::Id);
QList<int> fileIds;
foreach(QModelIndex idx, selectedFids){
fileIds << idx.data().toInt();
}
- mPictureView->filesModel()->changeMappings(fileIds, selMappings);
+ mPictureListView->filesModel()->changeMappings(fileIds, selMappings);
}
emit editMappingsDone();
}
@@ -118,178 +119,24 @@ void PicturesWidget::constructWindowTitle(){
MappingData selected = mMappingTree->selectedItem();
if(!selected.path.isEmpty()){
windowTitle = QString("%1 - [%2]").arg(mWindowTitleBase).arg(selected.path.join("/"));
- mPictureView->setHoverWinVisible(false);
+ mPictureListView->setHoverWinVisible(false);
}
emit needWindowTitleChange(windowTitle);
}
void PicturesWidget::showInPicViewer(const QModelIndex &idx){
- QModelIndex real = mPictureView->proxy()->mapToSource(idx);
+ QModelIndex real = mPictureListView->proxy()->mapToSource(idx);
if(!real.isValid()){
return;
}
- PicData pData = mPictureView->filesModel()->dataList(real);
+ PicData pData = mPictureListView->filesModel()->dataList(real);
mPicViewer->setShowInfoItem(true);
mPicViewer->setShowMappingItem(true);
mPicViewer->setShowMarkItem(false);
mPicViewer->setFile(pData);
- mPictureView->setPVAll();
+ mPictureListView->setPVAll();
if(mPicViewerA){
mPicViewerA->setChecked(true);
}
}
-
-PictureView::PictureView(QWidget *parent) : SmTreeView("ui/picheaderpos", parent) {
- //setup models
- mModel = static_cast<PicFilesModel*>(SmGlobals::instance()->model("PicFiles"));
- mProxy = new QSortFilterProxyModel(this);
- mProxy->setSourceModel(mModel);
- setModel(mProxy);
- connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(selectedFilesChanged()));
- mMappingTreeModel = static_cast<MappingTreeModel*>(SmGlobals::instance()->model("MappingTree"));
-
- //read settings
- QSettings s;
- QByteArray pvHeader = s.value("ui/pvheader").toByteArray();
- mCursorOffset = s.value("ui/cursoroffset").toInt();
- if(!pvHeader.isEmpty()){
- header()->restoreState(pvHeader);
- }
-
- //hover window
- mHoverWin = new HoverWindow(this);
-
- //misc settings
- setSortingEnabled(true);
- setAttribute(Qt::WA_Hover);
- setSelectionMode(QAbstractItemView::ExtendedSelection);
- setAlternatingRowColors(true);
- setColumnHidden(1, true);
- setColumnHidden(4, true);
-}
-
-void PictureView::mappingChanged(int pMapId){
- mModel->setMapping(pMapId);
- qApp->setOverrideCursor(Qt::WaitCursor);
- mModel->populate();
- for(int i = 0; i < PicFilesModel::NumFields; ++i){
- resizeColumnToContents(i);
- }
- qApp->restoreOverrideCursor();
-}
-
-void PictureView::deletePics(){
- QModelIndexList sel = selectionModel()->selectedRows();
- if(sel.isEmpty()){
- return;
- }
- QString msg = QString(tr("Really delete %1 pics from archive?")).arg(sel.count());
- int retval = QMessageBox::question(this, tr("Question"), msg, QMessageBox::Yes | QMessageBox::No);
- if(retval == QMessageBox::No){
- return;
- }
- QList<QPair<int, QString> > files;
- foreach(QModelIndex i, sel){
- files << qMakePair(i.data(PicFilesModel::IdRole).toInt(), i.data(PicFilesModel::FullPathRole).toString());
- }
- mModel->removeFiles(files);
-}
-
-void PictureView::refresh(){
- mModel->populate();
-}
-
-void PictureView::setPVData(int replace){
- QModelIndexList sel = selectionModel()->selectedRows();
- PicDataList pics;
- foreach(QModelIndex i, sel){
- QModelIndex real = mProxy->mapToSource(i);
- pics << mModel->dataList(real);
- }
- mPV->addFiles(pics, replace);
-}
-
-void PictureView::setPVAll(){
- PicDataList data = mModel->allFiles();
- mPV->addFiles(data, true);
-}
-
-void PictureView::setHoverWinVisible(bool visible) const {
- mHoverWin->setVisible(visible);
-}
-
-void PictureView::hideEvent(QHideEvent *){
- QByteArray pvHeader = header()->saveState();
- QSettings s;
- s.setValue("ui/pvheader", pvHeader);
-}
-
-bool PictureView::event(QEvent *e){
- if(e->type() == QEvent::Leave){
- mHoverWin->setVisible(false);
- return SmTreeView::event(e);
- }
- QHoverEvent *hEvent = static_cast<QHoverEvent*>(e);
- if(!hEvent){
- return SmTreeView::event(e);
- }
- QPoint hotSpot(hEvent->pos().x(), hEvent->pos().y() + mCursorOffset);
- QModelIndex curIdx = indexAt(hotSpot);
- if(e->type() == QEvent::HoverEnter || e->type() == QEvent::HoverMove){
- if(!curIdx.isValid() || curIdx.column() != PicFilesModel::FileName){
- mHoverWin->setVisible(false);
- mCurHover = QModelIndex();
- return true;
- }
- }
- if(e->type() == QEvent::HoverEnter){
- mCurHover = curIdx;
- QPixmap pm;
- pm.load(mCurHover.data(PicFilesModel::FullPathRole).toString());
- mHoverWin->setPixmap(pm);
- mHoverWin->setPos();
- mHoverWin->setCaption(mCurHover.data().toString());
- mHoverWin->setVisible(true);
- return true;
- }
- if(e->type() == QEvent::HoverMove){
- if(curIdx != mCurHover){
- mCurHover = curIdx;
- QPixmap pm;
- pm.load(mCurHover.data(PicFilesModel::FullPathRole).toString());
- mHoverWin->setPixmap(pm);
- mHoverWin->setPos();
- mHoverWin->setVisible(true);
- mHoverWin->setCaption(mCurHover.data().toString());
- return true;
- }
- }
- return SmTreeView::event(e);
-}
-
-void PictureView::contextMenuEvent(QContextMenuEvent *e){
- QMenu ctxMenu;
- for(int i = 0; i < actions().count(); ++i){
- if(actions().at(i)->text() == "Refresh"){
- ctxMenu.addSeparator();
- }
- ctxMenu.addAction(actions().at(i));
- }
- ctxMenu.exec(e->globalPos());
-}
-
-void PictureView::selectedFilesChanged(){
- QModelIndexList sel = selectionModel()->selectedRows();
- if(sel.isEmpty()){
- return;
- }
- QList<QVariant> fileIds;
- qint64 selSize = 0;
- foreach(QModelIndex i, sel){
- fileIds << i.data(PicFilesModel::IdRole);
- selSize += i.data(PicFilesModel::SizeRole).toInt();
- }
- emit numSelected(sel.size());
- emit selectedSize(selSize);
-}