author | mark <mark> | 2002-02-23 18:25:50 (UTC) |
---|---|---|
committer | mark <mark> | 2002-02-23 18:25:50 (UTC) |
commit | c200950a2b120b015783f1552fd68c355bcc3185 (patch) (side-by-side diff) | |
tree | de9337b1d339fb18c14b7711ce53f6547bc6e2e7 | |
parent | cb8381a2969b3a51697ec2034a919fffa9a9c022 (diff) | |
download | opie-c200950a2b120b015783f1552fd68c355bcc3185.zip opie-c200950a2b120b015783f1552fd68c355bcc3185.tar.gz opie-c200950a2b120b015783f1552fd68c355bcc3185.tar.bz2 |
Makes it possible to choose your background image with a config item in
qpe.conf
Accepts both absolute paths '/opt/QtPalmtop/pics/mypic.png' and
loadPixmap type paths 'mypic'
-rw-r--r-- | core/launcher/launcherview.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp index 7b20fdc..0df949e 100644 --- a/core/launcher/launcherview.cpp +++ b/core/launcher/launcherview.cpp @@ -1,244 +1,254 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "launcherview.h" #include <qpe/qpeapplication.h> #include <qpe/applnk.h> #include <qpe/qpedebug.h> +#include <qpe/config.h> #include <qpe/categories.h> #include <qpe/categoryselect.h> #include <qpe/menubutton.h> #include <qpe/resource.h> #include <qpe/qpetoolbar.h> #include <qtimer.h> #include <qdict.h> #include <qfile.h> #include <qfileinfo.h> #include <qhbox.h> #include <qiconview.h> #include <qpainter.h> #include <qregexp.h> #include <qtoolbutton.h> class LauncherIconView : public QIconView { public: LauncherIconView( QWidget* parent, const char* name=0 ) : QIconView(parent,name), tf(""), cf(0), bsy(0) { 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); } #endif } QIconViewItem* busyItem() const { return bsy; } void updateCategoriesAndMimeTypes(); void doAutoScroll() { // 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(); } } 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; } void addItem(AppLnk* app, bool resort=TRUE); bool removeLink(const QString& linkfile); QStringList mimeTypes() const; QStringList categories() const; void 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); } } void drawBackground( QPainter *p, const QRect &r ) { + 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 ( backgroundMode == 1 ) { // 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 ); painter.fillRect( QRect( 0, 0, width(), height() ), colorGroup().background().light(110)); - - // Overlay the Qtopia logo in the center - QImage logo = Resource::loadImage( "qpe-background" ); + // Overlay the Qtopia logo in the center + QImage logo; + 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) ) ); } } void hideOrShowItems(bool resort); void setTypeFilter(const QString& typefilter, bool 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); } enum SortMethod { Name, Date, Type }; void setSortMethod( SortMethod m ) { 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; } 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 } private: QList<AppLnk> hidden; QDict<void> mimes; QDict<void> cats; SortMethod sortmeth; QRegExp tf; int cf; QIconViewItem* bsy; bool ike; |