00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <kiconloader.h>
00021 #include <klocale.h>
00022 #include <kdebug.h>
00023
00024 #include "klistviewaction.h"
00025 #include "kcomboview.h"
00026
00027 #include "viewcombos.h"
00028 #include "classviewpart.h"
00029
00030 NamespaceItem::NamespaceItem(ClassViewPart *part, QListView *parent, QString name, NamespaceDom dom)
00031 :QListViewItem(parent, name), m_dom(dom), m_part(part)
00032 {
00033 }
00034
00035 NamespaceItem::NamespaceItem(ClassViewPart *part, QListViewItem *parent, QString name, NamespaceDom dom)
00036 :QListViewItem(parent, name), m_dom(dom), m_part(part)
00037 {
00038 }
00039
00040 NamespaceItem::~ NamespaceItem( )
00041 {
00042 }
00043
00044 NamespaceDom NamespaceItem::dom() const
00045 {
00046 return m_dom;
00047 }
00048
00049 void NamespaceItem::setup()
00050 {
00051 QListViewItem::setup();
00052 setPixmap( 0, UserIcon("CVnamespace", KIcon::DefaultState, m_part->instance()) );
00053 }
00054
00055
00056 ClassItem::ClassItem(ClassViewPart *part, QListView *parent, QString name, ClassDom dom)
00057 :QListViewItem(parent, name), m_dom(dom), m_part(part)
00058 {
00059 }
00060
00061 ClassItem::ClassItem(ClassViewPart *part, QListViewItem *parent, QString name, ClassDom dom)
00062 :QListViewItem(parent, name), m_dom(dom), m_part(part)
00063 {
00064 }
00065
00066 ClassItem::~ ClassItem( )
00067 {
00068 }
00069
00070 ClassDom ClassItem::dom() const
00071 {
00072 return m_dom;
00073 }
00074
00075 void ClassItem::setup()
00076 {
00077 QListViewItem::setup();
00078 setPixmap( 0, UserIcon("CVclass", KIcon::DefaultState, m_part->instance()) );
00079 }
00080
00081
00082 FunctionItem::FunctionItem(ClassViewPart *part, QListView *parent, QString name, FunctionDom dom)
00083 :QListViewItem(parent, name), m_dom(dom), m_part(part)
00084 {
00085 }
00086
00087 FunctionItem::FunctionItem(ClassViewPart *part, QListViewItem *parent, QString name, FunctionDom dom)
00088 :QListViewItem(parent, name), m_dom(dom), m_part(part)
00089 {
00090 }
00091
00092 FunctionItem::~ FunctionItem( )
00093 {
00094 }
00095
00096 FunctionDom FunctionItem::dom() const
00097 {
00098 return m_dom;
00099 }
00100
00101 void FunctionItem::setup()
00102 {
00103 QListViewItem::setup();
00104 QString iconName;
00105 if( m_dom->access() == CodeModelItem::Private )
00106 iconName = "CVprivate_meth";
00107 else if( m_dom->access() == CodeModelItem::Protected )
00108 iconName = "CVprotected_meth";
00109 else
00110 iconName = "CVpublic_meth";
00111 setPixmap( 0, UserIcon(iconName, KIcon::DefaultState, m_part->instance()) );
00112 }
00113
00114
00115 namespace ViewCombosOp{
00116
00117 void refreshNamespaces(ClassViewPart *part, KComboView *view)
00118 {
00119 view->clear();
00120
00121 NamespaceItem *global_item = new NamespaceItem( part, view->listView(), i18n("(Global Namespace)"), part->codeModel()->globalNamespace() );
00122 view->addItem(global_item);
00123 global_item->setPixmap( 0, UserIcon("CVnamespace", KIcon::DefaultState, part->instance()) );
00124 NamespaceList namespaces = part->codeModel()->globalNamespace()->namespaceList();
00125 for (NamespaceList::const_iterator it = namespaces.begin(); it != namespaces.end(); ++it)
00126 {
00127 NamespaceItem *item = new NamespaceItem(part, view->listView(), part->languageSupport()->formatModelItem(*it), *it);
00128 view->addItem(item);
00129 item->setOpen(true);
00130 }
00131 view->setCurrentActiveItem(global_item);
00132 }
00133
00134 void refreshClasses(ClassViewPart *part, KComboView *view, const QString &dom)
00135 {
00136 view->clear();
00137
00138 view->setCurrentText(EmptyClasses);
00139 NamespaceDom nsdom;
00140 if (dom == "::")
00141 nsdom = part->codeModel()->globalNamespace();
00142 else
00143 {
00144 nsdom = namespaceByName(part->codeModel()->globalNamespace(), dom);
00145 if (!nsdom)
00146 return;
00147 }
00148 ClassList classes = nsdom->classList();
00149 for (ClassList::const_iterator it = classes.begin(); it != classes.end(); ++it)
00150 {
00151 ClassItem *item = new ClassItem(part, view->listView(), part->languageSupport()->formatModelItem(*it), *it);
00152 view->addItem(item);
00153 item->setOpen(true);
00154 }
00155 }
00156
00157 void refreshFunctions(ClassViewPart *part, KComboView *view, const ClassDom & dom)
00158 {
00159 view->clear();
00160
00161 view->setCurrentText(EmptyFunctions);
00162 FunctionList functions = dom->functionList();
00163 for (FunctionList::const_iterator it = functions.begin(); it != functions.end(); ++it)
00164 {
00165 FunctionItem *item = new FunctionItem(part, view->listView(), part->languageSupport()->formatModelItem(*it, true), *it);
00166 view->addItem(item);
00167 item->setOpen(true);
00168 }
00169 }
00170
00171 void refreshFunctions(ClassViewPart *part, KComboView *view, const QString & dom)
00172 {
00173 view->clear();
00174
00175 view->setCurrentText(EmptyFunctions);
00176 NamespaceDom nsdom;
00177 if (dom == "::")
00178 nsdom = part->codeModel()->globalNamespace();
00179 else
00180 {
00181 nsdom = namespaceByName(part->codeModel()->globalNamespace(), dom);
00182 if (!nsdom)
00183 return;
00184 }
00185 FunctionList functions = nsdom->functionList();
00186 for (FunctionList::const_iterator it = functions.begin(); it != functions.end(); ++it)
00187 {
00188 FunctionItem *item = new FunctionItem(part, view->listView(), part->languageSupport()->formatModelItem(*it, true), *it);
00189 view->addItem(item);
00190 item->setOpen(true);
00191 }
00192 }
00193
00194
00195 }
00196
00197 NamespaceDom ViewCombosOp::namespaceByName( NamespaceDom dom, QString name )
00198 {
00199 NamespaceDom result;
00200
00201 result = dom->namespaceByName(name);
00202 if (!result)
00203 {
00204 NamespaceList nslist = dom->namespaceList();
00205 for (NamespaceList::const_iterator it = nslist.begin(); it != nslist.end(); ++it)
00206 {
00207 result = namespaceByName(*it, name);
00208 if (result)
00209 break;
00210 }
00211 }
00212 return result;
00213 }
00214