| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | /**************************************************************************
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-06-17 00:01:27 +10:00
										 |  |  | ** Contact: Nokia Corporation (qt-info@nokia.com) | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** Commercial Usage | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** Licensees holding valid Qt Commercial licenses may use this file in | 
					
						
							|  |  |  | ** accordance with the Qt Commercial License Agreement provided with the | 
					
						
							|  |  |  | ** Software or, alternatively, in accordance with the terms contained in | 
					
						
							|  |  |  | ** a written agreement between you and Nokia. | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** GNU Lesser General Public License Usage | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** Alternatively, this file may be used under the terms of the GNU Lesser | 
					
						
							|  |  |  | ** General Public License version 2.1 as published by the Free Software | 
					
						
							|  |  |  | ** Foundation and appearing in the file LICENSE.LGPL included in the | 
					
						
							|  |  |  | ** packaging of this file.  Please review the following information to | 
					
						
							|  |  |  | ** ensure the GNU Lesser General Public License version 2.1 requirements | 
					
						
							|  |  |  | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** If you are unsure which license is appropriate for your use, please | 
					
						
							| 
									
										
										
										
											2009-08-14 09:30:56 +02:00
										 |  |  | ** contact the sales department at http://qt.nokia.com/contact.
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +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; | 
					
						
							| 
									
										
										
										
											2009-07-28 16:34:15 +02:00
										 |  |  |     } else if (symbol->isObjCClass() || symbol->isObjCForwardClassDeclaration()) { | 
					
						
							|  |  |  |         return _classIcon; | 
					
						
							|  |  |  |     } else if (symbol->isObjCProtocol() || symbol->isObjCForwardProtocolDeclaration()) { | 
					
						
							|  |  |  |         return _classIcon; | 
					
						
							| 
									
										
										
										
											2009-08-05 18:30:18 +02:00
										 |  |  |     } else if (symbol->isObjCMethod()) { | 
					
						
							|  |  |  |         return _funcPublicIcon; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     } 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; | 
					
						
							|  |  |  | } |