From 87c123e398a2e5824cb527e677f11a20238b645c Mon Sep 17 00:00:00 2001 From: Eric Bollengier Date: Tue, 11 Aug 2009 11:13:24 +0200 Subject: [PATCH] bat: Make new autochanger content working --- bacula/src/qt-console/storage/content.cpp | 91 +++++++++++++---------- bacula/src/qt-console/storage/content.ui | 3 - 2 files changed, 51 insertions(+), 43 deletions(-) diff --git a/bacula/src/qt-console/storage/content.cpp b/bacula/src/qt-console/storage/content.cpp index 4c54362a3a..8c42aedd48 100644 --- a/bacula/src/qt-console/storage/content.cpp +++ b/bacula/src/qt-console/storage/content.cpp @@ -48,8 +48,6 @@ Content::Content(QString storage) m_closeable = true; m_currentStorage = storage; - populateContent(); - dockPage(); setCurrent(); } @@ -64,64 +62,76 @@ void Content::populateContent() time_t t; struct tm tm; - m_populated = true; - m_firstpopulation = false; - Freeze frz(*tableContent); /* disable updating*/ - tableContent->clearContents(); - QStringList results_all; QString cmd("status slots drive=0 storage=\"" + m_currentStorage + "\""); - m_console->dir_cmd(cmd, results_all); - // skip non list messages - QStringList results = results_all.filter(QRegExp("[0-9]+\\|")); - Pmsg1(0, "count=%i\n", results.size()); + + Freeze frz(*tableContent); /* disable updating*/ + tableContent->clearContents(); + + // take only valid records + QStringList results = results_all.filter(QRegExp("^[0-9]+\\|")); tableContent->setRowCount(results.size()); - int row = results.size(); -// tableContent->setColumnCount(8); - int col, i; - foreach (QString resultline, results){ - QStringList fieldlist = resultline.split("|"); - col=0; - i=0; + QString resultline; + QStringList fieldlist; + int row = 0; + foreach (resultline, results) { + fieldlist = resultline.split("|"); if (fieldlist.size() < 9) continue; /* some fields missing, ignore row */ - Pmsg2(0, "row=%i line=%s\n", row, resultline.toUtf8().data()); - - TableItemFormatter slotitem(*tableContent, row--); - - slotitem.setNumericFld(col++, fieldlist[i++]); // Slot - - if (fieldlist[i++] != "") { // skip "Real Slot" - slotitem.setTextFld(col++, fieldlist[i++]); // Volume - slotitem.setBytesFld(col++, fieldlist[i++]); // Bytes - slotitem.setVolStatusFld(col++, fieldlist[i++]); // Status - slotitem.setTextFld(col++, fieldlist[i++]); // MediaType - slotitem.setTextFld(col++, fieldlist[i++]); // Pool - - if (fieldlist[i].toInt() > 0) { - t = fieldlist[i++].toInt(); - localtime_r(&t, &tm); + int index=0; + QStringListIterator fld(fieldlist); + TableItemFormatter slotitem(*tableContent, row); + + /* Slot */ + slotitem.setNumericFld(index++, fld.next()); + + /* Real Slot */ + if (fld.next() != "") { + + /* Volume */ + slotitem.setTextFld(index++, fld.next()); + + /* Bytes */ + slotitem.setBytesFld(index++, fld.next()); + + /* Status */ + slotitem.setVolStatusFld(index++, fld.next()); + + /* MediaType */ + slotitem.setTextFld(index++, fld.next()); + + /* Pool */ + slotitem.setTextFld(index++, fld.next()); + + t = fld.next().toInt(); + if (t > 0) { + /* LastW */ + localtime_r(&t, &tm); strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &tm); - slotitem.setTextFld(col++, QString(buf)); // LastWritten + slotitem.setTextFld(index++, QString(buf)); - t = fieldlist[i++].toInt(); - localtime_r(&t, &tm); + /* Expire */ + t = fld.next().toInt(); + localtime_r(&t, &tm); strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &tm); - slotitem.setTextFld(col++, QString(buf)); // Expire + slotitem.setTextFld(index++, QString(buf)); } } + row++; } - tableContent->resizeColumnsToContents(); - tableContent->verticalHeader()->hide(); + tableContent->verticalHeader()->hide(); tableContent->sortByColumn(0, Qt::AscendingOrder); tableContent->setSortingEnabled(true); + tableContent->resizeColumnsToContents(); + tableContent->resizeRowsToContents(); + /* make read only */ int rcnt = tableContent->rowCount(); int ccnt = tableContent->columnCount(); for(int r=0; r < rcnt; r++) { @@ -132,6 +142,7 @@ void Content::populateContent() } } } + m_populated = true; tableTray->verticalHeader()->hide(); tableDrive->verticalHeader()->hide(); diff --git a/bacula/src/qt-console/storage/content.ui b/bacula/src/qt-console/storage/content.ui index 8962ff63fe..ad6c540f32 100644 --- a/bacula/src/qt-console/storage/content.ui +++ b/bacula/src/qt-console/storage/content.ui @@ -248,9 +248,6 @@ QAbstractItemView::SelectRows - - true - 0 -- 2.39.5