#include "util.h" #include "csvwriter.h" #include #include #include // Supported range from microseconds to seconds // min:sec to hours::min::sec QString msfloatToHumanReadableString(float ms) { QString unit; float val; int deci = 2; if (ms < 1.0f) { val = ms * 1000.f; //result = QString::asprintf("%0.3f", ms * 1000.0f); unit = u8"μs"; } else if (ms >= 1000.0) { val = ms / 1000.0f; unit = "s"; if (val >= 60.0) { int secs = val; int min = secs / 60.0; secs -= min * 60; if (min >= 60) { int hour = min / 60; min -= hour * 60; return QString::asprintf("%d:%02d:%02d", hour, min, secs); } else { return QString::asprintf("%02d:%02d", min, secs); } } } else { val = ms; unit = "ms"; } // if (val >= 1000.f) { // deci = 0; // } // else if (val >= 100.f) { deci = 0; } else if (val >= 10.f) { deci = 1; } QString result = QString::asprintf("%0.*f", deci, val); return result + unit; } void copySelectionToClipboard(const QTableView *view) { //QAbstractItemModel * model = resultModel; //view->model(); QItemSelectionModel * selection = view->selectionModel(); QModelIndexList selectedIndexes = selection->selectedIndexes(); if (selectedIndexes.count() > 0) { QString clipboard_string; QTextStream out(&clipboard_string, QIODevice::WriteOnly); CsvWriter csv(&out); csv.setSeperator('\t'); csv.setQuote('"'); int previous_row = selectedIndexes[0].row(); // for (int i = 0; i < selectedIndexes.count(); ++i) { // QModelIndex current = selectedIndexes[i]; for (auto current : selectedIndexes) { if (current.row() > previous_row) { csv.nextRow(); previous_row = current.row(); } QString display_text = current.data(Qt::DisplayRole).toString(); csv.writeField(display_text); } out.flush(); QApplication::clipboard()->setText(clipboard_string); } }