//Reads file and writes to bin(Low level open for output, low level write for output, high level read for input) int main(){ FILE * fin = openFile(); int fd = open("myBinary.bin",O_CREAT|O_WRONLY,0777); if(fd < 0){ printf("ERROR: CANNOT OPEN OUTPUT FILE!!!"); exit(-1); } int input; int records = recordCount(fin); int result = 0; write(fd,&records,sizeof(records));//Write number of records from input file, as first line in output fscanf(fin,"%d",&input); while(!feof(fin)){ if(result < 0){ printf("ERROR: Problem Writing To File!!!"); exit(-1); } write(fd,&input,sizeof(input)); fscanf(fin,"%d",&input); } close(fd); fclose(fin); return 0; }
int LS3Datastore::getRecordByUUID(const QString& uuid) const { if (dbIsLoaded()) { int pos=-1; for (int i=0; i<recordCount(); i++) { if (getField(i, "uuid").toString()==uuid) { pos=i; } } return pos; } return -1; }
bool KexiRecordNavigator::eventFilter(QObject *o, QEvent *e) { if (o == d->navRecordNumber) { bool recordEntered = false; bool ret; if (e->type() == QEvent::KeyPress) { QKeyEvent *ke = static_cast<QKeyEvent*>(e); switch (ke->key()) { case Qt::Key_Escape: { ke->accept(); d->navRecordNumber->undo(); if (d->view) d->view->setFocus(); return true; } case Qt::Key_Enter: case Qt::Key_Return: case Qt::Key_Tab: case Qt::Key_Backtab: { recordEntered = true; ke->accept(); //to avoid pressing Enter later ret = true; } default:; } } else if (e->type() == QEvent::FocusOut) { if (static_cast<QFocusEvent*>(e)->reason() != Qt::TabFocusReason && static_cast<QFocusEvent*>(e)->reason() != Qt::BacktabFocusReason && static_cast<QFocusEvent*>(e)->reason() != Qt::OtherFocusReason) { recordEntered = true; } ret = false; } if (recordEntered) { bool ok = true; uint r = d->navRecordNumber->text().toUInt(&ok); if (!ok || r < 1) r = (recordCount() > 0) ? 1 : 0; if (d->view && (hasFocus() || e->type() == QEvent::KeyPress)) d->view->setFocus(); setCurrentRecordNumber(r); emit recordNumberEntered(r); if (d->handler) d->handler->moveToRecordRequested(r - 1); return ret; } } return false; }
void KexiRecordNavigator::setCurrentRecordNumber(uint r) { uint recCnt = recordCount(); if (r > (recCnt + (d->isInsertingEnabled ? 1 : 0))) r = recCnt + (d->isInsertingEnabled ? 1 : 0); QString n; if (r > 0) n = QString::number(r); else n = " "; d->navRecordNumber->setText(n); updateButtons(recCnt); }
void KexiRecordNavigator::showEditingIndicator(bool show) { d->editingIndicatorVisible = show; updateButtons(recordCount()); //this will refresh 'next btn' if (!d->editingIndicatorEnabled) return; if (d->editingIndicatorVisible) { QPixmap pix( *KexiRecordMarker::penPixmap() ); d->editingIndicatorLabel->setPixmap(pix); d->editingIndicatorLabel->setToolTip(i18n("Editing indicator")); } else { d->editingIndicatorLabel->setPixmap(QPixmap()); d->editingIndicatorLabel->setToolTip(QString()); } }
QList<IoslotValueRecord> IoslotValueTable::median(const QDateTime &from, const QDateTime &to, int limit) { int count = recordCount(from, to); qint64 w1 = from.toMSecsSinceEpoch() - to.toMSecsSinceEpoch(); qint64 w2 = double(limit) / double(count) * w1; qint16 dw = (w1 - w2) / 2; QDateTime dt1 = from; QDateTime dt2 = to; if (dw > 0) { dt1 = QDateTime::fromMSecsSinceEpoch(dt1.toMSecsSinceEpoch() + dw); dt2 = QDateTime::fromMSecsSinceEpoch(dt2.toMSecsSinceEpoch() - dw); } return records(dt1, dt2, limit); }
void KexiRecordNavigator::setRecordCount(uint count) { const QString & n = QString::number(count); if (d->isInsertingEnabled && currentRecordNumber() == 0) { setCurrentRecordNumber(1); } if (d->navRecordCount->text().length() != n.length()) {//resize d->navRecordCount->setFixedWidth(d->nav1DigitWidth * (n.length() + 1)); if (d->view && d->view->horizontalScrollBar()->isVisible()) { //+width of the delta resize(width() + (n.length() - d->navRecordCount->text().length())*d->nav1DigitWidth, height()); } } //update row number widget's width const int w = d->nav1DigitWidth * qMax(qMax(n.length(), 2) + 1, d->navRecordNumber->text().length() + 1) + 2; if (d->navRecordNumber->width() != w) //resize d->navRecordNumber->setFixedWidth(w); d->navRecordCount->setText(n); if (d->view) d->view->updateScrollBars(); updateButtons(recordCount()); }
bool LS3DatastoreXML::dbLoad(const QString &fileName, QProgressBar* progress) { LS3ElapsedAutoTimer timer("LS3DatastoreXML::dbLoad"); // if a database is opened: close it! dbClose(); QDomDocument doc("mydocument"); QFile file(fileName); QString errorMessage; int errorLine; int errorColumn; if (!file.open(QIODevice::ReadOnly)) { emit dbError(tr("Error opening databse '%1': File could not be opened.").arg(fileName)); return m_databaseLoaded=false; } if (!doc.setContent(&file, &errorMessage, &errorLine, &errorColumn)) { file.close(); //file.close(); emit dbError(tr("Error parsing databse '%1': %2 (line %3, column %4).").arg(fileName).arg(errorMessage).arg(errorLine).arg(errorColumn)); return m_databaseLoaded=false; } file.close(); QDomElement docElem = doc.documentElement(); if (docElem.tagName()!="litsoz3database") { emit dbError(tr("Error in databse '%1': This is not a LitSoz 3 databse file (root element is <%2>, but should be <litsoz3database>.").arg(fileName).arg(docElem.tagName())); return m_databaseLoaded=false; } QDomElement n = docElem.firstChildElement("records"); data->loadFromXML(n, progress); timer.showMessage("XML loaded"); //if (keywordsdata) delete keywordsdata //keywordsdata = new QStringListModel(this); // create a stringlist model for the keywords and read its contents from the keywords field in the metadata table // the (possibly changed) model will be written back in the closeDB() method QDomElement metadata = docElem.firstChildElement("metadata"); if (!metadata.isNull()) { n = metadata.firstChildElement("item"); while(!n.isNull()) { QString type=n.attribute("type").toLower(); if (type=="keywords") { QString sdata=n.text().replace("\r\n", "\n"); sdata=sdata.replace("\n\r", "\n"); sdata=sdata.replace("\n\n", "\n"); sdata=sdata.replace("\n\n", "\n"); sdata=sdata.replace("\r\r", ""); QStringList sl=sdata.split("\n", QString::SkipEmptyParts); sl.removeDuplicates(); sl.sort(); keywordsdata->setStringList(sl); } if (type=="topics") { QString sdata=n.text().replace("\r\n", "\n"); sdata=sdata.replace("\n\r", "\n"); sdata=sdata.replace("\n\n", "\n"); sdata=sdata.replace("\n\n", "\n"); sdata=sdata.replace("\r\r", ""); QStringList sl=sdata.split("\n", QString::SkipEmptyParts); sl.removeDuplicates(); sl.sort(); topicsdata->setStringList(sl); } n=n.nextSiblingElement("item"); } } timer.showMessage("METADATA read"); // read the list of selected records QDomElement selectedNode = docElem.firstChildElement("selection_list"); clearSelection(); if (!selectedNode.isNull()) { n = selectedNode.firstChildElement("item"); while(!n.isNull()) { QString uuid=n.attribute("uuid"); select(uuid); n=n.nextSiblingElement("item"); } } timer.showMessage("SELECTION read"); // read the reference tree QDomElement reftreeNode = docElem.firstChildElement("litsoz3_reference_tree"); getReferencTreeModel()->readFromXML(reftreeNode); timer.showMessage("REFTREE read"); // read the authorsdata completer list from a file in config dir //if (authorsdata) delete authorsdata; //authorsdata = new QStringListModel(this); QFile f(settings->GetConfigDirectory()+"/completers/authors.lst"); if (f.open(QIODevice::ReadOnly|QIODevice::Text)) { //std::cout<<"OK\n"; QString s=QString::fromUtf8(f.readAll()); authorsdata->setStringList(s.split('\n', QString::SkipEmptyParts)); } updateCompleters(0, recordCount()-1, false); timer.showMessage("AUTHORS_COMPLETER read"); m_currentFile=fileName; emit filenameChanged(m_currentFile); emit connectWidgets(); timer.showMessage("CONNECTED_WIDGETS"); dbFirst(); timer.showMessage("MOVED FIRST"); emit databaseLoaded(true); emit databaseClosed(false); emit massiveSelectionChange(); timer.showMessage("EMITED SIGNALS"); return m_databaseLoaded=true; }
QString LS3Datastore::createID(int record, LS3Datastore::IDType type) { LS3ElapsedAutoTimer timer("LS3Datastore::createID("+QString::number(record)+")"); bool addLetterCode=true; // if this is false, no a, b, c,... letter code will be added // read and process information from database QString a=getField(record, "authors").toString(); QStringList ag, af; parseAuthors(a, &ag, &af); QString e=getField(record, "editors").toString(); QStringList eg, ef; parseAuthors(e, &eg, &ef); QString y=getField(record, "year").toString(); // create base ID QString id=""; if (type==AuthorYearDefaultCase) { if (af.size()>0) { id=cleanStringForFilename(af[0]); } else if (ef.size()>0) { id=cleanStringForFilename(ef[0]); } id=id+y; } else if (type==AuthorYearUpperCase) { if (af.size()>0) { id=cleanStringForFilename(af[0]); } else if (ef.size()>0) { id=cleanStringForFilename(ef[0]); } id=id.toUpper()+y; } else if (type==Author3YearUpperCase) { if (af.size()>0) { id=cleanStringForFilename(af[0]).left(3).toUpper(); } else if (ef.size()>0) { id=cleanStringForFilename(ef[0]).left(3).toUpper(); } id=id+y; } else if (type==Author6YearUpperCase) { if (af.size()>0) { id=cleanStringForFilename(af[0]).left(6).toUpper(); } else if (ef.size()>0) { id=cleanStringForFilename(ef[0]).left(6).toUpper(); } id=id+y; } else if (type==InitialsYear) { if (af.size()>0) { for (int i=0; i<af.size(); i++) { id=id+cleanStringForFilename(af[i]).left(1).toUpper(); } } else if (ef.size()>0) { for (int i=0; i<ef.size(); i++) { id=id+cleanStringForFilename(ef[i]).left(1).toUpper(); } } id=id+y; } // look whether ID is unique or whether something has to be added (a, b, c, ...) bool isOK=false; QString idd=id; if (addLetterCode) { int k=0; while (!isOK) { idd=id+intToLetterCode(k); int i=0; isOK=true; while(isOK && (i<recordCount())) { if (i!=record) { if (getField(i, "id")==idd) { isOK=false; } } i++; } k++; } } return idd; }
void LS3Datastore::dbLast() { LS3ElapsedAutoTimer timer("LS3Datastore::dbLast()"); dbMove(recordCount()-1); }