]> git.sur5r.net Git - bacula/bacula/commitdiff
This is the application of a patch from Ricardo. Includes a great qty of translation...
authorDirk H Bartley <dbartley@schupan.com>
Thu, 29 May 2008 01:19:31 +0000 (01:19 +0000)
committerDirk H Bartley <dbartley@schupan.com>
Thu, 29 May 2008 01:19:31 +0000 (01:19 +0000)
as well as some great changes to the jobplot screen.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@7051 91ce42f0-d328-0410-95d8-f526ca767f89

17 files changed:
bacula/src/qt-console/bat.pro.in
bacula/src/qt-console/bcomm/dircomm.cpp
bacula/src/qt-console/console/console.cpp
bacula/src/qt-console/jobgraphs/jobplot.cpp
bacula/src/qt-console/jobgraphs/jobplot.h
bacula/src/qt-console/joblist/joblist.cpp
bacula/src/qt-console/joblist/joblist.h
bacula/src/qt-console/mainwin.cpp
bacula/src/qt-console/mainwin.h
bacula/src/qt-console/mount/mount.cpp
bacula/src/qt-console/restore/restore.cpp
bacula/src/qt-console/restore/restoretree.cpp
bacula/src/qt-console/status/clientstat.cpp
bacula/src/qt-console/status/dirstat.cpp
bacula/src/qt-console/status/storstat.cpp
bacula/src/qt-console/util/comboutil.cpp [new file with mode: 0644]
bacula/src/qt-console/util/comboutil.h [new file with mode: 0644]

index bfb9871ffb10d7c3bd3dd7f6299ef0d32263252b..664a3ecab9384e620b044e564e67ee2650ea7831 100644 (file)
@@ -147,8 +147,8 @@ HEADERS += status/storstat.h
 SOURCES += status/storstat.cpp
 
 # Utility sources
-HEADERS += util/fmtwidgetitem.h
-SOURCES += util/fmtwidgetitem.cpp
+HEADERS += util/fmtwidgetitem.h util/comboutil.h
+SOURCES += util/fmtwidgetitem.cpp util/comboutil.cpp
 
 INSTALLS += bins
 INSTALLS += confs
index b0456456fce31a86988d95d453adf7ca3a8091ee..88fd594af125bda16d475c5bc37ab9418f066835 100644 (file)
@@ -107,11 +107,11 @@ void DirComm::connect_dir(DIRRES *dir, CONRES *cons)
 
    m_dir = dir;
    if (!m_dir) {          
-      mainWin->set_status("No Director found.");
+      mainWin->set_status( tr("No Director found.") );
       return;
    }
    if (m_sock) {
-      mainWin->set_status("Already connected.");
+      mainWin->set_status( tr("Already connected.") );
       return;
    }
 
@@ -177,7 +177,7 @@ void DirComm::connect_dir(DIRRES *dir, CONRES *cons)
                           _("Director daemon"), m_dir->address,
                           NULL, m_dir->DIRport, 0);
    if (m_sock == NULL) {
-      mainWin->set_status("Connection failed");
+     mainWin->set_status( tr("Connection failed") );
       return;
    } else {
       /* Update page selector to green to indicate that Console is connected */
@@ -289,7 +289,7 @@ void DirComm::write_dir(const char *msg)
       QApplication::setOverrideCursor(Qt::WaitCursor);
       write(msg);
    } else {
-      mainWin->set_status(" Director not connected. Click on connect button.");
+      mainWin->set_status( tr(" Director not connected. Click on connect button.") );
       mainWin->actionConnect->setIcon(QIcon(":images/disconnected.png"));
       QBrush redBrush(Qt::red);
       QTreeWidgetItem *item = mainWin->getFromHash(this);
@@ -518,10 +518,9 @@ bool DirComm::is_connectedGui()
    if (is_connected()) {
       return true;
    } else {
-      QString message("Director ");
-      message += " is curerntly disconnected\n  Please reconnect!!";
-      QMessageBox::warning(this, tr("Bat"),
-         tr(message.toUtf8().data()), QMessageBox::Ok );
+     QString message( tr("Director is currently disconnected\n  Please reconnect!"));
+     QMessageBox::warning(this, "Bat",
+         message.toUtf8().data(), QMessageBox::Ok );
       return false;
    }
 }
index b177b4ba24336628c987e3251f65489e8115e633..3d7eb2c81277db25e4308f89d8f743ae4d6ca193 100644 (file)
@@ -129,11 +129,11 @@ void Console::connect_dir()
    m_textEdit = textEdit;   /* our console screen */
 
    if (!m_dir) {          
-      mainWin->set_status("No Director found.");
+      mainWin->set_status( tr("No Director found."));
       goto bail_out;
    }
    if (m_sock) {
-      mainWin->set_status("Already connected.");
+      mainWin->set_status( tr("Already connected."));
       goto bail_out;
    }
 
@@ -187,7 +187,7 @@ void Console::connect_dir()
       if (!m_dir->tls_ctx) {
          display_textf(_("Failed to initialize TLS context for Director \"%s\".\n"),
             m_dir->name());
-         mainWin->set_status("Connection failed");
+         mainWin->set_status( tr("Connection failed") );
          goto bail_out;
       }
    }
@@ -537,7 +537,7 @@ void Console::write_dir(const char *msg)
       QApplication::setOverrideCursor(Qt::WaitCursor);
       write(msg);
    } else {
-      mainWin->set_status(" Director not connected. Click on connect button.");
+      mainWin->set_status( tr(" Director not connected. Click on connect button."));
       mainWin->actionConnect->setIcon(QIcon(":images/disconnected.png"));
       QBrush redBrush(Qt::red);
       QTreeWidgetItem *item = mainWin->getFromHash(this);
@@ -799,10 +799,8 @@ bool Console::is_connectedGui()
    if (is_connected()) {
       return true;
    } else {
-      QString message("Director ");
-      message += " is currently disconnected\n  Please reconnect!!";
-      QMessageBox::warning(this, "Bat",
-         tr(message.toUtf8().data()), QMessageBox::Ok );
+      QString message = tr("Director is currently disconnected\nPlease reconnect!");
+      QMessageBox::warning(this, "Bat", message, QMessageBox::Ok );
       return false;
    }
 }
