Billing program for the appliance repair company Seoane.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 429 lines 15 kB view raw
1#include "MainWindow.h" 2#include "../Negocio/Factura.h" 3#include "NuevoClienteDialog.h" 4#include "NuevoArticuloDialog.h" 5#include "NuevaFacturaDialog.h" 6#include "NuevoPresupuestoDialog.h" 7#include "ListarClientes.h" 8#include "BuscarFacturaDialog.h" 9#include "CambiarIvaDialog.h" 10#include <QtGui> 11#include "ListarFacturas.h" 12#include "ListarPresupuestos.h" 13#include "ListarArticulos.h" 14#include <list> 15#include <iostream> 16#include <QThread> 17#include "BuscarClienteDialog.h" 18#include "BuscarArticuloDialog.h" 19#include "BuscarPresupuestoDialog.h" 20#include "ConfigurarImpresora.h" 21#include <QTextDocument> 22#include "VisorAyuda.h" 23#include "imprimirsobrecliente.h" 24 25using namespace std; 26/* 27template<class A, class B> class Conversion { 28 typedef char S_True; 29 class S_False {char dummy[2];} 30 static A CrearInstancia(); 31 static S_True Test(B);static S_False Test(�); 32public: 33 enum { 34 existe = ( sizeof(Test(CrearInstancia())) == sizeof(S_True) ) 35 }; 36}; 37*/ 38void MainThread::setPadre(QWorkspace* parent) { 39 mw = parent; 40} 41void MainThread::run() { 42 while (true) { 43 usleep(500000); 44 /** 45 * Actualizador de listados abiertos. 46 */ 47 QWidgetList windows = mw->windowList(); 48 if (windows.isEmpty()) continue; 49 50 for (int i = 0; i < windows.size(); ++i) { 51 QWidget * child = windows.at(i); 52 ListarArticulos *la = dynamic_cast<ListarArticulos *>( child ); 53 if (la != 0) { 54 /*El hijo es de tipo Listar Articulos. */ 55 la->actualizar(); 56 } 57 ListarFacturas *lf = dynamic_cast<ListarFacturas *>( child ); 58 if (lf != 0) { 59 /*El hijo es de tipo Listar Facturas. */ 60 lf->actualizar(); 61 } 62 ListarPresupuestos *lp = dynamic_cast<ListarPresupuestos *>(child); 63 if (lp != 0) { 64 /*El hijo es de tipo Listar Presupuestos. */ 65 lp->actualizar(); 66 } 67 ListarClientes *lc = dynamic_cast<ListarClientes *>(child); 68 if (lc != 0) { 69 /*El hijo es de tipo Listar Clientes*/ 70 lc->actualizar(); 71 } 72 } 73 } 74} 75 76 77MainWindow::MainWindow(CapaNegocio * const cn, QMainWindow *parent) : QMainWindow(parent) 78{ 79 workspace = new QWorkspace; 80 81 setWindowIcon(QIcon("Gui/images/icono.ico")); 82 workspace->setBackground(QBrush(QImage("Gui/images/textura.png"))); 83 setCentralWidget(workspace); 84 85 capaNegocio = cn; 86 87 windowMapper = new QSignalMapper(this); 88 connect(windowMapper, SIGNAL(mapped(QWidget *)), workspace, SLOT(setActiveWindow(QWidget *))); 89 90 connect(workspace, SIGNAL(windowActivated(QWidget *)), this, SLOT(updateMenus())); 91 92 createActions(); 93 createMenus(); 94 createToolBar(); 95 createStatusBar(); 96 97 actualizador = new MainThread(); 98 actualizador->setPadre(workspace); 99 actualizador->start(); 100 101 setWindowTitle(tr("Seoane")); 102} 103 104MainWindow::~MainWindow() 105{ 106 actualizador->quit(); 107} 108//Acciones del menu facturas 109void MainWindow::listarFacturas() { 110 ListarFacturas *lf = new ListarFacturas(capaNegocio, workspace); 111 workspace->addWindow(lf); 112 lf->show(); 113 statusBar()->showMessage(tr("Total Facturas: %1").arg(capaNegocio->getTotalFacturas())); 114} 115void MainWindow::nuevaFactura() { 116 NuevaFacturaDialog *nfd = new NuevaFacturaDialog(capaNegocio, workspace); 117 workspace->addWindow(nfd); 118 nfd->show(); 119 statusBar()->showMessage(tr("Nueva factura.")); 120} 121 122void MainWindow::buscarFactura() { 123 BuscarFacturaDialog *bfd = new BuscarFacturaDialog(capaNegocio, workspace); 124 workspace->addWindow(bfd); 125 bfd->show(); 126} 127 128//Acciones del menu presupuestos 129void MainWindow::listarPresupuestos() { 130 ListarPresupuestos *lp = new ListarPresupuestos(capaNegocio, workspace); 131 workspace->addWindow(lp); 132 lp->show(); 133 statusBar()->showMessage(tr("Total Presupuestos: %1").arg(capaNegocio->getTotalPresupuestos())); 134} 135 136 137void MainWindow::buscarPresupuestos() { 138 BuscarPresupuestoDialog *bfd = new BuscarPresupuestoDialog(capaNegocio, workspace); 139 workspace->addWindow(bfd); 140 bfd->show(); 141} 142 143 144void MainWindow::nuevoPresupuestos() { 145 NuevoPresupuestoDialog *nfd = new NuevoPresupuestoDialog(capaNegocio, workspace); 146 workspace->addWindow(nfd); 147 nfd->show(); 148 statusBar()->showMessage(tr("Nuevo presupuesto.")); 149} 150 151 152//Acciones del menu articulos 153void MainWindow::altaArticulos() { 154 NuevoArticuloDialog *aad = new NuevoArticuloDialog(capaNegocio,workspace); 155 workspace->addWindow(aad); 156 aad->show(); 157} 158 159void MainWindow::buscarArticulos() { 160 BuscarArticuloDialog* bcd = new BuscarArticuloDialog(capaNegocio,workspace); 161 workspace->addWindow(bcd); 162 bcd->show(); 163} 164 165void MainWindow::listarArticulos() { 166 ListarArticulos *la = new ListarArticulos(capaNegocio, workspace); 167 workspace->addWindow(la); 168 la->show(); 169 statusBar()->showMessage(tr("Total Articulos: %1").arg(capaNegocio->getTotalArticulos())); 170} 171 172//Acciones del menu clientes 173void MainWindow::nuevoCliente(){ 174 NuevoClienteDialog *ncd = new NuevoClienteDialog(capaNegocio,workspace); 175 workspace->addWindow(ncd); 176 ncd->show(); 177} 178void MainWindow::buscarCliente(){ 179 BuscarClienteDialog* bcd = new BuscarClienteDialog(capaNegocio,workspace); 180 workspace->addWindow(bcd); 181 bcd->show(); 182} 183void MainWindow::listarCliente(){ 184 ListarClientes *lc = new ListarClientes(capaNegocio, workspace); 185 workspace->addWindow(lc); 186 lc->show(); 187 statusBar()->showMessage(tr("Total Clientes: %1").arg(capaNegocio->getTotalClientes())); 188} 189 190void MainWindow::imprimirClientes(){ 191 ImprimirSobreCliente *isc = new ImprimirSobreCliente(workspace, capaNegocio ); 192 workspace->addWindow(isc); 193 isc->show(); 194 statusBar()->showMessage(tr("Imprimir Sobre Clientes: ")); 195} 196 197//Acciones del menu ayuda 198void MainWindow::acercaDeAyuda() { 199 QMessageBox::about(this, tr("Acerca de Seoane Facturaci�n"), 200 tr("<h2>Seoane v1.0.4-beta</h2>" 201 "<p>Copyright &copy; 2007 Maite Simon & Marcos Gabarda</p>" 202 "<h5><i>Programa bajo licencia GPL 3.0</i></h5>")); 203} 204void MainWindow::ayudaAyuda() { 205 VisorAyuda *va = new VisorAyuda(this); 206 workspace->addWindow(va); 207 va->show(); 208} 209void MainWindow::cambiarIva() { 210 CambiarIvaDialog *civa = new CambiarIvaDialog(capaNegocio, this); 211 workspace->addWindow(civa); 212 civa->show(); 213} 214 215void MainWindow::configurarImpresora() { 216 ConfigurarImpresora *ci = new ConfigurarImpresora(this); 217 workspace->addWindow(ci); 218 ci->show(); 219} 220 221void MainWindow::createActions() { 222 223 //menu facturas 224 listarFacturasAction = new QAction(tr("&Listar"), this); 225 listarFacturasAction->setIcon(QIcon(QString::fromUtf8("Gui/images/LFactura.PNG"))); 226 connect(listarFacturasAction, SIGNAL(triggered()), this, SLOT(listarFacturas())); 227 228 nuevaFacturaAction = new QAction(tr("&Nueva"), this); 229 nuevaFacturaAction->setIcon(QIcon(QString::fromUtf8("Gui/images/NFactura.PNG"))); 230 connect(nuevaFacturaAction, SIGNAL(triggered()), this, SLOT(nuevaFactura())); 231 232 buscarFacturaAction = new QAction(tr("&Buscar"), this); 233 buscarFacturaAction->setIcon(QIcon(QString::fromUtf8("Gui/images/BFactura.PNG"))); 234 connect(buscarFacturaAction, SIGNAL(triggered()), this, SLOT(buscarFactura())); 235 236 237 //menu presupuestos 238 listarPresupuestosAction = new QAction(tr("&Listar"), this); 239 listarPresupuestosAction->setIcon(QIcon(QString::fromUtf8("Gui/images/LPresupuesto.PNG"))); 240 connect(listarPresupuestosAction, SIGNAL(triggered()), this, SLOT(listarPresupuestos())); 241 242 nuevoPresupuestosAction = new QAction(tr("&Nuevo"), this); 243 nuevoPresupuestosAction->setIcon(QIcon(QString::fromUtf8("Gui/images/NPresupuesto.PNG"))); 244 connect(nuevoPresupuestosAction, SIGNAL(triggered()), this, SLOT(nuevoPresupuestos())); 245 246 buscarPresupuestosAction = new QAction(tr("&Buscar"), this); 247 buscarPresupuestosAction->setIcon(QIcon(QString::fromUtf8("Gui/images/BPresupuesto.PNG"))); 248 connect(buscarPresupuestosAction, SIGNAL(triggered()), this, SLOT(buscarPresupuestos())); 249 250 //menu articulos 251 252 altaArticulosAction = new QAction(tr("&Alta"), this); 253 altaArticulosAction->setIcon(QIcon(QString::fromUtf8("Gui/images/NArticulo.PNG"))); 254 connect(altaArticulosAction, SIGNAL(triggered()), this, SLOT(altaArticulos())); 255 256 buscarArticulosAction = new QAction(tr("&Buscar"), this); 257 buscarArticulosAction->setIcon(QIcon(QString::fromUtf8("Gui/images/BArticulo.PNG"))); 258 connect(buscarArticulosAction, SIGNAL(triggered()), this, SLOT(buscarArticulos())); 259 260 listarArticulosAction = new QAction(tr("&Listar"), this); 261 listarArticulosAction->setIcon(QIcon(QString::fromUtf8("Gui/images/LArticulo.PNG"))); 262 connect(listarArticulosAction, SIGNAL(triggered()), this, SLOT(listarArticulos())); 263 264 //menu clientes 265 nuevoClienteAction = new QAction(tr("&Nuevo"), this); 266 nuevoClienteAction->setIcon(QIcon(QString::fromUtf8("Gui/images/NCliente.png"))); 267 connect(nuevoClienteAction, SIGNAL(triggered()), this, SLOT(nuevoCliente())); 268 269 buscarClienteAction = new QAction(tr("&Buscar"), this); 270 buscarClienteAction->setIcon(QIcon(QString::fromUtf8("Gui/images/BCliente.png"))); 271 connect(buscarClienteAction, SIGNAL(triggered()), this, SLOT(buscarCliente())); 272 273 listarClienteAction = new QAction(tr("&Listar"), this); 274 listarClienteAction->setIcon(QIcon(QString::fromUtf8("Gui/images/LCliente.png"))); 275 connect(listarClienteAction, SIGNAL(triggered()), this, SLOT(listarCliente())); 276 277 imprimirClienteAction = new QAction(tr("&Imprimir"), this); 278 imprimirClienteAction->setIcon(QIcon(QString::fromUtf8("Gui/images/LCliente.png"))); 279 connect(imprimirClienteAction, SIGNAL(triggered()), this, SLOT(imprimirClientes())); 280 281 //menu ayuda 282 acercaDeAyudaAction = new QAction(tr("&Acera de"), this); 283 connect(acercaDeAyudaAction, SIGNAL(triggered()), this, SLOT(acercaDeAyuda())); 284 285 ayudaAyudaAction = new QAction(tr("&Ayuda"), this); 286 connect(ayudaAyudaAction, SIGNAL(triggered()), this, SLOT(ayudaAyuda())); 287 288 //Menu ventanas 289 closeAction = new QAction(tr("&Cerrar"), this); 290 closeAction->setShortcut(tr("Ctrl+F4")); 291 closeAction->setStatusTip(tr("Cierra la ventana activa.")); 292 connect(closeAction, SIGNAL(triggered()), workspace, SLOT(closeActiveWindow())); 293 294 closeAllAction = new QAction(tr("Cerrar &Todo"), this); 295 closeAllAction->setStatusTip(tr("Cierra todas las ventanas.")); 296 connect(closeAllAction, SIGNAL(triggered()), workspace, SLOT(closeAllWindows())); 297 298 tileAction = new QAction(tr("&Tile"), this); 299 tileAction->setStatusTip(tr("Organiza las ventanas por valdosas.")); 300 connect(tileAction, SIGNAL(triggered()), workspace, SLOT(tile())); 301 302 cascadeAction = new QAction(tr("&Cascada"), this); 303 cascadeAction->setStatusTip(tr("Organiza las ventanas en cascada.")); 304 connect(cascadeAction, SIGNAL(triggered()), workspace, SLOT(cascade())); 305 306 nextAction = new QAction(tr("&Siguiente"), this); 307 nextAction->setStatusTip(tr("Se mueve a la siguiente ventana.")); 308 connect(nextAction, SIGNAL(triggered()), workspace, SLOT(activateNextWindow())); 309 310 previousAction = new QAction(tr("&Anterior"), this); 311 previousAction->setStatusTip(tr("Se mueve a la ventana anterior.")); 312 connect(previousAction, SIGNAL(triggered()), workspace, SLOT(activatePreviousWindow())); 313 314 cambiarIvaAction = new QAction(tr("Cambiar IVA"), this); 315 connect(cambiarIvaAction, SIGNAL(triggered()), this, SLOT(cambiarIva())); 316 317 //configurarImpresoraAction = new QAction(tr("Configurar Impresora"), this); 318 //connect(configurarImpresoraAction, SIGNAL(triggered()), this, SLOT(configurarImpresora())); 319 320} 321 322void MainWindow::createMenus() { 323 facturasMenu = menuBar()->addMenu(tr("&Facturas")); 324 presupuestosMenu = menuBar()->addMenu(tr("&Presupuestos")); 325 articulosMenu=menuBar()->addMenu(tr("&Articulos")); 326 clientesMenu=menuBar()->addMenu(tr("&Clientes")); 327 windowMenu=menuBar()->addMenu(tr("&Ventanas")); 328 configMenu=menuBar()->addMenu(tr("Con&figuracion")); 329 ayudaMenu=menuBar()->addMenu(tr("&Ayuda")); 330 331 //crea el menu facturas 332 facturasMenu->addAction(listarFacturasAction); 333 facturasMenu->addAction(nuevaFacturaAction); 334 facturasMenu->addAction(buscarFacturaAction); 335 336 //crea menu presupuestos 337 presupuestosMenu->addAction(listarPresupuestosAction); 338 presupuestosMenu->addAction(nuevoPresupuestosAction); 339 presupuestosMenu->addAction(buscarPresupuestosAction); 340 341 //crea el menu articulo 342 articulosMenu->addAction(altaArticulosAction); 343 articulosMenu->addAction(buscarArticulosAction); 344 articulosMenu->addAction(listarArticulosAction); 345 346 //Crea el menu clientes 347 clientesMenu->addAction(nuevoClienteAction); 348 clientesMenu->addAction(buscarClienteAction); 349 clientesMenu->addAction(listarClienteAction); 350 clientesMenu->addAction(imprimirClienteAction); 351 352 //crea el menu ayuda 353 ayudaMenu->addAction(acercaDeAyudaAction); 354 ayudaMenu->addAction(ayudaAyudaAction); 355 356 //crea el menu vantanas 357 windowMenu->addAction(closeAction); 358 windowMenu->addAction(closeAllAction); 359 windowMenu->addSeparator(); 360 windowMenu->addAction(tileAction); 361 windowMenu->addAction(cascadeAction); 362 windowMenu->addSeparator(); 363 windowMenu->addAction(nextAction); 364 windowMenu->addAction(previousAction); 365 366 configMenu->addAction(cambiarIvaAction); 367 //configMenu->addAction(configurarImpresoraAction); 368 369} 370 371void MainWindow::createToolBar() { 372 373 facturaToolBar = addToolBar(tr("Facturas")); 374 facturaToolBar->addAction(nuevaFacturaAction); 375 facturaToolBar->addAction(buscarFacturaAction); 376 facturaToolBar->addAction(listarFacturasAction); 377 378 presupuestoToolBar = addToolBar(tr("Presupuestos")); 379 presupuestoToolBar->addAction(nuevoPresupuestosAction); 380 presupuestoToolBar->addAction(buscarPresupuestosAction); 381 presupuestoToolBar->addAction(listarPresupuestosAction); 382 383 clienteToolBar = addToolBar(tr("Clientes")); 384 clienteToolBar->addAction(nuevoClienteAction); 385 clienteToolBar->addAction(buscarClienteAction); 386 clienteToolBar->addAction(listarClienteAction); 387 388 articuloToolBar = addToolBar(tr("Articulos")); 389 articuloToolBar->addAction(altaArticulosAction); 390 articuloToolBar->addAction(buscarArticulosAction); 391 articuloToolBar->addAction(listarArticulosAction); 392 393} 394 395void MainWindow::updateMenus() { 396 397 windowMenu->clear(); 398 windowMenu->addAction(closeAction); 399 windowMenu->addAction(closeAllAction); 400 windowMenu->addSeparator(); 401 windowMenu->addAction(tileAction); 402 windowMenu->addAction(cascadeAction); 403 windowMenu->addSeparator(); 404 windowMenu->addAction(nextAction); 405 windowMenu->addAction(previousAction); 406 407 QWidgetList windows = workspace->windowList(); 408 409 if (!windows.isEmpty()) windowMenu->addSeparator(); 410 411 for (int i = 0; i < windows.size(); ++i) { 412 QWidget *child = windows.at(i); 413 QString text; 414 if (i < 9) { 415 text = tr("&%1 %2").arg(i + 1).arg(child->windowTitle()); 416 } else { 417 text = tr("%1 %2").arg(i + 1).arg(child->windowTitle()); 418 } 419 QAction *action = windowMenu->addAction(text); 420 action->setCheckable(true); 421 action->setChecked(child == workspace->activeWindow()); 422 connect(action, SIGNAL(triggered()), windowMapper, SLOT(map())); 423 windowMapper->setMapping(action, windows.at(i)); 424 } 425} 426void MainWindow::createStatusBar() 427{ 428 statusBar()->showMessage(tr("Listo")); 429}