File indexing completed on 2024-05-05 04:51:46

0001 /*
0002     SPDX-FileCopyrightText: 2008 Sebastian Trueg <trueg@k3b.org>
0003     SPDX-FileCopyrightText: 2009 Arthur Renato Mello <arthur@mandriva.com>
0004     SPDX-FileCopyrightText: 2009 Gustavo Pichorim Boiko <gustavo.boiko@kdemail.net>
0005     SPDX-FileCopyrightText: 2010 Michal Malek <michalm@jabster.pl>
0006     SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org>
0007 
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 
0011 #ifndef _K3B_MOVIX_PROJECT_MODEL_H_
0012 #define _K3B_MOVIX_PROJECT_MODEL_H_
0013 
0014 #include <QAbstractItemModel>
0015 
0016 namespace K3b {
0017     class MovixDoc;
0018     class MovixFileItem;
0019     class MovixSubtitleItem;
0020 
0021     class MovixProjectModel : public QAbstractItemModel
0022     {
0023         Q_OBJECT
0024 
0025         public:
0026             MovixProjectModel( MovixDoc* doc, QObject* parent );
0027             ~MovixProjectModel() override;
0028 
0029             enum Columns {
0030                 NoColumn = 0,
0031                 TitleColumn,
0032                 TypeColumn,
0033                 SizeColumn,
0034                 LocalPathColumn,
0035                 LinkColumn,
0036                 NumColumns
0037             };
0038 
0039             MovixDoc* project() const;
0040 
0041             MovixFileItem* itemForIndex( const QModelIndex& index ) const;
0042             QModelIndex indexForItem( MovixFileItem* track ) const;
0043 
0044             MovixSubtitleItem* subtitleForIndex( const QModelIndex& index ) const;
0045             QModelIndex indexForSubtitle( MovixSubtitleItem* item ) const;
0046 
0047             QModelIndex index( int row, int column, const QModelIndex& parent = QModelIndex() ) const override;
0048             QModelIndex parent( const QModelIndex& index ) const override;
0049             int rowCount( const QModelIndex& parent = QModelIndex() ) const override;
0050             int columnCount( const QModelIndex& parent = QModelIndex() ) const override;
0051             QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const override;
0052             bool setData( const QModelIndex& index, const QVariant& value, int role = Qt::EditRole ) override;
0053             QVariant headerData( int section, Qt::Orientation orientation, int role ) const override;
0054             Qt::ItemFlags flags( const QModelIndex& index ) const override;
0055             Qt::DropActions supportedDropActions() const override;
0056             QMimeData* mimeData( const QModelIndexList& indexes ) const override;
0057             QStringList mimeTypes() const override;
0058             bool dropMimeData( const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent ) override;
0059             bool removeRows( int row, int count, const QModelIndex& parent = QModelIndex() ) override;
0060 
0061     private:
0062         class Private;
0063         Private* const d;
0064 
0065         Q_PRIVATE_SLOT( d, void _k_itemsAboutToBeInserted(int, int) )
0066         Q_PRIVATE_SLOT( d, void _k_itemsInserted() )
0067         Q_PRIVATE_SLOT( d, void _k_itemsAboutToBeRemoved(int, int) )
0068         Q_PRIVATE_SLOT( d, void _k_itemsRemoved() )
0069         Q_PRIVATE_SLOT( d, void _k_subTitleAboutToBeInserted(K3b::MovixFileItem*) )
0070         Q_PRIVATE_SLOT( d, void _k_subTitleInserted() )
0071         Q_PRIVATE_SLOT( d, void _k_subTitleAboutToBeRemoved(K3b::MovixFileItem*) )
0072         Q_PRIVATE_SLOT( d, void _k_subTitleRemoved() )
0073     };
0074 }
0075 
0076 #endif