diff options
author | Arno <am@disconnect.de> | 2013-07-06 19:24:04 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-07-06 19:24:04 +0200 |
commit | b039fbf6aaef0e961490f8267a91976866ac2e0a (patch) | |
tree | 270fbd374dbb0d2cc524ba24328da537f30213a7 | |
parent | bd6a6a7c42dabe2d0d86e309a6dc6b04de7c0a10 (diff) | |
download | SheMov-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.cpp | 1 | ||||
-rw-r--r-- | archivecontroller.h | 2 | ||||
-rw-r--r-- | archivemodel.cpp | 67 | ||||
-rw-r--r-- | archivemodel.h | 4 | ||||
-rw-r--r-- | archiveview.cpp | 83 | ||||
-rw-r--r-- | archiveview.h | 39 | ||||
-rw-r--r-- | helper.cpp | 13 | ||||
-rw-r--r-- | helper.h | 1 | ||||
-rw-r--r-- | shemov.cpp | 52 | ||||
-rw-r--r-- | shemov.h | 4 | ||||
-rw-r--r-- | smglobals.h | 4 |
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 @@ -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){ @@ -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; @@ -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); @@ -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 |