/vp_plugins/print_monitor/mainwindow.cpp
http://cupsfilter.googlecode.com/ · C++ · 536 lines · 424 code · 75 blank · 37 comment · 33 complexity · 1ccfe9c381fad8ff3501aaf9a55bfa1a MD5 · raw file
- #include <QtCore/QVariant>
- #include <QtCore/QDebug>
- #include <QtCore/QFile>
- #include <QtCore/QSettings>
-
- #include <QtGui/QAction>
- #include <QtGui/QApplication>
- #include <QtGui/QComboBox>
- #include <QtGui/QFrame>
- #include <QtGui/QHBoxLayout>
- #include <QtGui/QLabel>
- #include <QtGui/QPushButton>
- #include <QtGui/QSpacerItem>
- #include <QtGui/QVBoxLayout>
- #include <QtGui/QWidget>
- #include <QtGui/QAction>
- #include <QtGui/QStackedWidget>
-
- #include <QtGui/QErrorMessage>
-
- #include <QTableView>
-
-
- #include "mainwindow.h"
- #include "mytypes.h"
- #include "engine.h"
- #include "getusernamemandatdlg.h"
-
- using namespace VPrn;
-
- MainWindow::MainWindow(QWidget *parent)
- : QWidget(parent)
- , pageId(0)
-
- {
- //??????? ?????? ??????
- desktop_avail = desktop.availableGeometry(desktop.primaryScreen());
-
- this->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::MinimumExpanding);
- //this->setMinimumSize(320,240);
- this->setMaximumSize(desktop_avail.width()-5,desktop_avail.height()-5);
- this->move( calcDeskTopCenter(this->width(),this->height() ));
- mainLayout = new QVBoxLayout(this);
-
- //------------------------------- ??????????? ????? -------------------------------
- stackedWidget = new QStackedWidget();
- introPage = new IntroPage();
- selectPage = new SelectPage();
- printDataPage = new PrintDataPage();
- checkDataPage = new CheckDataPage();
- preViewPage = new PreViewPage();
- finishPage = new FinishPage();
-
- stackedWidget->addWidget(introPage);
- stackedWidget->addWidget(selectPage);
- stackedWidget->addWidget(printDataPage);
- stackedWidget->addWidget(checkDataPage);
- stackedWidget->addWidget(preViewPage);
- stackedWidget->addWidget(finishPage);
- //????????? ???? ????????
- printDataPage->setMaximumSize(desktop_avail.width()-5,desktop_avail.height()-5);
-
-
- line = new QFrame(this);
- line->setObjectName(QString::fromUtf8("line"));
- line->setFrameShape(QFrame::HLine);
- line->setFrameShadow(QFrame::Sunken);
-
- //------------------------------- ?????? ???? - ?????? -------------------------------
-
- horizontalLayout = new QHBoxLayout();
- horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- helpButton = new QPushButton(this);
- prevButton = new QPushButton(this);
- nextButton = new QPushButton(this);
- restartButton = new QPushButton(this);
- exitButton = new QPushButton(this);
- helpButton->setText(QObject::trUtf8("???????"));
- prevButton->setText(QObject::trUtf8("< ?????"));
- nextButton->setText(QObject::trUtf8("?????? >"));
- restartButton->setText(QObject::trUtf8("? ??????"));
- exitButton->setText(QObject::trUtf8("?????"));
-
- horizontalLayout->addWidget(helpButton);
- horizontalLayout->addItem(horizontalSpacer);
- horizontalLayout->addWidget(prevButton);
- horizontalLayout->addWidget(nextButton);
- horizontalLayout->addWidget(restartButton);
- horizontalLayout->addItem(horizontalSpacer_2);
- horizontalLayout->addWidget(exitButton);
- //-------------------------------------- ?????????? ----------------------------------------------------
-
- mainLayout->addWidget(stackedWidget);
- mainLayout->addWidget(line);
- mainLayout->addLayout(horizontalLayout);
-
- if (stackedWidget->currentIndex () != -1 ){
- this->setWindowTitle(stackedWidget->currentWidget()->windowTitle() );
- }else{
- this->setWindowTitle( QObject::trUtf8("?????? ???????? ???? ???????") );
- }
- }
-
- void MainWindow::init(const QString &app_dir,const QString &input_file)
- {
- this->readConfig(app_dir);
- //???????? ??????????? ??????
- myEMsgBox = new QErrorMessage(this);
-
- //????????? ????????? ??????
- data_module = new DataModule(this);
-
- //?????? ????
- engine = new Engine(this,link_name,gatekeeper_bin);
-
- createConnection();
-
- if ( data_module->setWorkFile(input_file)){
- introPage->setInputFile();
- }
-
- engine->setDocCardModel ( data_module->getDocCardModel() );
- engine->setPrintersModel ( data_module->getPrintersModel() );
- engine->setStampsModel ( data_module->getStampsModel() );
- engine->setTemplatesModel ( data_module->getTemplatesModel() );
- engine->setMandatsModel ( data_module->getMandatsModel() );
- engine->launchAndConnect();
-
- selectPage->setPrintersModel ( data_module->getPrintersModel() );
- printDataPage->setSecListModel ( data_module->getStampsModel() );
- printDataPage->setCardDocModel ( data_module->getDocCardModel() );
- printDataPage->setTemplatesModel ( data_module->getTemplatesModel() );
-
- }
-
- void MainWindow::appendStartMsg(const QString &txt_msg)
- {
- myEMsgBox->showMessage(txt_msg);
- }
-
- MainWindow::~MainWindow()
- {
-
- }
-
- //------------------------------------PRIVATE SLOTS ------------------------------------
- void MainWindow::do_next()
- {
- switch (pageId +1){
- case VPrn::Page_Intro:
- case VPrn::Page_Select:
- break;
- case VPrn::Page_PrintData:
- //???????? ????
- this->resize(800,600);
- break;
- case VPrn::Page_CheckData:
- //???????? ????
- this->resize(320,240);
- break;
- case VPrn::Page_Preview:
- this->resize(800,600);
- break;
- case VPrn::Page_Finish:
- break;
- case VPrn::Page_SetBrak:
- break;
- }
- if (lastCheck(pageId)){
- pageId++;
- if ( ( pageId > VPrn::Page_Finish ) || ( pageId > stackedWidget->count()-1 ) ){
- pageId = VPrn::Page_Finish;
- }
- if (pageId == VPrn::Page_Preview){
- // ???????? ??????
- nextButton->setText(QObject::trUtf8("??????"));
- }
- stackedWidget->setCurrentIndex(pageId);
- this->setWindowTitle(stackedWidget->currentWidget()->windowTitle() );
- }
- }
-
- void MainWindow::do_prev()
- {
- switch (pageId - 1){
- case VPrn::Page_Intro:
- case VPrn::Page_Select:
- //???????? ????
- this->resize(320,240);
- break;
- case VPrn::Page_PrintData:
- //???????? ????
- this->resize(800,600);
- break;
- case VPrn::Page_CheckData:
- //???????? ????
- this->resize(320,240);
- nextButton->setText(QObject::trUtf8("?????? >"));
- break;
- case VPrn::Page_Preview:
- //???????? ????
- this->resize(800,600);
- break;
- case VPrn::Page_Finish:
- break;
- case VPrn::Page_SetBrak:
- break;
- }
- pageId--;
- if (pageId < VPrn::Page_Intro) {
- pageId = VPrn::Page_Intro;
- }
- stackedWidget->setCurrentIndex(pageId);
- this->setWindowTitle(stackedWidget->currentWidget()->windowTitle() );
- }
-
- void MainWindow::do_restart()
- {
- pageId =0;
- stackedWidget->setCurrentIndex(pageId);
- this->setWindowTitle(stackedWidget->currentWidget()->windowTitle() );
- this->resize(320,240);
- selectPage->needRestart();
- printDataPage->needRestart();
- checkDataPage->needRestart();
- preViewPage->needRestart();
- engine->needRestart();
- nextButton->setText(QObject::trUtf8("?????? >"));
-
- }
-
- void MainWindow::do_needAuthUser(const QString &login_mandat_list)
- {
- QRegExp rx("\\[(.+)\\];:;(.+)");
- //rx.setMinimal(true);
- if(rx.indexIn(login_mandat_list) != -1){
- QString m_login = rx.cap(1);
- QString m_list = rx.cap(2);
-
- // ?????? ?????? ???????????
- getUserNameMandatDlg *UMDlg = new getUserNameMandatDlg(this);
- UMDlg->move(this->calcDeskTopCenter(UMDlg->width(),UMDlg->height()));
- UMDlg->setUserName(m_login);
- UMDlg->setMandatList(QStringList() << m_list.split(";:;"));
- connect(UMDlg,SIGNAL(setAuthData(const QString &,const QString &)),
- engine, SLOT(setAuthData(const QString &,const QString &))
- );
-
- UMDlg->exec();
- }else{
- myEMsgBox->showMessage(QObject::trUtf8("?????? ??????? ????????? ???????."));
- }
- }
-
- void MainWindow::sendFileToConvertor()
- {
- engine->prepareFileToPrint(data_module->getWorkFile());
- }
-
- void MainWindow::errorInfo(VPrn::AppErrorType eCode,QString e_msg)
- {
- QString extMsg = QString("eCode %1. AppsError:%2\n%3")
- .arg(eCode,0,10)
- .arg(e_msg)
- .arg(QString(Q_FUNC_INFO));
- myEMsgBox->showMessage(extMsg);
- qDebug() << extMsg;
- }
-
-
- void MainWindow::do_UserNeedFlipPages()
- {
- QMessageBox msgBox;
- msgBox.setText(QObject::trUtf8("????????? ?????? ??????? ???????? ?????????."));
- msgBox.setInformativeText(QObject::trUtf8("??? ??????????? ?????? ??????????? ????? ? ??????? ?????? ?????? ??? ??????"));
- msgBox.setDetailedText(QObject::trUtf8("???????? ? ?????? ?????? ?????? ?????????, ??????? ????????? ????????? ????? ???????, ??? ????"));
-
- QPushButton *printButton = msgBox.addButton(QObject::trUtf8("??????"), QMessageBox::ActionRole);
- QPushButton *abortButton = msgBox.addButton(QObject::trUtf8("??????"), QMessageBox::RejectRole);
-
- msgBox.exec();
-
- if (msgBox.clickedButton() == printButton) {
- // connect
- engine->do_printCurrentDoc();
- } else if (msgBox.clickedButton() == abortButton) {
- // abort
- engine->markCurrentDocBrack();
- }
-
- }
-
- void MainWindow::do_UserNeedCheckLastPage()
- {
- QMessageBox msgBox;
- msgBox.setText(QObject::trUtf8("????????? ?????? ???????? ??????? ?????????."));
- msgBox.setInformativeText(QObject::trUtf8("??? ??????????? ?????? ?????????? ????????? ???? ????????? ? ??????? ?????? ?????? ??? ??????"));
- msgBox.setDetailedText(QObject::trUtf8("???????? ? ?????? ?????? ?????? ?????????, ??????? ????????? ????????? ????? ???????, ??? ????"));
-
- QPushButton *printButton = msgBox.addButton(QObject::trUtf8("??????"), QMessageBox::ActionRole);
- QPushButton *abortButton = msgBox.addButton(QObject::trUtf8("??????"), QMessageBox::RejectRole);
-
- msgBox.exec();
-
- if (msgBox.clickedButton() == printButton) {
- // connect
- engine->do_printCurrentDoc();
- } else if (msgBox.clickedButton() == abortButton) {
- // abort
- engine->markCurrentDocBrack();
- }
-
- }
-
- void MainWindow::do_UserNeedMarkCopies(const QString &detail_data)
- {
- // ???????? ? ????? ?????
- qDebug() << "detail_data " << detail_data;
- if (!detail_data.isEmpty() && detail_data.contains(";:;")){
- QStringList d_list = detail_data.split(";:;");
-
- QMessageBox msgBox;
- msgBox.setText(QObject::trUtf8("????????? ?????? ????????? %1").arg(d_list.at(0)));
- msgBox.setInformativeText(QObject::trUtf8("?????????? ???????? ??????? ???????? ??? ???????? ??? ????"));
- msgBox.setDetailedText(QObject::trUtf8("???????? %1 ??? ?????????? ?? ???????? %2.\n????? ?? - %3\n????????? - %4\n????? ??????? %5")
- .arg(d_list.at(0))
- .arg(d_list.at(1))
- .arg(d_list.at(2))
- .arg(d_list.at(3))
- .arg(d_list.at(4))
- );
-
- QPushButton *clearButton = msgBox.addButton(QObject::trUtf8("????????"), QMessageBox::ActionRole);
- QPushButton *brakButton = msgBox.addButton(QObject::trUtf8("????"), QMessageBox::RejectRole);
-
- msgBox.exec();
-
- if (msgBox.clickedButton() == clearButton) {
- // connect
- engine->markCurrentDocClear();
- } else if (msgBox.clickedButton() == brakButton) {
- // abort
- engine->markCurrentDocBrack();
- }
- }
- }
-
-
- //------------------------------------ PRIVATE ---------------------------------------------
- void MainWindow::createConnection()
- {
- connect (helpButton, SIGNAL(clicked()),
- this, SLOT( showHelp() )
- );
- connect (exitButton,SIGNAL(clicked()),
- this, SLOT(close())
- );
- connect (nextButton,SIGNAL(clicked()),
- this, SLOT(do_next())
- );
- connect (prevButton,SIGNAL(clicked()),
- this, SLOT(do_prev())
- );
- connect (restartButton,SIGNAL(clicked()),
- this, SLOT(do_restart())
- );
-
- connect (data_module,SIGNAL(error(VPrn::AppErrorType,QString)),
- this, SLOT (errorInfo(VPrn::AppErrorType,QString))
- );
- connect (engine, SIGNAL( error(VPrn::AppErrorType,QString) ),
- this, SLOT (errorInfo(VPrn::AppErrorType,QString))
- );
- connect(engine, SIGNAL( LocalSrvRegistr() ),
- introPage, SLOT ( setLocalSrvRegistr() )
- );
- connect(engine, SIGNAL( RemoteDemonRegistr() ),
- introPage, SLOT ( setRemoteDemonRegistr() )
- );
- connect(engine, SIGNAL(ReciveUserName() ),
- introPage, SLOT (setReciveUserName() )
- );
- connect(engine, SIGNAL( ReciveUserMandat() ),
- introPage, SLOT ( setReciveUserMandat() )
- );
-
- /** @short ??? ??? ?????? ??? ??????? ????????? ????:
- * @li ??????????? ?? ????????? ??????? (?????? ?? ?????????? ? ????????)
- * @li ??????????? ?? ????????? ??????? (?????? ?? ?????????? ? ????????)
- * ????? ????????? ?????? ?? ???????????, ? ?????? ????? ? ???? ???? ?????
- * ????? ????????? ?????????????? ? ????????
- */
- connect(engine, SIGNAL( RemoteDemonRegistr() ),
- this, SLOT ( sendFileToConvertor() )
- );
- connect(engine, SIGNAL( needAuthUser(const QString&) ),
- this, SLOT ( do_needAuthUser(const QString&) )
- );
- connect(engine, SIGNAL( ReciveSecLevelList() ),
- introPage, SLOT ( setReciveSecLevelList() )
- );
- connect(engine, SIGNAL( RecivePrintersList() ),
- introPage, SLOT ( setRecivePrintersList() )
- );
- connect(printDataPage, SIGNAL ( field_checked() ),
- engine, SLOT ( authUserToPrinter() )
- );
-
- connect(engine, SIGNAL ( doc_converted() ),
- printDataPage, SLOT ( setDocConverted() )
- );
-
- connect(printDataPage, SIGNAL ( field_checked() ),
- engine, SLOT ( checkMB() )
- );
-
- connect (engine, SIGNAL ( authToDevice(bool,QString) ),
- checkDataPage,SLOT ( setAuthCheck(bool,QString) )
- );
-
- connect(engine, SIGNAL ( RegisterDocInBase(bool,QString) ),
- checkDataPage, SLOT ( setMbCheck(bool,QString) )
- );
-
- connect(checkDataPage, SIGNAL (select_mode(int)),
- engine, SLOT (do_select_mode(int))
- );
-
- connect(engine, SIGNAL ( MergeDocWithTemplates(bool,QString) ),
- checkDataPage, SLOT ( setCheckMergeDocWithTemplates(bool,QString))
- );
- connect (engine, SIGNAL ( PicturesList(QStringList ) ),
- preViewPage, SLOT ( showPicturesList(QStringList ))
- );
- connect (preViewPage, SIGNAL (printCurrentDoc()),
- engine, SLOT (do_printCurrentDoc())
- );
-
- connect (engine, SIGNAL (showInfoMsg(QString)),
- finishPage, SLOT (addInfoMsg(QString))
- );
- connect (engine, SIGNAL (UserNeedFlipPages()),
- this, SLOT (do_UserNeedFlipPages())
- );
- connect (engine, SIGNAL (UserNeedCheckLastPage()),
- this, SLOT (do_UserNeedCheckLastPage())
- );
-
- connect (engine, SIGNAL (UserNeedMarkCopies(const QString&)),
- this, SLOT (do_UserNeedMarkCopies(const QString&))
- );
-
- connect (finishPage, SIGNAL (saveCopiesState(bool)),
- engine, SLOT (do_saveCopiesState(bool))
- );
-
- }
-
- QPoint MainWindow::calcDeskTopCenter(int width,int height)
- {
- QPoint centerWindow;
- //???????? ????????????? ? ????????? ??? ? ??????
- centerWindow = desktop_avail.center(); //???????? ?????????? ?????? ??????
- centerWindow.setX(centerWindow.x() - (width/2));
- centerWindow.setY(centerWindow.y() - (height/2));
- return centerWindow;
- }
-
- void MainWindow::readConfig(const QString &app_dir)
- {
- QString ini_file =QString("%1/Technoserv/safe_printer.ini").arg(app_dir);
- if (QFile::exists(ini_file)){
- QSettings settings (ini_file,QSettings::IniFormat);
-
- #if QT_VERSION >= 0x040500
- settings.setIniCodec("UTF-8");
- #endif
-
- settings.beginGroup("SERVICE");
- link_name = settings.value("link_name").toString();
- settings.endGroup();
-
- settings.beginGroup("USED_DIR_FILE");
- //spoolDir = settings.value("spool_dir").toString();
- gatekeeper_bin = settings.value("gatekeeper_bin").toString();
- settings.endGroup();
- }else{
- myEMsgBox->showMessage(QObject::trUtf8("???? ? ??????????? ????????? %1 ?? ??????!\n%2")
- .arg(ini_file)
- .arg(QString(Q_FUNC_INFO))
- );
- }
- }
-
- bool MainWindow::lastCheck(int page)
- {
- bool Ok = false;
- {
- switch (page +1){
- case VPrn::Page_Intro:
- break;
- case VPrn::Page_Select:
- Ok = introPage->enableNext();
- break;
- case VPrn::Page_PrintData:
- Ok = selectPage->enableNext();
- break;
- case VPrn::Page_CheckData:
- Ok = printDataPage->enableNext();
- break;
- case VPrn::Page_Preview:
- Ok = checkDataPage->enableNext();
- break;
- case VPrn::Page_Finish:
- Ok = preViewPage->enableNext();
- break;
- case VPrn::Page_SetBrak:
- break;
- }
- }
- return Ok;
- }
-
- //------------------------------------- PROTECTED ----------------------------------------
- void MainWindow::changeEvent(QEvent *e)
- {
- QWidget::changeEvent(e);
- switch (e->type()) {
- case QEvent::LanguageChange:
- //ui->retranslateUi(this);
- break;
- default:
- break;
- }
- }