summaryrefslogtreecommitdiffstats
path: root/archivecontroller.h
blob: d3197e38cc98e03959563b4b2747248a556c0b1e (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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
  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>
#include <QIcon>

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

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(QStandardItemModel *actorModel, QStandardItemModel *genreModel);
        void setMetadata(QTextEdit *metaEdit);
        ArchiveFilesModel *archiveFilesModel() { return mArchiveFilesModel; }
        ArchiveFiles *archiveFiles() { return mArchiveFiles; }
        ArchiveModel *archiveTreeModel() { return mArchiveModel; }
        ArchiveTree *archiveTree() { return mArchiveTree; }
        ArchiveView *archiveView() { return mArchiveView; }
        void setSeriesPart(int seriesPartId);
        void init();

    public slots:
        void treeSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
        void fileSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
        void playSelectedFiles();
        void editQuality();
        void editDvdNo();
        void editFileType();
        void editFileNo();
        void showProperties();
        void showPreview();
        void addActionForTree(QAction *a);
        void addFiles();
        void readConfig();
        void moveFilesToSeriespart(const QStringList &md5Sums, int newSeriesPart);

    private slots:
        void fileDoubleClicked(const QModelIndex &idx);
        void getMetadata(QSet<int> ids);

    signals:
        void sizeChanged(qint64 newSize);
        void durationChanged(qint64 newDuration, bool maybeMore);

    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;
        QStandardItemModel *mActorModel;
        QStandardItemModel *mGenreModel;
        QTextEdit *mMetaEdit;
        QWidget *mParentWidget;
        QList<QAction*> mActionsForTree;
        QIcon mActorIcon;
        QIcon mGenreIcon;
        QIcon mMetaIcon;
        QIcon mFileIcon;
};

#endif // ARCHIVECONTROLLER_H