Classes | Namespaces | Enumerations | Functions | Variables

global.h File Reference

#include <QDebug>
#include <QDir>
#include <QCoreApplication>
#include <QHash>
#include <QObject>
#include <QDialog>
#include <QAbstractItemModel>
#include <QVBoxLayout>
#include <QListView>
#include <QDialogButtonBox>
#include <QItemSelection>
#include <QPushButton>
Include dependency graph for global.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  TablePrefs
 Namespace for global constants. More...
class  Tables
 Group of TablePrefs. More...
class  SimpleViewSelectionDialog
 A simple selection dialog based on a QListView. More...

Namespaces

namespace  GlobalConst
 

Namespace for global constants.


namespace  GlobalEnum
 

Namespace for global enumerations.


Enumerations

enum  GlobalEnum::BuilderHeaderDataRole { GlobalEnum::BuilderHeaderDataUnitSymbolRole = 1200 + Qt::UserRole }

Functions

bool copyFile (char *dest, char *src)
QString generateKey (const QDateTime &timestamp, const QString &component)
int seekRow (QSqlQuery query, const QSqlRecord &record)
quint64 cantor (const int &x, const int &y)
QVariant formulaRead (const QVariant &data)
QVariant formulaWrite (const QVariant &data)

Variables

const QString GlobalConst::SMARTLET_SCHEMA = "smartlet"
const QString GlobalConst::TEMPLATES_SCHEMA = "templates01"
const QDir GlobalConst::TEMP_DIR = "temp"
const QDir GlobalConst::EXPORT_DIR = "export"
const QDir GlobalConst::LOG_DIR = "log"
const QString GlobalConst::CALI_FORMULA_HELP = "A valid formula for example is: '($1)^2*5'. It will take data, raise it to the second power, and multiply it by five.</body>"
const QString GlobalConst::DB_TABLE_CHANGE_NOTIFY = "NOTIFICATION_TABLE_CHANGE_%1"
const QString GlobalConst::DB_BASE_DATA_QUERY = ") AS \"%2\" \n"
const QString GlobalConst::URL_DOCS = "http://pleco10.ugent.be:10000/projects/docs/smartlet/html/current/"

Function Documentation

quint64 cantor ( const int &  x,
const int &  y 
)

                                          {
    return ((x+y)*(x+y)+x-y)/2;
}

bool copyFile ( char *  dest,
char *  src 
)

{
    FILE *dp,*sp;
    int c;
    sp = fopen(src,"rb");
    if (!sp)
    {
        qWarning() << "Can't open " << src;
        return FALSE;
    }
    dp = fopen(dest,"wb");
    if (!dp)
    {
        qWarning() << "Can't open " << dest;
        return FALSE;
    }
    while (1)
    { c = getc(sp);
        if (feof(sp))
            break;
        fputc(c,dp);
    }
    fclose(sp);
    fclose(dp);
    return TRUE;
}

QVariant formulaRead ( const QVariant data  ) 

Referenced by CalibrationsModel::data().

                                           {
    return data.toString().replace("$1", "RAW");
}

QVariant formulaWrite ( const QVariant data  ) 

                                            {
    return data.toString().replace("RAW", "$1");
}

QString generateKey ( const QDateTime timestamp,
const QString component 
)

                                                                          {
    int p = 0;
    // Our key is the left part of the ISODate, cut off on the component.
    // So for month, we take the first 7 characters of YYYY-MM-DDTHH:MM:SS (i.e.
    // ISO date format)
    if (component == QString()) return QString();
    else if (component == "Week") {
        int year;
        int week = timestamp.date().weekNumber(&year);
        return QString::number(year).append("-w").append(QString::number(week));
    }
    else if (component == "Year") p = 4;
    else if (component == "Month") p = 7;
    else if (component == "Day") p = 10;
    else if (component == "Hour") p = 13;
    else if (component == "Minute") p = 16;
    else if (component == "Second") p = 19;
    Q_ASSERT(p);
    return timestamp.toString(Qt::ISODate).left(p);
}

int seekRow ( QSqlQuery  query,
const QSqlRecord record 
)

Referenced by MappedBaseEditor::onQueryChange(), MappedBaseEditor::onSubmitButtonPress(), and MappedBaseEditor::setCurrent().

                                                       {
    // note that query is passed by value: this might be a performance bottleneck for large queries.

    if (!query.isActive() || record.isEmpty())
        return -1;

    // check whether query is empty
    Q_ASSERT(query.isSelect());
    query.first();
    if (!query.isValid())
        return -1;

    // check equal fields exist and their data types are the same, and in mean time,
    // set up the FieldMap.
    struct FieldMap {
        FieldMap() : query(0), record(0) {}
        int query;
        int record;
    } map[record.count()];
    for(int i = 0; i < record.count(); i++){
        map[i].record = i;
        map[i].query = query.record().indexOf(record.fieldName(i));
        if (map[i].query == -1 ||
            query.record().field(map[i].query).type() != record.field(map[i].record).type())
            return -1;
    }
    // seek row
    int i = 0; //field number
    int count = record.count();
    int max = record.count() - 1;
    do {
        for (i = 0; i < count; i++) {
            //qDebug() << /*j*/ << "of" << query.size() << i << query.value(map[i].query) << record.value(map[i].record);
            if (query.value(map[i].query) != record.value(map[i].record))
                break;
            if (i == max) return query.at();
        }
    } while (query.next());

    return -1;
}