]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/qt-console/mainwin.cpp
04d666287e0f26cf26b3c1a98d5f02b9cd9deb15
[bacula/bacula] / bacula / src / qt-console / mainwin.cpp
1 /*
2    Bacula® - The Network Backup Solution
3
4    Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
5
6    The main author of Bacula is Kern Sibbald, with contributions from
7    many others, a complete list can be found in the file AUTHORS.
8    This program is Free Software; you can redistribute it and/or
9    modify it under the terms of version two of the GNU General Public
10    License as published by the Free Software Foundation plus additions
11    that are listed in the file LICENSE.
12
13    This program is distributed in the hope that it will be useful, but
14    WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16    General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21    02110-1301, USA.
22
23    Bacula® is a registered trademark of John Walker.
24    The licensor of Bacula is the Free Software Foundation Europe
25    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
26    Switzerland, email:ftf@fsfeurope.org.
27 */
28
29 /*
30  *  Main Window control for bat (qt-console)
31  *
32  *   Kern Sibbald, January MMVI
33  *
34  */ 
35
36 #include "bat.h"
37
38 MainWin::MainWin(QWidget *parent) : QMainWindow(parent)
39 {
40    mainWin = this;
41    setupUi(this);                     /* Setup UI defined by main.ui (designer) */
42
43    m_console = new Console(stackedWidget);
44    stackedWidget->setCurrentIndex(0);
45
46    lineEdit->setFocus();
47
48    createConnections();
49
50    this->show();
51
52    readSettings();
53
54    m_console->connect();
55 }
56
57
58 void MainWin::createConnections()
59 {
60    /* Connect signals to slots */
61    connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(input_line()));
62    connect(actionAbout_bat, SIGNAL(triggered()), this, SLOT(about()));
63
64    connect(treeWidget, SIGNAL(itemActivated(QTreeWidgetItem *, int)), this, 
65            SLOT(treeItemClicked(QTreeWidgetItem *, int)));
66    connect(treeWidget, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, 
67            SLOT(treeItemClicked(QTreeWidgetItem *, int)));
68    connect(treeWidget, SIGNAL(itemPressed(QTreeWidgetItem *, int)), this, 
69            SLOT(treeItemClicked(QTreeWidgetItem *, int)));
70    connect(treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, 
71            SLOT(treeItemDoubleClicked(QTreeWidgetItem *, int)));
72
73    connect(actionQuit, SIGNAL(triggered()), app, SLOT(closeAllWindows()));
74    connect(actionConnect, SIGNAL(triggered()), m_console, SLOT(connect()));
75    connect(actionStatusDir, SIGNAL(triggered()), m_console, SLOT(status_dir()));
76    connect(actionSelectFont, SIGNAL(triggered()), m_console, SLOT(set_font()));
77 }
78
79 /* 
80  * Reimplementation of QWidget closeEvent virtual function   
81  */
82 void MainWin::closeEvent(QCloseEvent *event)
83 {
84    /* ***FIXME*** close any open sockets */
85    writeSettings();
86    m_console->writeSettings();
87    event->accept();
88 }
89
90 void MainWin::writeSettings()
91 {
92    QSettings settings("bacula.org", "bat");
93
94    settings.beginGroup("MainWin");
95    settings.setValue("winSize", size());
96    settings.setValue("winPos", pos());
97    settings.endGroup();
98 }
99
100 void MainWin::readSettings()
101
102    QSettings settings("bacula.org", "bat");
103
104    settings.beginGroup("MainWin");
105    resize(settings.value("winSize", QSize(1041, 801)).toSize());
106    move(settings.value("winPos", QPoint(200, 150)).toPoint());
107    settings.endGroup();
108 }
109
110 void MainWin::treeItemClicked(QTreeWidgetItem *item, int column)
111 {
112    (void)column;
113    int index = item->text(1).toInt();
114    if (index >= 0 && index < 2) {
115       stackedWidget->setCurrentIndex(index);
116    }
117 }
118
119 /*
120  * ***FIXME***
121  * If item is a Console, then connect it
122  */
123 void MainWin::treeItemDoubleClicked(QTreeWidgetItem *item, int column)
124 {
125    (void)column;
126    int index = item->text(1).toInt();
127    /* ***FIXME**** make this automatic */
128    if (index >= 0 && index < 2) {
129       stackedWidget->setCurrentIndex(index);
130    }
131 }
132
133
134
135 /*
136  * The user just finished typing a line in the command line edit box
137  */
138 void MainWin::input_line()
139 {
140    QString cmdStr = lineEdit->text();    /* Get the text */
141    lineEdit->clear();                    /* clear the lineEdit box */
142    if (m_console->is_connected()) {
143       m_console->set_text(cmdStr + "\n");
144       m_console->write_dir(cmdStr.toUtf8().data());         /* send to dir */
145    } else {
146       set_status("Director not connected. Click on connect button.");
147    }
148 }
149
150
151 void MainWin::about()
152 {
153    QMessageBox::about(this, tr("About bat"),
154             tr("<br><h2>bat 0.1</h2>"
155             "<p>Copyright &copy; " BYEAR " Free Software Foundation Europe e.V."
156             "<p>The <b>bat</b> is an administrative console"
157                " interface to the Director."));
158 }
159
160 void MainWin::set_statusf(const char *fmt, ...)
161 {
162    va_list arg_ptr;
163    char buf[1000];
164    int len;
165    va_start(arg_ptr, fmt);
166    len = bvsnprintf(buf, sizeof(buf), fmt, arg_ptr);
167    va_end(arg_ptr);
168    set_status(buf);
169 // set_scroll_bar_to_end();
170 }
171
172 void MainWin::set_status_ready()
173 {
174    set_status("Ready");
175 // set_scroll_bar_to_end();
176 }
177
178 void MainWin::set_status(const char *buf)
179 {
180    statusBar()->showMessage(buf);
181 // ready = false;
182 }