You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.4 KiB
130 lines
3.4 KiB
/** -*- C++ -*-
|
|
@file adept/acqprogress.h
|
|
@author Peter Rockai <me@mornfall.net>
|
|
*/
|
|
|
|
#ifndef ACTQPROGRESS_H
|
|
#define ACTQPROGRESS_H
|
|
|
|
#include <tdelocale.h>
|
|
#include <kdialogbase.h>
|
|
#include <tdelistview.h>
|
|
#include <kprogress.h>
|
|
|
|
#include <vector>
|
|
#include <apt-pkg/acquire.h>
|
|
#include <apt-front/progresscallback.h>
|
|
|
|
class AcqStatus;
|
|
class TQLabel;
|
|
class TQProgressBar;
|
|
class TQSpacer;
|
|
class TQGridLayout;
|
|
|
|
namespace adept {
|
|
|
|
class AcqStatus : public TDEListView, public aptFront::ProgressCallback
|
|
{
|
|
Q_OBJECT
|
|
|
|
protected:
|
|
class ItemProgress: public KProgress {
|
|
public:
|
|
ItemProgress( TQWidget *parent, const char *name = 0 )
|
|
: KProgress( parent, name ), m_spin( 0 ) {}
|
|
void setStatus( const std::string &s,
|
|
int prog = 0 ) {
|
|
m_status = s;
|
|
if (m_status == "hit"
|
|
|| m_status == "ignored"
|
|
|| m_status == "done")
|
|
prog = 100;
|
|
if (m_status == "waiting") {
|
|
prog = 0;
|
|
}
|
|
if (m_status == "progress" && prog != 100)
|
|
setFormat( i18n( "downloading (%p%)" ) );
|
|
else if (prog == 100) // who cares about hit/ignore anyway?
|
|
setFormat( i18n( "done (%p%)" ) );
|
|
else
|
|
setFormat( m_status );
|
|
setProgress( prog );
|
|
}
|
|
protected:
|
|
std::string m_status;
|
|
int m_spin;
|
|
};
|
|
class Item : public TDEListViewItem {
|
|
protected:
|
|
ItemProgress *m_prog;
|
|
int m_pbcol;
|
|
unsigned long m_id;
|
|
pkgAcquire::ItemDesc m_item;
|
|
|
|
public:
|
|
Item (TDEListView *parent, pkgAcquire::ItemDesc &item,
|
|
bool hit = false);
|
|
virtual ~Item ();
|
|
|
|
virtual void paintCell (TQPainter *p, const TQColorGroup &cg,
|
|
int column, int width, int alignment);
|
|
|
|
void setProgress (int);
|
|
virtual int compare (TQListViewItem *i, int col, bool ascend) const;
|
|
virtual void pulse (pkgAcquire::Worker *);
|
|
void setStatus( const std::string &, int = 0 );
|
|
|
|
void setup() {
|
|
TDEListViewItem::setup();
|
|
setHeight( height() + 6 );
|
|
}
|
|
};
|
|
unsigned long ID;
|
|
unsigned long m_idOffset;
|
|
std::vector <Item *> m_items;
|
|
bool m_continue;
|
|
|
|
public:
|
|
|
|
enum Status { StWaiting, StDownloading, StDone };
|
|
|
|
AcqStatus (TQWidget *parent, const char *name);
|
|
Item *findItem (pkgAcquire::ItemDesc &Itm);
|
|
|
|
virtual bool MediaChange (string Media,string Drive);
|
|
virtual void IMSHit (pkgAcquire::ItemDesc &Itm);
|
|
virtual void Fetch (pkgAcquire::ItemDesc &Itm);
|
|
virtual void Done (pkgAcquire::ItemDesc &Itm);
|
|
virtual void Fail (pkgAcquire::ItemDesc &Itm);
|
|
virtual void Start ();
|
|
virtual void Stop ();
|
|
void addLine (TQWidget *l, TQWidget *s, TQWidget *prog);
|
|
void clear();
|
|
|
|
bool Pulse (pkgAcquire *Owner);
|
|
|
|
public slots:
|
|
void cancel();
|
|
|
|
signals:
|
|
void statusChanged (AcqStatus::Status st);
|
|
void totalProgress (int percent);
|
|
|
|
//AcqTextStatus(unsigned int &ScreenWidth,unsigned int Quiet);
|
|
};
|
|
|
|
class AcqStatusDialog : public KDialogBase
|
|
{
|
|
Q_OBJECT
|
|
|
|
protected:
|
|
aptFront::SharedPtr<AcqStatus> m_status;
|
|
public:
|
|
aptFront::SharedPtr<aptFront::ProgressCallback> callback() { return m_status.data(); };
|
|
AcqStatusDialog (TQWidget *parent, const char *name, bool modal);
|
|
public slots:
|
|
void statusChange (AcqStatus::Status st);
|
|
};
|
|
}
|
|
#endif
|