/*
Bacula® - The Network Backup Solution
- Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+ 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.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
DirStat::DirStat()
{
setupUi(this);
- m_name = "Director Status";
+ m_name = tr("Director Status");
m_closeable = true;
pgInitialize();
QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
- thisitem->setIcon(0,QIcon(QString::fromUtf8(":images/joblog.png")));
+ thisitem->setIcon(0,QIcon(QString::fromUtf8(":images/status.png")));
m_cursor = new QTextCursor(textEdit->document());
readSettings();
dockPage();
m_timer = new QTimer(this);
QWidget::connect(m_timer, SIGNAL(timeout()), this, SLOT(timerTriggered()));
- //m_timer->start(mainWin->m_checkMessagesInterval*1000);
- m_timer->start(10*1000);
+ m_timer->start(mainWin->m_refreshStatusDirInterval*1000);
+
+ createConnections();
+ setCurrent();
}
void DirStat::getFont()
void DirStat::timerTriggered()
{
bool iscurrent = mainWin->stackedWidget->currentIndex() == mainWin->stackedWidget->indexOf(this);
- if ((isDocked() && iscurrent) || (!isDocked())) {
+ if (((isDocked() && iscurrent) || (!isDocked())) && mainWin->m_refreshStatusDir) {
if (m_console->is_ready())
populateAll();
}
void DirStat::populateHeader()
{
QString command = QString(".status dir header");
+ if (mainWin->m_commandDebug)
+ Pmsg1(000, "sending command : %s\n",command.toUtf8().data());
QStringList results;
textEdit->clear();
void DirStat::populateTerminated()
{
QString command = QString(".status dir terminated");
+ if (mainWin->m_commandDebug)
+ Pmsg1(000, "sending command : %s\n",command.toUtf8().data());
QStringList results;
QBrush blackBrush(Qt::black);
terminatedTable->clear();
QStringList headerlist = (QStringList()
- << "Job Id" << "Job Level" << "Job Files" << "Job Bytes" << "Job Status"
- << "Job Time" << "Job Name");
+ << tr("Job Id") << tr("Job Level") << tr("Job Files")
+ << tr("Job Bytes") << tr("Job Status") << tr("Job Time")
+ << tr("Job Name"));
QStringList flaglist = (QStringList()
<< "R" << "L" << "R" << "R" << "LC"
<< "L" << "L");
p_tableitem->setFlags(0);
if (flaglist[column].contains("R"))
p_tableitem->setTextAlignment(Qt::AlignRight);
- if (flaglist[column].contains("C"))
+ if (flaglist[column].contains("C")) {
if (field == "OK")
p_tableitem->setBackground(Qt::green);
else
p_tableitem->setBackground(Qt::red);
- terminatedTable->setItem(row, column, p_tableitem);
+ }
+ terminatedTable->setItem(results.size() - row - 1, column, p_tableitem);
column += 1;
}
row += 1;
void DirStat::populateScheduled()
{
QString command = QString(".status dir scheduled");
+ if (mainWin->m_commandDebug)
+ Pmsg1(000, "sending command : %s\n",command.toUtf8().data());
QStringList results;
QBrush blackBrush(Qt::black);
scheduledTable->clear();
QStringList headerlist = (QStringList()
- << "Job Level" << "Job Type" << "Priority" << "Job Time" << "Job Name" << "Volume");
+ << tr("Job Level") << tr("Job Type") << tr("Priority") << tr("Job Time")
+ << tr("Job Name") << tr("Volume"));
QStringList flaglist = (QStringList()
<< "L" << "L" << "R" << "L" << "L" << "L");
void DirStat::populateRunning()
{
QString command = QString(".status dir running");
+ if (mainWin->m_commandDebug)
+ Pmsg1(000, "sending command : %s\n",command.toUtf8().data());
QStringList results;
QBrush blackBrush(Qt::black);
runningTable->clear();
QStringList headerlist = (QStringList()
- << "Job Id" << "Job Level" << "Job Data" << "Job Info");
+ << tr("Job Id") << tr("Job Level") << tr("Job Data") << tr("Job Info"));
runningTable->setColumnCount(headerlist.size());
runningTable->setHorizontalHeaderLabels(headerlist);
field = field.trimmed(); /* strip leading & trailing spaces */
p_tableitem = new QTableWidgetItem(field, 1);
p_tableitem->setForeground(blackBrush);
- p_tableitem->setFlags(0);
+ p_tableitem->setFlags(Qt::ItemIsSelectable);
runningTable->setItem(row, column, p_tableitem);
column += 1;
}
*/
void DirStat::createConnections()
{
+ connect(actionRefresh, SIGNAL(triggered()), this,
+ SLOT(populateAll()));
+ connect(actionCancelRunning, SIGNAL(triggered()), this,
+ SLOT(consoleCancelJob()));
+ connect(actionDisableScheduledJob, SIGNAL(triggered()), this,
+ SLOT(consoleDisableJob()));
+ connect(runningTable, SIGNAL(
+ currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)),
+ this, SLOT(runningTableItemChanged(QTableWidgetItem *, QTableWidgetItem *)));
+
+ scheduledTable->setContextMenuPolicy(Qt::ActionsContextMenu);
+ scheduledTable->addAction(actionRefresh);
+ scheduledTable->addAction(actionDisableScheduledJob);
+ terminatedTable->setContextMenuPolicy(Qt::ActionsContextMenu);
+ terminatedTable->addAction(actionRefresh);
+ runningTable->setContextMenuPolicy(Qt::ActionsContextMenu);
+ runningTable->addAction(actionRefresh);
+ runningTable->addAction(actionCancelRunning);
}
/*
splitter->restoreState(settings.value(m_splitText).toByteArray());
settings.endGroup();
}
+
+/*
+ * Cancel a running job
+ */
+void DirStat::consoleCancelJob()
+{
+ foreach( QString job, m_selectedJobsList )
+ {
+ QString cmd("cancel jobid=");
+ cmd += job;
+ consoleCommand(cmd);
+ }
+}
+
+/*
+ * Disable a scheduled Job
+ */
+void DirStat::consoleDisableJob()
+{
+ int currentrow = scheduledTable->currentRow();
+ QTableWidgetItem *item = scheduledTable->item(currentrow, 4);
+ if (item) {
+ QString text = item->text();
+ QString cmd("disable job=\"");
+ cmd += text + '"';
+ consoleCommand(cmd);
+ }
+}
+/*
+ * Function to fill m_selectedJobsList with selected values
+ */
+void DirStat::runningTableItemChanged(QTableWidgetItem * /*currentItem*/, QTableWidgetItem * /*previousItem*/)
+{
+ QList<int> rowList;
+ QList<QTableWidgetItem *> sitems = runningTable->selectedItems();
+ foreach (QTableWidgetItem *sitem, sitems) {
+ int row = sitem->row();
+ if (!rowList.contains(row)) {
+ rowList.append(row);
+ }
+ }
+
+ m_selectedJobsList.clear();
+ foreach(int row, rowList) {
+ QTableWidgetItem * sitem = runningTable->item(row, 0);
+ m_selectedJobsList.append(sitem->text());
+ }
+ if (m_selectedJobsList.count() > 1) {
+ actionCancelRunning->setText(tr("Cancel list of %1 Jobs").arg(m_selectedJobsList.count()));
+ } else {
+ actionCancelRunning->setText(tr("Cancel Single Job"));
+ }
+}