| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /***************************************************************************
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-01-13 19:21:51 +01:00
										 |  |  | ** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ** Contact:  Qt Software Information (qt-info@nokia.com) | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ** Non-Open Source Usage | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** Licensees may use this file in accordance with the Qt Beta Version | 
					
						
							|  |  |  | ** License Agreement, Agreement version 2.2 provided with the Software or, | 
					
						
							|  |  |  | ** alternatively, in accordance with the terms contained in a written | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** agreement between you and Nokia. | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** GNU General Public License Usage | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** Alternatively, this file may be used under the terms of the GNU General | 
					
						
							|  |  |  | ** Public License versions 2.0 or 3.0 as published by the Free Software | 
					
						
							|  |  |  | ** Foundation and appearing in the file LICENSE.GPL included in the packaging | 
					
						
							|  |  |  | ** of this file.  Please review the following information to ensure GNU | 
					
						
							|  |  |  | ** General Public Licensing requirements will be met: | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
 | 
					
						
							|  |  |  | ** http://www.gnu.org/copyleft/gpl.html.
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** In addition, as a special exception, Nokia gives you certain additional | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** rights. These rights are described in the Nokia Qt GPL Exception | 
					
						
							| 
									
										
										
										
											2008-12-16 17:20:00 +01:00
										 |  |  | ** version 1.3, included in the file GPL_EXCEPTION.txt in this package. | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ***************************************************************************/ | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include "Icons.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <FullySpecifiedType.h>
 | 
					
						
							|  |  |  | #include <Scope.h>
 | 
					
						
							|  |  |  | #include <Symbols.h>
 | 
					
						
							|  |  |  | #include <Type.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | using namespace CPlusPlus; | 
					
						
							|  |  |  | using CPlusPlus::Icons; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Icons::Icons() | 
					
						
							|  |  |  |     : _classIcon(QLatin1String(":/codemodel/images/class.png")), | 
					
						
							|  |  |  |       _enumIcon(QLatin1String(":/codemodel/images/enum.png")), | 
					
						
							|  |  |  |       _enumeratorIcon(QLatin1String(":/codemodel/images/enumerator.png")), | 
					
						
							|  |  |  |       _funcPublicIcon(QLatin1String(":/codemodel/images/func.png")), | 
					
						
							|  |  |  |       _funcProtectedIcon(QLatin1String(":/codemodel/images/func_prot.png")), | 
					
						
							|  |  |  |       _funcPrivateIcon(QLatin1String(":/codemodel/images/func_priv.png")), | 
					
						
							|  |  |  |       _namespaceIcon(QLatin1String(":/codemodel/images/namespace.png")), | 
					
						
							|  |  |  |       _varPublicIcon(QLatin1String(":/codemodel/images/var.png")), | 
					
						
							|  |  |  |       _varProtectedIcon(QLatin1String(":/codemodel/images/var_prot.png")), | 
					
						
							|  |  |  |       _varPrivateIcon(QLatin1String(":/codemodel/images/var_priv.png")), | 
					
						
							|  |  |  |       _signalIcon(QLatin1String(":/codemodel/images/signal.png")), | 
					
						
							|  |  |  |       _slotPublicIcon(QLatin1String(":/codemodel/images/slot.png")), | 
					
						
							|  |  |  |       _slotProtectedIcon(QLatin1String(":/codemodel/images/slot_prot.png")), | 
					
						
							|  |  |  |       _slotPrivateIcon(QLatin1String(":/codemodel/images/slot_priv.png")), | 
					
						
							|  |  |  |       _keywordIcon(QLatin1String(":/codemodel/images/keyword.png")), | 
					
						
							|  |  |  |       _macroIcon(QLatin1String(":/codemodel/images/macro.png")) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 12:21:18 +01:00
										 |  |  | QIcon Icons::iconForSymbol(const Symbol *symbol) const | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-02-09 17:44:06 +01:00
										 |  |  |     FullySpecifiedType symbolType = symbol->type(); | 
					
						
							|  |  |  |     if (symbol->isFunction() || (symbol->isDeclaration() && symbolType && | 
					
						
							|  |  |  |                                  symbolType->isFunctionType())) | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2008-12-05 12:21:18 +01:00
										 |  |  |         const Function *function = symbol->asFunction(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         if (!function) | 
					
						
							| 
									
										
										
										
											2009-02-09 17:44:06 +01:00
										 |  |  |             function = symbol->type()->asFunctionType(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (function->isSlot()) { | 
					
						
							|  |  |  |             if (function->isPublic()) { | 
					
						
							|  |  |  |                 return _slotPublicIcon; | 
					
						
							|  |  |  |             } else if (function->isProtected()) { | 
					
						
							|  |  |  |                 return _slotProtectedIcon; | 
					
						
							|  |  |  |             } else if (function->isPrivate()) { | 
					
						
							|  |  |  |                 return _slotPrivateIcon; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } else if (function->isSignal()) { | 
					
						
							|  |  |  |             return _signalIcon; | 
					
						
							|  |  |  |         } else if (symbol->isPublic()) { | 
					
						
							|  |  |  |             return _funcPublicIcon; | 
					
						
							|  |  |  |         } else if (symbol->isProtected()) { | 
					
						
							|  |  |  |             return _funcProtectedIcon; | 
					
						
							|  |  |  |         } else if (symbol->isPrivate()) { | 
					
						
							|  |  |  |             return _funcPrivateIcon; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } else if (symbol->scope()->isEnumScope()) { | 
					
						
							|  |  |  |         return _enumeratorIcon; | 
					
						
							|  |  |  |     } else if (symbol->isDeclaration() || symbol->isArgument()) { | 
					
						
							|  |  |  |         if (symbol->isPublic()) { | 
					
						
							|  |  |  |             return _varPublicIcon; | 
					
						
							|  |  |  |         } else if (symbol->isProtected()) { | 
					
						
							|  |  |  |             return _varProtectedIcon; | 
					
						
							|  |  |  |         } else if (symbol->isPrivate()) { | 
					
						
							|  |  |  |             return _varPrivateIcon; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } else if (symbol->isEnum()) { | 
					
						
							|  |  |  |         return _enumIcon; | 
					
						
							| 
									
										
										
										
											2009-02-16 15:43:24 +01:00
										 |  |  |     } else if (symbol->isClass() || symbol->isForwardClassDeclaration()) { | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         return _classIcon; | 
					
						
							|  |  |  |     } else if (symbol->isNamespace()) { | 
					
						
							|  |  |  |         return _namespaceIcon; | 
					
						
							|  |  |  |     } else if (symbol->isUsingNamespaceDirective() || | 
					
						
							|  |  |  |                symbol->isUsingDeclaration()) { | 
					
						
							|  |  |  |         // TODO: Might be nice to have a different icons for these things
 | 
					
						
							|  |  |  |         return _namespaceIcon; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return QIcon(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | QIcon Icons::keywordIcon() const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return _keywordIcon; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | QIcon Icons::macroIcon() const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return _macroIcon; | 
					
						
							|  |  |  | } |