@@ -814,27 +812,21 @@ bool Console::is_connectedGui()
 bool Console::preventInUseConnect()
 {
    if (!is_connected()) {
-      QString message("Director ");
-      message += m_dir->name();
-      message += " is currently disconnected\n  Please reconnect!!";
-      QMessageBox::warning(this, "Bat",
-         tr(message.toUtf8().data()), QMessageBox::Ok );
+      QString message = tr("Director %1 is currently disconnected\n"
+                          "Please reconnect!").arg(m_dir->name());
+      QMessageBox::warning(this, "Bat", message, QMessageBox::Ok );
       return false;
    } else if (!m_at_main_prompt){
-      QString message("Director ");
-      message += m_dir->name();
-      message += " is currently busy\n  Please complete restore or other "
-                 " operation !!  This is a limitation that will be resolved before a beta"
-                 " release.  This is currently an alpha release.";
-      QMessageBox::warning(this, "Bat",
-         tr(message.toUtf8().data()), QMessageBox::Ok );
+      QString message = tr("Director %1 is currently busy\n  Please complete "
+                          "restore or other operation!  This is a limitation "
+                          "that will be resolved before a beta release.  "
+                          "This is currently an alpha release.").arg(m_dir->name());
+      QMessageBox::warning(this, "Bat", message, QMessageBox::Ok );
       return false;
    } else if (!m_at_prompt){
-      QString message("Director ");
-      message += m_dir->name();
-      message += " is currently not at a prompt\n  Please try again!!";
-      QMessageBox::warning(this, "Bat",
-         tr(message.toUtf8().data()), QMessageBox::Ok );
+      QString message = tr("Director %1 is currently not at a prompt\n"
+                          "  Please try again!").arg(m_dir->name());
+      QMessageBox::warning(this, "Bat", message, QMessageBox::Ok );
       return false;
    } else {
       return true;
index e6763f8ec2d298daa78769f4e0bf62736094d0c6..5e50a6d3253fd6bec781de8136480279320081aa 100644 (file)
@@ -37,6 +37,7 @@
 
 #include <QtGui>
 #include "bat.h"
+#include "util/comboutil.h"
 #include "jobgraphs/jobplot.h"
 
 
@@ -76,7 +77,7 @@ JobPlotControls::JobPlotControls()
 JobPlot::JobPlot(QTreeWidgetItem *parentTreeWidgetItem, JobPlotPass &passVals)
 {
    setupUserInterface();
-   m_name = "JobPlot";
+   m_name = tr("JobPlot");
    pgInitialize(parentTreeWidgetItem);
    readSplitterSettings();
    QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
@@ -134,13 +135,13 @@ void JobPlot::reGraph()
  */
 void JobPlot::setupControls()
 {
-   QStringList graphType = QStringList() << /* "Fitted" <<*/ "Sticks" << "Lines" << "Steps" << "None";
+   QStringList graphType = QStringList() << /* tr("Fitted") <<*/ tr("Sticks")
+                                        << tr("Lines") << tr("Steps") << tr("None");
    controls->plotTypeCombo->addItems(graphType);
-   QStringList symbolType = QStringList() << "Ellipse" << "Rect" << "Diamond" << "Triangle"
-            << "DTrianle" << "UTriangle" << "LTriangle" << "RTriangle" << "Cross" << "XCross"
-            << "HLine" << "Vline" << "Star1" << "Star2" << "Hexagon" << "None";
-   controls->fileSymbolTypeCombo->addItems(symbolType);
-   controls->byteSymbolTypeCombo->addItems(symbolType);
+
+   fillSymbolCombo(controls->fileSymbolTypeCombo);
+   fillSymbolCombo(controls->byteSymbolTypeCombo);
+
    readControlSettings();
 
    controls->fileCheck->setCheckState(Qt::Checked);
@@ -152,24 +153,25 @@ void JobPlot::setupControls()
    connect(controls->byteCheck, SIGNAL(stateChanged(int)), this, SLOT(byteCheckChanged(int)));
    connect(controls->refreshButton, SIGNAL(pressed()), this, SLOT(reGraph()));
 
-   controls->clientComboBox->addItem("Any");
+   controls->clientComboBox->addItem(tr("Any"));
    controls->clientComboBox->addItems(m_console->client_list);
 
    QStringList volumeList;
    m_console->getVolumeList(volumeList);
-   controls->volumeComboBox->addItem("Any");
+   controls->volumeComboBox->addItem(tr("Any"));
    controls->volumeComboBox->addItems(volumeList);
-   controls->jobComboBox->addItem("Any");
+   controls->jobComboBox->addItem(tr("Any"));
    controls->jobComboBox->addItems(m_console->job_list);
-   controls->levelComboBox->addItem("Any");
-   controls->levelComboBox->addItems( QStringList() << "F" << "D" << "I");
-   controls->purgedComboBox->addItem("Any");
-   controls->purgedComboBox->addItems( QStringList() << "0" << "1");
-   controls->fileSetComboBox->addItem("Any");
+
+   levelComboFill(controls->levelComboBox);
+
+   boolComboFill(controls->purgedComboBox);
+
+   controls->fileSetComboBox->addItem(tr("Any"));
    controls->fileSetComboBox->addItems(m_console->fileset_list);
    QStringList statusLongList;
    m_console->getStatusList(statusLongList);
-   controls->statusComboBox->addItem("Any");
+   controls->statusComboBox->addItem(tr("Any"));
    controls->statusComboBox->addItems(statusLongList);
 
    if (m_pass.use) {
@@ -177,27 +179,15 @@ void JobPlot::setupControls()
       controls->limitSpinBox->setValue(m_pass.recordLimitSpin);
       controls->daysCheckBox->setCheckState(m_pass.daysLimitCheck);
       controls->daysSpinBox->setValue(m_pass.daysLimitSpin);
-      int jobIndex = controls->jobComboBox->findText(m_pass.jobCombo, Qt::MatchExactly); 
-      if (jobIndex != -1)
-         controls->jobComboBox->setCurrentIndex(jobIndex);
-      int clientIndex = controls->clientComboBox->findText(m_pass.clientCombo, Qt::MatchExactly);
-      if (clientIndex != -1)
-         controls->clientComboBox->setCurrentIndex(clientIndex);
-      int volumeIndex = controls->volumeComboBox->findText(m_pass.volumeCombo, Qt::MatchExactly);
-      if (volumeIndex != -1)
-         controls->volumeComboBox->setCurrentIndex(volumeIndex);
-      int filesetIndex = controls->fileSetComboBox->findText(m_pass.fileSetCombo, Qt::MatchExactly);
-      if (filesetIndex != -1)
-         controls->fileSetComboBox->setCurrentIndex(filesetIndex);
-      int purgedIndex = controls->purgedComboBox->findText(m_pass.purgedCombo, Qt::MatchExactly); 
-      if (purgedIndex != -1)
-         controls->purgedComboBox->setCurrentIndex(purgedIndex);
-      int levelIndex = controls->levelComboBox->findText(m_pass.levelCombo, Qt::MatchExactly); 
-      if (levelIndex != -1)
-         controls->levelComboBox->setCurrentIndex(levelIndex);
-      int statusIndex = controls->statusComboBox->findText(m_pass.statusCombo, Qt::MatchExactly); 
-      if (statusIndex != -1)
-         controls->statusComboBox->setCurrentIndex(statusIndex);
+
+      comboSel(controls->jobComboBox, m_pass.jobCombo);
+      comboSel(controls->clientComboBox, m_pass.clientCombo);
+      comboSel(controls->volumeComboBox, m_pass.volumeCombo);
+      comboSel(controls->fileSetComboBox, m_pass.fileSetCombo);
+      comboSel(controls->purgedComboBox, m_pass.purgedCombo);
+      comboSel(controls->levelComboBox, m_pass.levelCombo);
+      comboSel(controls->statusComboBox, m_pass.statusCombo);
+
    } else {
       /* Set Defaults for check and spin for limits */
       controls->limitCheckBox->setCheckState(mainWin->m_recordLimitCheck ? Qt::Checked : Qt::Unchecked);
@@ -225,30 +215,19 @@ void JobPlot::runQuery()
             " LEFT OUTER JOIN FileSet ON (FileSet.FileSetId=Job.FileSetId)";
 
    QStringList conditions;
-   int jobIndex = controls->jobComboBox->currentIndex();
-   if ((jobIndex != -1) && (controls->jobComboBox->itemText(jobIndex) != "Any"))
-      conditions.append("Job.Name='" + controls->jobComboBox->itemText(jobIndex) + "'");
-   int clientIndex = controls->clientComboBox->currentIndex();
-   if ((clientIndex != -1) && (controls->clientComboBox->itemText(clientIndex) != "Any"))
-      conditions.append("Client.Name='" + controls->clientComboBox->itemText(clientIndex) + "'");
+   comboCond(conditions, controls->jobComboBox, "Job.Name");
+   comboCond(conditions, controls->clientComboBox, "Client.Name");
    int volumeIndex = controls->volumeComboBox->currentIndex();
-   if ((volumeIndex != -1) && (controls->volumeComboBox->itemText(volumeIndex) != "Any")) {
+   if ((volumeIndex != -1) && (controls->volumeComboBox->itemText(volumeIndex) != tr("Any"))) {
       query += " LEFT OUTER JOIN JobMedia ON (JobMedia.JobId=Job.JobId)"
               " LEFT OUTER JOIN Media ON (JobMedia.MediaId=Media.MediaId)";
       conditions.append("Media.VolumeName='" + controls->volumeComboBox->itemText(volumeIndex) + "'");
    }
-   int fileSetIndex = controls->fileSetComboBox->currentIndex();
-   if ((fileSetIndex != -1) && (controls->fileSetComboBox->itemText(fileSetIndex) != "Any"))
-      conditions.append("FileSet.FileSet='" + controls->fileSetComboBox->itemText(fileSetIndex) + "'");
-   int purgedIndex = controls->purgedComboBox->currentIndex();
-   if ((purgedIndex != -1) && (controls->purgedComboBox->itemText(purgedIndex) != "Any"))
-      conditions.append("Job.PurgedFiles='" + controls->purgedComboBox->itemText(purgedIndex) + "'");
-   int levelIndex = controls->levelComboBox->currentIndex();
-   if ((levelIndex != -1) && (controls->levelComboBox->itemText(levelIndex) != "Any"))
-      conditions.append("Job.Level='" + controls->levelComboBox->itemText(levelIndex) + "'");
-   int statusIndex = controls->statusComboBox->currentIndex();
-   if ((statusIndex != -1) && (controls->statusComboBox->itemText(statusIndex) != "Any"))
-      conditions.append("Status.JobStatusLong='" + controls->statusComboBox->itemText(statusIndex) + "'");
+   comboCond(conditions, controls->fileSetComboBox, "FileSet.FileSet");
+   boolComboCond(conditions, controls->purgedComboBox, "Job.PurgedFiles");
+   levelComboCond(conditions, controls->levelComboBox, "Job.Level");
+   comboCond(conditions, controls->statusComboBox, "Status.JobStatusLong");
+
    /* If Limit check box For limit by days is checked  */
    if (controls->daysCheckBox->checkState() == Qt::Checked) {
       QDateTime stamp = QDateTime::currentDateTime().addDays(-controls->daysSpinBox->value());
@@ -306,10 +285,10 @@ void JobPlot::runQuery()
          row++;
       }
    } 
-   if ((controls->volumeComboBox->itemText(volumeIndex) != "Any") && (results.count() == 0)){
+   if ((controls->volumeComboBox->itemText(volumeIndex) != tr("Any")) && (results.count() == 0)){
       /* for context sensitive searches, let the user know if there were no
        *        * results */
-      QMessageBox::warning(this, tr("Bat"),
+      QMessageBox::warning(this, "Bat",
           tr("The Jobs query returned no results.\n"
          "Press OK to continue?"), QMessageBox::Ok );
    }
@@ -354,23 +333,23 @@ void JobPlot::setupUserInterface()
  */
 void JobPlot::addCurve()
 {
-   m_jobPlot->setTitle("Files and Bytes backed up");
+   m_jobPlot->setTitle(tr("Files and Bytes backed up"));
    m_jobPlot->insertLegend(new QwtLegend(), QwtPlot::RightLegend);
 
    // Set axis titles
    m_jobPlot->enableAxis(QwtPlot::yRight);
-   m_jobPlot->setAxisTitle(QwtPlot::yRight, "<-- Bytes Kb");
-   m_jobPlot->setAxisTitle(m_jobPlot->xBottom, "date of backup -->");
-   m_jobPlot->setAxisTitle(m_jobPlot->yLeft, "Number of Files -->");
+   m_jobPlot->setAxisTitle(QwtPlot::yRight, tr("<-- Bytes Kb"));
+   m_jobPlot->setAxisTitle(m_jobPlot->xBottom, tr("date of backup -->"));
+   m_jobPlot->setAxisTitle(m_jobPlot->yLeft, tr("Number of Files -->"));
    m_jobPlot->setAxisScaleDraw(QwtPlot::xBottom, new DateTimeScaleDraw());
 
    // Insert new curves
-   m_fileCurve = new QwtPlotCurve("Files");
+   m_fileCurve = new QwtPlotCurve( tr("Files") );
    m_fileCurve->setPen(QPen(Qt::red));
    m_fileCurve->setCurveType(m_fileCurve->Yfx);
    m_fileCurve->setYAxis(QwtPlot::yLeft);
 
-   m_byteCurve = new QwtPlotCurve("Bytes");
+   m_byteCurve = new QwtPlotCurve(tr("Bytes"));
    m_byteCurve->setPen(QPen(Qt::blue));
    m_byteCurve->setCurveType(m_byteCurve->Yfx);
    m_byteCurve->setYAxis(QwtPlot::yRight);
@@ -430,19 +409,19 @@ void JobPlot::addCurve()
 void JobPlot::setPlotType(QString currentText)
 {
    QwtPlotCurve::CurveStyle style = QwtPlotCurve::NoCurve;
-   if (currentText == "Fitted") {
+   if (currentText == tr("Fitted")) {
       style = QwtPlotCurve::Lines;
       m_fileCurve->setCurveAttribute(QwtPlotCurve::Fitted);
       m_byteCurve->setCurveAttribute(QwtPlotCurve::Fitted);
-   } else if (currentText == "Sticks") {
+   } else if (currentText == tr("Sticks")) {
       style = QwtPlotCurve::Sticks;
-   } else if (currentText == "Lines") {
+   } else if (currentText == tr("Lines")) {
       style = QwtPlotCurve::Lines;
       m_fileCurve->setCurveAttribute(QwtPlotCurve::Fitted);
       m_byteCurve->setCurveAttribute(QwtPlotCurve::Fitted);
-   } else if (currentText == "Steps") {
+   } else if (currentText == tr("Steps")) {
       style = QwtPlotCurve::Steps;
-   } else if (currentText == "None") {
+   } else if (currentText == tr("None")) {
       style = QwtPlotCurve::NoCurve;
    }
    m_fileCurve->setStyle(style);
@@ -450,6 +429,27 @@ void JobPlot::setPlotType(QString currentText)
    m_jobPlot->replot();
 }
 
+void JobPlot::fillSymbolCombo(QComboBox *q)
+{
+  q->addItem( tr("Ellipse"), (int)QwtSymbol::Ellipse);
+  q->addItem( tr("Rect"), (int)QwtSymbol::Rect); 
+  q->addItem( tr("Diamond"), (int)QwtSymbol::Diamond);
+  q->addItem( tr("Triangle"), (int)QwtSymbol::Triangle);
+  q->addItem( tr("DTrianle"), (int)QwtSymbol::DTriangle);
+  q->addItem( tr("UTriangle"), (int)QwtSymbol::UTriangle);
+  q->addItem( tr("LTriangle"), (int)QwtSymbol::LTriangle);
+  q->addItem( tr("RTriangle"), (int)QwtSymbol::RTriangle);
+  q->addItem( tr("Cross"), (int)QwtSymbol::Cross);
+  q->addItem( tr("XCross"), (int)QwtSymbol::XCross);
+  q->addItem( tr("HLine"), (int)QwtSymbol::HLine);
+  q->addItem( tr("Vline"), (int)QwtSymbol::VLine);
+  q->addItem( tr("Star1"), (int)QwtSymbol::Star1);
+  q->addItem( tr("Star2"), (int)QwtSymbol::Star2);
+  q->addItem( tr("Hexagon"), (int)QwtSymbol::Hexagon); 
+  q->addItem( tr("None"), (int)QwtSymbol::NoSymbol);
+}
+
+
 /*
  * slot to respond to the symbol type combo changing
  */
@@ -467,44 +467,20 @@ void JobPlot::setSymbolType(int index, int type)
    QwtSymbol sym;
    sym.setPen(QColor(Qt::black));
    sym.setSize(7);
-   if (index == 0) {
-      sym.setStyle(QwtSymbol::Ellipse);
-   } else if (index == 1) {
-      sym.setStyle(QwtSymbol::Rect);
-   } else if (index == 2) {
-      sym.setStyle(QwtSymbol::Diamond);
-   } else if (index == 3) {
-      sym.setStyle(QwtSymbol::Triangle);
-   } else if (index == 4) {
-      sym.setStyle(QwtSymbol::DTriangle);
-   } else if (index == 5) {
-      sym.setStyle(QwtSymbol::UTriangle);
-   } else if (index == 6) {
-      sym.setStyle(QwtSymbol::LTriangle);
-   } else if (index == 7) {
-      sym.setStyle(QwtSymbol::RTriangle);
-   } else if (index == 8) {
-      sym.setStyle(QwtSymbol::Cross);
-   } else if (index == 9) {
-      sym.setStyle(QwtSymbol::XCross);
-   } else if (index == 10) {
-      sym.setStyle(QwtSymbol::HLine);
-   } else if (index == 11) {
-      sym.setStyle(QwtSymbol::VLine);
-   } else if (index == 12) {
-      sym.setStyle(QwtSymbol::Star1);
-   } else if (index == 13) {
-      sym.setStyle(QwtSymbol::Star2);
-   } else if (index == 14) {
-      sym.setStyle(QwtSymbol::Hexagon);
-   }
-   if (type == 0) {
+
+   QVariant style;
+   if (0 == type) {
+      style = controls->fileSymbolTypeCombo->itemData(index);
+      sym.setStyle( (QwtSymbol::Style)style.toInt() );
       sym.setBrush(QColor(Qt::yellow));
       m_fileCurve->setSymbol(sym);
-   }
-   if (type == 1) {
+   
+   } else {
+      style = controls->byteSymbolTypeCombo->itemData(index);
+      sym.setStyle( (QwtSymbol::Style)style.toInt() );
       sym.setBrush(QColor(Qt::blue));
       m_byteCurve->setSymbol(sym);
+
    }
    m_jobPlot->replot();
 }
index 423bf57acd3c1364bca86ebbe8fd7d891f3453b7..3fc06e43a7c2fe9dbb6040fa6a64d3362b09a3ec 100644 (file)
@@ -128,6 +128,7 @@ private slots:
    void reGraph();
 
 private:
+   void fillSymbolCombo(QComboBox *q);
    void setSymbolType(int, int type);
    void addCurve();
    void writeSettings();
index c410600213881e619ef3d643e265883f41105fb2..5e5712d07d9c70da2ff1951e4c47989595b43a18 100644 (file)
@@ -41,6 +41,7 @@
 #include "jobgraphs/jobplot.h"
 #endif
 #include "util/fmtwidgetitem.h"
+#include "util/comboutil.h"
 
 /*
  * Constructor for the class
@@ -226,47 +227,26 @@ void JobList::prepareFilterWidgets()
    if (!m_populated) {
       clientComboBox->addItem(tr("Any"));
       clientComboBox->addItems(m_console->client_list);
-      int clientIndex = clientComboBox->findText(m_clientName, Qt::MatchExactly);
-      if (clientIndex != -1)
-         clientComboBox->setCurrentIndex(clientIndex);
+      comboSel(clientComboBox, m_clientName);
 
       QStringList volumeList;
       m_console->getVolumeList(volumeList);
       volumeComboBox->addItem(tr("Any"));
       volumeComboBox->addItems(volumeList);
-      int volumeIndex = volumeComboBox->findText(m_mediaName, Qt::MatchExactly);
-      if (volumeIndex != -1) {
-         volumeComboBox->setCurrentIndex(volumeIndex);
-      }
+      comboSel(volumeComboBox, m_mediaName);
+
       jobComboBox->addItem(tr("Any"));
       jobComboBox->addItems(m_console->job_list);
-      int jobIndex = jobComboBox->findText(m_jobName, Qt::MatchExactly);
-      if (jobIndex != -1) {
-         jobComboBox->setCurrentIndex(jobIndex);
-      }
+      comboSel(jobComboBox, m_jobName);
 
-      levelComboBox->addItem(tr("Any"));
-      levelComboBox->addItem(job_level_to_str(L_FULL), L_FULL);
-      levelComboBox->addItem(job_level_to_str(L_INCREMENTAL), L_INCREMENTAL);
-      levelComboBox->addItem(job_level_to_str(L_DIFFERENTIAL), L_DIFFERENTIAL);
-      levelComboBox->addItem(job_level_to_str(L_SINCE), L_SINCE);
-      levelComboBox->addItem(job_level_to_str(L_VERIFY_CATALOG), L_VERIFY_CATALOG);
-      levelComboBox->addItem(job_level_to_str(L_VERIFY_INIT), L_VERIFY_INIT);
-      levelComboBox->addItem(job_level_to_str(L_VERIFY_VOLUME_TO_CATALOG), L_VERIFY_VOLUME_TO_CATALOG);
-      levelComboBox->addItem(job_level_to_str(L_VERIFY_DISK_TO_CATALOG), L_VERIFY_DISK_TO_CATALOG);
-      levelComboBox->addItem(job_level_to_str(L_VERIFY_DATA), L_VERIFY_DATA);
-      /* levelComboBox->addItem(job_level_to_str(L_BASE), L_BASE);  base jobs ignored */ 
-
-      purgedComboBox->addItem(tr("Any"), -1);
-      purgedComboBox->addItem(tr("No"), 0);
-      purgedComboBox->addItem(tr("Yes"), 1);
+      levelComboFill(levelComboBox);
+
+      boolComboFill(purgedComboBox);
 
       fileSetComboBox->addItem(tr("Any"));
       fileSetComboBox->addItems(m_console->fileset_list);
-      int filesetIndex = fileSetComboBox->findText(m_filesetName, Qt::MatchExactly);
-      if (filesetIndex != -1) {
-         fileSetComboBox->setCurrentIndex(filesetIndex);
-      }
+      comboSel(fileSetComboBox, m_filesetName);
+
       QStringList statusLongList;
       m_console->getStatusList(statusLongList);
       statusComboBox->addItem(tr("Any"));
@@ -299,36 +279,14 @@ void JobList::fillQueryString(QString &query)
                " LEFT OUTER JOIN Media ON (JobMedia.MediaId=Media.MediaId) ";
       conditions.append("Media.VolumeName='" + m_mediaName + "'");
    }
-   int clientIndex = clientComboBox->currentIndex();
-   if (clientIndex != -1)
-      m_clientName = clientComboBox->itemText(clientIndex);
-   if (m_clientName != tr("Any")) {
-      conditions.append("Client.Name='" + m_clientName + "'");
-   }
-   int jobIndex = jobComboBox->currentIndex();
-   if (jobIndex != -1)
-      m_jobName = jobComboBox->itemText(jobIndex);
-   if ((jobIndex != -1) && (jobComboBox->itemText(jobIndex) != tr("Any"))) {
-      conditions.append("Job.Name='" + jobComboBox->itemText(jobIndex) + "'");
-   }
-   int levelIndex = levelComboBox->currentIndex();
-   if ((levelIndex != -1) && (levelComboBox->itemText(levelIndex) != tr("Any"))) {
-      conditions.append( QString("Job.Level='%1'").arg(levelComboBox->itemData(levelIndex).toChar()) );
-   }
-   int statusIndex = statusComboBox->currentIndex();
-   if ((statusIndex != -1) && (statusComboBox->itemText(statusIndex) != tr("Any"))) {
-      conditions.append("Status.JobStatusLong='" + statusComboBox->itemText(statusIndex) + "'");
-   }
-   int purgedIndex = purgedComboBox->currentIndex();
-   if (purgedIndex != -1 && purgedComboBox->itemData(purgedIndex).toInt() >= 0 ) {
-      conditions.append("Job.PurgedFiles='" + purgedComboBox->itemData(purgedIndex).toString() + "'");
-   }
-   int fileSetIndex = fileSetComboBox->currentIndex();
-   if (fileSetIndex != -1)
-      m_filesetName = fileSetComboBox->itemText(fileSetIndex);
-   if ((fileSetIndex != -1) && (fileSetComboBox->itemText(fileSetIndex) != tr("Any"))) {
-      conditions.append("FileSet.FileSet='" + fileSetComboBox->itemText(fileSetIndex) + "'");
-   }
+
+   comboCond(conditions, clientComboBox, "Client.Name");
+   comboCond(conditions, jobComboBox, "Job.Name");
+   levelComboCond(conditions, levelComboBox, "Job.Level");
+   comboCond(conditions, statusComboBox, "Status.JobStatusLong");
+   boolComboCond(conditions, purgedComboBox, "Job.PurgedFiles");
+   comboCond(conditions, fileSetComboBox, "FileSet.FileSet");
+
    /* If Limit check box For limit by days is checked  */
    if (daysCheckBox->checkState() == Qt::Checked) {
       QDateTime stamp = QDateTime::currentDateTime().addDays(-daysSpinBox->value());
@@ -448,6 +406,7 @@ void JobList::createConnections()
    connect(graphButton, SIGNAL(pressed()), this, SLOT(graphTable()));
 #else
    graphButton->setEnabled(false);
+   graphButton->setVisible(false);
 #endif
    /* for the tableItemChanged to maintain m_currentJob */
    connect(mp_tableWidget, SIGNAL(
@@ -617,9 +576,9 @@ void JobList::consoleCancelJob()
 /*
  * Graph this table
  */
-#ifdef HAVE_QWT
 void JobList::graphTable()
 {
+#ifdef HAVE_QWT
    JobPlotPass pass;
    pass.recordLimitCheck = limitCheckBox->checkState();
    pass.daysLimitCheck = daysCheckBox->checkState();
@@ -635,8 +594,8 @@ void JobList::graphTable()
    pass.use = true;
    QTreeWidgetItem* pageSelectorTreeWidgetItem = mainWin->getFromHash(this);
    new JobPlot(pageSelectorTreeWidgetItem, pass);
-}
 #endif
+}
 
 /*
  * Save user settings associated with this page
index ca73b88c11cb66114aec4c30f78a6af702ca158d..0bdebdef8788d400f15d9000baf15afc4bd7db28 100644 (file)
@@ -68,9 +68,7 @@ private slots:
    void preRestoreFromTime();
    void showLogForJob();
    void consoleCancelJob();
-#ifdef HAVE_QWT
    void graphTable();
-#endif
 
 private:
    void createConnections();
index b01a62c595faab4b281c896515d0db2d46aded3f..c8ddf00dab0a6edf3c54e7510ef944ac9b742f41 100644 (file)
@@ -83,6 +83,11 @@ MainWin::MainWin(QWidget *parent) : QMainWindow(parent)
 
    createConnections();
 
+#ifndef HAVE_QWT
+   actionJobPlot->setEnabled(false);
+   actionJobPlot->setVisible(false);
+#endif
+
    this->show();
 
    readSettings();
@@ -468,14 +473,14 @@ void MainWin::restoreButtonClicked()
    new prerestorePage();
 }
 
-#ifdef HAVE_QWT
 void MainWin::jobPlotButtonClicked()
 {
+#ifdef HAVE_QWT
    JobPlotPass pass;
    pass.use = false;
    new JobPlot(NULL, pass);
-}
 #endif
+}
 
 /*
  * The user just finished typing a line in the command line edit box
@@ -687,6 +692,9 @@ void MainWin::setPreferences()
       break;
    }
    prefs.openPlotCheckBox->setCheckState(m_openPlot ? Qt::Checked : Qt::Unchecked);
+#ifndef HAVE_QWT
+   prefs.openPlotCheckBox->setVisible(false);
+#endif
    prefs.openBrowserCheckBox->setCheckState(m_openBrowser ? Qt::Checked : Qt::Unchecked);
    prefs.openDirStatCheckBox->setCheckState(m_openDirStat ? Qt::Checked : Qt::Unchecked);
    prefs.exec();
index 81ae9758fe7a757969cc125d0b5f3fe1bc041ea5..d3b6b29dd3718d38c22cd77e5d021956340d3e54 100644 (file)
@@ -113,9 +113,7 @@ public slots:
    void estimateButtonClicked();
    void browseButtonClicked();
    void statusPageButtonClicked();
-#ifdef HAVE_QWT
    void jobPlotButtonClicked();
-#endif 
    void restoreButtonClicked();
    void undockWindowButton();
    void treeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *);
index 70073c141c21ef7fbd90a9432ef9529dd681ccfd..68326056390cdae8512d4ae84660bca24c0de10b 100644 (file)
@@ -48,8 +48,7 @@ mountDialog::mountDialog(Console *console, QString &storageName)
    setupUi(this);
    this->show();
 
-   QString labelText("Storage : ");
-   labelText += storageName;
+   QString labelText( tr("Storage : %1").arg(storageName) );
    storageLabel->setText(labelText);
 }
 
@@ -57,7 +56,7 @@ void mountDialog::accept()
 {
    QString scmd;
    if (m_storageName == "") {
-      QMessageBox::warning(this, "No Storage name", "No Storage name given",
+      QMessageBox::warning(this, tr("No Storage name"), tr("No Storage name given"),
                            QMessageBox::Ok, QMessageBox::Ok);
       return;
    }
@@ -69,10 +68,10 @@ void mountDialog::accept()
       Pmsg1(000, "sending command : %s\n",scmd.toUtf8().data());
    }
 
-   m_console->display_text("Context sensitive command :\n\n");
+   m_console->display_text( tr("Context sensitive command :\n\n"));
    m_console->display_text("****    ");
    m_console->display_text(scmd + "    ****\n");
-   m_console->display_text("Director Response :\n\n");
+   m_console->display_text(tr("Director Response :\n\n"));
 
    m_console->write_dir(scmd.toUtf8().data());
    m_console->displayToPrompt();
index a01422c04d98c93cac5ca737826fabd20edb675f..25187d9193ae7e4dfb3ae9a2db2d62904267ff5a 100644 (file)
@@ -395,8 +395,8 @@ void restorePage::unmarkButtonPushed()
       m_console->discardToPrompt();
    }
    if (count == 0) {
-      mainWin->set_status("Nothing selected, nothing done");
-      statusLine->setText("Nothing selected, nothing done");
+      mainWin->set_status(tr("Nothing selected, nothing done"));
+      statusLine->setText(tr("Nothing selected, nothing done"));
    }
 
 }
@@ -420,7 +420,7 @@ bool restorePage::cwd(const char *dir)
       Dmsg2(100, "cwd=%s msg=%s\n", m_cwd.toUtf8().data(), m_console->msg());
    } else {
       Dmsg1(000, "stat=%d\n", stat);
-      QMessageBox::critical(this, "Error", "cd command failed", QMessageBox::Ok);
+      QMessageBox::critical(this, "Error", tr("cd command failed"), QMessageBox::Ok);
    }
    m_console->discardToPrompt();
    return true;  /* ***FIXME*** return real status */
@@ -439,7 +439,7 @@ char *restorePage::get_cwd()
       Dmsg2(100, "cwd=%s msg=%s\n", m_cwd.toUtf8().data(), m_console->msg());
    } else {
       Dmsg1(000, "Something went wrong read stat=%d\n", stat);
-      QMessageBox::critical(this, "Error", ".pwd command failed", QMessageBox::Ok);
+      QMessageBox::critical(this, "Error", tr(".pwd command failed"), QMessageBox::Ok);
    }
    m_console->discardToPrompt(); 
    return m_cwd.toUtf8().data();
index ee9055109ac0addcb366c4e08bd85a929d2dcd94..8c37d650b57349d42dd07c31590a4b627e90693b 100644 (file)
@@ -174,7 +174,7 @@ void restoreTree::populateDirectoryTree()
    prBar1->setVisible(true);
    prBar1->setRange(0,taskcount);
    prBar1->setValue(0);
-   prLabel1->setText(tr("Task ") + QString("%1").arg(ontask)+ " of " + QString("%1").arg(taskcount));
+   prLabel1->setText(tr("Task %1 of %2").arg(ontask).arg(taskcount));
    prLabel1->setVisible(true);
    prBar2->setVisible(true);
    prBar2->setRange(0,0);
@@ -192,7 +192,7 @@ void restoreTree::populateDirectoryTree()
       m_prevDaysCheckState = daysCheckBox->checkState();
       updateRefresh();
       prBar1->setValue(ontask++);
-      prLabel1->setText(tr("Task ") + QString("%1").arg(ontask)+ " of " + QString("%1").arg(taskcount));
+      prLabel1->setText(tr("Task %1 of %2").arg(ontask).arg(taskcount));
       prBar2->setValue(0);
       prBar2->setRange(0,0);
       prLabel2->setText(tr("Querying Jobs"));
@@ -235,7 +235,7 @@ void restoreTree::populateDirectoryTree()
       if (mainWin->m_sqlDebug)
          Pmsg1(000, "Query cmd : %s\n", cmd.toUtf8().data());
       prBar1->setValue(ontask++);
-      prLabel1->setText(tr("Task ") + QString("%1").arg(ontask) + " of " + QString("%1").arg(taskcount));
+      prLabel1->setText(tr("Task %1 of %2").arg(ontask).arg(taskcount));
       prBar2->setValue(0);
       prBar2->setRange(0,0);
       prLabel2->setText(tr("Querying for Directories"));
@@ -278,7 +278,7 @@ void restoreTree::populateDirectoryTree()
    } else {
      QMessageBox::warning(this, "Bat",
         tr("No jobs were selected in the job query !!!.\n"
-      "Press OK to continue?"),
+      "Press OK to continue"),
       QMessageBox::Ok );
    }
    prBar1->setVisible(false);
@@ -381,7 +381,7 @@ bool restoreTree::addDirectory(QString &m_cwd, QString &newdirr)
    bool ok = true, added = false;
 
    if ((mainWin->m_miscDebug) && (m_debugTrap)) {
-      QString msg = QString(tr("In addDirectory cwd \"%1\" newdir \"%2\"\n"))
+      QString msg = QString("In addDirectory cwd \"%1\" newdir \"%2\"\n")
                     .arg(m_cwd)
                     .arg(newdir);
       Pmsg0(000, msg.toUtf8().data());
@@ -435,7 +435,7 @@ bool restoreTree::addDirectory(QString &m_cwd, QString &newdirr)
       } else {
          ok = false;
          if ((mainWin->m_miscDebug) && (m_debugTrap)) {
-            QString msg = QString(tr("In else of if parent cwd \"%1\" newdir \"%2\"\n"))
+            QString msg = QString("In else of if parent cwd \"%1\" newdir \"%2\"\n")
                  .arg(m_cwd)
                  .arg(newdir);
             Pmsg0(000, msg.toUtf8().data());
@@ -518,7 +518,7 @@ void restoreTree::directoryCurrentItemChanged(QTreeWidgetItem *item, QTreeWidget
            this, SLOT(fileTableItemChanged(QTableWidgetItem *)));
    QBrush blackBrush(Qt::black);
    QString directory = item->data(0, Qt::UserRole).toString();
-   directoryLabel->setText(tr("Present Working Directory : ") + directory);
+   directoryLabel->setText(tr("Present Working Directory: %1").arg(directory));
    int pathid = m_directoryPathIdHash.value(directory, -1);
    if (pathid != -1) {
       QString cmd =
@@ -1506,9 +1506,9 @@ void restoreTree::restoreButtonPushed()
 {
    /* Set progress bars and repaint */
    prLabel1->setVisible(true);
-   prLabel1->setText("Task 1 of 3");
+   prLabel1->setText(tr("Task 1 of 3"));
    prLabel2->setVisible(true);
-   prLabel2->setText("Processing Checked directories");
+   prLabel2->setText(tr("Processing Checked directories"));
    prBar1->setVisible(true);
    prBar1->setRange(0, 3);
    prBar1->setValue(0);
@@ -1613,8 +1613,8 @@ void restoreTree::restoreButtonPushed()
       ++diter;
    } /* while (*diter) */
    prBar1->setValue(1);
-   prLabel1->setText("Task 2 of 3");
-   prLabel2->setText("Processing Exceptions");
+   prLabel1->setText( tr("Task 2 of 3"));
+   prLabel2->setText(tr("Processing Exceptions"));
    prBar2->setRange(0, 0);
    repaint();
 
@@ -1651,8 +1651,8 @@ void restoreTree::restoreButtonPushed()
    } /* while ftera.hasNext */
    /* The progress bars for the next step */
    prBar1->setValue(2);
-   prLabel1->setText("Task 3 of 3");
-   prLabel2->setText("Filling Database Table");
+   prLabel1->setText(tr("Task 3 of 3"));
+   prLabel2->setText(tr("Filling Database Table"));
    prBar2->setRange(0, vFMCounter);
    vFMCounter = 0;
    prBar2->setValue(vFMCounter);
index e7f18e35b835175ab3d93faf52ebc07fa5e5901a..28b7caeb43f3aca6deee9a1a07d2bc2c3fb32578 100644 (file)
@@ -43,7 +43,7 @@ ClientStat::ClientStat(QString &client, QTreeWidgetItem *parentTreeWidgetItem)
 {
    m_client = client;
    setupUi(this);
-   m_name = tr("Client Status") + " " + m_client;
+   m_name = tr("Client Status %1").arg(m_client);
    m_closeable = true;
    pgInitialize(parentTreeWidgetItem);
    QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
index fce1a794c63d122b315b435158507ce84e0de3ee..a0becc182a8f3c24a5d37d54098ff92fa37fe738 100644 (file)
@@ -394,8 +394,8 @@ void DirStat::runningTableItemChanged(QTableWidgetItem * /*currentItem*/, QTable
       m_selectedJobsList.append(sitem->text());
    }
    if (m_selectedJobsList.count() > 1) {
-      actionCancelRunning->setText(QString("Cancel list of %1 Jobs").arg(m_selectedJobsList.count()));
+      actionCancelRunning->setText(tr("Cancel list of %1 Jobs").arg(m_selectedJobsList.count()));
    } else {
-      actionCancelRunning->setText("Cancel Single Job");
+      actionCancelRunning->setText(tr("Cancel Single Job"));
    }
 }
index bad5b47f2c71f38ed06c34f060ba19fbe27dbcb7..d624763359f7545bdda53c0993274a85633642e7 100644 (file)
@@ -58,7 +58,7 @@ StorStat::StorStat(QString &storage, QTreeWidgetItem *parentTreeWidgetItem)
 {
    m_storage = storage;
    setupUi(this);
-   m_name = tr("Storage Status") + " " + m_storage;
+   m_name = tr("Storage Status %1").arg(m_storage);
    m_closeable = true;
    pgInitialize(parentTreeWidgetItem);
    QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
diff --git a/bacula/src/qt-console/util/comboutil.cpp b/bacula/src/qt-console/util/comboutil.cpp
new file mode 100644 (file)
index 0000000..8d893fd
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2007-2008 Free Software Foundation Europe e.V.
+
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version two of the GNU General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of John Walker.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
+/*
+ *   Version $Id$
+ *
+ *   ComboBox helper functions
+ *
+ *   Riccardo Ghetta, May 2008
+ *
+ */ 
+
+#include <QComboBox>
+#include <QString>
+#include <QStringList>
+#include "bat.h"
+#include "comboutil.h"
+
+static const QString QS_ANY(QObject::tr("Any"));
+
+
+/* selects value val on combo, if exists */
+void comboSel(QComboBox *combo, const QString &val)
+{
+  int index = combo->findText(val, Qt::MatchExactly);
+  if (index != -1) {
+     combo->setCurrentIndex(index);
+  }
+}
+
+/* if the combo has selected something different from "Any" uses the selection
+ * to build a condition on field fldname and adds it to the condition list */
+void comboCond(QStringList &cndlist, const QComboBox *combo, const char *fldname)
+{
+   int index = combo->currentIndex();
+   if (index != -1 && combo->itemText(index) != QS_ANY) {
+      cndlist.append( QString("%1='%2'").arg(fldname).arg(combo->itemText(index)) );
+   }
+}
+
+
+/* boolean combo (yes/no) */
+void boolComboFill(QComboBox *combo)
+{
+   combo->addItem(QS_ANY, -1);
+   combo->addItem(QObject::tr("No"), 0);
+   combo->addItem(QObject::tr("Yes"), 1);
+}
+
+void boolComboCond(QStringList &cndlist, const QComboBox *combo, const char *fldname)
+{
+   int index = combo->currentIndex();
+   if (index != -1 && combo->itemData(index).toInt() >= 0 ) {
+      QString cnd = combo->itemData(index).toString();
+      cndlist.append( QString("%1='%2'").arg(fldname).arg(cnd) );
+   }
+}
+
+/* backup level combo */
+void levelComboFill(QComboBox *combo)
+{
+   combo->addItem(QS_ANY);
+   combo->addItem(job_level_to_str(L_FULL), L_FULL);
+   combo->addItem(job_level_to_str(L_INCREMENTAL), L_INCREMENTAL);
+   combo->addItem(job_level_to_str(L_DIFFERENTIAL), L_DIFFERENTIAL);
+   combo->addItem(job_level_to_str(L_SINCE), L_SINCE);
+   combo->addItem(job_level_to_str(L_VERIFY_CATALOG), L_VERIFY_CATALOG);
+   combo->addItem(job_level_to_str(L_VERIFY_INIT), L_VERIFY_INIT);
+   combo->addItem(job_level_to_str(L_VERIFY_VOLUME_TO_CATALOG), L_VERIFY_VOLUME_TO_CATALOG);
+   combo->addItem(job_level_to_str(L_VERIFY_DISK_TO_CATALOG), L_VERIFY_DISK_TO_CATALOG);
+   combo->addItem(job_level_to_str(L_VERIFY_DATA), L_VERIFY_DATA);
+   /* combo->addItem(job_level_to_str(L_BASE), L_BASE);  base jobs ignored */ 
+}
+
+void levelComboCond(QStringList &cndlist, const QComboBox *combo, const char *fldname)
+{
+   int index = combo->currentIndex();
+   if (index != -1 && combo->itemText(index) != QS_ANY ) {
+      QString cnd = combo->itemData(index).toChar();
+      cndlist.append( QString("%1='%2'").arg(fldname).arg(cnd) );
+   }
+}
+
diff --git a/bacula/src/qt-console/util/comboutil.h b/bacula/src/qt-console/util/comboutil.h
new file mode 100644 (file)
index 0000000..c9e9d86
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _COMBOUTIL_H_
+#define _COMBOUTIL_H_
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2007-2008 Free Software Foundation Europe e.V.
+
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version two of the GNU General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of John Walker.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
+/*
+ *   Version $Id$
+ *
+ *   Combobox helpers - Riccardo Ghetta, May 2008 
+ */
+
+class QComboBox;
+class QString;
+class QStringList;
+
+/* selects value val on combo, if exists */
+void comboSel(QComboBox *combo, const QString &val);
+
+/* if the combo has selected something different from "Any" uses the selection
+ * to build a condition on field fldname and adds it to the condition list */
+void comboCond(QStringList &cndlist, const QComboBox *combo, const char *fldname);
+
+/* these helpers are used to give an uniform content to common combos.
+ * There are two routines per combo type:
+ * - XXXXComboFill fills the combo with values.
+ * - XXXXComboCond checks the combo and, if selected adds a condition
+ *   on the field fldName to the list of conditions cndList
+ */
+
+/* boolean combo (yes/no) */
+void boolComboFill(QComboBox *combo);
+void boolComboCond(QStringList &cndlist, const QComboBox *combo, const char *fldname);
+
+/* backup level combo */
+void levelComboFill(QComboBox *combo);
+void levelComboCond(QStringList &cndlist, const QComboBox *combo, const char *fldname);
+
+#endif /* _COMBOUTIL_H_ */