summaryrefslogtreecommitdiffstats
path: root/archivecontroller.h
blob: e71abafab8e180a511d263997a4d0e7ebeb4475f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
  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 ARCHIVECONTROLLER_H
#define ARCHIVECONTROLLER_H

#include <QObject>
#include <QItemSelection>
#include <QStringList>

class ArchiveView;
class ArchiveTree;
class ArchiveProxy;
class ArchiveFiles;
class ArchiveFilesProxy;
class ArchiveModel;
class ArchiveFilesModel;
class QItemSelectionModel;
class QSortFilterProxyModel;
class QStringListModel;
class QTextEdit;

class ArchiveController : public QObject {
    Q_OBJECT
    public:
        explicit ArchiveController(QObject *parent = 0);
        void setArchiveView(ArchiveView *view);
        void setArchiveTree(ArchiveTree *atree, ArchiveProxy *aproxy);
        void setArchiveFiles(ArchiveFiles *afiles, ArchiveFilesProxy *afilesproxy);
        void setModels(ArchiveModel *amodel, ArchiveFilesModel *afilesmodel);
        void setMappingModels(QStringListModel *actorModel, QStringListModel *genreModel);
        void setMetadata(QTextEdit *metadata);
        ArchiveFilesModel *archiveFilesModel() { return mArchiveFilesModel; }
        ArchiveFiles *archiveFiles() { return mArchiveFiles; }
        ArchiveModel *archiveTreeModel() { return mArchiveModel; }
        ArchiveTree *archiveTree() { return mArchiveTree; }
        ArchiveView *archiveView() { return mArchiveView; }
        void init();

    public slots:
        void treeSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
        void playSelectedFiles();
        void editQuality();
        void editDvdNo();
        void editFileType();
        void editFileNo();

    private slots:
        void fileDoubleClicked(const QModelIndex &idx);

    private:
        QModelIndexList mapToSource(const QSortFilterProxyModel *proxy, const QModelIndexList idxs) const;
        ArchiveView *mArchiveView;
        ArchiveTree *mArchiveTree;
        ArchiveProxy *mArchiveProxy;
        QItemSelectionModel *mArchiveSelection;
        ArchiveFiles *mArchiveFiles;
        ArchiveFilesProxy *mArchiveFilesProxy;
        ArchiveModel *mArchiveModel;
        ArchiveFilesModel *mArchiveFilesModel;
        QItemSelectionModel *mFileSelection;
        QStringListModel *mActorModel;
        QStringListModel *mGenreModel;
        QTextEdit *mMetadataView;
        QWidget *mParentWidget;
};

#endif // ARCHIVECONTROLLER_H