void insercion_caso3(struct node *n) { struct node *t = tio(n), *a; if ((t != NULL) && (t->color == ROJO)) { n->padre->color = NEGRO; t->color = NEGRO; a = abuelo(n); a->color = ROJO; insercion_caso1(a); } else { insercion_caso4(n); } }
void RedBlackTree::insercion_caso3(Node *n) { Node *t = tio(n), *a; this->message->setText("Recolor red Uncle,Father and Grandpa"); if ((t != NULL) && (t->color == "ROJO")) { n->padre->color = "NEGRO"; t->color = "NEGRO"; a = abuelo(n); a->color = "ROJO"; insercion_caso1(a); } else { insercion_caso4(n); } }
void BrowseThread::populateModel() { m_path_mutex.lock(); QString thisPath = m_path; BrowseTableModel* thisModelObserver = m_model_observer; m_path_mutex.unlock(); // Refresh the name filters in case we loaded new SoundSource plugins. QStringList nameFilters(SoundSourceProxy::supportedFileExtensionsString().split(" ")); QDirIterator fileIt(thisPath, nameFilters, QDir::Files | QDir::NoDotAndDotDot); // remove all rows // This is a blocking operation // see signal/slot connection in BrowseTableModel emit(clearModel(thisModelObserver)); QList< QList<QStandardItem*> > rows; int row = 0; // Iterate over the files while (fileIt.hasNext()) { // If a user quickly jumps through the folders // the current task becomes "dirty" m_path_mutex.lock(); QString newPath = m_path; m_path_mutex.unlock(); if(thisPath != newPath) { qDebug() << "Abort populateModel()"; return populateModel(); } QString filepath = fileIt.next(); TrackInfoObject tio(filepath); QList<QStandardItem*> row_data; QStandardItem* item = new QStandardItem(tio.getFilename()); item->setToolTip(item->text()); row_data.insert(COLUMN_FILENAME, item); item = new QStandardItem(tio.getArtist()); item->setToolTip(item->text()); row_data.insert(COLUMN_ARTIST, item); item = new QStandardItem(tio.getTitle()); item->setToolTip(item->text()); row_data.insert(COLUMN_TITLE, item); item = new QStandardItem(tio.getAlbum()); item->setToolTip(item->text()); row_data.insert(COLUMN_ALBUM, item); item = new QStandardItem(tio.getAlbumArtist()); item->setToolTip(item->text()); row_data.insert(COLUMN_ALBUMARTIST, item); item = new QStandardItem(tio.getTrackNumber()); item->setToolTip(item->text()); row_data.insert(COLUMN_TRACK_NUMBER, item); item = new QStandardItem(tio.getYear()); item->setToolTip(item->text()); row_data.insert(COLUMN_YEAR, item); item = new QStandardItem(tio.getGenre()); item->setToolTip(item->text()); row_data.insert(COLUMN_GENRE, item); item = new QStandardItem(tio.getComposer()); item->setToolTip(item->text()); row_data.insert(COLUMN_COMPOSER, item); item = new QStandardItem(tio.getGrouping()); item->setToolTip(item->text()); row_data.insert(COLUMN_GROUPING, item); item = new QStandardItem(tio.getComment()); item->setToolTip(item->text()); row_data.insert(COLUMN_COMMENT, item); QString duration = Time::formatSeconds(qVariantValue<int>( tio.getDuration()), false); item = new QStandardItem(duration); item->setToolTip(item->text()); row_data.insert(COLUMN_DURATION, item); item = new QStandardItem(tio.getBpmStr()); item->setToolTip(item->text()); row_data.insert(COLUMN_BPM, item); item = new QStandardItem(tio.getKeyText()); item->setToolTip(item->text()); row_data.insert(COLUMN_KEY, item); item = new QStandardItem(tio.getType()); item->setToolTip(item->text()); row_data.insert(COLUMN_TYPE, item); item = new QStandardItem(tio.getBitrateStr()); item->setToolTip(item->text()); row_data.insert(COLUMN_BITRATE, item); item = new QStandardItem(filepath); item->setToolTip(item->text()); row_data.insert(COLUMN_LOCATION, item); rows.append(row_data); ++row; // If 10 tracks have been analyzed, send it to GUI // Will limit GUI freezing if(row % 10 == 0){ // this is a blocking operation emit(rowsAppended(rows, thisModelObserver)); //qDebug() << "Append " << rows.count() << " from " << filepath; rows.clear(); } // Sleep additionally for 10ms which prevents us from GUI freezes msleep(20); } emit(rowsAppended(rows, thisModelObserver)); //qDebug() << "Append last " << rows.count() << " from " << thisPath; }
void BrowseThread::populateModel() { m_path_mutex.lock(); MDir thisPath = m_path; BrowseTableModel* thisModelObserver = m_model_observer; m_path_mutex.unlock(); // Refresh the name filters in case we loaded new SoundSource plugins. QStringList nameFilters(SoundSourceProxy::getSupportedFileNamePatterns()); QDirIterator fileIt(thisPath.dir().absolutePath(), nameFilters, QDir::Files | QDir::NoDotAndDotDot); // remove all rows // This is a blocking operation // see signal/slot connection in BrowseTableModel emit(clearModel(thisModelObserver)); QList< QList<QStandardItem*> > rows; int row = 0; // Iterate over the files while (fileIt.hasNext()) { // If a user quickly jumps through the folders // the current task becomes "dirty" m_path_mutex.lock(); MDir newPath = m_path; m_path_mutex.unlock(); if (thisPath.dir() != newPath.dir()) { qDebug() << "Abort populateModel()"; return populateModel(); } QString filepath = fileIt.next(); TrackInfoObject tio(filepath, thisPath.token()); QList<QStandardItem*> row_data; QStandardItem* item = new QStandardItem("0"); item->setData("0", Qt::UserRole); row_data.insert(COLUMN_PREVIEW, item); item = new QStandardItem(tio.getFilename()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_FILENAME, item); item = new QStandardItem(tio.getArtist()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_ARTIST, item); item = new QStandardItem(tio.getTitle()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_TITLE, item); item = new QStandardItem(tio.getAlbum()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_ALBUM, item); item = new QStandardItem(tio.getAlbumArtist()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_ALBUMARTIST, item); item = new QStandardItem(tio.getTrackNumber()); item->setToolTip(item->text()); item->setData(item->text().toInt(), Qt::UserRole); row_data.insert(COLUMN_TRACK_NUMBER, item); const QString year(tio.getYear()); item = new YearItem(year); item->setToolTip(year); // The year column is sorted according to the numeric calendar year item->setData(Mixxx::TrackMetadata::parseCalendarYear(year), Qt::UserRole); row_data.insert(COLUMN_YEAR, item); item = new QStandardItem(tio.getGenre()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_GENRE, item); item = new QStandardItem(tio.getComposer()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_COMPOSER, item); item = new QStandardItem(tio.getGrouping()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_GROUPING, item); item = new QStandardItem(tio.getComment()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_COMMENT, item); QString duration = Time::formatSeconds(qVariantValue<int>( tio.getDuration()), false); item = new QStandardItem(duration); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_DURATION, item); item = new QStandardItem(tio.getBpmStr()); item->setToolTip(item->text()); item->setData(tio.getBpm(), Qt::UserRole); row_data.insert(COLUMN_BPM, item); item = new QStandardItem(tio.getKeyText()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_KEY, item); item = new QStandardItem(tio.getType()); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_TYPE, item); item = new QStandardItem(tio.getBitrateStr()); item->setToolTip(item->text()); item->setData(tio.getBitrate(), Qt::UserRole); row_data.insert(COLUMN_BITRATE, item); item = new QStandardItem(filepath); item->setToolTip(item->text()); item->setData(item->text(), Qt::UserRole); row_data.insert(COLUMN_LOCATION, item); QDateTime modifiedTime = tio.getFileModifiedTime().toLocalTime(); item = new QStandardItem(modifiedTime.toString(Qt::DefaultLocaleShortDate)); item->setToolTip(item->text()); item->setData(modifiedTime, Qt::UserRole); row_data.insert(COLUMN_FILE_MODIFIED_TIME, item); QDateTime creationTime = tio.getFileCreationTime().toLocalTime(); item = new QStandardItem(creationTime.toString(Qt::DefaultLocaleShortDate)); item->setToolTip(item->text()); item->setData(creationTime, Qt::UserRole); row_data.insert(COLUMN_FILE_CREATION_TIME, item); rows.append(row_data); ++row; // If 10 tracks have been analyzed, send it to GUI // Will limit GUI freezing if (row % 10 == 0) { // this is a blocking operation emit(rowsAppended(rows, thisModelObserver)); qDebug() << "Append " << rows.count() << " from " << filepath; rows.clear(); } // Sleep additionally for 10ms which prevents us from GUI freezes msleep(20); } emit(rowsAppended(rows, thisModelObserver)); qDebug() << "Append last " << rows.count(); }
static int e3(void) { int p1; char *a; char *p2; int int1, int2; a = nxtarg(0); if (EQ(a, "(")) { p1 = exp(); if (!EQ(nxtarg(0), ")")) synbad(") expected", ""); return (p1); } p2 = nxtarg(1); ap--; if ((p2 == 0) || (!EQ(p2, "=") && !EQ(p2, "!="))) { if (EQ(a, "-r")) return (tio(nxtarg(0), 4)); if (EQ(a, "-w")) return (tio(nxtarg(0), 2)); if (EQ(a, "-x")) return (tio(nxtarg(0), 1)); if (EQ(a, "-d")) return (filtyp(nxtarg(0), S_IFDIR)); if (EQ(a, "-c")) return (filtyp(nxtarg(0), S_IFCHR)); if (EQ(a, "-b")) return (filtyp(nxtarg(0), S_IFBLK)); if (EQ(a, "-f")) { struct stat statb; return (stat(nxtarg(0), &statb) >= 0 && (statb.st_mode & S_IFMT) != S_IFDIR); } if (EQ(a, "-h")) return (filtyp(nxtarg(0), S_IFLNK)); if (EQ(a, "-u")) return (ftype(nxtarg(0), S_ISUID)); if (EQ(a, "-g")) return (ftype(nxtarg(0), S_ISGID)); if (EQ(a, "-k")) return (ftype(nxtarg(0), S_ISVTX)); if (EQ(a, "-p")) #ifdef S_IFIFO return (filtyp(nxtarg(0), S_IFIFO)); #else return (nxtarg(0), 0); #endif if (EQ(a, "-s")) return (fsizep(nxtarg(0))); if (EQ(a, "-t")) if (ap >= ac) return (isatty(1)); else if (EQ((a = nxtarg(0)), "-a") || EQ(a, "-o")) { ap--; return (isatty(1)); } else return (isatty(atoi(a))); if (EQ(a, "-n")) return (!EQ(nxtarg(0), "")); if (EQ(a, "-z")) return (EQ(nxtarg(0), "")); } p2 = nxtarg(1); if (p2 == 0) return (!EQ(a, "")); if (EQ(p2, "-a") || EQ(p2, "-o")) { ap--; return (!EQ(a, "")); } if (EQ(p2, "=")) return (EQ(nxtarg(0), a)); if (EQ(p2, "!=")) return (!EQ(nxtarg(0), a)); int1 = atoi(a); int2 = atoi(nxtarg(0)); if (EQ(p2, "-eq")) return (int1 == int2); if (EQ(p2, "-ne")) return (int1 != int2); if (EQ(p2, "-gt")) return (int1 > int2); if (EQ(p2, "-lt")) return (int1 < int2); if (EQ(p2, "-ge")) return (int1 >= int2); if (EQ(p2, "-le")) return (int1 <= int2); synbad("unknown operator ", p2); /* NOTREACHED */ return (0); }