00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#include <qtimer.h>
00023
00024
#include <qregexp.h>
00025
#include <qheader.h>
00026
#include <qevent.h>
00027
00028
#include <ksqueezedtextlabel.h>
00029
#include <kconfig.h>
00030
#include <kstandarddirs.h>
00031
#include <kuniqueapplication.h>
00032
#include <kaboutdata.h>
00033
#include <kcmdlineargs.h>
00034
#include <kglobal.h>
00035
#include <klocale.h>
00036
#include <dcopclient.h>
00037
#include <kstatusbar.h>
00038
#include <kdebug.h>
00039
#include <kmessagebox.h>
00040
#include <kdesu/client.h>
00041
#include <kwin.h>
00042
#include <kdialog.h>
00043
#include <ksystemtray.h>
00044
#include <kpopupmenu.h>
00045
#include <kaction.h>
00046
00047
#include <qcheckbox.h>
00048
#include <qlabel.h>
00049
#include <qlayout.h>
00050
#include <qpopupmenu.h>
00051
#include <qheader.h>
00052
00053
#include "observer_stub.h"
00054
#include "observer.h"
00055
#include "kio/defaultprogress.h"
00056
#include "kio/jobclasses.h"
00057
#include "uiserver.h"
00058
#include "passdlg.h"
00059
#include "kio/renamedlg.h"
00060
#include "kio/skipdlg.h"
00061
#include "slavebase.h"
00062
#include <ksslinfodlg.h>
00063
#include <ksslcertdlg.h>
00064
#include <ksslcertificate.h>
00065
#include <ksslcertchain.h>
00066
00067
00068
00069
UIServer* uiserver;
00070
00071
00072
enum { TOOL_CANCEL, TOOL_CONFIGURE };
00073
00074
00075
enum { ID_TOTAL_FILES = 1, ID_TOTAL_SIZE, ID_TOTAL_TIME, ID_TOTAL_SPEED };
00076
00077
00078
int UIServer::s_jobId = 0;
00079
00080
static const int defaultColumnWidth[] = { 70,
00081 160,
00082 40,
00083 60,
00084 30,
00085 65,
00086 70,
00087 70,
00088 450
00089 };
00090
00091
class UIServerSystemTray:
public KSystemTray
00092 {
00093
public:
00094 UIServerSystemTray(
UIServer* uis)
00095 :
KSystemTray(uis)
00096 {
00097
KPopupMenu* pop=
contextMenu();
00098 pop->
insertItem(i18n(
"Settings..."), uis, SLOT(slotConfigure()));
00099 pop->
insertItem(i18n(
"Remove"), uis, SLOT(slotRemoveSystemTrayIcon()));
00100
setPixmap(
loadIcon(
"filesave"));
00101
00102
KStdAction::quit(uis, SLOT(slotQuit()),
actionCollection());
00103 }
00104 };
00105
00106
class ProgressConfigDialog:
public KDialogBase
00107 {
00108
public:
00109 ProgressConfigDialog(
QWidget* parent);
00110 ~ProgressConfigDialog() {}
00111
void setChecked(
int i,
bool on);
00112
bool isChecked(
int i)
const;
00113
friend class UIServer;
00114
private:
00115
QCheckBox *m_showSystemTrayCb;
00116
QCheckBox *m_keepOpenCb;
00117
QCheckBox *m_toolBarCb;
00118
QCheckBox *m_statusBarCb;
00119
QCheckBox *m_headerCb;
00120
QCheckBox *m_fixedWidthCb;
00121
KListView *m_columns;
00122
QCheckListItem *(m_items[ListProgress::TB_MAX]);
00123 };
00124
00125 ProgressConfigDialog::ProgressConfigDialog(
QWidget *parent)
00126 :
KDialogBase(
KDialogBase::Plain,i18n("Configure Network Operation Window"),
KDialogBase::Ok|
KDialogBase::Apply|
KDialogBase::Cancel,
00127
KDialogBase::Ok, parent, "configprog", false)
00128 {
00129
QVBoxLayout *layout=
new QVBoxLayout(plainPage(),spacingHint());
00130 m_showSystemTrayCb=
new QCheckBox(i18n(
"Show system tray icon"), plainPage());
00131 m_keepOpenCb=
new QCheckBox(i18n(
"Keep network operation window always open"), plainPage());
00132 m_headerCb=
new QCheckBox(i18n(
"Show column headers"), plainPage());
00133 m_toolBarCb=
new QCheckBox(i18n(
"Show toolbar"), plainPage());
00134 m_statusBarCb=
new QCheckBox(i18n(
"Show statusbar"), plainPage());
00135 m_fixedWidthCb=
new QCheckBox(i18n(
"Column widths are user adjustable"), plainPage());
00136
QLabel *
label=
new QLabel(i18n(
"Show information:"), plainPage());
00137 m_columns=
new KListView(plainPage());
00138
00139 m_columns->addColumn(
"info");
00140 m_columns->setSorting(-1);
00141 m_columns->header()->hide();
00142
00143 m_items[ListProgress::TB_ADDRESS] =
new QCheckListItem(m_columns, i18n(
"URL"), QCheckListItem::CheckBox);
00144 m_items[ListProgress::TB_REMAINING_TIME] =
new QCheckListItem(m_columns, i18n(
"Remaining Time",
"Rem. Time"), QCheckListItem::CheckBox);
00145 m_items[ListProgress::TB_SPEED] =
new QCheckListItem(m_columns, i18n(
"Speed"), QCheckListItem::CheckBox);
00146 m_items[ListProgress::TB_TOTAL] =
new QCheckListItem(m_columns, i18n(
"Size"), QCheckListItem::CheckBox);
00147 m_items[ListProgress::TB_PROGRESS] =
new QCheckListItem(m_columns, i18n(
"%"), QCheckListItem::CheckBox);
00148 m_items[ListProgress::TB_COUNT] =
new QCheckListItem(m_columns, i18n(
"Count"), QCheckListItem::CheckBox);
00149 m_items[ListProgress::TB_RESUME] =
new QCheckListItem(m_columns, i18n(
"Resume",
"Res."), QCheckListItem::CheckBox);
00150 m_items[ListProgress::TB_LOCAL_FILENAME] =
new QCheckListItem(m_columns, i18n(
"Local Filename"), QCheckListItem::CheckBox);
00151 m_items[ListProgress::TB_OPERATION] =
new QCheckListItem(m_columns, i18n(
"Operation"), QCheckListItem::CheckBox);
00152
00153 layout->addWidget(m_showSystemTrayCb);
00154 layout->addWidget(m_keepOpenCb);
00155 layout->addWidget(m_headerCb);
00156 layout->addWidget(m_toolBarCb);
00157 layout->addWidget(m_statusBarCb);
00158 layout->addWidget(m_fixedWidthCb);
00159 layout->addWidget(label);
00160 layout->addWidget(m_columns);
00161 }
00162
00163
void ProgressConfigDialog::setChecked(
int i,
bool on)
00164 {
00165
if (i>=ListProgress::TB_MAX)
00166
return;
00167 m_items[i]->setOn(on);
00168 }
00169
00170
bool ProgressConfigDialog::isChecked(
int i)
const
00171
{
00172
if (i>=ListProgress::TB_MAX)
00173
return false;
00174
return m_items[i]->isOn();
00175 }
00176
00177 ProgressItem::ProgressItem(
ListProgress* view,
QListViewItem *after,
QCString app_id,
int job_id,
00178
bool showDefault )
00179 :
QListViewItem( view, after ) {
00180
00181 listProgress = view;
00182
00183 m_iTotalSize = 0;
00184 m_iTotalFiles = 0;
00185 m_iProcessedSize = 0;
00186 m_iProcessedFiles = 0;
00187 m_iSpeed = 0;
00188
00189 m_sAppId = app_id;
00190 m_iJobId = job_id;
00191 m_visible =
true;
00192 m_defaultProgressVisible = showDefault;
00193
00194
00195 defaultProgress =
new KIO::DefaultProgress(
false );
00196 defaultProgress->setOnlyClean(
true );
00197 connect ( defaultProgress, SIGNAL( stopped() ),
this, SLOT( slotCanceled() ) );
00198 connect ( &m_showTimer, SIGNAL( timeout() ),
this, SLOT(slotShowDefaultProgress()) );
00199
00200
if ( showDefault ) {
00201 m_showTimer.start( 500,
true );
00202 }
00203 }
00204
00205
bool ProgressItem::keepOpen()
const
00206
{
00207
return defaultProgress->keepOpen();
00208 }
00209
00210
void ProgressItem::finished()
00211 {
00212 defaultProgress->finished();
00213 }
00214
00215 ProgressItem::~ProgressItem() {
00216
delete defaultProgress;
00217 }
00218
00219
00220
void ProgressItem::setTotalSize( KIO::filesize_t size ) {
00221 m_iTotalSize = size;
00222
00223
00224
00225
00226 defaultProgress->slotTotalSize( 0, m_iTotalSize );
00227 }
00228
00229
00230
void ProgressItem::setTotalFiles(
unsigned long files ) {
00231 m_iTotalFiles = files;
00232
00233 defaultProgress->slotTotalFiles( 0, m_iTotalFiles );
00234 }
00235
00236
00237
void ProgressItem::setTotalDirs(
unsigned long dirs ) {
00238 defaultProgress->slotTotalDirs( 0, dirs );
00239 }
00240
00241
00242
void ProgressItem::setProcessedSize( KIO::filesize_t size ) {
00243 m_iProcessedSize = size;
00244
00245 setText( ListProgress::TB_TOTAL, KIO::convertSize( size ) );
00246
00247 defaultProgress->slotProcessedSize( 0, size );
00248 }
00249
00250
00251
void ProgressItem::setProcessedFiles(
unsigned long files ) {
00252 m_iProcessedFiles = files;
00253
00254
QString tmps = i18n(
"%1 / %2").arg( m_iProcessedFiles ).arg( m_iTotalFiles );
00255 setText( ListProgress::TB_COUNT, tmps );
00256
00257 defaultProgress->slotProcessedFiles( 0, m_iProcessedFiles );
00258 }
00259
00260
00261
void ProgressItem::setProcessedDirs(
unsigned long dirs ) {
00262 defaultProgress->slotProcessedDirs( 0, dirs );
00263 }
00264
00265
00266
void ProgressItem::setPercent(
unsigned long percent ) {
00267
const QString tmps = KIO::DefaultProgress::makePercentString( percent, m_iTotalSize, m_iTotalFiles );
00268 setText( ListProgress::TB_PROGRESS, tmps );
00269
00270 defaultProgress->slotPercent( 0, percent );
00271 }
00272
00273
void ProgressItem::setInfoMessage(
const QString & msg ) {
00274
QString plainTextMsg(msg);
00275 plainTextMsg.
replace(
QRegExp(
"</?b>" ), QString::null );
00276 plainTextMsg.
replace(
QRegExp(
"<img.*>" ), QString::null );
00277 setText( ListProgress::TB_PROGRESS, plainTextMsg );
00278
00279 defaultProgress->slotInfoMessage( 0, msg );
00280 }
00281
00282
void ProgressItem::setSpeed(
unsigned long bytes_per_second ) {
00283 m_iSpeed = bytes_per_second;
00284 m_remainingTime =
KIO::calculateRemaining( m_iTotalSize, m_iProcessedSize, m_iSpeed );
00285
00286
QString tmps, tmps2;
00287
if ( m_iSpeed == 0 ) {
00288 tmps = i18n(
"Stalled");
00289 tmps2 = tmps;
00290 }
else {
00291 tmps = i18n(
"%1/s").
arg( KIO::convertSize( m_iSpeed ));
00292 tmps2 = m_remainingTime.
toString();
00293 }
00294 setText( ListProgress::TB_SPEED, tmps );
00295 setText( ListProgress::TB_REMAINING_TIME, tmps2 );
00296
00297 defaultProgress->slotSpeed( 0, m_iSpeed );
00298 }
00299
00300
00301
void ProgressItem::setCopying(
const KURL& from,
const KURL& to ) {
00302 setText( ListProgress::TB_OPERATION, i18n(
"Copying") );
00303 setText( ListProgress::TB_ADDRESS, from.
url() );
00304 setText( ListProgress::TB_LOCAL_FILENAME, to.
fileName() );
00305
00306 defaultProgress->slotCopying( 0, from, to );
00307 }
00308
00309
00310
void ProgressItem::setMoving(
const KURL& from,
const KURL& to ) {
00311 setText( ListProgress::TB_OPERATION, i18n(
"Moving") );
00312 setText( ListProgress::TB_ADDRESS, from.
url() );
00313 setText( ListProgress::TB_LOCAL_FILENAME, to.
fileName() );
00314
00315 defaultProgress->slotMoving( 0, from, to );
00316 }
00317
00318
00319
void ProgressItem::setCreatingDir(
const KURL& dir ) {
00320 setText( ListProgress::TB_OPERATION, i18n(
"Creating") );
00321 setText( ListProgress::TB_ADDRESS, dir.
url() );
00322 setText( ListProgress::TB_LOCAL_FILENAME, dir.
fileName() );
00323
00324 defaultProgress->slotCreatingDir( 0, dir );
00325 }
00326
00327
00328
void ProgressItem::setDeleting(
const KURL& url ) {
00329 setText( ListProgress::TB_OPERATION, i18n(
"Deleting") );
00330 setText( ListProgress::TB_ADDRESS, url.
url() );
00331 setText( ListProgress::TB_LOCAL_FILENAME, url.
fileName() );
00332
00333 defaultProgress->slotDeleting( 0, url );
00334 }
00335
00336
void ProgressItem::setTransferring(
const KURL& url ) {
00337 setText( ListProgress::TB_OPERATION, i18n(
"Loading") );
00338 setText( ListProgress::TB_ADDRESS, url.
url() );
00339 setText( ListProgress::TB_LOCAL_FILENAME, url.
fileName() );
00340
00341 defaultProgress->slotTransferring( 0, url );
00342 }
00343
00344
void ProgressItem::setText(ListProgress::ListProgressFields field,
const QString& text)
00345 {
00346
if (listProgress->
m_lpcc[field].enabled)
00347 {
00348
QString t=text;
00349
if ((field==ListProgress::TB_ADDRESS) && (listProgress->
m_fixedColumnWidths))
00350
00351 {
00352 m_fullLengthAddress=text;
00353 listProgress->
m_squeezer->resize(listProgress->
columnWidth(listProgress->
m_lpcc[field].index),50);
00354 listProgress->
m_squeezer->
setText(t);
00355 t=listProgress->
m_squeezer->
text();
00356 }
00357
QListViewItem::setText(listProgress->
m_lpcc[field].index,t);
00358 }
00359 }
00360
00361
void ProgressItem::setStating(
const KURL& url ) {
00362 setText( ListProgress::TB_OPERATION, i18n(
"Examining") );
00363 setText( ListProgress::TB_ADDRESS, url.
url() );
00364 setText( ListProgress::TB_LOCAL_FILENAME, url.
fileName() );
00365
00366 defaultProgress->slotStating( 0, url );
00367 }
00368
00369
void ProgressItem::setMounting(
const QString& dev,
const QString & point ) {
00370 setText( ListProgress::TB_OPERATION, i18n(
"Mounting") );
00371 setText( ListProgress::TB_ADDRESS, point );
00372 setText( ListProgress::TB_LOCAL_FILENAME, dev );
00373
00374 defaultProgress->slotMounting( 0, dev, point );
00375 }
00376
00377
void ProgressItem::setUnmounting(
const QString & point ) {
00378 setText( ListProgress::TB_OPERATION, i18n(
"Unmounting") );
00379 setText( ListProgress::TB_ADDRESS, point );
00380 setText( ListProgress::TB_LOCAL_FILENAME,
"" );
00381
00382 defaultProgress->slotUnmounting( 0, point );
00383 }
00384
00385
void ProgressItem::setCanResume( KIO::filesize_t offset ) {
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396 defaultProgress->slotCanResume( 0, offset );
00397 }
00398
00399
00400
void ProgressItem::slotCanceled() {
00401 emit jobCanceled(
this );
00402 }
00403
00404
00405
void ProgressItem::slotShowDefaultProgress() {
00406
if (defaultProgress)
00407 {
00408
if ( m_visible && m_defaultProgressVisible )
00409 defaultProgress->show();
00410
else
00411 defaultProgress->hide();
00412 }
00413 }
00414
00415
void ProgressItem::slotToggleDefaultProgress() {
00416 setDefaultProgressVisible( !m_defaultProgressVisible );
00417 }
00418
00419
00420
00421
void ProgressItem::setVisible(
bool visible ) {
00422
if ( m_visible != visible )
00423 {
00424 m_visible = visible;
00425 updateVisibility();
00426 }
00427 }
00428
00429
00430
void ProgressItem::setDefaultProgressVisible(
bool visible ) {
00431
if ( m_defaultProgressVisible != visible )
00432 {
00433 m_defaultProgressVisible = visible;
00434 updateVisibility();
00435 }
00436 }
00437
00438
00439
void ProgressItem::updateVisibility()
00440 {
00441
if (defaultProgress)
00442 {
00443
if ( m_visible && m_defaultProgressVisible )
00444 {
00445 m_showTimer.
start(250,
true);
00446 }
00447
else
00448 {
00449 m_showTimer.
stop();
00450 defaultProgress->hide();
00451 }
00452 }
00453 }
00454
00455
00456
00457 ListProgress::ListProgress (
QWidget *parent,
const char *name)
00458 : KListView (parent,
name)
00459 {
00460
00461
00462 setMultiSelection(
true );
00463
00464 setAllColumnsShowFocus(
true );
00465
00466 m_lpcc[TB_OPERATION].title=i18n(
"Operation");
00467 m_lpcc[TB_LOCAL_FILENAME].title=i18n(
"Local Filename");
00468 m_lpcc[TB_RESUME].title=i18n(
"Resume",
"Res.");
00469 m_lpcc[TB_COUNT].title=i18n(
"Count");
00470 m_lpcc[TB_PROGRESS].title=i18n(
"%");
00471 m_lpcc[TB_TOTAL].title=i18n(
"Size");
00472 m_lpcc[TB_SPEED].title=i18n(
"Speed");
00473 m_lpcc[TB_REMAINING_TIME].title=i18n(
"Remaining Time",
"Rem. Time");
00474 m_lpcc[TB_ADDRESS].title=i18n(
"URL");
00475 readSettings();
00476
00477 applySettings();
00478
00479
00480 m_squeezer=
new KSqueezedTextLabel(
this);
00481 m_squeezer->hide();
00482 connect(header(),SIGNAL(sizeChange(
int,
int,
int)),
this,SLOT(columnWidthChanged(
int)));
00483 }
00484
00485
00486 ListProgress::~ListProgress() {
00487 }
00488
00489
void ListProgress::applySettings()
00490 {
00491
int iEnabledCols=0;
00492
00493
00494
for (
int i=0; i<TB_MAX; i++)
00495 {
00496
if ( !m_lpcc[i].enabled )
00497
continue;
00498
00499 iEnabledCols++;
00500
00501
00502
if ( iEnabledCols >
columns() )
00503 m_lpcc[i].index=
addColumn(m_lpcc[i].title, m_fixedColumnWidths?m_lpcc[i].width:-1);
00504
else
00505 {
00506 m_lpcc[i].index = iEnabledCols - 1;
00507
setColumnText(m_lpcc[i].index, m_lpcc[i].title);
00508 }
00509
00510
setColumnWidth(m_lpcc[i].index, m_lpcc[i].width);
00511
if (m_fixedColumnWidths)
00512
setColumnWidthMode(m_lpcc[i].index, Manual);
00513 }
00514
00515
00516
00517
while( iEnabledCols < columns() && columns() > 1 )
00518
removeColumn(
columns() - 1 );
00519
00520
if (
columns() == 0 )
00521
addColumn(
"" );
00522
00523
if ( !m_showHeader || iEnabledCols == 0 )
00524
header()->hide();
00525
else
00526
header()->show();
00527 }
00528
00529
void ListProgress::readSettings() {
00530
KConfig config(
"uiserverrc");
00531
00532
00533 config.
setGroup(
"ProgressList" );
00534
for (
int i = 0; i < TB_MAX; i++ ) {
00535
QString tmps=
"Col"+
QString::number(i);
00536 m_lpcc[i].width=config.
readNumEntry( tmps, 0);
00537
if (m_lpcc[i].width==0) m_lpcc[i].width=defaultColumnWidth[i];
00538
00539 tmps=
"Enabled"+
QString::number(i);
00540 m_lpcc[i].enabled=config.
readBoolEntry(tmps,
true);
00541 }
00542 m_showHeader=config.
readBoolEntry(
"ShowListHeader",
true);
00543 m_fixedColumnWidths=config.
readBoolEntry(
"FixedColumnWidths",
false);
00544
00545 m_lpcc[TB_RESUME].enabled=
false;
00546 }
00547
00548
void ListProgress::columnWidthChanged(
int column)
00549 {
00550
00551
if ((m_lpcc[TB_ADDRESS].enabled) && (column==m_lpcc[TB_ADDRESS].index))
00552 {
00553
for (
QListViewItem* lvi=
firstChild(); lvi!=0; lvi=lvi->
nextSibling())
00554 {
00555
ProgressItem *pi=(
ProgressItem*)lvi;
00556 pi->
setText(TB_ADDRESS,pi->
fullLengthAddress());
00557 }
00558 }
00559 writeSettings();
00560 }
00561
00562
void ListProgress::writeSettings() {
00563
KConfig config(
"uiserverrc");
00564
00565
00566 config.
setGroup(
"ProgressList" );
00567
for (
int i = 0; i < TB_MAX; i++ ) {
00568
if (!m_lpcc[i].enabled) {
00569
QString tmps=
"Enabled" +
QString::number(i);
00570 config.
writeEntry( tmps,
false );
00571
continue;
00572 }
00573 m_lpcc[i].width=
columnWidth(m_lpcc[i].index);
00574
QString tmps=
"Col"+
QString::number(i);
00575 config.
writeEntry( tmps, m_lpcc[i].width);
00576 }
00577 config.
writeEntry(
"ShowListHeader", m_showHeader);
00578 config.
writeEntry(
"FixedColumnWidths", m_fixedColumnWidths);
00579 config.
sync();
00580 }
00581
00582
00583
00584
00585
00586 UIServer::UIServer()
00587 :
KMainWindow(0, "")
00588 ,
DCOPObject("
UIServer")
00589 ,m_shuttingDown(false)
00590 ,m_configDialog(0)
00591 ,m_contextMenu(0)
00592 ,m_systemTray(0)
00593 {
00594
00595 readSettings();
00596
00597
00598 toolBar()->insertButton(
"editdelete", TOOL_CANCEL,
00599 SIGNAL(clicked()),
this,
00600 SLOT(slotCancelCurrent()), FALSE, i18n(
"Cancel"));
00601 toolBar()->insertButton(
"configure", TOOL_CONFIGURE,
00602 SIGNAL(clicked()),
this,
00603 SLOT(slotConfigure()),
true, i18n(
"Settings..."));
00604
00605 toolBar()->setBarPos( KToolBar::Left );
00606
00607
00608 statusBar()->insertItem( i18n(
" Files: %1 ").arg( 0 ), ID_TOTAL_FILES);
00609 statusBar()->insertItem( i18n(
"Remaining Size",
" Rem. Size: %1 kB ").arg(
"0" ), ID_TOTAL_SIZE);
00610 statusBar()->insertItem( i18n(
"Remaining Time",
" Rem. Time: 00:00:00 "), ID_TOTAL_TIME);
00611 statusBar()->insertItem( i18n(
" %1 kB/s ").arg(
"0"), ID_TOTAL_SPEED);
00612
00613
00614 listProgress =
new ListProgress(
this,
"progresslist" );
00615
00616 setCentralWidget( listProgress );
00617
00618 connect( listProgress, SIGNAL( selectionChanged() ),
00619 SLOT( slotSelection() ) );
00620 connect( listProgress, SIGNAL( executed(
QListViewItem* ) ),
00621 SLOT( slotToggleDefaultProgress(
QListViewItem* ) ) );
00622 connect( listProgress, SIGNAL( contextMenu( KListView*,
QListViewItem *,
const QPoint &)),
00623 SLOT(slotShowContextMenu(KListView*,
QListViewItem *,
const QPoint&)));
00624
00625
00626
00627 updateTimer =
new QTimer(
this );
00628 connect( updateTimer, SIGNAL( timeout() ),
00629 SLOT( slotUpdate() ) );
00630 m_bUpdateNewJob=
false;
00631
00632 setCaption(i18n(
"Progress Dialog"));
00633 setMinimumSize( 150, 50 );
00634 resize( m_initWidth, m_initHeight);
00635
00636 applySettings();
00637
00638
00639
00640
00641
00642
00643
00644 hide();
00645 }
00646
00647 UIServer::~UIServer() {
00648 updateTimer->
stop();
00649 }
00650
00651
void UIServer::applySettings()
00652 {
00653
if ((m_showSystemTray) && (m_systemTray==0))
00654 {
00655 m_systemTray=
new UIServerSystemTray(
this);
00656 m_systemTray->show();
00657 }
00658
else if ((m_showSystemTray==
false) && (m_systemTray!=0))
00659 {
00660
delete m_systemTray;
00661 m_systemTray=0;
00662 }
00663
00664
if (m_showStatusBar==
false)
00665
statusBar()->hide();
00666
else
00667
statusBar()->show();
00668
if (m_showToolBar==
false)
00669
toolBar()->
hide();
00670
else
00671
toolBar()->
show();
00672 }
00673
00674
void UIServer::slotShowContextMenu(KListView*,
QListViewItem* item,
const QPoint& pos)
00675 {
00676
if (m_contextMenu==0)
00677 {
00678 m_contextMenu=
new QPopupMenu(
this);
00679 m_idCancelItem = m_contextMenu->
insertItem(i18n(
"Cancel Job"),
this, SLOT(slotCancelCurrent()));
00680
00681 m_contextMenu->
insertSeparator();
00682 m_contextMenu->
insertItem(i18n(
"Settings..."),
this, SLOT(slotConfigure()));
00683 }
00684
if ( item )
00685 item->
setSelected(
true );
00686
bool enabled =
false;
00687
QListViewItemIterator it( listProgress );
00688
for ( ; it.
current(); ++it ) {
00689
if ( it.
current()->isSelected() ) {
00690 enabled =
true;
00691
break;
00692 }
00693 }
00694 m_contextMenu->
setItemEnabled( m_idCancelItem, enabled);
00695
00696 m_contextMenu->
popup(pos);
00697 }
00698
00699
void UIServer::slotRemoveSystemTrayIcon()
00700 {
00701 m_showSystemTray=
false;
00702 applySettings();
00703 writeSettings();
00704 }
00705
00706
void UIServer::slotConfigure()
00707 {
00708
if (m_configDialog==0)
00709 {
00710 m_configDialog=
new ProgressConfigDialog(0);
00711
00712 connect(m_configDialog,SIGNAL(okClicked()),
this, SLOT(slotApplyConfig()));
00713 connect(m_configDialog,SIGNAL(applyClicked()),
this, SLOT(slotApplyConfig()));
00714 }
00715 m_configDialog->m_showSystemTrayCb->setChecked(m_showSystemTray);
00716 m_configDialog->m_keepOpenCb->setChecked(m_keepListOpen);
00717 m_configDialog->m_toolBarCb->setChecked(m_showToolBar);
00718 m_configDialog->m_statusBarCb->setChecked(m_showStatusBar);
00719 m_configDialog->m_headerCb->setChecked(listProgress->
m_showHeader);
00720 m_configDialog->m_fixedWidthCb->setChecked(listProgress->
m_fixedColumnWidths);
00721
for (
int i=0; i<ListProgress::TB_MAX; i++)
00722 {
00723 m_configDialog->setChecked(i, listProgress->
m_lpcc[i].enabled);
00724 }
00725 m_configDialog->show();
00726 }
00727
00728
void UIServer::slotApplyConfig()
00729 {
00730 m_showSystemTray=m_configDialog->m_showSystemTrayCb->isChecked();
00731 m_keepListOpen=m_configDialog->m_keepOpenCb->isChecked();
00732 m_showToolBar=m_configDialog->m_toolBarCb->isChecked();
00733 m_showStatusBar=m_configDialog->m_statusBarCb->isChecked();
00734 listProgress->
m_showHeader=m_configDialog->m_headerCb->isChecked();
00735 listProgress->
m_fixedColumnWidths=m_configDialog->m_fixedWidthCb->isChecked();
00736
for (
int i=0; i<ListProgress::TB_MAX; i++)
00737 listProgress->
m_lpcc[i].enabled=m_configDialog->isChecked(i);
00738
00739
00740 applySettings();
00741 listProgress->
applySettings();
00742 writeSettings();
00743 listProgress->
writeSettings();
00744 }
00745
00746 int UIServer::newJob(
QCString observerAppId,
bool showProgress )
00747 {
00748
kdDebug(7024) <<
"UIServer::newJob observerAppId=" << observerAppId <<
". "
00749 <<
"Giving id=" << s_jobId+1 <<
endl;
00750
00751
QListViewItemIterator it( listProgress );
00752
for ( ; it.
current(); ++it ) {
00753
if ( it.
current()->itemBelow() == 0L ) {
00754
break;
00755 }
00756 }
00757
00758
00759 s_jobId++;
00760
00761
bool show = !m_bShowList && showProgress;
00762
00763
ProgressItem *item =
new ProgressItem( listProgress, it.
current(), observerAppId, s_jobId, show );
00764 connect( item, SIGNAL( jobCanceled( ProgressItem* ) ),
00765 SLOT( slotJobCanceled( ProgressItem* ) ) );
00766
00767
if ( m_bShowList && !updateTimer->
isActive() )
00768 updateTimer->
start( 1000 );
00769
00770 m_bUpdateNewJob=
true;
00771
00772
return s_jobId;
00773 }
00774
00775
00776
ProgressItem* UIServer::findItem(
int id )
00777 {
00778
QListViewItemIterator it( listProgress );
00779
00780
ProgressItem *item;
00781
00782
for ( ; it.
current(); ++it ) {
00783 item = (
ProgressItem*) it.
current();
00784
if ( item->
jobId() ==
id ) {
00785
return item;
00786 }
00787 }
00788
00789
return 0L;
00790 }
00791
00792
00793
void UIServer::setItemVisible(
ProgressItem * item,
bool visible )
00794 {
00795 item->
setVisible( visible );
00796
00797
00798
00799
if ( m_bShowList ) {
00800 m_bUpdateNewJob =
true;
00801 slotUpdate();
00802 }
00803 }
00804
00805
00806 void UIServer::setJobVisible(
int id,
bool visible )
00807 {
00808
kdDebug(7024) <<
"UIServer::setJobVisible id=" <<
id <<
" visible=" << visible <<
endl;
00809
ProgressItem *item = findItem(
id );
00810 Q_ASSERT( item );
00811
if ( item )
00812 setItemVisible( item, visible );
00813 }
00814
00815
void UIServer::jobFinished(
int id )
00816 {
00817
kdDebug(7024) <<
"UIServer::jobFinished id=" <<
id <<
endl;
00818
ProgressItem *item = findItem(
id );
00819
00820
00821
if ( item ) {
00822
if ( item->
keepOpen() )
00823 item->
finished();
00824
else
00825
delete item;
00826 }
00827 }
00828
00829
00830
void UIServer::totalSize(
int id,
unsigned long size )
00831 { totalSize64(
id, size); }
00832
00833
void UIServer::totalSize64(
int id, KIO::filesize_t size )
00834 {
00835
00836
00837
ProgressItem *item = findItem(
id );
00838
if ( item ) {
00839 item->
setTotalSize( size );
00840 }
00841 }
00842
00843
void UIServer::totalFiles(
int id,
unsigned long files )
00844 {
00845
kdDebug(7024) <<
"UIServer::totalFiles " <<
id <<
" " << (
unsigned int) files <<
endl;
00846
00847
ProgressItem *item = findItem(
id );
00848
if ( item ) {
00849 item->
setTotalFiles( files );
00850 }
00851 }
00852
00853
void UIServer::totalDirs(
int id,
unsigned long dirs )
00854 {
00855
kdDebug(7024) <<
"UIServer::totalDirs " <<
id <<
" " << (
unsigned int) dirs <<
endl;
00856
00857
ProgressItem *item = findItem(
id );
00858
if ( item ) {
00859 item->
setTotalDirs( dirs );
00860 }
00861 }
00862
00863
void UIServer::processedSize(
int id,
unsigned long size )
00864 { processedSize64(
id, size); }
00865
00866
void UIServer::processedSize64(
int id, KIO::filesize_t size )
00867 {
00868
00869
00870
ProgressItem *item = findItem(
id );
00871
if ( item ) {
00872 item->
setProcessedSize( size );
00873 }
00874 }
00875
00876
void UIServer::processedFiles(
int id,
unsigned long files )
00877 {
00878
00879
00880
ProgressItem *item = findItem(
id );
00881
if ( item ) {
00882 item->
setProcessedFiles( files );
00883 }
00884 }
00885
00886
void UIServer::processedDirs(
int id,
unsigned long dirs )
00887 {
00888
kdDebug(7024) <<
"UIServer::processedDirs " <<
id <<
" " << (
unsigned int) dirs <<
endl;
00889
00890
ProgressItem *item = findItem(
id );
00891
if ( item ) {
00892 item->
setProcessedDirs( dirs );
00893 }
00894 }
00895
00896
void UIServer::percent(
int id,
unsigned long ipercent )
00897 {
00898
00899
00900
ProgressItem *item = findItem(
id );
00901
if ( item ) {
00902 item->
setPercent( ipercent );
00903 }
00904 }
00905
00906
void UIServer::speed(
int id,
unsigned long bytes_per_second )
00907 {
00908
00909
00910
ProgressItem *item = findItem(
id );
00911
if ( item ) {
00912 item->
setSpeed( bytes_per_second );
00913 }
00914 }
00915
00916
void UIServer::infoMessage(
int id,
const QString & msg )
00917 {
00918
00919
00920
ProgressItem *item = findItem(
id );
00921
if ( item ) {
00922 item->
setInfoMessage( msg );
00923 }
00924 }
00925
00926
void UIServer::canResume(
int id,
unsigned long offset )
00927 { canResume64(
id, offset); }
00928
00929
void UIServer::canResume64(
int id, KIO::filesize_t offset )
00930 {
00931
00932
00933
ProgressItem *item = findItem(
id );
00934
if ( item ) {
00935 item->
setCanResume( offset );
00936 }
00937 }
00938
00939
void UIServer::copying(
int id,
KURL from,
KURL to )
00940 {
00941
00942
00943
ProgressItem *item = findItem(
id );
00944
if ( item ) {
00945 item->
setCopying( from, to );
00946 }
00947 }
00948
00949
void UIServer::moving(
int id,
KURL from,
KURL to )
00950 {
00951
00952
00953
ProgressItem *item = findItem(
id );
00954
if ( item ) {
00955 item->
setMoving( from, to );
00956 }
00957 }
00958
00959
void UIServer::deleting(
int id,
KURL url )
00960 {
00961
00962
00963
ProgressItem *item = findItem(
id );
00964
if ( item ) {
00965 item->
setDeleting( url );
00966 }
00967 }
00968
00969
void UIServer::transferring(
int id,
KURL url )
00970 {
00971
00972
00973
ProgressItem *item = findItem(
id );
00974
if ( item ) {
00975 item->
setTransferring( url );
00976 }
00977 }
00978
00979
void UIServer::creatingDir(
int id,
KURL dir )
00980 {
00981
kdDebug(7024) <<
"UIServer::creatingDir " <<
id <<
" " << dir.
url() <<
endl;
00982
00983
ProgressItem *item = findItem(
id );
00984
if ( item ) {
00985 item->
setCreatingDir( dir );
00986 }
00987 }
00988
00989
void UIServer::stating(
int id,
KURL url )
00990 {
00991
kdDebug(7024) <<
"UIServer::stating " <<
id <<
" " << url.
url() <<
endl;
00992
00993
ProgressItem *item = findItem(
id );
00994
if ( item ) {
00995 item->
setStating( url );
00996 }
00997 }
00998
00999
void UIServer::mounting(
int id,
QString dev,
QString point )
01000 {
01001
kdDebug(7024) <<
"UIServer::mounting " <<
id <<
" " << dev <<
" " << point <<
endl;
01002
01003
ProgressItem *item = findItem(
id );
01004
if ( item ) {
01005 item->
setMounting( dev, point );
01006 }
01007 }
01008
01009
void UIServer::unmounting(
int id,
QString point )
01010 {
01011
kdDebug(7024) <<
"UIServer::unmounting " <<
id <<
" " << point <<
endl;
01012
01013
ProgressItem *item = findItem(
id );
01014
if ( item ) {
01015 item->
setUnmounting( point );
01016 }
01017 }
01018
01019
void UIServer::killJob(
QCString observerAppId,
int progressId )
01020 {
01021
01022 Observer_stub observer( observerAppId,
"KIO::Observer" );
01023
01024 observer.killJob( progressId );
01025 }
01026
01027
void UIServer::slotJobCanceled(
ProgressItem *item ) {
01028
kdDebug(7024) <<
"UIServer::slotJobCanceled appid=" << item->
appId() <<
" jobid=" << item->
jobId() <<
endl;
01029
01030 killJob( item->
appId(), item->
jobId() );
01031
01032
01033
01034
delete item;
01035 }
01036
01037
01038
void UIServer::slotQuit()
01039 {
01040 m_shuttingDown =
true;
01041 kapp->quit();
01042 }
01043
01044
void UIServer::slotUpdate() {
01045
01046
01047
QListViewItemIterator lvit( listProgress );
01048
bool visible =
false;
01049
for ( ; lvit.
current(); ++lvit )
01050
if ( ((
ProgressItem*)lvit.
current())->isVisible() ) {
01051 visible =
true;
01052
break;
01053 }
01054
01055
if ( !visible || !m_bShowList ) {
01056
if (!m_keepListOpen)
hide();
01057 updateTimer->
stop();
01058
return;
01059 }
01060
01061
01062
01063
if (m_bUpdateNewJob)
01064 {
01065 m_bUpdateNewJob=
false;
01066
show();
01067
01068
01069
if ( m_bShowList && !updateTimer->
isActive() )
01070 updateTimer->
start( 1000 );
01071 }
01072
01073
int iTotalFiles = 0;
01074 KIO::filesize_t iTotalSize = 0;
01075
int iTotalSpeed = 0;
01076
QTime totalRemTime;
01077
01078
ProgressItem *item;
01079
01080
01081
QListViewItemIterator it( listProgress );
01082
01083
for ( ; it.
current(); ++it ) {
01084 item = (
ProgressItem*) it.
current();
01085
if ( item->
totalSize() != 0 ) {
01086 iTotalSize += ( item->
totalSize() - item->
processedSize() );
01087 }
01088 iTotalFiles += ( item->
totalFiles() - item->
processedFiles() );
01089 iTotalSpeed += item->
speed();
01090
01091
if ( item->
remainingTime() > totalRemTime ) {
01092 totalRemTime = item->
remainingTime();
01093 }
01094 }
01095
01096
01097
statusBar()->
changeItem( i18n(
" Files: %1 ").arg( iTotalFiles ), ID_TOTAL_FILES);
01098
statusBar()->
changeItem( i18n(
"Remaining Size",
" Rem. Size: %1 ").arg( KIO::convertSize( iTotalSize ) ),
01099 ID_TOTAL_SIZE);
01100
statusBar()->
changeItem( i18n(
"Remaining Time",
" Rem. Time: %1 ").arg( totalRemTime.
toString() ),
01101 ID_TOTAL_TIME);
01102
statusBar()->
changeItem( i18n(
" %1/s ").arg( KIO::convertSize( iTotalSpeed ) ),
01103 ID_TOTAL_SPEED);
01104
01105 }
01106
01107 void UIServer::setListMode(
bool list )
01108 {
01109 m_bShowList = list;
01110
QListViewItemIterator it( listProgress );
01111
for ( ; it.
current(); ++it ) {
01112
01113
01114 ((
ProgressItem*) it.
current())->setDefaultProgressVisible( !list );
01115 }
01116
01117
if (m_bShowList)
01118 {
01119
show();
01120 updateTimer->
start( 1000 );
01121 }
01122
else
01123 {
01124
hide();
01125 updateTimer->
stop();
01126 }
01127 }
01128
01129
void UIServer::slotToggleDefaultProgress(
QListViewItem *item ) {
01130 ((
ProgressItem*) item )->slotToggleDefaultProgress();
01131 }
01132
01133
01134
void UIServer::slotSelection() {
01135
QListViewItemIterator it( listProgress );
01136
01137
for ( ; it.
current(); ++it ) {
01138
if ( it.
current()->isSelected() ) {
01139
toolBar()->
setItemEnabled( TOOL_CANCEL, TRUE);
01140
return;
01141 }
01142 }
01143
toolBar()->
setItemEnabled( TOOL_CANCEL, FALSE);
01144 }
01145
01146
01147
01148 QByteArray UIServer::openPassDlg(
const KIO::AuthInfo &info )
01149 {
01150
kdDebug(7024) <<
"UIServer::openPassDlg: User= " << info.
username
01151 <<
", Msg= " << info.
prompt <<
endl;
01152
KIO::AuthInfo inf(info);
01153
int result = KIO::PasswordDialog::getNameAndPassword( inf.
username, inf.
password,
01154 &inf.
keepPassword, inf.
prompt,
01155 inf.
readOnly, inf.
caption,
01156 inf.
comment, inf.
commentLabel );
01157
QByteArray data;
01158
QDataStream stream( data, IO_WriteOnly );
01159
if ( result == QDialog::Accepted )
01160 inf.
setModified(
true );
01161
else
01162 inf.
setModified(
false );
01163 stream << inf;
01164
return data;
01165 }
01166
01167 int UIServer::messageBox(
int progressId,
int type,
const QString &text,
const QString &caption,
const QString &buttonYes,
const QString &buttonNo )
01168 {
01169
return Observer::messageBox( progressId, type, text, caption, buttonYes, buttonNo );
01170 }
01171
01172 void UIServer::showSSLInfoDialog(
const QString &url,
const KIO::MetaData &meta)
01173 {
01174
return showSSLInfoDialog(url,meta,0);
01175 }
01176
01177 void UIServer::showSSLInfoDialog(
const QString &url,
const KIO::MetaData &meta,
int mainwindow)
01178 {
01179
KSSLInfoDlg *kid =
new KSSLInfoDlg(meta[
"ssl_in_use"].upper()==
"TRUE", 0L , 0L,
true);
01180
KSSLCertificate *x = KSSLCertificate::fromString(meta[
"ssl_peer_certificate"].local8Bit());
01181
if (x) {
01182
01183
QStringList cl =
01184 QStringList::split(
QString(
"\n"), meta[
"ssl_peer_chain"]);
01185
QPtrList<KSSLCertificate> ncl;
01186
01187 ncl.
setAutoDelete(
true);
01188
for (QStringList::Iterator it = cl.begin(); it != cl.end(); ++it) {
01189
KSSLCertificate *y = KSSLCertificate::fromString((*it).local8Bit());
01190
if (y) ncl.
append(y);
01191 }
01192
01193
if (ncl.
count() > 0)
01194 x->
chain().
setChain(ncl);
01195
01196
kdDebug(7024) <<
"ssl_cert_errors=" << meta[
"ssl_cert_errors"] <<
endl;
01197 kid->
setCertState(meta[
"ssl_cert_errors"]);
01198 kid->
setup( x,
01199 meta[
"ssl_peer_ip"],
01200 url,
01201 meta[
"ssl_cipher"],
01202 meta[
"ssl_cipher_desc"],
01203 meta[
"ssl_cipher_version"],
01204 meta[
"ssl_cipher_used_bits"].toInt(),
01205 meta[
"ssl_cipher_bits"].toInt(),
01206 KSSLCertificate::KSSLValidation(meta[
"ssl_cert_state"].toInt()));
01207
kdDebug(7024) <<
"Showing SSL Info dialog" <<
endl;
01208
#ifndef Q_WS_WIN
01209
if( mainwindow != 0 )
01210 KWin::setMainWindow( kid, mainwindow );
01211
#endif
01212
kid->
exec();
01213
delete x;
01214
kdDebug(7024) <<
"SSL Info dialog closed" <<
endl;
01215 }
else {
01216 KMessageBox::information( 0L,
01217 i18n(
"The peer SSL certificate appears to be corrupt."), i18n(
"SSL") );
01218 }
01219
01220 }
01221
01222 KSSLCertDlgRet UIServer::showSSLCertDialog(
const QString& host,
const QStringList& certList)
01223 {
01224
return showSSLCertDialog( host, certList, 0 );
01225 }
01226
01227 KSSLCertDlgRet UIServer::showSSLCertDialog(
const QString& host,
const QStringList& certList,
int mainwindow)
01228 {
01229 KSSLCertDlgRet rc;
01230 rc.ok =
false;
01231
if (!certList.isEmpty()) {
01232
KSSLCertDlg *kcd =
new KSSLCertDlg(0L, 0L,
true);
01233 kcd->
setupDialog(certList);
01234 kcd->
setHost(host);
01235
kdDebug(7024) <<
"Showing SSL certificate dialog" <<
endl;
01236
#ifndef Q_WS_WIN
01237
if( mainwindow != 0 )
01238 KWin::setMainWindow( kcd, mainwindow );
01239
#endif
01240
kcd->
exec();
01241 rc.ok =
true;
01242 rc.choice = kcd->
getChoice();
01243 rc.save = kcd->
saveChoice();
01244 rc.send = kcd->
wantsToSend();
01245
kdDebug(7024) <<
"SSL certificate dialog closed" <<
endl;
01246
delete kcd;
01247 }
01248
return rc;
01249 }
01250
01251
01252 QByteArray UIServer::open_RenameDlg(
int id,
01253
const QString & caption,
01254
const QString& src,
const QString & dest,
01255
int mode,
01256
unsigned long sizeSrc,
01257
unsigned long sizeDest,
01258
unsigned long ctimeSrc,
01259
unsigned long ctimeDest,
01260
unsigned long mtimeSrc,
01261
unsigned long mtimeDest
01262 )
01263 {
return open_RenameDlg64(
id, caption, src, dest, mode, sizeSrc, sizeDest,
01264 ctimeSrc, ctimeDest, mtimeSrc, mtimeDest); }
01265
01266
01267 QByteArray UIServer::open_RenameDlg64(
int id,
01268
const QString & caption,
01269
const QString& src,
const QString & dest,
01270
int mode,
01271
KIO::filesize_t sizeSrc,
01272 KIO::filesize_t sizeDest,
01273
unsigned long ctimeSrc,
01274
unsigned long ctimeDest,
01275
unsigned long mtimeSrc,
01276
unsigned long mtimeDest
01277 )
01278 {
01279
01280
ProgressItem *item = findItem(
id );
01281
if ( item )
01282 setItemVisible( item,
false );
01283
QString newDest;
01284
kdDebug(7024) <<
"Calling KIO::open_RenameDlg" <<
endl;
01285 KIO::RenameDlg_Result result = KIO::open_RenameDlg( caption, src, dest,
01286 (KIO::RenameDlg_Mode) mode, newDest,
01287 sizeSrc, sizeDest,
01288 (time_t)ctimeSrc, (time_t)ctimeDest,
01289 (time_t)mtimeSrc, (time_t)mtimeDest );
01290
kdDebug(7024) <<
"KIO::open_RenameDlg done" <<
endl;
01291
QByteArray data;
01292
QDataStream stream( data, IO_WriteOnly );
01293 stream << Q_UINT8(result) << newDest;
01294
if ( item && result != KIO::R_CANCEL )
01295 setItemVisible( item,
true );
01296
return data;
01297 }
01298
01299 int UIServer::open_SkipDlg(
int id,
01300
int multi,
01301
const QString & error_text )
01302 {
01303
01304
ProgressItem *item = findItem(
id );
01305
if ( item )
01306 setItemVisible( item,
false );
01307
kdDebug(7024) <<
"Calling KIO::open_SkipDlg" <<
endl;
01308 KIO::SkipDlg_Result result = KIO::open_SkipDlg( (
bool)multi, error_text );
01309
if ( item && result != KIO::S_CANCEL )
01310 setItemVisible( item,
true );
01311
return (KIO::SkipDlg_Result) result;
01312 }
01313
01314
01315
void UIServer::readSettings() {
01316
KConfig config(
"uiserverrc");
01317 config.
setGroup(
"UIServer" );
01318 m_showStatusBar=config.
readBoolEntry(
"ShowStatusBar",
false);
01319 m_showToolBar=config.
readBoolEntry(
"ShowToolBar",
true);
01320 m_keepListOpen=config.
readBoolEntry(
"KeepListOpen",
false);
01321 m_initWidth=config.
readNumEntry(
"InitialWidth",460);
01322 m_initHeight=config.
readNumEntry(
"InitialHeight",150);
01323 m_bShowList = config.
readBoolEntry(
"ShowList",
false );
01324 m_showSystemTray=config.
readBoolEntry(
"ShowSystemTray",
false);
01325 }
01326
01327
void UIServer::writeSettings() {
01328
KConfig config(
"uiserverrc");
01329 config.
setGroup(
"UIServer" );
01330 config.
writeEntry(
"InitialWidth",width());
01331 config.
writeEntry(
"InitialHeight",height());
01332 config.
writeEntry(
"ShowStatusBar", m_showStatusBar);
01333 config.
writeEntry(
"ShowToolBar", m_showToolBar);
01334 config.
writeEntry(
"KeepListOpen", m_keepListOpen);
01335 config.
writeEntry(
"ShowList", m_bShowList);
01336 config.
writeEntry(
"ShowSystemTray", m_showSystemTray);
01337 }
01338
01339
01340
void UIServer::slotCancelCurrent() {
01341
QListViewItemIterator it( listProgress );
01342
ProgressItem *item;
01343
01344
01345
for ( ; it.
current() ; ++it )
01346 {
01347
if ( it.
current()->isSelected() ) {
01348 item = (
ProgressItem*) it.
current();
01349 killJob( item->
appId(), item->
jobId() );
01350
return;
01351 }
01352 }
01353 }
01354
01355
void UIServer::resizeEvent(
QResizeEvent* e)
01356 {
01357
KMainWindow::resizeEvent(e);
01358 writeSettings();
01359 }
01360
01361
bool UIServer::queryClose()
01362 {
01363
if (( !m_shuttingDown ) && !kapp->sessionSaving()) {
01364
hide();
01365
return false;
01366 }
01367
return true;
01368 }
01369
01370
UIServer* UIServer::createInstance()
01371 {
01372
return new UIServer;
01373 }
01374
01375
01376
01377
extern "C" KDE_EXPORT
int kdemain(
int argc,
char **argv)
01378 {
01379
KLocale::setMainCatalogue(
"kdelibs");
01380
01381
01382
KAboutData aboutdata(
"kio_uiserver",
I18N_NOOP(
"KDE"),
01383
"0.8",
I18N_NOOP(
"KDE Progress Information UI Server"),
01384 KAboutData::License_GPL,
"(C) 2000, David Faure & Matt Koss");
01385
01386 aboutdata.
addAuthor(
"David Faure",
I18N_NOOP(
"Developer"),
"faure@kde.org");
01387 aboutdata.
addAuthor(
"Matej Koss",
I18N_NOOP(
"Developer"),
"koss@miesto.sk");
01388
01389
KCmdLineArgs::init( argc, argv, &aboutdata );
01390
01391
KUniqueApplication::addCmdLineOptions();
01392
01393
if (!
KUniqueApplication::start())
01394 {
01395
kdDebug(7024) <<
"kio_uiserver is already running!" <<
endl;
01396
return (0);
01397 }
01398
01399
KUniqueApplication app;
01400
01401
01402 app.
disableSessionManagement();
01403 app.
dcopClient()->
setDaemonMode(
true );
01404
01405 uiserver = UIServer::createInstance();
01406
01407
01408
01409
return app.
exec();
01410 }
01411
01412
#include "uiserver.moc"