📄 treeclasses.cpp
字号:
queryString = queryString + "'" + it->text(0).replace("'", "$") + "', " + "'" + it->toolTip(0).replace("'", "$") + "', " + "'" + parsedItem.icon.replace("'", "$") + "', " + "'" + parsedItem.key.replace("'", "$") + "', " + "'" + parents.replace("'", "$") + "', " + "'" + parsedItem.name.replace("'", "$") + "', " + "'" + QDir( projectDirectory ).relativeFilePath( QDir::cleanPath( parsedItem.implementation ) ).replace("'", "$") + "', " + "'" + QDir( projectDirectory ).relativeFilePath( QDir::cleanPath( parsedItem.declaration ) ).replace("'", "$") + "', " + "'" + parsedItem.ex_cmd.replace("'", "$") + "', " + "'" + parsedItem.language.replace("'", "$") + "', " + "'" + parsedItem.classname.replace("'", "$") + "', " + "'" + parsedItem.structname.replace("'", "$") + "', " + "'" + parsedItem.enumname.replace("'", "$") + "', " + "'" + parsedItem.access.replace("'", "$") + "', " + "'" + parsedItem.signature.replace("'", "$") + "', " + "'" + parsedItem.kind.replace("'", "$") + "')"; bool rc = query.exec(queryString); if (rc == false) { qDebug() << "Failed to insert record to db" << query.lastError(); qDebug() << queryString; exit(0); } // for (int i=0; i<it->childCount(); i++) { writeItemsInDB( it->child( i ), parents+":"+it->text(0), query, projectDirectory); }}//void TreeClasses::fromDB(QString projectDirectory){ m_treeClassesItems->clear(); connectDB(projectDirectory+"/qdevelop-settings.db"); QSqlQuery query( QSqlDatabase::database( projectDirectory + "/qdevelop-settings.db" )); query.exec("BEGIN TRANSACTION;"); QString queryString = QString() + "select * from classesbrowser where 1"; query.exec(queryString); while (query.next()) { ParsedItem parsedItem; QString text = query.value(0).toString().replace("$", "'"); QString tooltip = query.value(1).toString().replace("$", "'"); parsedItem.icon = query.value(2).toString().replace("$", "'"); parsedItem.key = query.value(3).toString().replace("$", "'"); QString parents = query.value(4).toString().replace("$", "'"); parsedItem.name = query.value(5).toString().replace("$", "'"); parsedItem.implementation = query.value(6).toString().replace("$", "'"); parsedItem.implementation = QDir( projectDirectory ).absoluteFilePath(parsedItem.implementation ); parsedItem.declaration = query.value(7).toString().replace("$", "'"); parsedItem.declaration = QDir( projectDirectory ).absoluteFilePath(parsedItem.declaration ); parsedItem.ex_cmd = query.value(8).toString().replace("$", "'"); parsedItem.language = query.value(9).toString().replace("$", "'"); parsedItem.classname = query.value(10).toString().replace("$", "'"); parsedItem.structname = query.value(11).toString().replace("$", "'"); parsedItem.enumname = query.value(12).toString().replace("$", "'"); parsedItem.access = query.value(13).toString().replace("$", "'"); parsedItem.signature = query.value(14).toString().replace("$", "'"); parsedItem.kind = query.value(15).toString().replace("$", "'"); createItemFromDB(topLevelItem(0), text, tooltip, parents, parsedItem); m_treeClassesItems->append( parsedItem ); } queryString = QString() + "select * from checksums where 1"; query.exec(queryString); while (query.next()) { QString filename = query.value(0).toString(); quint16 checksum = query.value(1).toInt(); QFile file(filename); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; QByteArray array( file.readAll() ); if ( !array.count() ) return; char *ptr = array.data(); quint16 check = qChecksum(ptr, array.length()); if ( check != checksum ) { m_mainImpl->slotUpdateClasses(filename, QString(array)); } file.close(); } query.exec("END TRANSACTION;");}////void TreeClasses::createItemFromDB(QTreeWidgetItem *parent, QString text, QString /*tooltip*/, QString parents, ParsedItem parsedItem){ if ( !parent ) { QTreeWidgetItem *it = new QTreeWidgetItem( this ); it->setText(0, text); setTooltip(it, parsedItem); it->setIcon(0, QIcon(parsedItem.icon)); QVariant v; v.setValue( parsedItem ); it->setData(0, Qt::UserRole, v ); setItemExpanded( it, true ); return; } parents = parents.section(":", 2); if ( !parents.isEmpty() ) { foreach( QString p, parents.split(":", QString::SkipEmptyParts) ) {// QTreeWidgetItem *find; for (int i=0; i<parent->childCount(); i++) { if ( parent->child( i )->text( 0 ) == p ) parent = parent->child( i ); } } } QTreeWidgetItem *it = new QTreeWidgetItem( parent ); it->setText(0, text); setTooltip(it, parsedItem); it->setIcon(0, QIcon(parsedItem.icon)); QVariant v; v.setValue( parsedItem ); it->setData(0, Qt::UserRole, v );}//void TreeClasses::mouseDoubleClickEvent ( QMouseEvent * event ){ m_itemClicked = itemAt( event->pos() ); if ( !m_itemClicked ) return; ParsedItem parsedItem = m_itemClicked->data(0, Qt::UserRole).value<ParsedItem>(); if ( parsedItem.key.left(10) != "parent:" ) { if ( !parsedItem.implementation.isEmpty() && (parsedItem.kind!="c" || parsedItem.declaration.isEmpty() )) slotOpenImplementation(); else if ( !parsedItem.declaration.isEmpty() ) slotOpenDeclaration(); } else setItemExpanded( m_itemClicked, !isItemExpanded(m_itemClicked) );}//QString TreeClasses::signature(QString line){ QString params = line.mid( line.indexOf("(")+1 ); params = params.left( params.lastIndexOf(")") ) .simplified(); QString formattedParams; foreach(QString param, params.split(",") ) { param = param.simplified(); if ( param.contains("&") ) param = param.simplified().left( param.simplified().lastIndexOf("&")+1 ); else if ( param.contains("*") ) param = param.simplified().left( param.simplified().lastIndexOf("*")+1 ); else if ( param.simplified().contains(" ") ) param = param.simplified().left( param.simplified().indexOf(" ") ); else if ( param.simplified().contains("=") ) param = param.simplified().left( param.simplified().lastIndexOf("=") ); formattedParams += param + ","; } formattedParams = formattedParams.simplified().left( formattedParams.lastIndexOf(",") ); formattedParams.remove( " " ); QString s ="(" + formattedParams + ")"; return s;}//QString TreeClasses::getPathHash(QString const& pathName){ unsigned intHash = qHash(pathName); return QString().sprintf("_%x_", intHash);}////void TreeClasses::slotAddNewClassMethod(){ ParsedItem parsedItem = m_itemClicked->data(0, Qt::UserRole).value<ParsedItem>(); QString implementation = parsedItem.implementation; QString declaration = parsedItem.declaration; QString classname = parsedItem.name; if ( !QFileInfo(implementation.section("|", 0, 0)).isFile() ) { for (int i=0; i<m_itemClicked->childCount(); i++) { ParsedItem childItem = m_itemClicked->child( i )->data(0, Qt::UserRole).value<ParsedItem>(); if ( QFileInfo(childItem.implementation.section("|", 0, 0)).isFile() ) { implementation = childItem.implementation; break; } } } AddNewClassMethodImpl *dialog = new AddNewClassMethodImpl(m_mainImpl, this, implementation, declaration, classname); dialog->exec(); delete dialog; //}//void TreeClasses::slotAddNewClassVariable(){ ParsedItem parsedItem = m_itemClicked->data(0, Qt::UserRole).value<ParsedItem>(); QString implementation = parsedItem.implementation; QString declaration = parsedItem.declaration; QString classname = parsedItem.name; if ( !QFileInfo(implementation.section("|", 0, 0)).isFile() ) { for (int i=0; i<m_itemClicked->childCount(); i++) { ParsedItem childItem = m_itemClicked->child( i )->data(0, Qt::UserRole).value<ParsedItem>(); if ( QFileInfo(childItem.implementation.section("|", 0, 0)).isFile() ) { implementation = childItem.implementation; break; } } } AddNewClassVariableImpl *dialog = new AddNewClassVariableImpl(m_mainImpl, this, m_itemClicked, declaration, implementation, classname); dialog->exec(); delete dialog;//}//void TreeClasses::slotAddGetSetMethod(){ ParsedItem parsedItem = m_itemClicked->data(0, Qt::UserRole).value<ParsedItem>(); ParsedItem parsedItemParent = m_itemClicked->parent()->data(0, Qt::UserRole).value<ParsedItem>(); QTreeWidgetItem *m_itemClickedParent = m_itemClicked->parent(); QString implementation = parsedItemParent.implementation; QString declaration = parsedItemParent.declaration; QString classname = parsedItemParent.name; if ( !QFileInfo(implementation.section("|", 0, 0)).isFile() ) { for (int i=0; i<m_itemClickedParent->childCount(); i++) { ParsedItem childItem = m_itemClickedParent->child( i )->data(0, Qt::UserRole).value<ParsedItem>(); if ( QFileInfo(childItem.implementation.section("|", 0, 0)).isFile() ) { implementation = childItem.implementation; break; } } } QString type = parsedItem.ex_cmd.left( parsedItem.ex_cmd.lastIndexOf(" ") ); AddSetGetImpl *addSetGetImpl = new AddSetGetImpl(m_mainImpl, this, declaration, implementation, classname, type, parsedItem.name); addSetGetImpl->exec(); delete addSetGetImpl;}//QStringList TreeClasses::methods(QString filename, QString /*classname*/){ QStringList listMethods; const QList<ParsedItem> *list; list = treeClassesItems(); //foreach( ParsedItem parsedItem, list ) for (int i = 0; i < list->size(); ++i) { ParsedItem parsedItem = list->at( i ); if ( ( parsedItem.kind == "p" || parsedItem.kind == "f" ) && parsedItem.declaration.section("|", 0, 0) == filename ) { QString returnName = parsedItem.ex_cmd; if ( returnName.left( returnName.indexOf("::") ).indexOf("\t") != -1 ) returnName = returnName.left( returnName.indexOf("::") ).section("\t", 0, 0); else if ( returnName.left( returnName.indexOf("::") ).indexOf(" ") != -1 ) returnName = returnName.left( returnName.indexOf("::") ).section(" ", 0, 0); else returnName = ""; QString add = returnName+" " +parsedItem.name+parsedItem.signature; listMethods << add.simplified(); } } return listMethods;}///*const QList<ParsedItem> *TreeClasses::treeClassesItems(QString classname){ QTreeWidgetItem *parent = findItem(0, classname, "class:"+classname, false); if( parent ) { ParsedItem parsedItem = parent->data(0, Qt::UserRole).value<ParsedItem>(); list->append( parsedItem ); for(int i=0; i<parent->childCount(); i++) { QTreeWidgetItem *childItem = parent->child( i ); ParsedItem parsedItem = childItem->data(0, Qt::UserRole).value<ParsedItem>(); list->append( parsedItem ); } } return list;}*///
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -