/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-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.
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 plus additions
- that are listed in the file LICENSE.
+ 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
*/
/*
- * Version $Id: client.cpp 4230 2007-02-21 20:07:37Z kerns $
+ * Version $Id$
*
* Clients Class
*
#include <QMenu>
#include "bat.h"
#include "clients/clients.h"
+#include "run/run.h"
Clients::Clients()
{
setupUi(this);
+ m_name = tr("Clients");
pgInitialize();
+ QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
+ thisitem->setIcon(0,QIcon(QString::fromUtf8(":images/network-server.png")));
/* mp_treeWidget, Storage Tree Tree Widget inherited from ui_client.h */
m_populated = false;
m_checkcurwidget = true;
m_closeable = false;
+ /* add context sensitive menu items specific to this classto the page
+ * selector tree. m_contextActions is QList of QActions */
+ m_contextActions.append(actionRefreshClients);
+ createContextMenu();
+ dockPage();
}
Clients::~Clients()
{
QTreeWidgetItem *clientItem, *topItem;
+ if (!m_console->preventInUseConnect())
+ return;
m_checkcurwidget = false;
mp_treeWidget->clear();
m_checkcurwidget = true;
- QStringList headerlist = (QStringList() << "Client Name" << "File Retention"
- << "Job Retention" << "AutoPrune" << "ClientId" << "Uname" );
+ QStringList headerlist = (QStringList() << tr("Client Name") << tr("File Retention")
+ << tr("Job Retention") << tr("AutoPrune") << tr("ClientId") << tr("Uname") );
topItem = new QTreeWidgetItem(mp_treeWidget);
- topItem->setText(0, "Clients");
+ topItem->setText(0, tr("Clients"));
topItem->setData(0, Qt::UserRole, 0);
topItem->setExpanded(true);
mp_treeWidget->setColumnCount(headerlist.count());
mp_treeWidget->setHeaderLabels(headerlist);
- /* This could be a log item */
- //printf("In Clients::populateTree()\n");
- foreach(QString clientName, m_console->client_list){
+ foreach (QString clientName, m_console->client_list){
clientItem = new QTreeWidgetItem(topItem);
clientItem->setText(0, clientName);
clientItem->setData(0, Qt::UserRole, 1);
/* Set up query QString and header QStringList */
QString query("");
query += "SELECT FileRetention, JobRetention, AutoPrune, ClientId, Uname"
- " FROM client"
+ " FROM Client"
" WHERE ";
query += " Name='" + clientName + "'";
query += " ORDER BY Name";
QStringList results;
/* This could be a log item */
- printf("Clients query cmd : %s\n",query.toUtf8().data());
+ if (mainWin->m_sqlDebug) {
+ Pmsg1(000, "Clients query cmd : %s\n",query.toUtf8().data());
+ }
if (m_console->sql_cmd(query, results)) {
int resultCount = results.count();
if (resultCount == 1){
}
}
}
+ /* Resize the columns */
+ for(int cnter=0; cnter<headerlist.size(); cnter++) {
+ mp_treeWidget->resizeColumnToContents(cnter);
+ }
}
/*
{
if(!m_populated) {
populateTree();
- createContextMenu();
m_populated=true;
}
}
int treedepth = previouswidgetitem->data(0, Qt::UserRole).toInt();
if (treedepth == 1){
mp_treeWidget->removeAction(actionListJobsofClient);
+ mp_treeWidget->removeAction(actionStatusClientInConsole);
+ mp_treeWidget->removeAction(actionPurgeJobs);
+ mp_treeWidget->removeAction(actionPrune);
}
}
* menu is used */
m_currentlyselected=currentwidgetitem->text(0);
mp_treeWidget->addAction(actionListJobsofClient);
+ mp_treeWidget->addAction(actionStatusClientInConsole);
+ mp_treeWidget->addAction(actionPurgeJobs);
+ mp_treeWidget->addAction(actionPrune);
}
}
}
SLOT(populateTree()));
connect(actionListJobsofClient, SIGNAL(triggered()), this,
SLOT(showJobs()));
+ connect(actionStatusClientInConsole, SIGNAL(triggered()), this,
+ SLOT(consoleStatusClient()));
+ connect(actionPurgeJobs, SIGNAL(triggered()), this,
+ SLOT(consolePurgeJobs()));
+ connect(actionPrune, SIGNAL(triggered()), this,
+ SLOT(prune()));
}
/*
*/
void Clients::showJobs()
{
- QString emptymedia("");
- mainWin->createPageJobList(emptymedia, m_currentlyselected);
+ QTreeWidgetItem *parentItem = mainWin->getFromHash(this);
+ mainWin->createPageJobList("", m_currentlyselected, "", "", parentItem);
+}
+
+/*
+ * Function responding to actionListJobsofClient which calls mainwin function
+ * to create a window of a list of jobs of this client.
+ */
+void Clients::consoleStatusClient()
+{
+ QString cmd("status client=");
+ cmd += m_currentlyselected;
+ consoleCommand(cmd);
}
/*
{
if(!m_populated) {
populateTree();
- /* add context sensitive menu items specific to this classto the page
- * selector tree. m_m_contextActions is QList of QActions, so this is
- * only done once with the first population. */
- m_contextActions.append(actionRefreshClients);
/* Create the context menu for the client tree */
- createContextMenu();
m_populated=true;
}
}
/*
- * Virtual Function to return the name for the medialist tree widget
+ * Function responding to actionPurgeJobs
*/
-void Clients::treeWidgetName(QString &name)
+void Clients::consolePurgeJobs()
{
- name = "Clients";
+ if (QMessageBox::warning(this, "Bat",
+ tr("Are you sure you want to purge ?? !!!.\n"
+"The Purge command will delete associated Catalog database records from Jobs and"
+" Volumes without considering the retention period. Purge works only on the"
+" Catalog database and does not affect data written to Volumes. This command can"
+" be dangerous because you can delete catalog records associated with current"
+" backups of files, and we recommend that you do not use it unless you know what"
+" you are doing.\n\n"
+" Is there any way I can get you to click Cancel here? You really don't want to do"
+" this\n\n"
+ "Press OK to proceed with the purge operation?"),
+ QMessageBox::Ok | QMessageBox::Cancel)
+ == QMessageBox::Cancel) { return; }
+
+ QString cmd("purge jobs client=");
+ cmd += m_currentlyselected;
+ consoleCommand(cmd);
}
+/*
+ * Function responding to actionPrune
+ */
+void Clients::prune()
+{
+ new prunePage("", m_currentlyselected);
+}