summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-07-06 19:24:04 +0200
committerArno <am@disconnect.de>2013-07-06 19:24:04 +0200
commitb039fbf6aaef0e961490f8267a91976866ac2e0a (patch)
tree270fbd374dbb0d2cc524ba24328da537f30213a7
parentbd6a6a7c42dabe2d0d86e309a6dc6b04de7c0a10 (diff)
downloadSheMov-b039fbf6aaef0e961490f8267a91976866ac2e0a.tar.gz
SheMov-b039fbf6aaef0e961490f8267a91976866ac2e0a.tar.bz2
SheMov-b039fbf6aaef0e961490f8267a91976866ac2e0a.zip
Lots of Display Changes
* Save header states * Implement delegates for columns * unify size and duration to 1 column * colorize View ... and lots of other things I forgot :)
-rw-r--r--archivecontroller.cpp1
-rw-r--r--archivecontroller.h2
-rw-r--r--archivemodel.cpp67
-rw-r--r--archivemodel.h4
-rw-r--r--archiveview.cpp83
-rw-r--r--archiveview.h39
-rw-r--r--helper.cpp13
-rw-r--r--helper.h1
-rw-r--r--shemov.cpp52
-rw-r--r--shemov.h4
-rw-r--r--smglobals.h4
11 files changed, 234 insertions, 36 deletions
diff --git a/archivecontroller.cpp b/archivecontroller.cpp
index 0c67ef7..32528aa 100644
--- a/archivecontroller.cpp
+++ b/archivecontroller.cpp
@@ -43,6 +43,7 @@ void ArchiveController::treeSelectionChanged(const QItemSelection &selected, con
ids.unite(mArchiveModel->seriesPartIds(idx));
}
mArchiveFilesModel->populate(ids);
+ mArchiveFiles->expandAll();
}
QModelIndexList ArchiveController::mapToSource(const QSortFilterProxyModel *proxy, const QModelIndexList idxs) const{
diff --git a/archivecontroller.h b/archivecontroller.h
index e956d37..22789bd 100644
--- a/archivecontroller.h
+++ b/archivecontroller.h
@@ -27,6 +27,8 @@ class ArchiveController : public QObject {
void setArchiveView(ArchiveTree *atree, ArchiveProxy *aproxy);
void setArchiveFiles(ArchiveFiles *afiles, ArchiveFilesProxy *afilesproxy);
void setModels(ArchiveModel *amodel, ArchiveFilesModel *afilesmodel);
+ ArchiveFilesModel *archiveFilesModel() { return mArchiveFilesModel; }
+ ArchiveFiles *archiveFiles() { return mArchiveFiles; }
void init();
private slots:
diff --git a/archivemodel.cpp b/archivemodel.cpp
index 3746105..2dd151b 100644
--- a/archivemodel.cpp
+++ b/archivemodel.cpp
@@ -12,6 +12,8 @@
#include <QMutexLocker>
#include <QSignalMapper>
#include <QFileInfo>
+#include <QBrush>
+#include <QFont>
#include "smtreeitem.h"
#include "archivemodel.h"
@@ -413,6 +415,7 @@ QVariant ArchiveFilesModel::data(const QModelIndex &index, int role) const {
return QVariant();
}
SmTreeItem *item = itemAt(index);
+ int col = index.column();
if(role == SeriesPartIdRole){
return item->data(SeriesPartId);
}
@@ -440,15 +443,52 @@ QVariant ArchiveFilesModel::data(const QModelIndex &index, int role) const {
if(role == FileIdRole){
return item->data(FileId);
}
- if(role == PicSizeRole){
- return item->data(PicSize);
+ if(role == SizeDurRole){
+ return item->data(SizeDur);
}
- if(role == DurationRole){
- return item->data(Duration);
+ if(role == SizeDurRole){
+ return item->data(SizeDur);
}
if(role == FullPathRole){
return item->data(FullPath);
}
+ if(role == Qt::ForegroundRole){
+ if(col == DvdNo){
+ if(item->data(DvdNo).toInt() < 0){
+ return QBrush(Qt::blue);
+ }else{
+ return QBrush(Qt::red);
+ }
+ }
+ if(col == Size){
+ qint64 size = item->data(Size).toInt();
+ qint64 fMax = Q_INT64_C(1024 * 1024 * 1024 * 4);
+ if(size < fMax){
+ return QBrush(Qt::green);
+ }else{
+ return QBrush(Qt::red);
+ }
+ }
+ }
+ if(role == Qt::TextAlignmentRole){
+ switch(col){
+ case Size:
+ case FileId:
+ case Quality:
+ case FileNumber:
+ case SizeDur:
+ return Qt::AlignRight;
+
+ }
+ }
+ if(role == Qt::FontRole){
+ switch(col){
+ case Md5Sum:
+ case FullPath:
+ case SizeDur:
+ return QFont("courier new");
+ }
+ }
return SmTreeModel::data(index, role);
}
@@ -488,14 +528,11 @@ void ArchiveFilesModel::populate(const QSet<int> &seriesPartIds){
}
SmTreeItem *root = new SmTreeItem(NumFields);
SmTreeItem *movies = new SmTreeItem(NumFields, root);
- movies->setData(Filename, tr("Movies"));
+ movies->setData(Expansion, QChar(0x2642));
root->appendChild(movies);
SmTreeItem *pictures = new SmTreeItem(NumFields, root);
- pictures->setData(Filename, tr("Pictures"));
+ pictures->setData(Expansion, QChar(0x2640));
root->appendChild(pictures);
- QSettings s;
- QString archivePath = s.value("paths/archive").toString();
-
QStringList ids;
foreach(int i, seriesPartIds){
ids << QString::number(i);
@@ -504,10 +541,16 @@ void ArchiveFilesModel::populate(const QSet<int> &seriesPartIds){
QSqlQuery q(queryString, mDb);
while(q.next()){
QList<QVariant> data;
- for(int i = 0; i < NumFields - 1; ++i){
- data << q.value(i);
+ data << QVariant(); //expansion (empty)
+ data << q.value(0) << q.value(1) << q.value(2) << q.value(3) << q.value(4) << q.value(5) << q.value(6) << q.value(7) << q.value(8); // << q.value(9);
+ if(!q.value(9).isNull()){
+ data << q.value(9);
+ }else if(!q.value(10).isNull()){
+ data << q.value(10);
+ }else{
+ data << 0x0;
}
- QString fullPath = Helper::createArchivePath(archivePath, data.at(Md5Sum).toString());
+ QString fullPath = Helper::createArchivePath(data.at(Filename).toString(), data.at(Md5Sum).toString());
data << fullPath;
if(data.at(FileType).toInt() == Movie){
SmTreeItem *newItem = new SmTreeItem(data, movies);
diff --git a/archivemodel.h b/archivemodel.h
index a9994d0..62c6508 100644
--- a/archivemodel.h
+++ b/archivemodel.h
@@ -69,8 +69,8 @@ class ArchiveModel : public SmTreeModel {
class ArchiveFilesModel : public SmTreeModel {
Q_OBJECT
public:
- enum CustomRoles { SeriesPartIdRole = Qt::UserRole + 1, FilenameRole = Qt::UserRole + 2, Md5SumRole = Qt::UserRole + 3, SizeRole = Qt::UserRole + 4, DvdNoRole = Qt::UserRole + 5, FileTypeRole = Qt::UserRole + 6, FileNumberRole = Qt::UserRole + 7, QualityRole = Qt::UserRole + 8, FileIdRole = Qt::UserRole + 9, PicSizeRole = Qt::UserRole + 10, DurationRole = Qt::UserRole + 11, FullPathRole = Qt::UserRole + 12 };
- enum Fields { SeriesPartId = 0, Filename = 1, Md5Sum = 2, Size = 3, DvdNo = 4, FileType = 5, FileNumber = 6, Quality = 7, FileId = 8, PicSize = 9, Duration = 10, FullPath = 11 };
+ enum CustomRoles { ExpansionRole = Qt::UserRole + 1, SeriesPartIdRole = Qt::UserRole + 2, FilenameRole = Qt::UserRole + 3, Md5SumRole = Qt::UserRole + 4, SizeRole = Qt::UserRole + 5, DvdNoRole = Qt::UserRole + 6, FileTypeRole = Qt::UserRole + 7, FileNumberRole = Qt::UserRole + 8, QualityRole = Qt::UserRole + 9, FileIdRole = Qt::UserRole + 10, SizeDurRole = Qt::UserRole + 11, FullPathRole = Qt::UserRole + 12 };
+ enum Fields { Expansion = 0, SeriesPartId = 1, Filename = 2, Md5Sum = 3, Size = 4, DvdNo = 5, FileType = 6, FileNumber = 7, Quality = 8, FileId = 9, SizeDur = 10, FullPath = 11 };
enum FileType { Movie = 1, FrontCover = 2, BackCover = 3, GeneralCover = 4 };
enum { NumFields = 12 };
explicit ArchiveFilesModel(const QStringList &headers, QObject *parent = 0);
diff --git a/archiveview.cpp b/archiveview.cpp
index f570751..53903f9 100644
--- a/archiveview.cpp
+++ b/archiveview.cpp
@@ -16,10 +16,12 @@
#include <QSettings>
#include <QSplitter>
#include <QVBoxLayout>
+#include <QHeaderView>
#include "archiveview.h"
#include "archivecontroller.h"
#include "smglobals.h"
+#include "helper.h"
ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) {
QSettings s;
@@ -77,7 +79,12 @@ ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) {
treeWidget->setLayout(treeLayout);
mFiles = new ArchiveFiles;
- mFilesModel = new ArchiveFilesModel(QStringList() << tr("Seriespartid") << tr("Filename") << tr("Md5Sum") << tr("Size") << tr("Dvd") << tr("Type") << tr("No") << tr("Quality") << tr("Fileid") << tr("Pic size") << tr("Duration") << tr("Full Path"), this);
+ mFiles->setItemDelegateForColumn(ArchiveFilesModel::FileType, new FileTypeDelegate(this));
+ mFiles->setItemDelegateForColumn(ArchiveFilesModel::DvdNo, new DvdNoDelegate(this));
+ mFiles->setItemDelegateForColumn(ArchiveFilesModel::Size, new SizeDelegate(this));
+ mFiles->setItemDelegateForColumn(ArchiveFilesModel::SizeDur, new DurationDelegate(this));
+ mFiles->setItemDelegateForColumn(ArchiveFilesModel::FileNumber, new EmptyDelegate(this));
+ mFilesModel = new ArchiveFilesModel(QStringList() << QChar(0x26A7) << tr("Seriespartid") << tr("Filename") << tr("Md5Sum") << tr("Size") << tr("Dvd") << tr("Type") << tr("No") << tr("Q") << tr("Fileid") << tr("S/Dur") << tr("Full Path"), this);
mFilesProxy = new ArchiveFilesProxy;
mFilesProxy->setSourceModel(mFilesModel);
mFiles->setModel(mFilesProxy);
@@ -107,6 +114,8 @@ void ArchiveView::readSettings(){
list = s.value("archivemodel/expandedseries").toList();
mExpandedItems[ArchiveModel::SeriesName] = list;
expandedItems();
+ mFiles->readHeaderConfig();
+ mFiles->setSortingEnabled(true);
}
void ArchiveView::writeSettings() {
@@ -116,7 +125,7 @@ void ArchiveView::writeSettings() {
s.setValue("archivemodel/expandedgenres", mExpandedItems.value(ArchiveModel::Genre));
s.setValue("archivemodel/expandedactors", mExpandedItems.value(ArchiveModel::Actor));
s.setValue("archivemodel/expandedseries", mExpandedItems.value(ArchiveModel::SeriesName));
-
+ mFiles->writeHeaderConfig();
}
void ArchiveView::refreshArchive(){
@@ -179,6 +188,7 @@ void ArchiveView::initController(){
mController->setArchiveFiles(mFiles, mFilesProxy);
mController->setModels(mArchiveModel, mFilesModel);
mController->init();
+ SmGlobals::instance()->setArchiveController(mController);
}
ArchiveTree::ArchiveTree(QWidget *parent) : SmTreeView(parent) {}
@@ -221,7 +231,8 @@ void ArchiveTree::impossible(const QString msg){
QMessageBox::critical(this, tr("Error"), msg);
}
-ArchiveFiles::ArchiveFiles(QWidget *parent) : SmTreeView(parent){
+ArchiveFiles::ArchiveFiles(const QString &headerSettings, QWidget *parent) : SmTreeView(headerSettings, parent){
+ setEditTriggers(QAbstractItemView::NoEditTriggers);
}
ArchiveProxy::ArchiveProxy(QObject *parent) : QSortFilterProxyModel(parent) {}
@@ -242,3 +253,69 @@ bool ArchiveProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePare
}
ArchiveFilesProxy::ArchiveFilesProxy(QObject *parent) : QSortFilterProxyModel(parent) {}
+
+/* Delegate for file type */
+
+QString FileTypeDelegate::displayText(const QVariant &value, const QLocale &locale) const{
+ Q_UNUSED(locale);
+ int type = value.toInt();
+ switch(type){
+ case ArchiveFilesModel::Movie:
+ return tr("Movie");
+ case ArchiveFilesModel::FrontCover:
+ return tr("Front Cover");
+ case ArchiveFilesModel::BackCover:
+ return tr("Back Cover");
+ case ArchiveFilesModel::GeneralCover:
+ return tr("General Cover");
+ default:
+ ;
+ }
+ return tr("n/a");
+}
+
+/* Delegate for Dvd no. */
+
+QString DvdNoDelegate::displayText(const QVariant &value, const QLocale &locale) const{
+ Q_UNUSED(locale);
+ int no = value.toInt();
+ if(no < 0){
+ return tr("(local)");
+ }
+ QString retval = QString(tr("#%1")).arg(QString::number(no));
+ return retval;
+}
+
+/* Delegate for size */
+
+QString SizeDelegate::displayText(const QVariant &value, const QLocale &locale) const{
+ // locale.toString() doesn't work, maybe b/c it's const
+ Q_UNUSED(locale);
+ QLocale l;
+ return l.toString(value.toLongLong());
+}
+
+/* Delegate for duration */
+
+QString DurationDelegate::displayText(const QVariant &value, const QLocale &locale) const{
+ Q_UNUSED(locale);
+ if(value.toString().contains("x")){
+ return value.toString();
+ }
+ qint64 secs = value.toInt();
+ if(secs == 0){
+ return tr("n/a");
+ }
+ Helper::Duration dur(secs);
+ return dur.toString();
+}
+
+/* Empty delegate */
+
+QString EmptyDelegate::displayText(const QVariant &value, const QLocale &locale) const{
+ int i = value.toInt();
+ if(i < 1){
+ return QString();
+ }
+ return QStyledItemDelegate::displayText(value, locale);
+}
diff --git a/archiveview.h b/archiveview.h
index de9875d..7507320 100644
--- a/archiveview.h
+++ b/archiveview.h
@@ -12,6 +12,7 @@
#include <QRegExp>
#include <QSortFilterProxyModel>
#include <QWidget>
+#include <QStyledItemDelegate>
#include "archivemodel.h"
#include "smtreeview.h"
@@ -80,7 +81,7 @@ class ArchiveTree : public SmTreeView {
class ArchiveFiles : public SmTreeView {
public:
- explicit ArchiveFiles(QWidget *parent = 0);
+ explicit ArchiveFiles(const QString &headerSettings = "afilesheaders", QWidget *parent = 0);
};
class ArchiveProxy : public QSortFilterProxyModel {
@@ -105,4 +106,40 @@ class ArchiveFilesProxy : public QSortFilterProxyModel {
explicit ArchiveFilesProxy(QObject *parent = 0);
};
+class FileTypeDelegate : public QStyledItemDelegate {
+ Q_OBJECT
+ public:
+ explicit FileTypeDelegate(QObject *parent = 0) : QStyledItemDelegate(parent) {};
+ virtual QString displayText(const QVariant &value, const QLocale &locale) const;
+};
+
+class DvdNoDelegate : public QStyledItemDelegate {
+ Q_OBJECT
+ public:
+ explicit DvdNoDelegate(QObject *parent = 0) : QStyledItemDelegate(parent) {};
+ virtual QString displayText(const QVariant &value, const QLocale &locale) const;
+};
+
+class SizeDelegate : public QStyledItemDelegate {
+ Q_OBJECT
+ public:
+ explicit SizeDelegate(QObject *parent = 0) : QStyledItemDelegate(parent) {};
+ virtual QString displayText(const QVariant &value, const QLocale &locale) const;
+};
+
+class DurationDelegate : public QStyledItemDelegate {
+ Q_OBJECT
+ public:
+ explicit DurationDelegate(QObject *parent = 0) : QStyledItemDelegate(parent) {};
+ virtual QString displayText(const QVariant &value, const QLocale &locale) const;
+};
+
+class EmptyDelegate : public QStyledItemDelegate {
+ Q_OBJECT
+ public:
+ explicit EmptyDelegate(QObject *parent = 0) : QStyledItemDelegate(parent) {};
+ virtual QString displayText(const QVariant &value, const QLocale &locale) const;
+};
+
+
#endif // ARCHIVEVIEW_H
diff --git a/helper.cpp b/helper.cpp
index 07a66c0..ae5eb36 100644
--- a/helper.cpp
+++ b/helper.cpp
@@ -246,6 +246,19 @@ namespace Helper {
Duration::Duration() : mHours(0), mMinutes(0), mSeconds(0) {}
+ Duration::Duration(qint64 seconds){
+ int sec(0), min(0), h(0);
+ // get hours
+ h = (seconds / 60 / 60) % 24;
+ // remaining minutes
+ min = (seconds / 60) % 60;
+ // seconds
+ sec = seconds % 60;
+ mHours = h;
+ mMinutes = min;
+ mSeconds = sec;
+ }
+
Duration::Duration(const QString &dur) : mHours(0), mMinutes(0), mSeconds(0){
QStringList parts = dur.split(':');
if(parts.size() == 3){
diff --git a/helper.h b/helper.h
index 23ac261..983659d 100644
--- a/helper.h
+++ b/helper.h
@@ -36,6 +36,7 @@ namespace Helper {
class Duration {
public:
Duration();
+ Duration(qint64 seconds);
Duration(const QString &dur);
Duration operator+(const Duration &dur) const;
const QString toString() const;
diff --git a/shemov.cpp b/shemov.cpp
index d1f5b5b..4ce5114 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -40,6 +40,7 @@
#include "smdirmodel.h"
#include "framecache.h"
#include "archiveview.h"
+#include "archivecontroller.h"
SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags), mOpenWithGroupFS(0), mOpenWithGroupAV(0) {
//application icon
@@ -80,7 +81,6 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
mArchive = new ArchiveView;
mTab->addTab(mArchive, "Experimental");
connect(mArchive->archiveModel(), SIGNAL(message(QString)), this, SLOT(statusbarMessage(QString)));
- mArchive->readSettings();
//pictures
splash.showMessage(tr("Creating Picture Archive..."), Qt::AlignHCenter, Qt::yellow);
@@ -142,6 +142,7 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
readSettings();
mFSWidget->fileView()->setFocus(Qt::ActiveWindowFocusReason);
mPicWidget->readSettings();
+ mArchive->readSettings();
Helper::centerWidget(picViewer);
}
@@ -177,29 +178,30 @@ void SheMov::configure(){
}
void SheMov::tabChanged(int newTab){
- mEditFSMenuA->setVisible(newTab == 0);
- mEditAVMenuA->setVisible(newTab == 1);
- mEditPicMenuA->setVisible(newTab == 2);
- mViewFSMenuA->setVisible(newTab == 0);
- mViewAVMenuA->setVisible(newTab == 1);
- mViewPicMenuA->setVisible(newTab == 2);
- mCdupA->setEnabled(newTab == 0);
- mBackDirA->setEnabled(newTab == 0);
- mFilesTreeHeadersGroup->setEnabled(newTab == 1);
- mFilterGroup->setEnabled(newTab == 1);
- mShowTreeGroup->setEnabled(newTab == 1);
- mPicActionGroup->setEnabled(newTab == 2);
- mFilterFavoritesA->setEnabled(newTab == 1);
+ mEditFSMenuA->setVisible(newTab == FileManager);
+ mEditAVMenuA->setVisible(newTab == Archive);
+ mEditPicMenuA->setVisible(newTab == Pictures);
+ mViewFSMenuA->setVisible(newTab == FileManager);
+ mViewAVMenuA->setVisible(newTab == Archive);
+ mViewPicMenuA->setVisible(newTab == Pictures);
+ mArchiveViewMenuA->setVisible(newTab == Experimental);
+ mCdupA->setEnabled(newTab == FileManager);
+ mBackDirA->setEnabled(newTab == FileManager);
+ mFilesTreeHeadersGroup->setEnabled(newTab == Archive);
+ mFilterGroup->setEnabled(newTab == Archive);
+ mShowTreeGroup->setEnabled(newTab == Archive);
+ mPicActionGroup->setEnabled(newTab == Pictures);
+ mFilterFavoritesA->setEnabled(newTab == Archive);
mPVSelectAllA->disconnect();
- mPVShowNPDialogA->setEnabled(newTab == 0);
- mPVAddToNPA->setEnabled(newTab == 0);
+ mPVShowNPDialogA->setEnabled(newTab == FileManager);
+ mPVAddToNPA->setEnabled(newTab == FileManager);
statusbarMessage(QString());
switch(newTab){
- case 0:
+ case FileManager:
connect(mPVSelectAllA, SIGNAL(triggered()), mFSWidget, SLOT(selectAllPV()));
setDuration(mFSWidget->fileView()->duration());
break;
- case 2:
+ case Pictures:
connect(mPVSelectAllA, SIGNAL(triggered()), mPicWidget->picView(), SLOT(setPVAll()));
default:
setDuration(QVariant());
@@ -535,6 +537,12 @@ void SheMov::createActions(){
QSignalMapper *picsTreeHeaderMapper = createHeaderMapper(picFilesModel, mPicsTreeHeaderGroup);
connect(picsTreeHeaderMapper, SIGNAL(mapped(QObject*)), mPicWidget->picView(), SLOT(toggleHeader(QObject*)));
mPicWidget->picView()->setHeaderGroup(mPicsTreeHeaderGroup);
+ mArchiveFilesAG = new QActionGroup(this);
+ ArchiveController *controller = SmGlobals::instance()->archiveController();
+ SmTreeModel *afilesmodel = controller->archiveFilesModel();
+ QSignalMapper *aFilesMapper = createHeaderMapper(afilesmodel, mArchiveFilesAG);
+ connect(aFilesMapper, SIGNAL(mapped(QObject*)), controller->archiveFiles(), SLOT(toggleHeader(QObject*)));
+ controller->archiveFiles()->setHeaderGroup(mArchiveFilesAG);
//Tree view hover
mHoverTreeGroup = new QActionGroup(this);
@@ -870,6 +878,14 @@ void SheMov::createMenus(){
mPicViewMenu->addAction(mPWRefreshA);
mViewPicMenuA = menuBar()->addMenu(mPicViewMenu);
+ //<delete me when fin>
+ QMenu *archiveHeaderMenu = new QMenu(tr("Show headers"), this);
+ archiveHeaderMenu->addActions(mArchiveFilesAG->actions());
+ mArchiveViewMenu = new QMenu(tr("&View"), this);
+ archiveHeaderMenu->addActions(mArchiveFilesAG->actions());
+ mArchiveViewMenu->addMenu(archiveHeaderMenu);
+ mArchiveViewMenuA = menuBar()->addMenu(mArchiveViewMenu);
+
QMenu *helpMenu = new QMenu(tr("&Help"), this);
helpMenu->addAction(mAboutShemovA);
helpMenu->addAction(mAboutQtA);
diff --git a/shemov.h b/shemov.h
index d7c6095..97fc340 100644
--- a/shemov.h
+++ b/shemov.h
@@ -28,6 +28,7 @@ class SheMov : public QMainWindow {
Q_OBJECT
public:
SheMov(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+ enum TabNum { FileManager = 0, Archive = 1, Experimental = 2, Pictures = 3 };
virtual ~SheMov() {}
protected:
@@ -188,6 +189,7 @@ class SheMov : public QMainWindow {
//ArchiveView actions
QAction *mArchiveViewRenameA;
QAction *mArchiveViewRemoveA;
+ QActionGroup *mArchiveFilesAG;
QSignalMapper *mOpenWithMapperFS;
QSignalMapper *mOpenWithMapperAV;
@@ -201,6 +203,7 @@ class SheMov : public QMainWindow {
QMenu *mTreeViewMenu;
QMenu *mFSViewMenu;
QMenu *mPicViewMenu;
+ QMenu *mArchiveViewMenu;
QMenu *mTreeHeaderMenu;
QMenu *mTreeHoverMenu;
QMenu *mTreeFilterMenu;
@@ -211,6 +214,7 @@ class SheMov : public QMainWindow {
QAction *mViewFSMenuA;
QAction *mViewAVMenuA;
QAction *mViewPicMenuA;
+ QAction *mArchiveViewMenuA;
//widgets + dialogs
QTabWidget *mTab;
diff --git a/smglobals.h b/smglobals.h
index 3c2b36c..64cc418 100644
--- a/smglobals.h
+++ b/smglobals.h
@@ -20,6 +20,7 @@ class PictureViewer2;
class QPixmap;
class SeriesTreeWidget;
class FrameCache;
+class ArchiveController;
class SmGlobals : public QObject {
Q_OBJECT
@@ -31,6 +32,8 @@ class SmGlobals : public QObject {
FrameCache *frameCache();
void setSeriesTreeWidget(SeriesTreeWidget *stree) { mSeriesTreeWidget = stree; }
SeriesTreeWidget *seriesTreeWidget();
+ void setArchiveController(ArchiveController *c) { mArchiveController = c; }
+ ArchiveController *archiveController() { return mArchiveController; }
QSize cursorSize();
const QSize minPVSize() const { return QSize(640, 480); }
const QHash<QString, QString> & icons() const { return mIcons; }
@@ -50,6 +53,7 @@ class SmGlobals : public QObject {
QHash<QString, QString> mIcons;
qint64 mDvdSize;
QList<QWidget*> mTreeWidgets;
+ ArchiveController *mArchiveController;
};
#endif