Changeset 15 in flair-src for trunk/tools/FlairGCS/src/file_ui.cpp


Ignore:
Timestamp:
Apr 8, 2016, 3:40:57 PM (5 years ago)
Author:
Bayard Gildas
Message:

sources reformatted with flair-format-dir script

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/FlairGCS/src/file_ui.cpp

    r10 r15  
    2424
    2525#ifndef WIN32
    26    #include <arpa/inet.h>
     26#include <arpa/inet.h>
    2727#else
    28    #include <winsock2.h>
    29    #include <ws2tcpip.h>
     28#include <winsock2.h>
     29#include <ws2tcpip.h>
    3030#endif
    3131
    32 
    3332using namespace std;
    3433
    35 file_ui::file_ui()
    36 {
    37     dialog=new QDialog();
    38     dialog->setWindowTitle("log files");
    39     QGridLayout *main_layout = new QGridLayout(dialog);
    40     ok_button= new QPushButton("Ok",dialog);
    41     log_text=new QTextEdit(dialog);
    42     log_text->setReadOnly(true);
    43     input_text=new QTextEdit(dialog);
    44     input_text->setText("add your log comment here");
    45     input_cleared=false;
    46 
    47     ok_button->setEnabled(false);
    48 
    49     main_layout->addWidget(log_text,0,0);
    50     main_layout->addWidget(input_text,1,0);
    51 
    52     QWidget *widget=new QWidget(dialog);
    53     QFormLayout *formLayout = new QFormLayout(widget);
    54     csv_combo = new QComboBox(widget);
    55     formLayout->addRow(tr("save all log with following base time"), csv_combo);
    56     csv_combo->addItem("(no base time)");
    57     main_layout->addWidget(widget,2,0);
    58     main_layout->addWidget(ok_button,3,0);
    59 
    60     connect(ok_button, SIGNAL(clicked()),this, SLOT(save()), Qt::QueuedConnection);
    61     connect(this, SIGNAL(showDialog()),dialog, SLOT(show()), Qt::QueuedConnection);
    62     connect(this, SIGNAL(appendToLog(QString)),log_text, SLOT(append(QString)), Qt::QueuedConnection);
    63     connect(input_text, SIGNAL(cursorPositionChanged()),this, SLOT(clearInputText()), Qt::QueuedConnection);
    64 
    65     file_names=new QStringList();
    66 }
    67 
    68 file_ui::~file_ui()
    69 {
    70     delete dialog;
    71 }
    72 
    73 void file_ui::log(QString text) {
    74     appendToLog(text);
    75 }
     34file_ui::file_ui() {
     35  dialog = new QDialog();
     36  dialog->setWindowTitle("log files");
     37  QGridLayout *main_layout = new QGridLayout(dialog);
     38  ok_button = new QPushButton("Ok", dialog);
     39  log_text = new QTextEdit(dialog);
     40  log_text->setReadOnly(true);
     41  input_text = new QTextEdit(dialog);
     42  input_text->setText("add your log comment here");
     43  input_cleared = false;
     44
     45  ok_button->setEnabled(false);
     46
     47  main_layout->addWidget(log_text, 0, 0);
     48  main_layout->addWidget(input_text, 1, 0);
     49
     50  QWidget *widget = new QWidget(dialog);
     51  QFormLayout *formLayout = new QFormLayout(widget);
     52  csv_combo = new QComboBox(widget);
     53  formLayout->addRow(tr("save all log with following base time"), csv_combo);
     54  csv_combo->addItem("(no base time)");
     55  main_layout->addWidget(widget, 2, 0);
     56  main_layout->addWidget(ok_button, 3, 0);
     57
     58  connect(ok_button, SIGNAL(clicked()), this, SLOT(save()),
     59          Qt::QueuedConnection);
     60  connect(this, SIGNAL(showDialog()), dialog, SLOT(show()),
     61          Qt::QueuedConnection);
     62  connect(this, SIGNAL(appendToLog(QString)), log_text, SLOT(append(QString)),
     63          Qt::QueuedConnection);
     64  connect(input_text, SIGNAL(cursorPositionChanged()), this,
     65          SLOT(clearInputText()), Qt::QueuedConnection);
     66
     67  file_names = new QStringList();
     68}
     69
     70file_ui::~file_ui() { delete dialog; }
     71
     72void file_ui::log(QString text) { appendToLog(text); }
    7673
    7774void file_ui::addFile(QString file_path) {
    78     //framework sends dbt file then txt file
    79     //when we receive txt, we have both files
    80     //and we can convert it to .csv
    81     if(file_path.endsWith(".dbt")==true) {
    82         QString name=file_path.section('/', -1);//remove path for displaying on combobox
    83         csv_combo->addItem(name.replace(QString(".dbt"), QString(".csv")));
    84         file_names->append(file_path.replace(QString(".dbt"), QString(".csv")));
    85     }
    86 
    87     if(file_path.endsWith(".txt")==true) {
    88         dbt2csv(file_path.replace(QString(".txt"), QString(".dbt")));
    89     }
    90 
    91     if(file_names->size()==1) {
    92         input_cleared=false;
    93         showDialog();
    94     }
     75  // framework sends dbt file then txt file
     76  // when we receive txt, we have both files
     77  // and we can convert it to .csv
     78  if (file_path.endsWith(".dbt") == true) {
     79    QString name =
     80        file_path.section('/', -1); // remove path for displaying on combobox
     81    csv_combo->addItem(name.replace(QString(".dbt"), QString(".csv")));
     82    file_names->append(file_path.replace(QString(".dbt"), QString(".csv")));
     83  }
     84
     85  if (file_path.endsWith(".txt") == true) {
     86    dbt2csv(file_path.replace(QString(".txt"), QString(".dbt")));
     87  }
     88
     89  if (file_names->size() == 1) {
     90    input_cleared = false;
     91    showDialog();
     92  }
    9593}
    9694
    9795void file_ui::endOfFiles(void) {
    98     ok_button->setEnabled(true);
    99 
    100     qint64 max_file_size=0;
    101     for(int i=0;i<file_names->count();i++) {
    102         QFileInfo info(file_names->at(i));
    103         if(info.size()>max_file_size) {
    104             max_file_size=info.size();
    105             csv_combo->setCurrentIndex(i+1);//first item of combobox is already taken
    106         }
    107     }
    108 }
    109 
    110 void file_ui::dbt2csv(QString file_path)
    111 {
    112     hdfile_t *dbtFile = NULL;
    113     char *data;
    114     QStringList data_type;
    115 
    116     QString filename=file_path.section('/', -1);//remove path for displaying on logs
    117     appendToLog(QString("converting %1 to csv").arg(filename));
    118 
    119     //open csv file
    120     QString csv_filename=file_path;
    121     csv_filename.replace(QString(".dbt"), QString(".csv"));
    122     QFile csv_file(csv_filename);
    123 
    124     if(!csv_file.open(QIODevice::WriteOnly | QIODevice::Text)) {
    125         appendToLog("      error opening csv file!");
    126         return;
    127     }
    128     QTextStream out(&csv_file);
    129 
    130     //open txt file
    131     QString txt_filename=file_path;
    132     txt_filename.replace(QString(".dbt"), QString(".txt"));
    133     QFile txt_file(txt_filename);
    134 
    135     if(!txt_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
    136         appendToLog("      error opening txt file!");
    137         return;
    138     }
    139 
    140     //read txt file
     96  ok_button->setEnabled(true);
     97
     98  qint64 max_file_size = 0;
     99  for (int i = 0; i < file_names->count(); i++) {
     100    QFileInfo info(file_names->at(i));
     101    if (info.size() > max_file_size) {
     102      max_file_size = info.size();
     103      csv_combo->setCurrentIndex(i +
     104                                 1); // first item of combobox is already taken
     105    }
     106  }
     107}
     108
     109void file_ui::dbt2csv(QString file_path) {
     110  hdfile_t *dbtFile = NULL;
     111  char *data;
     112  QStringList data_type;
     113
     114  QString filename =
     115      file_path.section('/', -1); // remove path for displaying on logs
     116  appendToLog(QString("converting %1 to csv").arg(filename));
     117
     118  // open csv file
     119  QString csv_filename = file_path;
     120  csv_filename.replace(QString(".dbt"), QString(".csv"));
     121  QFile csv_file(csv_filename);
     122
     123  if (!csv_file.open(QIODevice::WriteOnly | QIODevice::Text)) {
     124    appendToLog("      error opening csv file!");
     125    return;
     126  }
     127  QTextStream out(&csv_file);
     128
     129  // open txt file
     130  QString txt_filename = file_path;
     131  txt_filename.replace(QString(".dbt"), QString(".txt"));
     132  QFile txt_file(txt_filename);
     133
     134  if (!txt_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
     135    appendToLog("      error opening txt file!");
     136    return;
     137  }
     138
     139  // read txt file
     140  QTextStream txt_in(&txt_file);
     141  txt_in.readLine(); // time us
     142  txt_in.readLine(); // time ns
     143  while (1) {
     144    if (txt_in.atEnd() == true)
     145      break;
     146    QString txt_line = txt_in.readLine();
     147    data_type.append(txt_line.section(
     148        "(",
     149        -1)); // on part de la fin pour trouver la premiere parenthese ouvrante
     150    // printf("type %s\n",txt_line.section("(",-1).toLocal8Bit().constData());
     151  }
     152  txt_file.close();
     153
     154  dbtFile = open_hdfile(file_path.toLocal8Bit().data(), READ_MODE);
     155
     156  if (!dbtFile) {
     157    appendToLog("      error opening dbt file!");
     158    return;
     159  }
     160  data = (char *)malloc(dbtFile->h.DataSize);
     161  if (data == NULL) {
     162    appendToLog("      error malloc!");
     163    return;
     164  }
     165
     166  bool dataWritten = false;
     167  while (1) {
     168    road_time_t time;
     169    road_timerange_t tr = 0;
     170    int offset = 0;
     171    QTextStream csv_line;
     172
     173    if (read_hdfile(dbtFile, (void *)data, &time, &tr) == 0) {
     174      break;
     175    }
     176    dataWritten = true;
     177
     178    out << time << "," << tr;
     179    for (int i = 0; i < data_type.size(); i++) {
     180      if (data_type.at(i) == "float)") {
     181        float *value = (float *)(data + offset);
     182        offset += sizeof(float);
     183        out << "," << *value;
     184      } else if (data_type.at(i) == "int8_t)") {
     185        int8_t *value = (int8_t *)(data + offset);
     186        offset += sizeof(int8_t);
     187        float fl = (float)*value;
     188        out << "," << *value;
     189      } else {
     190        appendToLog(QString("      unhandled type: %1").arg(data_type.at(i)));
     191      }
     192    }
     193
     194    out << "\n";
     195  }
     196
     197  if (!dataWritten) {
     198    // empty file!
     199    out << "0,0"; // timr
     200    for (int i = 0; i < data_type.size(); i++) {
     201      out << ",0";
     202    }
     203    out << "\n";
     204  }
     205
     206  csv_file.close();
     207  close_hdfile(dbtFile);
     208  if (data != NULL)
     209    free(data);
     210
     211  appendToLog("      ok");
     212}
     213
     214void file_ui::clearInputText(void) {
     215  if (input_cleared == false) {
     216    input_cleared = true;
     217    input_text->clear();
     218  }
     219}
     220
     221void file_ui::save(void) {
     222  save_comment();
     223  if (csv_combo->currentIndex() != 0) {
     224    save_csv();
     225    save_txt();
     226  }
     227
     228  log_text->clear();
     229  input_cleared = true; // avoid clearing it with setText
     230  input_text->setText("add your log comment here");
     231  file_names->clear();
     232  csv_combo->clear();
     233  csv_combo->addItem(QString("(no base time)"));
     234
     235  dialog->setVisible(false);
     236  ok_button->setEnabled(false);
     237  emit finished();
     238}
     239
     240void file_ui::save_comment(void) {
     241  QString folder_name = file_names->at(0).section('/', 0, -2);
     242
     243  QString filename = folder_name + "/commentaire.txt";
     244  QFile file(filename);
     245  if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
     246    printf("file_ui::save_comment: erreur ouverture fichier %s\n",
     247           filename.toLocal8Bit().constData());
     248  QTextStream out(&file);
     249
     250  out << input_text->toPlainText();
     251  file.close();
     252}
     253
     254void file_ui::save_csv(void) {
     255  // global csv file
     256  QString folder_name = file_names->at(0).section('/', 0, -2);
     257  QString filename = folder_name + "/all_logs.csv";
     258  QFile global_file(filename);
     259  if (!global_file.open(QIODevice::WriteOnly | QIODevice::Text))
     260    printf("file_ui::save_csv: erreur ouverture fichier %s\n",
     261           filename.toLocal8Bit().constData());
     262  QTextStream out(&global_file);
     263
     264  // reference csv file
     265  filename = file_names->at(csv_combo->currentIndex() - 1);
     266  QFile ref_file(filename);
     267  // printf("file_ui::save_csv: ref %s\n",filename.toLocal8Bit().constData());
     268  if (!ref_file.open(QIODevice::ReadOnly | QIODevice::Text))
     269    printf("file_ui::save_csv: erreur ouverture ficher %s\n",
     270           filename.toLocal8Bit().constData());
     271
     272  // other csv files
     273  int j = 0;
     274  QFile m_file[file_names->count() - 1];
     275  QTextStream m_in[file_names->count() - 1];
     276  for (int i = 0; i < file_names->count(); i++) {
     277    if (i == csv_combo->currentIndex() - 1)
     278      continue;
     279    filename = file_names->at(i);
     280    m_file[j].setFileName(filename);
     281    if (!m_file[j].open(QIODevice::ReadOnly | QIODevice::Text))
     282      printf("file_ui::save_csv: erreur ouverture ficher %s\n",
     283             filename.toLocal8Bit().constData());
     284    m_in[j].setDevice(&m_file[j]);
     285    j++;
     286  }
     287
     288  // init
     289  QTextStream ref_in(&ref_file);
     290  QString m_line[file_names->count() - 1];
     291  QString m_line_prev[file_names->count() - 1];
     292  for (int i = 0; i < file_names->count() - 1; i++) {
     293    m_line[i] = m_in[i].readLine();
     294    m_line_prev[i] = m_line[i];
     295  }
     296
     297  // organize csv files in one file
     298  while (1) {
     299    if (ref_in.atEnd() == true)
     300      break;
     301    QString ref_line = ref_in.readLine();
     302
     303    qint64 ref_us = ref_line.section(',', 0, 0).toLongLong();
     304    int ref_ns = ref_line.section(',', 1, 1).toInt();
     305    // printf("ref %lld %i\n",ref_us,ref_ns);
     306
     307    for (int i = 0; i < file_names->count() - 1; i++) {
     308      qint64 csv_us = m_line[i].section(',', 0, 0).toLongLong();
     309      int csv_ns = m_line[i].section(',', 1, 1).toInt();
     310      // printf("m %lld %i\n",csv_us,csv_ns);
     311
     312      while (is_greater(ref_us, csv_us, ref_ns, csv_ns) == true) {
     313        m_line_prev[i] = m_line[i];
     314        if (m_in[i].atEnd() == true)
     315          break;
     316        m_line[i] = m_in[i].readLine();
     317        csv_us = m_line[i].section(',', 0, 0).toLongLong();
     318        csv_ns = m_line[i].section(',', 1, 1).toInt();
     319        // printf("m %lld %i\n",csv_us,csv_ns);
     320      }
     321      csv_us = m_line_prev[i].section(',', 0, 0).toLongLong();
     322      csv_ns = m_line_prev[i].section(',', 1, 1).toInt();
     323      // printf("m ok %lld %i\n",csv_us,csv_ns);
     324
     325      ref_line += "," + m_line_prev[i].section(',', 2);
     326    }
     327
     328    out << ref_line << "\n";
     329  }
     330
     331  global_file.close();
     332  ref_file.close();
     333  for (int i = 0; i < file_names->count() - 1; i++)
     334    m_file[i].close();
     335}
     336
     337void file_ui::save_txt(void) {
     338  // global txt file
     339  QString folder_name = file_names->at(0).section('/', 0, -2);
     340  QString filename = folder_name + "/all_logs.txt";
     341  QFile global_file(filename);
     342  if (!global_file.open(QIODevice::WriteOnly | QIODevice::Text))
     343    printf("file_ui::save_txt: erreur ouverture ficher %s\n",
     344           filename.toLocal8Bit().constData());
     345  QTextStream out(&global_file);
     346
     347  // reference txt file
     348  filename = file_names->at(csv_combo->currentIndex() - 1);
     349  filename.replace(QString(".csv"), QString(".txt"));
     350  QFile ref_file(filename);
     351  if (!ref_file.open(QIODevice::ReadOnly | QIODevice::Text))
     352    printf("file_ui::save_txt: erreur ouverture ficher %s\n",
     353           filename.toLocal8Bit().constData());
     354
     355  QTextStream ref_in(&ref_file);
     356  QString current_line = ref_in.readLine();
     357  int nb_lines = 1;
     358  while (current_line != NULL) {
     359    out << current_line << "\n";
     360    ;
     361    current_line = ref_in.readLine();
     362    nb_lines++;
     363  }
     364
     365  // other txt files
     366  for (int i = 0; i < file_names->count(); i++) {
     367    if (i == csv_combo->currentIndex() - 1)
     368      continue;
     369    filename = file_names->at(i);
     370    filename.replace(QString(".csv"), QString(".txt"));
     371    QFile txt_file(filename);
     372    if (!txt_file.open(QIODevice::ReadOnly | QIODevice::Text))
     373      printf("file_ui::save_txt: erreur ouverture ficher %s\n",
     374             filename.toLocal8Bit().constData());
    141375    QTextStream txt_in(&txt_file);
    142     txt_in.readLine();//time us
    143     txt_in.readLine();//time ns
    144     while(1)
    145     {
    146         if(txt_in.atEnd()==true) break;
    147         QString txt_line=txt_in.readLine();
    148         data_type.append(txt_line.section("(",-1));//on part de la fin pour trouver la premiere parenthese ouvrante
    149         //printf("type %s\n",txt_line.section("(",-1).toLocal8Bit().constData());
     376    txt_in.readLine(); // time us
     377    txt_in.readLine(); // time ns
     378    current_line = txt_in.readLine();
     379    while (current_line != NULL) {
     380      out << nb_lines << ":" << current_line.section(':', 1) << "\n";
     381      ;
     382      current_line = txt_in.readLine();
     383      nb_lines++;
    150384    }
    151385    txt_file.close();
    152 
    153     dbtFile=open_hdfile(file_path.toLocal8Bit().data(),READ_MODE);
    154 
    155     if (!dbtFile)
    156     {
    157         appendToLog("      error opening dbt file!");
    158         return;
    159     }
    160     data=(char*)malloc(dbtFile->h.DataSize);
    161     if(data==NULL)
    162     {
    163         appendToLog("      error malloc!");
    164         return;
    165     }
    166 
    167     bool dataWritten=false;
    168     while(1)
    169     {
    170         road_time_t time;
    171         road_timerange_t tr = 0;
    172         int offset=0;
    173         QTextStream csv_line;
    174 
    175         if(read_hdfile(dbtFile,(void*)data,&time,&tr)==0) {
    176             break;
    177         }
    178         dataWritten=true;
    179 
    180         out << time << "," << tr;
    181         for(int i=0;i<data_type.size();i++)
    182         {
    183             if(data_type.at(i)=="float)")
    184             {
    185                 float* value=(float*)(data+offset);
    186                 offset+=sizeof(float);
    187                 out << "," << *value;
    188             }
    189             else if(data_type.at(i)=="int8_t)")
    190             {
    191                 int8_t* value=(int8_t*)(data+offset);
    192                 offset+=sizeof(int8_t);
    193                 float fl=(float)*value;
    194                 out << "," << *value;
    195             }
    196             else
    197             {
    198                 appendToLog(QString("      unhandled type: %1").arg(data_type.at(i)));
    199             }
    200         }
    201 
    202         out << "\n";
    203     }
    204 
    205     if(!dataWritten) {
    206         //empty file!
    207         out <<  "0,0";//timr
    208         for(int i=0;i<data_type.size();i++) {
    209             out << ",0";
    210         }
    211         out << "\n";
    212     }
    213 
    214     csv_file.close();
    215     close_hdfile(dbtFile);
    216     if(data!=NULL) free(data);
    217 
    218     appendToLog("      ok");
    219 }
    220 
    221 void file_ui::clearInputText(void){
    222     if(input_cleared==false) {
    223         input_cleared=true;
    224         input_text->clear();
    225     }
    226 }
    227 
    228 void file_ui::save(void)
    229 {
    230     save_comment();
    231     if(csv_combo->currentIndex()!=0)
    232     {
    233         save_csv();
    234         save_txt();
    235     }
    236 
    237     log_text->clear();
    238     input_cleared=true;//avoid clearing it with setText
    239     input_text->setText("add your log comment here");
    240     file_names->clear();
    241     csv_combo->clear();
    242     csv_combo->addItem(QString("(no base time)"));
    243 
    244     dialog->setVisible(false);
    245     ok_button->setEnabled(false);
    246     emit finished();
    247 }
    248 
    249 void file_ui::save_comment(void)
    250 {
    251     QString folder_name=file_names->at(0).section('/', 0,-2);
    252 
    253     QString filename=folder_name+"/commentaire.txt";
    254     QFile file(filename);
    255     if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) printf("file_ui::save_comment: erreur ouverture fichier %s\n",filename.toLocal8Bit().constData());
    256     QTextStream out(&file);
    257 
    258     out<<input_text->toPlainText();
    259     file.close();
    260 }
    261 
    262 void file_ui::save_csv(void)
    263 {
    264     //global csv file
    265     QString folder_name=file_names->at(0).section('/', 0,-2);
    266     QString filename=folder_name + "/all_logs.csv" ;
    267     QFile global_file(filename);
    268     if(!global_file.open(QIODevice::WriteOnly | QIODevice::Text)) printf("file_ui::save_csv: erreur ouverture fichier %s\n",filename.toLocal8Bit().constData());
    269     QTextStream out(&global_file);
    270 
    271     //reference csv file
    272     filename=file_names->at(csv_combo->currentIndex()-1);
    273     QFile ref_file(filename);
    274     //printf("file_ui::save_csv: ref %s\n",filename.toLocal8Bit().constData());
    275     if(!ref_file.open(QIODevice::ReadOnly | QIODevice::Text)) printf("file_ui::save_csv: erreur ouverture ficher %s\n",filename.toLocal8Bit().constData());
    276 
    277     //other csv files
    278     int j=0;
    279     QFile m_file[file_names->count()-1];
    280     QTextStream m_in[file_names->count()-1];
    281     for(int i=0;i<file_names->count();i++)
    282     {
    283         if(i==csv_combo->currentIndex()-1) continue;
    284         filename=file_names->at(i);
    285         m_file[j].setFileName(filename);
    286         if(!m_file[j].open(QIODevice::ReadOnly | QIODevice::Text)) printf("file_ui::save_csv: erreur ouverture ficher %s\n",filename.toLocal8Bit().constData());
    287         m_in[j].setDevice(&m_file[j]);
    288         j++;
    289     }
    290 
    291     //init
    292     QTextStream ref_in(&ref_file);
    293     QString m_line[file_names->count()-1];
    294     QString m_line_prev[file_names->count()-1];
    295     for(int i=0;i<file_names->count()-1;i++)
    296     {
    297         m_line[i]=m_in[i].readLine();
    298         m_line_prev[i]=m_line[i];
    299     }
    300 
    301     //organize csv files in one file
    302     while(1)
    303     {
    304         if(ref_in.atEnd()==true) break;
    305         QString ref_line=ref_in.readLine();
    306 
    307         qint64 ref_us=ref_line.section(',',0,0).toLongLong();
    308         int ref_ns=ref_line.section(',',1,1).toInt();
    309         //printf("ref %lld %i\n",ref_us,ref_ns);
    310 
    311         for(int i=0;i<file_names->count()-1;i++)
    312         {
    313             qint64 csv_us=m_line[i].section(',',0,0).toLongLong();
    314             int csv_ns=m_line[i].section(',',1,1).toInt();
    315             //printf("m %lld %i\n",csv_us,csv_ns);
    316 
    317             while(is_greater(ref_us,csv_us,ref_ns,csv_ns)==true)
    318             {
    319                 m_line_prev[i]=m_line[i];
    320                 if(m_in[i].atEnd()==true) break;
    321                 m_line[i]=m_in[i].readLine();
    322                 csv_us=m_line[i].section(',',0,0).toLongLong();
    323                 csv_ns=m_line[i].section(',',1,1).toInt();
    324                 //printf("m %lld %i\n",csv_us,csv_ns);
    325             }
    326             csv_us=m_line_prev[i].section(',',0,0).toLongLong();
    327             csv_ns=m_line_prev[i].section(',',1,1).toInt();
    328             //printf("m ok %lld %i\n",csv_us,csv_ns);
    329 
    330             ref_line+="," + m_line_prev[i].section(',',2);
    331         }
    332 
    333         out<<ref_line << "\n";
    334     }
    335 
    336     global_file.close();
    337     ref_file.close();
    338     for(int i=0;i<file_names->count()-1;i++) m_file[i].close();
    339 }
    340 
    341 void file_ui::save_txt(void)
    342 {
    343     //global txt file
    344     QString folder_name=file_names->at(0).section('/', 0,-2);
    345     QString filename=folder_name + "/all_logs.txt";
    346     QFile global_file(filename);
    347     if(!global_file.open(QIODevice::WriteOnly | QIODevice::Text)) printf("file_ui::save_txt: erreur ouverture ficher %s\n",filename.toLocal8Bit().constData());
    348     QTextStream out(&global_file);
    349 
    350     //reference txt file
    351     filename=file_names->at(csv_combo->currentIndex()-1);
    352     filename.replace(QString(".csv"), QString(".txt"));
    353     QFile ref_file(filename);
    354     if(!ref_file.open(QIODevice::ReadOnly | QIODevice::Text)) printf("file_ui::save_txt: erreur ouverture ficher %s\n",filename.toLocal8Bit().constData());
    355 
    356     QTextStream ref_in(&ref_file);
    357     QString current_line=ref_in.readLine();
    358     int nb_lines=1;
    359     while(current_line!=NULL)
    360     {
    361         out<<current_line << "\n";;
    362         current_line=ref_in.readLine();
    363         nb_lines++;
    364     }
    365 
    366     //other txt files
    367     for(int i=0;i<file_names->count();i++)
    368     {
    369         if(i==csv_combo->currentIndex()-1) continue;
    370         filename=file_names->at(i);
    371         filename.replace(QString(".csv"), QString(".txt"));
    372         QFile txt_file(filename);
    373         if(!txt_file.open(QIODevice::ReadOnly | QIODevice::Text)) printf("file_ui::save_txt: erreur ouverture ficher %s\n",filename.toLocal8Bit().constData());
    374         QTextStream txt_in(&txt_file);
    375         txt_in.readLine();//time us
    376         txt_in.readLine();//time ns
    377         current_line=txt_in.readLine();
    378         while(current_line!=NULL)
    379         {
    380             out<< nb_lines << ":" << current_line.section(':',1) << "\n";;
    381             current_line=txt_in.readLine();
    382             nb_lines++;
    383         }
    384         txt_file.close();
    385 
    386     }
    387     global_file.close();
    388     ref_file.close();
    389 }
    390 
    391 
    392 bool file_ui::is_greater(qint64 ref_us,qint64 csv_us,int ref_ns,int csv_ns)
    393 {
    394     if(ref_us==csv_us)
    395     {
    396         if(ref_ns>csv_ns)
    397         {
    398             return true;
    399         }
    400         else
    401         {
    402             return false;
    403         }
    404     }
    405     if(ref_us>csv_us)
    406     {
    407         return true;
    408     }
    409     else
    410     {
    411         return false;
    412     }
    413 }
     386  }
     387  global_file.close();
     388  ref_file.close();
     389}
     390
     391bool file_ui::is_greater(qint64 ref_us, qint64 csv_us, int ref_ns, int csv_ns) {
     392  if (ref_us == csv_us) {
     393    if (ref_ns > csv_ns) {
     394      return true;
     395    } else {
     396      return false;
     397    }
     398  }
     399  if (ref_us > csv_us) {
     400    return true;
     401  } else {
     402    return false;
     403  }
     404}
Note: See TracChangeset for help on using the changeset viewer.