diff options
-rw-r--r-- | picturelistview.cpp | 170 | ||||
-rw-r--r-- | picturelistview.h | 62 | ||||
-rw-r--r-- | pictureswidget.cpp | 191 | ||||
-rw-r--r-- | pictureswidget.h | 59 | ||||
-rw-r--r-- | shemov.cpp | 15 | ||||
-rw-r--r-- | shemov.pro | 6 |
6 files changed, 266 insertions, 237 deletions
diff --git a/picturelistview.cpp b/picturelistview.cpp new file mode 100644 index 0000000..22e27af --- /dev/null +++ b/picturelistview.cpp @@ -0,0 +1,170 @@ +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. +*/ + +#include <QSettings> +#include <QHeaderView> +#include <QApplication> +#include <QMessageBox> +#include <QMenu> + +#include "picturelistview.h" +#include "smglobals.h" + +PictureListView::PictureListView(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 PictureListView::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 PictureListView::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 PictureListView::refresh(){ + mModel->populate(); +} + +void PictureListView::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 PictureListView::setPVAll(){ + PicDataList data = mModel->allFiles(); + mPV->addFiles(data, true); +} + +void PictureListView::setHoverWinVisible(bool visible) const { + mHoverWin->setVisible(visible); +} + +void PictureListView::hideEvent(QHideEvent *){ + QByteArray pvHeader = header()->saveState(); + QSettings s; + s.setValue("ui/pvheader", pvHeader); +} + +bool PictureListView::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 PictureListView::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 PictureListView::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); +} + diff --git a/picturelistview.h b/picturelistview.h new file mode 100644 index 0000000..9e86372 --- /dev/null +++ b/picturelistview.h @@ -0,0 +1,62 @@ +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. +*/ + +#ifndef PICTURELISTVIEW_H +#define PICTURELISTVIEW_H + +#include <QList> +#include <QSortFilterProxyModel> + +#include "smtreeview.h" +#include "picfilesmodel.h" +#include "pictureviewer2.h" +#include "hoverwindow.h" + +class PictureListView : public SmTreeView { + Q_OBJECT + public: + explicit PictureListView(QWidget *parent = 0); + QList<int> fileMappings() { return mFilesMappings; } + PicFilesModel *filesModel() { return mModel; } + QSortFilterProxyModel *proxy() { return mProxy; } + void setPV(PictureViewer2 *pv) { mPV = pv; } + PictureViewer2 *PV() { return mPV; } + + public slots: + void mappingChanged(int pMapId); + void deletePics(); + void refresh(); + void setPVData(int replace = false); + void setPVAll(); + void setHoverWinVisible(bool visible) const; + + protected: + virtual void hideEvent(QHideEvent *); + virtual bool event(QEvent *e); + virtual void contextMenuEvent(QContextMenuEvent *e); + + private slots: + void selectedFilesChanged(); + + signals: + void newMappings(QString); + void numSelected(int); + void selectedSize(qint64); + void editPicsMappings(); + + private: + HoverWindow *mHoverWin; + QModelIndex mCurHover; + QSortFilterProxyModel *mProxy; + PicFilesModel *mModel; + int mCursorOffset; + QList<int> mFilesMappings; + PictureViewer2 *mPV; + MappingTreeModel *mMappingTreeModel; +}; + +#endif // PICTURELISTVIEW_H 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); -} diff --git a/pictureswidget.h b/pictureswidget.h index 8d17a10..d1cdd36 100644 --- a/pictureswidget.h +++ b/pictureswidget.h @@ -15,27 +15,17 @@ #include "pictureviewer2.h" #include "smtreeview.h" -class PictureView; +class PictureListView; class MappingTreeWidget; -class MappingEditWidget; class MappingEditDialog; -class MappingTreeModel; -class QSqlQuery; -class PicFilesModel; -class QSortFilterProxyModel; -class QHideEvent; -class QEvent; -class HoverWindow; class PictureViewer2; class QAction; -class QActionGroup; -struct MappingData; class PicturesWidget : public QWidget { Q_OBJECT public: explicit PicturesWidget(QWidget *parent = 0); - PictureView *picView() { return mPictureView; } + PictureListView *picView() { return mPictureListView; } void setPicViewerAction(QAction *action) { mPicViewerA = action; } PictureViewer2 *picViewer2() { return mPicViewer; } @@ -55,54 +45,11 @@ class PicturesWidget : public QWidget { private: MappingTreeWidget *mMappingTree; - PictureView *mPictureView; + PictureListView *mPictureListView; PictureViewer2 *mPicViewer; MappingEditDialog *mEditDialog; const QString mWindowTitleBase; QAction *mPicViewerA; }; -class PictureView : public SmTreeView { - Q_OBJECT - public: - explicit PictureView(QWidget *parent = 0); - QList<int> fileMappings() { return mFilesMappings; } - PicFilesModel *filesModel() { return mModel; } - QSortFilterProxyModel *proxy() { return mProxy; } - void setPV(PictureViewer2 *pv) { mPV = pv; } - PictureViewer2 *PV() { return mPV; } - - public slots: - void mappingChanged(int pMapId); - void deletePics(); - void refresh(); - void setPVData(int replace = false); - void setPVAll(); - void setHoverWinVisible(bool visible) const; - - protected: - virtual void hideEvent(QHideEvent *); - virtual bool event(QEvent *e); - virtual void contextMenuEvent(QContextMenuEvent *e); - - private slots: - void selectedFilesChanged(); - - signals: - void newMappings(QString); - void numSelected(int); - void selectedSize(qint64); - void editPicsMappings(); - - private: - HoverWindow *mHoverWin; - QModelIndex mCurHover; - QSortFilterProxyModel *mProxy; - PicFilesModel *mModel; - int mCursorOffset; - QList<int> mFilesMappings; - PictureViewer2 *mPV; - MappingTreeModel *mMappingTreeModel; -}; - #endif // PICTURESWIDGET_H @@ -29,6 +29,7 @@ #include "dbanalyzer.h" #include "newpicsdialog.h" #include "pictureswidget.h" +#include "picturelistview.h" #include "archiveview.h" #include "archivebrowser.h" #include "searchdialog.h" @@ -129,9 +130,9 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla mPicWidget = new PicturesWidget; mTab->addTab(mPicWidget, tr("Pictures")); connect(mPicWidget, &PicturesWidget::needWindowTitleChange, this, &SheMov::setWindowTitle); - connect(mPicWidget->picView(), &PictureView::newMappings, this, &SheMov::statusbarMessage); - connect(mPicWidget->picView(), &PictureView::numSelected, this, &SheMov::updateSelectedCount); - connect(mPicWidget->picView(), &PictureView::selectedSize, this, &SheMov::setSize); + connect(mPicWidget->picView(), &PictureListView::newMappings, this, &SheMov::statusbarMessage); + connect(mPicWidget->picView(), &PictureListView::numSelected, this, &SheMov::updateSelectedCount); + connect(mPicWidget->picView(), &PictureListView::selectedSize, this, &SheMov::setSize); PictureViewer2 *picViewer = SmGlobals::instance()->pictureViewer(); //archivebrower @@ -232,7 +233,7 @@ void SheMov::tabChanged(int newTab){ setWindowTitle(mMovieWidget->wTitle); break; case Pictures: - connect(mPVSelectAllA, &QAction::triggered, mPicWidget->picView(), &PictureView::setPVAll); + connect(mPVSelectAllA, &QAction::triggered, mPicWidget->picView(), &PictureListView::setPVAll); mPicWidget->constructWindowTitle(); setDuration(0x0, false); break; @@ -382,10 +383,10 @@ void SheMov::createActions(){ // Delete... + Edit Mappings... mPWDeletePicFromA = new QAction(QIcon(":/huge_balls_pierced.png"), tr("Delete..."), this); mPicWidget->picView()->addAction(mPWDeletePicFromA); - connect(mPWDeletePicFromA, &QAction::triggered, mPicWidget->picView(), &PictureView::deletePics); + connect(mPWDeletePicFromA, &QAction::triggered, mPicWidget->picView(), &PictureListView::deletePics); mPWEditPicMappingsA = new QAction(QIcon(":/squirting_nipple.png"), tr("Edit mappings..."), this); mPicWidget->picView()->addAction(mPWEditPicMappingsA); - connect(mPWEditPicMappingsA, &QAction::triggered, mPicWidget->picView(), &PictureView::editPicsMappings); + connect(mPWEditPicMappingsA, &QAction::triggered, mPicWidget->picView(), &PictureListView::editPicsMappings); mPicWidget->picView()->addAction(createSeparator()); // Show slide dialog @@ -416,7 +417,7 @@ void SheMov::createActions(){ mPicWidget->picView()->addAction(createSeparator()); mPWRefreshA = new QAction(QIcon(":/huge_bra.png"), tr("Refresh"), this); mPicWidget->picView()->addAction(mPWRefreshA); - connect(mPWRefreshA, &QAction::triggered, mPicWidget->picView(), &PictureView::refresh); + connect(mPWRefreshA, &QAction::triggered, mPicWidget->picView(), &PictureListView::refresh); mPicWidget->setPicViewerAction(mPVToggleA); /* Now the context menu for the actual Viewer @@ -48,7 +48,8 @@ SOURCES = main.cpp \ smview.cpp \ moviepropertiesdialog.cpp \ sminputdialog.cpp \ - editfiledialog.cpp + editfiledialog.cpp \ + picturelistview.cpp HEADERS = \ shemov.h \ helper.h \ @@ -91,7 +92,8 @@ HEADERS = \ smview.h \ moviepropertiesdialog.h \ sminputdialog.h \ - editfiledialog.h + editfiledialog.h \ + picturelistview.h LIBS += -lmagic -lXfixes -lX11 -lMagick++-6.Q16HDRI INCLUDEPATH += /usr/include/ImageMagick-6/ RESOURCES = shemov.qrc |