File indexing completed on 2024-05-19 12:23:50
0001 /* 0002 SPDX-FileCopyrightText: 2005 Adam Treat <treat@kde.org> 0003 SPDX-FileCopyrightText: 2013 Sebastian Kügler <sebas@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "kdevdocumentmodel.h" 0009 #include <KFileItem> 0010 0011 using namespace KDevelop; 0012 0013 KDevDocumentItem::KDevDocumentItem( const QString &name ) 0014 : QStandardItem(name) 0015 , m_documentState(IDocument::Clean) 0016 { 0017 setIcon( icon() ); 0018 } 0019 0020 KDevDocumentItem::~KDevDocumentItem() 0021 {} 0022 0023 QIcon KDevDocumentItem::icon() const 0024 { 0025 switch(m_documentState) 0026 { 0027 case IDocument::Clean: 0028 return QIcon::fromTheme(m_fileIcon); 0029 case IDocument::Modified: 0030 return QIcon::fromTheme(QStringLiteral("document-save")); 0031 case IDocument::Dirty: 0032 return QIcon::fromTheme(QStringLiteral("document-revert")); 0033 case IDocument::DirtyAndModified: 0034 return QIcon::fromTheme(QStringLiteral("edit-delete")); 0035 } 0036 Q_UNREACHABLE(); 0037 } 0038 0039 IDocument::DocumentState KDevDocumentItem::documentState() const 0040 { 0041 return m_documentState; 0042 } 0043 0044 void KDevDocumentItem::setDocumentState(IDocument::DocumentState state) 0045 { 0046 m_documentState = state; 0047 setIcon(icon()); 0048 } 0049 0050 const QUrl KDevDocumentItem::url() const 0051 { 0052 return m_url; 0053 } 0054 0055 void KDevDocumentItem::setUrl(const QUrl& url) 0056 { 0057 m_url = url; 0058 } 0059 0060 QVariant KDevDocumentItem::data(int role) const 0061 { 0062 if (role == UrlRole) { 0063 return m_url; 0064 } 0065 return QStandardItem::data(role); 0066 } 0067 0068 KDevCategoryItem::KDevCategoryItem( const QString &name ) 0069 : KDevDocumentItem( name ) 0070 { 0071 setFlags(Qt::ItemIsEnabled); 0072 setToolTip( name ); 0073 setIcon( QIcon::fromTheme( QStringLiteral( "folder") ) ); 0074 } 0075 0076 KDevCategoryItem::~KDevCategoryItem() 0077 {} 0078 0079 QList<KDevFileItem*> KDevCategoryItem::fileList() const 0080 { 0081 QList<KDevFileItem*> lst; 0082 0083 for ( int i = 0; i < rowCount(); ++i ) 0084 { 0085 if (KDevFileItem* item = static_cast<KDevDocumentItem*>(child(i))->fileItem()) 0086 lst.append( item ); 0087 } 0088 0089 return lst; 0090 } 0091 0092 KDevFileItem* KDevCategoryItem::file( const QUrl &url ) const 0093 { 0094 const auto fileList = this->fileList(); 0095 for (KDevFileItem* item : fileList) { 0096 if ( item->url() == url ) 0097 return item; 0098 } 0099 0100 return nullptr; 0101 } 0102 0103 KDevFileItem::KDevFileItem( const QUrl &url ) 0104 : KDevDocumentItem( url.fileName() ) 0105 { 0106 setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); 0107 setUrl( url ); 0108 if (!url.isEmpty()) { 0109 m_fileIcon = KFileItem(url, QString(), 0).iconName(); 0110 } 0111 setIcon( QIcon::fromTheme( m_fileIcon ) ); 0112 } 0113 0114 KDevFileItem::~KDevFileItem() 0115 {} 0116 0117 KDevDocumentModel::KDevDocumentModel( QObject *parent ) 0118 : QStandardItemModel( parent ) 0119 { 0120 setRowCount(0); 0121 setColumnCount(1); 0122 } 0123 0124 KDevDocumentModel::~KDevDocumentModel() 0125 {} 0126 0127 QList<KDevCategoryItem*> KDevDocumentModel::categoryList() const 0128 { 0129 QList<KDevCategoryItem*> lst; 0130 for ( int i = 0; i < rowCount() ; ++i ) 0131 { 0132 if (KDevCategoryItem* categoryitem = static_cast<KDevDocumentItem*>(item(i))->categoryItem()) { 0133 lst.append( categoryitem ); 0134 } 0135 } 0136 0137 return lst; 0138 } 0139 0140 KDevCategoryItem* KDevDocumentModel::category( const QString& category ) const 0141 { 0142 const auto categoryList = this->categoryList(); 0143 for (KDevCategoryItem* item : categoryList) { 0144 if ( item->toolTip() == category ) 0145 return item; 0146 } 0147 0148 return nullptr; 0149 } 0150 0151 #include "moc_kdevdocumentmodel.cpp"