summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/launcher.cpp14
-rw-r--r--core/launcher/launcher.h2
-rw-r--r--core/launcher/launcherview.cpp31
-rw-r--r--core/launcher/launcherview.h3
4 files changed, 43 insertions, 7 deletions
diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp
index 6948976..66cc3e6 100644
--- a/core/launcher/launcher.cpp
+++ b/core/launcher/launcher.cpp
@@ -234,32 +234,35 @@ void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder,
// all documents
QImage img( Resource::loadImage( "DocsIcon" ) );
QPixmap pm;
pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() );
docview = newView( "Documents", // No tr
pm, tr("Documents"));
docview->populate( docFolder, QString::null );
docFolder->detachChildren();
docview->setFileSystems(fs);
docview->setToolsEnabled(TRUE);
setTabAppearance( "Documents", cfg ); // No tr
connect( categoryBar, SIGNAL(selected(int)), stack, SLOT(raiseWidget(int)) );
((LauncherView*)stack->widget(0))->setFocus();
+ cfg. setGroup ( "GUI" );
+ setBusyIndicatorType ( cfg. readEntry ( "BusyType", QString::null ));
+
categoryBar->show();
stack->show();
}
void CategoryTabWidget::setTabAppearance( const QString &id, Config &cfg )
{
QString grp( "Tab %1" ); // No tr
cfg.setGroup( grp.arg(id) );
LauncherView *v = view( id );
int idx = ids.findIndex( id );
CategoryTab *tab = (CategoryTab *)categoryBar->tab( idx );
// View
QString view = cfg.readEntry( "View", "Icon" );
if ( view == "List" ) // No tr
v->setViewMode( LauncherView::List );
@@ -358,32 +361,38 @@ void CategoryTabWidget::paletteChange( const QPalette &p )
void CategoryTabWidget::setBusy(bool on)
{
if ( on )
((LauncherView*)stack->visibleWidget())->setBusy(TRUE);
else
for (int i=0; i<tabs; i++)
((LauncherView*)stack->widget(i))->setBusy(FALSE);
}
LauncherView *CategoryTabWidget::view( const QString &id )
{
int idx = ids.findIndex( id );
return (LauncherView *)stack->widget(idx);
}
+void CategoryTabWidget::setBusyIndicatorType ( const QString &type )
+{
+ for ( QStringList::Iterator it = ids. begin ( ); it != ids. end ( ); ++it )
+ view ( *it )-> setBusyIndicatorType ( type );
+}
+
//===========================================================================
CategoryTabBar::CategoryTabBar( QWidget *parent, const char *name )
: QTabBar( parent, name )
{
setFocusPolicy( NoFocus );
connect( this, SIGNAL( selected(int) ), this, SLOT( layoutTabs() ) );
}
CategoryTabBar::~CategoryTabBar()
{
}
void CategoryTabBar::layoutTabs()
{
if ( !count() )
@@ -1154,32 +1163,37 @@ void Launcher::launcherMessage( const QCString &msg, const QByteArray &data)
tabs->view(id)->setTextColor( QColor(color) );
} else if ( msg == "setFont(QString,QString,int,int,int)" ) {
QString id;
stream >> id;
QString fam;
stream >> fam;
int size;
stream >> size;
int weight;
stream >> weight;
int italic;
stream >> italic;
if ( tabs->view(id) )
tabs->view(id)->setViewFont( QFont(fam, size, weight, italic!=0) );
qDebug( "setFont: %s, %d, %d, %d", fam.latin1(), size, weight, italic );
}
+ else if ( msg == "setBusyIndicatorType(QString)" ) {
+ QString type;
+ stream >> type;
+ tabs->setBusyIndicatorType(type);
+ }
}
void Launcher::storageChanged()
{
if ( in_lnk_props ) {
got_lnk_change = TRUE;
lnk_change = QString::null;
} else {
updateLink( QString::null );
}
}
bool Launcher::mkdir(const QString &localPath)
{
QDir fullDir(localPath);
diff --git a/core/launcher/launcher.h b/core/launcher/launcher.h
index e3881ea..89bf6f3 100644
--- a/core/launcher/launcher.h
+++ b/core/launcher/launcher.h
@@ -50,33 +50,33 @@ protected:
void paint ( QPainter *p, QTab *t, bool f ) const;
void paintLabel( QPainter* p, const QRect& br, QTab* t, bool has_focus ) const;
};
class CategoryTabWidget : public QVBox {
// can't use a QTabWidget, since it won't let us set the frame style.
Q_OBJECT
public:
CategoryTabWidget( QWidget* parent );
void initializeCategories(AppLnkSet* rootFolder, AppLnkSet* docFolder,
const QList<FileSystem> &);
void updateDocs(AppLnkSet* docFolder, const QList<FileSystem> &fs);
void updateLink(const QString& linkfile);
void setBusy(bool on);
QString getAllDocLinkInfo() const;
LauncherView *view( const QString &id );
-
+ void setBusyIndicatorType ( const QString &type );
signals:
void selected(const QString&);
void clicked(const AppLnk*);
void rightPressed(AppLnk*);
public slots:
void nextTab();
void prevTab();
protected slots:
void tabProperties();
protected:
void setTabAppearance( const QString &id, Config &cfg );
void paletteChange( const QPalette &p );
diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp
index e15b150..fa46543 100644
--- a/core/launcher/launcherview.cpp
+++ b/core/launcher/launcherview.cpp
@@ -39,78 +39,84 @@
#include <qhbox.h>
#include <qiconview.h>
#include <qpainter.h>
#include <qregexp.h>
#include <qtoolbutton.h>
#include <qimage.h>
class BgPixmap
{
public:
BgPixmap( const QPixmap &p ) : pm(p), ref(1) {}
QPixmap pm;
int ref;
};
+enum BusyIndicatorType {
+ BIT_Normal = 0,
+ BIT_Blinking
+};
+
static QMap<QString,BgPixmap*> *bgCache = 0;
class LauncherIconView : public QIconView {
public:
LauncherIconView( QWidget* parent, const char* name=0 ) :
QIconView(parent,name),
tf(""),
cf(0),
bsy(0),
bigIcns(TRUE),
bgColor(white)
{
sortmeth = Name;
hidden.setAutoDelete(TRUE);
ike = FALSE;
busytimer = 0;
calculateGrid( Bottom );
}
~LauncherIconView()
{
#if 0 // debuggery
QListIterator<AppLnk> it(hidden);
AppLnk* l;
while ((l=it.current())) {
++it;
//qDebug("%p: hidden (should remove)",l);
}
#endif
}
+
+ void setBusyIndicatorType ( BusyIndicatorType t ) { busyType = t; }
QPixmap* busyPixmap() const { return (QPixmap*)&bpm[::abs(busystate)]; }
QIconViewItem* busyItem() const { return bsy; }
void setBigIcons( bool bi ) { bigIcns = bi; }
void updateCategoriesAndMimeTypes();
void doAutoScroll()
{
// We don't want rubberbanding (yet)
}
void setBusy(bool on)
{
QIconViewItem *c = on ? currentItem() : 0;
- qDebug ( "set busy %d -> %s", on, c ? c-> text ().latin1() : "(null)" );
if ( bsy != c ) {
QIconViewItem *oldbsy = bsy;
bsy = c;
if ( oldbsy )
oldbsy-> repaint ( );
if ( bsy ) {
QPixmap *src = bsy-> QIconViewItem::pixmap();
for ( int i = 0; i <= 5; i++ ) {
QImage img = src->convertToImage();
QRgb* rgb;
int count;
if ( img.depth() == 32 ) {
rgb = (QRgb*)img.bits();
@@ -123,37 +129,41 @@ public:
int bs = ::abs ( i * 10 ) + 25;
colorGroup().highlight().rgb( &rc, &gc, &bc );
rc = rc * bs / 100;
gc = gc * bs / 100;
bc = bc * bs / 100;
for ( int r = 0; r < count; r++, rgb++ ) {
int ri = rc + qRed ( *rgb ) * ( 100 - bs ) / 100;
int gi = gc + qGreen ( *rgb ) * ( 100 - bs ) / 100;
int bi = bc + qBlue ( *rgb ) * ( 100 - bs ) / 100;
int ai = qAlpha ( *rgb );
*rgb = qRgba ( ri, gi, bi, ai );
}
bpm [i].convertFromImage( img );
}
- busystate = 0;
- if ( busytimer )
- killTimer ( busytimer );
- timerEvent ( 0 );
- busytimer = startTimer ( 200 );
+ if ( busyType == BIT_Blinking ) {
+ busystate = 0;
+ if ( busytimer )
+ killTimer ( busytimer );
+ busytimer = startTimer ( 200 );
+ }
+ else
+ busystate = 3;
+ timerEvent ( 0 );
}
else {
killTimer ( busytimer );
busytimer = 0;
}
}
}
virtual void timerEvent ( QTimerEvent *te )
{
if ( !te || ( te-> timerId ( ) == busytimer )) {
if ( bsy ) {
busystate++;
if ( busystate > 5 )
busystate = -4;
@@ -324,32 +334,33 @@ protected:
private:
QList<AppLnk> hidden;
QDict<void> mimes;
QDict<void> cats;
SortMethod sortmeth;
QRegExp tf;
int cf;
QIconViewItem* bsy;
bool ike;
bool bigIcns;
QPixmap bgPixmap;
QPixmap bpm [6];
QColor bgColor;
int busytimer;
int busystate;
+ BusyIndicatorType busyType;
};
bool LauncherView::bsy=FALSE;
void LauncherView::setBusy(bool on)
{
icons->setBusy(on);
}
class LauncherItem : public QIconViewItem
{
public:
LauncherItem( QIconView *parent, AppLnk* applnk, bool bigIcon=TRUE );
~LauncherItem()
{
@@ -900,16 +911,24 @@ void LauncherView::addItem(AppLnk* app, bool resort)
void LauncherView::setFileSystems(const QList<FileSystem> &)
{
// ### does nothing now...
}
void LauncherView::paletteChange( const QPalette &p )
{
icons->unsetPalette();
QVBox::paletteChange( p );
if ( bgType == Ruled )
setBackgroundType( Ruled, QString::null );
QColorGroup cg = icons->colorGroup();
cg.setColor( QColorGroup::Text, textCol );
icons->setPalette( QPalette(cg,cg,cg) );
}
+
+void LauncherView::setBusyIndicatorType ( const QString &type )
+{
+ if ( type. lower ( ) == "blink" )
+ icons-> setBusyIndicatorType ( BIT_Blinking );
+ else
+ icons-> setBusyIndicatorType ( BIT_Normal );
+}
diff --git a/core/launcher/launcherview.h b/core/launcher/launcherview.h
index 2fb37b6..194e4a2 100644
--- a/core/launcher/launcherview.h
+++ b/core/launcher/launcherview.h
@@ -52,51 +52,54 @@ public:
void setBusy(bool);
QString getAllDocLinkInfo() const;
enum ViewMode { Icon, List };
void setViewMode( ViewMode m );
ViewMode viewMode() const { return vmode; }
enum BackgroundType { Ruled, SolidColor, Image };
void setBackgroundType( BackgroundType t, const QString & );
BackgroundType backgroundType() const { return bgType; }
void setTextColor( const QColor & );
QColor textColor() const { return textCol; }
void setViewFont( const QFont & );
+ void setBusyIndicatorType ( const QString &type );
+
public slots:
void populate( AppLnkSet *folder, const QString& categoryfilter );
signals:
void clicked( const AppLnk * );
void rightPressed( AppLnk * );
protected slots:
void selectionChanged();
void returnPressed( QIconViewItem *item );
void itemClicked( int, QIconViewItem * );
void itemPressed( int, QIconViewItem * );
void sortBy(int);
void showType(int);
void showCategory( int );
void resizeEvent(QResizeEvent *);
protected:
void internalPopulate( AppLnkSet *, const QString& categoryfilter );
void paletteChange( const QPalette & );
private:
static bool bsy;
QWidget* tools;
LauncherIconView* icons;
QComboBox *typemb;
QStringList typelist;
CategorySelect *catmb;
ViewMode vmode;
BackgroundType bgType;
QString bgName;
QColor textCol;
+ int busyType;
};
#endif // LAUNCHERVIEW_H