1 /*  dvbcut
2     Copyright (c) 2005 Sven Over <svenover@svenover.de>
3 
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8 
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13 
14     You should have received a copy of the GNU General Public License
15     along with this program; if not, write to the Free Software
16     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17 */
18 
19 /* $Id$ */
20 
21 #ifndef _GNU_SOURCE
22 #define _GNU_SOURCE
23 #endif
24 
25 #include <cstdio>
26 #include <cstdarg>
27 #include <cstdlib>
28 #include <qstatusbar.h>
29 #include <qprogressbar.h>
30 #include <qapplication.h>
31 #include <qpushbutton.h>
32 #include <qlabel.h>
33 #include <qsizepolicy.h>
34 #include "progressstatusbar.h"
35 
progressstatusbar(QStatusBar * bar)36 progressstatusbar::progressstatusbar(QStatusBar *bar)
37     : logoutput(), cancelwasclicked(false), statusbar(bar)
38   {
39   label=new QLabel(statusbar);
40   label->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum));
41   statusbar->addWidget(label,true);
42 
43   cancelbutton=new QPushButton(statusbar);
44   cancelbutton->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
45   cancelbutton->setText(tr("cancel"));
46   cancelbutton->setMaximumWidth(80);
47   statusbar->addWidget(cancelbutton,true);
48 
49   progressbar=new QProgressBar(statusbar);
50   progressbar->setMaximum(1000);
51   progressbar->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum));
52   progressbar->setMinimumWidth(160);
53   progressbar->setMaximumWidth(160);
54   statusbar->addWidget(progressbar,true);
55 
56   connect(cancelbutton,SIGNAL(clicked()),SLOT(clickedcancel()));
57   progressbar->show();
58   cancelbutton->show();
59   label->show();
60   qApp->processEvents();
61   }
62 
63 
~progressstatusbar()64 progressstatusbar::~progressstatusbar()
65   {
66   delete progressbar;
67   delete cancelbutton;
68   delete label;
69   statusbar->clearMessage();
70   }
71 
72 
setprogress(int permille)73 void progressstatusbar::setprogress(int permille)
74   {
75   if (permille==currentprogress)
76     return;
77   currentprogress=permille;
78   progressbar->setValue(permille);
79   qApp->processEvents();
80   }
81 
finish()82 void progressstatusbar::finish()
83   {
84   cancelbutton->setEnabled(false);
85   }
86 
clickedcancel()87 void progressstatusbar::clickedcancel()
88   {
89   cancelwasclicked=true;
90   cancelbutton->setEnabled(false);
91   qApp->processEvents();
92   }
93 
print(const QString & str)94 void progressstatusbar::print(const QString &str) {
95 	label->setText(str);
96 	qApp->processEvents();
97 }
98