summaryrefslogtreecommitdiff
path: root/core/launcher/launcherview.cpp
authorbipolar <bipolar>2002-03-09 03:09:15 (UTC)
committer bipolar <bipolar>2002-03-09 03:09:15 (UTC)
commitcb1d684a68565ff70fedd184eedf1ef4f2b71079 (patch) (side-by-side diff)
tree51dc13c1eaa2408b6e753de751bcb7ac2d02f7e8 /core/launcher/launcherview.cpp
parentbc79d3f4a7503c4298a5396b80c65a3e268f4be3 (diff)
downloadopie-cb1d684a68565ff70fedd184eedf1ef4f2b71079.zip
opie-cb1d684a68565ff70fedd184eedf1ef4f2b71079.tar.gz
opie-cb1d684a68565ff70fedd184eedf1ef4f2b71079.tar.bz2
ljp: hopefully took care of doclnk creating zero size files, while maintaining what was going on.
Diffstat (limited to 'core/launcher/launcherview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/launcherview.cpp449
1 files changed, 223 insertions, 226 deletions
diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp
index 764f088..538ad79 100644
--- a/core/launcher/launcherview.cpp
+++ b/core/launcher/launcherview.cpp
@@ -43,25 +43,25 @@
class LauncherIconView : public QIconView {
public:
LauncherIconView( QWidget* parent, const char* name=0 ) :
- QIconView(parent,name),
- tf(""),
- cf(0),
- bsy(0)
+ QIconView(parent,name),
+ tf(""),
+ cf(0),
+ bsy(0)
{
- sortmeth = Name;
- hidden.setAutoDelete(TRUE);
- ike = FALSE;
+ sortmeth = Name;
+ hidden.setAutoDelete(TRUE);
+ ike = FALSE;
}
~LauncherIconView()
{
#if 0 // debuggery
- QListIterator<AppLnk> it(hidden);
- AppLnk* l;
- while ((l=it.current())) {
- ++it;
- //qDebug("%p: hidden (should remove)",l);
- }
+ QListIterator<AppLnk> it(hidden);
+ AppLnk* l;
+ while ((l=it.current())) {
+ ++it;
+ //qDebug("%p: hidden (should remove)",l);
+ }
#endif
}
@@ -71,30 +71,30 @@ public:
void doAutoScroll()
{
- // We don't want rubberbanding (yet)
+ // We don't want rubberbanding (yet)
}
void setBusy(bool on)
{
- QIconViewItem *c = on ? currentItem() : 0;
- if ( bsy != c ) {
- QIconViewItem* o = bsy;
- bsy = c;
- if ( o ) o->repaint();
- if ( c ) c->repaint();
- }
+ QIconViewItem *c = on ? currentItem() : 0;
+ if ( bsy != c ) {
+ QIconViewItem* o = bsy;
+ bsy = c;
+ if ( o ) o->repaint();
+ if ( c ) c->repaint();
+ }
}
bool inKeyEvent() const { return ike; }
void keyPressEvent(QKeyEvent* e)
{
- ike = TRUE;
- if ( e->key() == Key_F33 ) {
- // "OK" button
- returnPressed(currentItem());
- }
- QIconView::keyPressEvent(e);
- ike = FALSE;
+ ike = TRUE;
+ if ( e->key() == Key_F33 ) {
+ // "OK" button
+ returnPressed(currentItem());
+ }
+ QIconView::keyPressEvent(e);
+ ike = FALSE;
}
void addItem(AppLnk* app, bool resort=TRUE);
@@ -105,141 +105,141 @@ public:
void clear()
{
- mimes.clear();
- cats.clear();
- QIconView::clear();
- hidden.clear();
+ mimes.clear();
+ cats.clear();
+ QIconView::clear();
+ hidden.clear();
}
void addCatsAndMimes(AppLnk* app)
{
- // QStringList c = app->categories();
- // for (QStringList::ConstIterator cit=c.begin(); cit!=c.end(); ++cit) {
- // cats.replace(*cit,(void*)1);
- // }
- QString maj=app->type();
- int sl=maj.find('/');
- if (sl>=0) {
- QString k = maj.left(sl);
- mimes.replace(k,(void*)1);
- }
+ // QStringList c = app->categories();
+ // for (QStringList::ConstIterator cit=c.begin(); cit!=c.end(); ++cit) {
+ // cats.replace(*cit,(void*)1);
+ // }
+ QString maj=app->type();
+ int sl=maj.find('/');
+ if (sl>=0) {
+ QString k = maj.left(sl);
+ mimes.replace(k,(void*)1);
+ }
}
void drawBackground( QPainter *p, const QRect &r )
{
- Config config("qpe");
- config.setGroup("Appearance");
- QString backgroundImage = config.readEntry("BackgroundImage");
+ Config config("qpe");
+ config.setGroup("Appearance");
+ QString backgroundImage = config.readEntry("BackgroundImage");
- if (backgroundImage.isNull()) backgroundImage="qpe-background";
- int backgroundMode = QPixmap::defaultDepth() >= 12 ? 1 : 0;
- //int backgroundMode = 2;
+ if (backgroundImage.isNull()) backgroundImage="qpe-background";
+ int backgroundMode = QPixmap::defaultDepth() >= 12 ? 1 : 0;
+ //int backgroundMode = 2;
- if ( backgroundMode == 1 ) {
+ if ( backgroundMode == 1 ) {
- // Double buffer the background
- static QPixmap *bg = NULL;
- static QColor bgColor;
+ // Double buffer the background
+ static QPixmap *bg = NULL;
+ static QColor bgColor;
- if ( (bg == NULL) || (bgColor != colorGroup().button()) ) {
- // Create a new background double buffer
- if (bg == NULL)
- bg = new QPixmap( width(), height() );
- bgColor = colorGroup().button();
- QPainter painter( bg );
+ if ( (bg == NULL) || (bgColor != colorGroup().button()) ) {
+ // Create a new background double buffer
+ if (bg == NULL)
+ bg = new QPixmap( width(), height() );
+ bgColor = colorGroup().button();
+ QPainter painter( bg );
- painter.fillRect( QRect( 0, 0, width(), height() ), colorGroup().background().light(110));
+ painter.fillRect( QRect( 0, 0, width(), height() ), colorGroup().background().light(110));
// Overlay the Qtopia logo in the center
QImage logo;
- if (QFile::exists(backgroundImage)) {
+ if (QFile::exists(backgroundImage)) {
logo = QImage(backgroundImage);
- } else {
- logo = Resource::loadImage(backgroundImage );
- }
- if ( !logo.isNull() )
- painter.drawImage( (width() - logo.width()) / 2,
- (height() - logo.height()) / 2, logo );
- }
-
- // Draw the double buffer to the widget (it is tiled for when the icon view is large)
- p->drawTiledPixmap( r, *bg, QPoint( (r.x() + contentsX()) % bg->width(),
- (r.y() + contentsY()) % bg->height() ) );
- } else if ( backgroundMode == 2 ) {
- static QPixmap *bg = 0;
- static QColor bgColor;
- if ( !bg || (bgColor != colorGroup().background()) ) {
- bgColor = colorGroup().background();
- bg = new QPixmap( width(), 9 );
- QPainter painter( bg );
- for ( int i = 0; i < 3; i++ ) {
- painter.setPen( colorGroup().background().light(130) );
- painter.drawLine( 0, i*3, width()-1, i*3 );
- painter.drawLine( 0, i*3+1, width()-1, i*3+1 );
- painter.setPen( colorGroup().background().light(105) );
- painter.drawLine( 0, i*3+2, width()-1, i*3+2 );
- }
- }
- p->drawTiledPixmap( r, *bg, QPoint( (r.x() + contentsX()) % bg->width(),
- (r.y() + contentsY()) % bg->height() ) );
- } else {
- p->fillRect( r, QBrush( colorGroup().background().light(110) ) );
- }
+ } else {
+ logo = Resource::loadImage(backgroundImage );
+ }
+ if ( !logo.isNull() )
+ painter.drawImage( (width() - logo.width()) / 2,
+ (height() - logo.height()) / 2, logo );
+ }
+
+ // Draw the double buffer to the widget (it is tiled for when the icon view is large)
+ p->drawTiledPixmap( r, *bg, QPoint( (r.x() + contentsX()) % bg->width(),
+ (r.y() + contentsY()) % bg->height() ) );
+ } else if ( backgroundMode == 2 ) {
+ static QPixmap *bg = 0;
+ static QColor bgColor;
+ if ( !bg || (bgColor != colorGroup().background()) ) {
+ bgColor = colorGroup().background();
+ bg = new QPixmap( width(), 9 );
+ QPainter painter( bg );
+ for ( int i = 0; i < 3; i++ ) {
+ painter.setPen( colorGroup().background().light(130) );
+ painter.drawLine( 0, i*3, width()-1, i*3 );
+ painter.drawLine( 0, i*3+1, width()-1, i*3+1 );
+ painter.setPen( colorGroup().background().light(105) );
+ painter.drawLine( 0, i*3+2, width()-1, i*3+2 );
+ }
+ }
+ p->drawTiledPixmap( r, *bg, QPoint( (r.x() + contentsX()) % bg->width(),
+ (r.y() + contentsY()) % bg->height() ) );
+ } else {
+ p->fillRect( r, QBrush( colorGroup().background().light(110) ) );
+ }
}
void hideOrShowItems(bool resort);
void setTypeFilter(const QString& typefilter, bool resort)
{
- tf = QRegExp(typefilter,FALSE,TRUE);
- hideOrShowItems(resort);
+ tf = QRegExp(typefilter,FALSE,TRUE);
+ hideOrShowItems(resort);
}
void setCategoryFilter( int catfilter, bool resort )
{
- Categories cat;
- cat.load( categoryFileName() );
- QString str;
- if ( catfilter == -2 )
- cf = 0;
- else
- cf = catfilter;
- hideOrShowItems(resort);
+ Categories cat;
+ cat.load( categoryFileName() );
+ QString str;
+ if ( catfilter == -2 )
+ cf = 0;
+ else
+ cf = catfilter;
+ hideOrShowItems(resort);
}
enum SortMethod { Name, Date, Type };
void setSortMethod( SortMethod m )
{
- if ( sortmeth != m ) {
- sortmeth = m;
- sort();
- }
+ if ( sortmeth != m ) {
+ sortmeth = m;
+ sort();
+ }
}
int compare(const AppLnk* a, const AppLnk* b)
{
- switch (sortmeth) {
- case Name:
- return a->name().compare(b->name());
- case Date: {
- QFileInfo fa(a->linkFileKnown() ? a->linkFile() : a->file());
- QFileInfo fb(b->linkFileKnown() ? b->linkFile() : b->file());
- return fa.lastModified().secsTo(fb.lastModified());
- }
- case Type:
- return a->type().compare(b->type());
- }
- return 0;
+ switch (sortmeth) {
+ case Name:
+ return a->name().compare(b->name());
+ case Date: {
+ QFileInfo fa(a->linkFileKnown() ? a->linkFile() : a->file());
+ QFileInfo fb(b->linkFileKnown() ? b->linkFile() : b->file());
+ return fa.lastModified().secsTo(fb.lastModified());
+ }
+ case Type:
+ return a->type().compare(b->type());
+ }
+ return 0;
}
protected:
void styleChange( QStyle &old )
{
- QIconView::styleChange( old );
- //### duplicated code from LauncherView constructor
- int dw = QApplication::desktop()->width();
- setGridX( (dw-13-style().scrollBarExtent().width())/3 ); // tweaked for 8pt+dw=176 and 10pt+dw=240
+ QIconView::styleChange( old );
+ //### duplicated code from LauncherView constructor
+ int dw = QApplication::desktop()->width();
+ setGridX( (dw-13-style().scrollBarExtent().width())/3 ); // tweaked for 8pt+dw=176 and 10pt+dw=240
}
private:
@@ -268,10 +268,10 @@ public:
LauncherItem( QIconView *parent, AppLnk* applnk );
~LauncherItem()
{
- LauncherIconView* liv = (LauncherIconView*)iconView();
- if ( liv->busyItem() == this )
- liv->setBusy(FALSE);
- delete app;
+ LauncherIconView* liv = (LauncherIconView*)iconView();
+ if ( liv->busyItem() == this )
+ liv->setBusy(FALSE);
+ delete app;
}
AppLnk* appLnk() const { return app; }
@@ -281,22 +281,22 @@ public:
void paintItem( QPainter *p, const QColorGroup &cg )
{
- LauncherIconView* liv = (LauncherIconView*)iconView();
- QBrush oldBrush( liv->itemTextBackground() );
- QColorGroup mycg( cg );
- if ( liv->currentItem() == this ) {
- liv->setItemTextBackground( cg.brush( QColorGroup::Highlight ) );
- mycg.setColor( QColorGroup::Text, cg.color( QColorGroup::HighlightedText ) );
- }
- QIconViewItem::paintItem(p,mycg);
- if ( liv->currentItem() == this )
- liv->setItemTextBackground( oldBrush );
- if ( liv->busyItem() == this ) {
- static QPixmap* busypm=0;
- if ( !busypm )
- busypm = new QPixmap(Resource::loadPixmap("launching"));
- p->drawPixmap(x()+(width()-busypm->width())/2, y(),*busypm);
- }
+ LauncherIconView* liv = (LauncherIconView*)iconView();
+ QBrush oldBrush( liv->itemTextBackground() );
+ QColorGroup mycg( cg );
+ if ( liv->currentItem() == this ) {
+ liv->setItemTextBackground( cg.brush( QColorGroup::Highlight ) );
+ mycg.setColor( QColorGroup::Text, cg.color( QColorGroup::HighlightedText ) );
+ }
+ QIconViewItem::paintItem(p,mycg);
+ if ( liv->currentItem() == this )
+ liv->setItemTextBackground( oldBrush );
+ if ( liv->busyItem() == this ) {
+ static QPixmap* busypm=0;
+ if ( !busypm )
+ busypm = new QPixmap(Resource::loadPixmap("launching"));
+ p->drawPixmap(x()+(width()-busypm->width())/2, y(),*busypm);
+ }
}
protected:
@@ -306,7 +306,7 @@ protected:
LauncherItem::LauncherItem( QIconView *parent, AppLnk *applnk )
: QIconViewItem( parent, applnk->name(), applnk->bigPixmap() ),
- app(applnk) // Takes ownership
+ app(applnk) // Takes ownership
{
}
@@ -321,8 +321,8 @@ QStringList LauncherIconView::mimeTypes() const
QStringList r;
QDictIterator<void> it(mimes);
while (it.current()) {
- r.append(it.currentKey());
- ++it;
+ r.append(it.currentKey());
+ ++it;
}
r.sort();
return r;
@@ -333,13 +333,13 @@ void LauncherIconView::addItem(AppLnk* app, bool resort)
addCatsAndMimes(app);
if ( (tf.isEmpty() || tf.match(app->type()) >= 0)
- && (cf == 0 || app->categories().contains(cf)
- || cf == -1 && app->categories().count() == 0 ) )
- (void) new LauncherItem( this, app );
+ && (cf == 0 || app->categories().contains(cf)
+ || cf == -1 && app->categories().count() == 0 ) )
+ (void) new LauncherItem( this, app );
else
- hidden.append(app);
+ hidden.append(app);
if ( resort )
- sort();
+ sort();
}
void LauncherIconView::updateCategoriesAndMimeTypes()
@@ -348,14 +348,14 @@ void LauncherIconView::updateCategoriesAndMimeTypes()
cats.clear();
LauncherItem* item = (LauncherItem*)firstItem();
while (item) {
- addCatsAndMimes(item->appLnk());
- item = (LauncherItem*)item->nextItem();
+ addCatsAndMimes(item->appLnk());
+ item = (LauncherItem*)item->nextItem();
}
QListIterator<AppLnk> it(hidden);
AppLnk* l;
while ((l=it.current())) {
- addCatsAndMimes(l);
- ++it;
+ addCatsAndMimes(l);
+ ++it;
}
}
@@ -367,8 +367,8 @@ void LauncherIconView::hideOrShowItems(bool resort)
hidden.setAutoDelete(TRUE);
LauncherItem* item = (LauncherItem*)firstItem();
while (item) {
- links.append(item->takeAppLnk());
- item = (LauncherItem*)item->nextItem();
+ links.append(item->takeAppLnk());
+ item = (LauncherItem*)item->nextItem();
}
bool oldAutoArrange = autoArrange();
setAutoArrange( FALSE );
@@ -376,11 +376,11 @@ void LauncherIconView::hideOrShowItems(bool resort)
QListIterator<AppLnk> it(links);
AppLnk* l;
while ((l=it.current())) {
- addItem(l,FALSE);
- ++it;
+ addItem(l,FALSE);
+ ++it;
}
if ( resort )
- sort();
+ sort();
setAutoArrange( oldAutoArrange );
}
@@ -391,23 +391,20 @@ bool LauncherIconView::removeLink(const QString& linkfile)
bool did = FALSE;
DocLnk dl(linkfile);
while (item) {
- l = item->appLnk();
- if ( l->linkFileKnown() && l->linkFile() == linkfile || l->file() == linkfile
- || dl.isValid() && dl.file() == l->file() ) {
- delete item;
- did = TRUE;
- }
- item = (LauncherItem*)item->nextItem();
+ l = item->appLnk();
+ if ( l->linkFileKnown() && l->linkFile() == linkfile/* || l->file() == linkfile || dl.isValid() && dl.file() == l->file()*/ ) {
+ delete item;
+ did = TRUE;
+ }
+ item = (LauncherItem*)item->nextItem();
}
QListIterator<AppLnk> it(hidden);
while ((l=it.current())) {
- ++it;
- if ( l->linkFileKnown() && l->linkFile() == linkfile
- || l->file() == linkfile
- || dl.isValid() && dl.file() == l->file() ) {
- hidden.removeRef(l);
- did = TRUE;
- }
+ ++it;
+ if ( l->linkFileKnown() && l->linkFile() == linkfile/* || l->file() == linkfile || dl.isValid() && dl.file() == l->file()*/ ) {
+ hidden.removeRef(l);
+ did = TRUE;
+ }
}
return did;
}
@@ -432,13 +429,13 @@ LauncherView::LauncherView( QWidget* parent, const char* name, WFlags fl )
icons->setBackgroundMode( PaletteBase );
connect( icons, SIGNAL(mouseButtonClicked(int, QIconViewItem *, const QPoint&)),
- SLOT(itemClicked(int, QIconViewItem *)) );
+ SLOT(itemClicked(int, QIconViewItem *)) );
connect( icons, SIGNAL(selectionChanged()),
- SLOT(selectionChanged()) );
+ SLOT(selectionChanged()) );
connect( icons, SIGNAL(returnPressed(QIconViewItem *)),
- SLOT(returnPressed(QIconViewItem *)) );
+ SLOT(returnPressed(QIconViewItem *)) );
connect( icons, SIGNAL(mouseButtonPressed(int, QIconViewItem *, const QPoint&)),
- SLOT(itemPressed(int, QIconViewItem *)) );
+ SLOT(itemPressed(int, QIconViewItem *)) );
tools = 0;
}
@@ -450,33 +447,33 @@ LauncherView::~LauncherView()
void LauncherView::setToolsEnabled(bool y)
{
if ( !y != !tools ) {
- if ( y ) {
- tools = new QHBox(this);
-
- // Type filter
- typemb = new MenuButton(tools);
- typemb->setLabel(tr("Type: %1"));
- typemb->setFixedHeight ( 20 );
-
- // Category filter
- catmb = new CategorySelect(tools);
- catmb->setFixedHeight ( 20 );
-
- updateTools();
- tools->show();
- } else {
- delete tools;
- tools = 0;
- }
+ if ( y ) {
+ tools = new QHBox(this);
+
+ // Type filter
+ typemb = new MenuButton(tools);
+ typemb->setLabel(tr("Type: %1"));
+ typemb->setFixedHeight ( 20 );
+
+ // Category filter
+ catmb = new CategorySelect(tools);
+ catmb->setFixedHeight ( 20 );
+
+ updateTools();
+ tools->show();
+ } else {
+ delete tools;
+ tools = 0;
+ }
}
}
void LauncherView::updateTools()
{
disconnect( typemb, SIGNAL(selected(const QString&)),
- this, SLOT(showType(const QString&)) );
+ this, SLOT(showType(const QString&)) );
disconnect( catmb, SIGNAL(signalSelected(int)),
- this, SLOT(showCategory(int)) );
+ this, SLOT(showCategory(int)) );
icons->updateCategoriesAndMimeTypes();
@@ -511,9 +508,9 @@ void LauncherView::sortBy(int s)
void LauncherView::showType(const QString& t)
{
if ( t == tr("All") ) {
- icons->setTypeFilter("",TRUE);
+ icons->setTypeFilter("",TRUE);
} else {
- icons->setTypeFilter(t+"/*",TRUE);
+ icons->setTypeFilter(t+"/*",TRUE);
}
}
@@ -526,7 +523,7 @@ void LauncherView::resizeEvent(QResizeEvent *e)
{
QVBox::resizeEvent( e );
if ( e->size().width() != e->oldSize().width() )
- sort();
+ sort();
}
void LauncherView::populate( AppLnkSet *folder, const QString& typefilter )
@@ -539,45 +536,45 @@ void LauncherView::selectionChanged()
{
QIconViewItem* item = icons->currentItem();
if ( item && item->isSelected() ) {
- AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
- if ( icons->inKeyEvent() ) // not for mouse press
- emit clicked( appLnk );
- item->setSelected(FALSE);
+ AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
+ if ( icons->inKeyEvent() ) // not for mouse press
+ emit clicked( appLnk );
+ item->setSelected(FALSE);
}
}
void LauncherView::returnPressed( QIconViewItem *item )
{
if ( item ) {
- AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
- emit clicked( appLnk );
+ AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
+ emit clicked( appLnk );
}
}
void LauncherView::itemClicked( int btn, QIconViewItem *item )
{
if ( item ) {
- AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
- if ( btn == LeftButton ) {
- // Make sure it's the item we execute that gets highlighted
- icons->setCurrentItem( item );
- emit clicked( appLnk );
- }
- item->setSelected(FALSE);
+ AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
+ if ( btn == LeftButton ) {
+ // Make sure it's the item we execute that gets highlighted
+ icons->setCurrentItem( item );
+ emit clicked( appLnk );
+ }
+ item->setSelected(FALSE);
}
}
void LauncherView::itemPressed( int btn, QIconViewItem *item )
{
if ( item ) {
- AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
- if ( btn == RightButton )
- emit rightPressed( appLnk );
+ AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
+ if ( btn == RightButton )
+ emit rightPressed( appLnk );
/*
- else if ( btn == LeftButton )
- emit clicked( appLnk );
+ else if ( btn == LeftButton )
+ emit clicked( appLnk );
*/
- item->setSelected(FALSE);
+ item->setSelected(FALSE);
}
}
@@ -589,15 +586,15 @@ void LauncherView::internalPopulate( AppLnkSet *folder, const QString& typefilte
while ( it.current() ) {
// show only the icons for existing files
if (!QFile(it.current()->file()).exists() )
- {
- //maybe insert some .desktop file deletion code later
- //maybe dir specific
- }
+ {
+ //maybe insert some .desktop file deletion code later
+ //maybe dir specific
+ }
else
- {
- icons->addItem(*it,FALSE);
- }
- ++it;
+ {
+ icons->addItem(*it,FALSE);
+ }
+ ++it;
}
icons->sort();