summaryrefslogtreecommitdiff
authorsandman <sandman>2002-10-31 03:12:25 (UTC)
committer sandman <sandman>2002-10-31 03:12:25 (UTC)
commit702ab550d1f6b06e779935457e5e25748c8e6fc3 (patch) (side-by-side diff)
tree852cc6e93f2f0e7c7293e1faab09ab19c17d9c0a
parentd4c2baf3d4998001462ac1be04523b216da02500 (diff)
downloadopie-702ab550d1f6b06e779935457e5e25748c8e6fc3.zip
opie-702ab550d1f6b06e779935457e5e25748c8e6fc3.tar.gz
opie-702ab550d1f6b06e779935457e5e25748c8e6fc3.tar.bz2
launcher side enhancements to support the "use global font" option from
launcher-settings
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/launcher.cpp5
-rw-r--r--core/launcher/launcherview.cpp5
-rw-r--r--core/launcher/launcherview.h1
3 files changed, 10 insertions, 1 deletions
diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp
index 5a9ee1b..767efb2 100644
--- a/core/launcher/launcher.cpp
+++ b/core/launcher/launcher.cpp
@@ -1078,173 +1078,176 @@ void Launcher::systemMessage( const QCString &msg, const QByteArray &data)
continue;
bool fake = !doc->linkFileKnown();
if ( !fake ) {
QFile f( doc->linkFile() );
if ( f.open( IO_ReadOnly ) ) {
QTextStream ts( &f );
ts.setEncoding( QTextStream::UnicodeUTF8 );
contents += ts.read();
f.close();
} else
fake = TRUE;
}
if (fake) {
contents += "[Desktop Entry]\n";
contents += "Categories = " + // No tr
// cats.labels("Document View",doc->categories()).join(";") + "\n"; // No tr
Qtopia::Record::idsToString( doc->categories() ) + "\n";
contents += "Name = "+doc->name()+"\n"; // No tr
contents += "Type = "+doc->type()+"\n"; // No tr
}
contents += "File = "+doc->file()+"\n"; // No tr // (resolves path)
contents += QString("Size = %1\n").arg( fi.size() ); // No tr
}
//qDebug( "sending length %d", contents.length() );
#ifndef QT_NO_COP
QCopEnvelope e( "QPE/Desktop", "docLinks(QString)" );
e << contents;
#endif
//qDebug( "================ \n\n%s\n\n===============",
//contents.latin1() );
delete docsFolder;
docsFolder = 0;
#ifdef QWS
} else if ( msg == "setMouseProto(QString)" ) {
QString mice;
stream >> mice;
setenv("QWS_MOUSE_PROTO",mice.latin1(),1);
qwsServer->openMouse();
} else if ( msg == "setKeyboard(QString)" ) {
QString kb;
stream >> kb;
setenv("QWS_KEYBOARD",kb.latin1(),1);
qwsServer->openKeyboard();
#endif
}
}
void Launcher::cancelSync()
{
#ifndef QT_NO_COP
QCopEnvelope e( "QPE/Desktop", "cancelSync()" );
#endif
}
void Launcher::launcherMessage( const QCString &msg, const QByteArray &data)
{
QDataStream stream( data, IO_ReadOnly );
if ( msg == "setTabView(QString,int)" ) {
QString id;
stream >> id;
int mode;
stream >> mode;
if ( tabs->view(id) )
tabs->view(id)->setViewMode( (LauncherView::ViewMode)mode );
} else if ( msg == "setTabBackground(QString,int,QString)" ) {
QString id;
stream >> id;
int mode;
stream >> mode;
QString pixmapOrColor;
stream >> pixmapOrColor;
if ( tabs->view(id) )
tabs->view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor );
} else if ( msg == "setTextColor(QString,QString)" ) {
QString id;
stream >> id;
QString color;
stream >> color;
if ( tabs->view(id) )
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) );
+ if ( !fam. isEmpty ( ))
+ tabs->view(id)->setViewFont( QFont(fam, size, weight, italic!=0) );
+ else
+ tabs->view(id)->unsetViewFont();
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);
if (fullDir.exists())
return true;
// at this point the directory doesn't exist
// go through the directory tree and start creating the direcotories
// that don't exist; if we can't create the directories, return false
QString dirSeps = "/";
int dirIndex = localPath.find(dirSeps);
QString checkedPath;
// didn't find any seps; weird, use the cur dir instead
if (dirIndex == -1) {
//qDebug("No seperators found in path %s", localPath.latin1());
checkedPath = QDir::currentDirPath();
}
while (checkedPath != localPath) {
// no more seperators found, use the local path
if (dirIndex == -1)
checkedPath = localPath;
else {
// the next directory to check
checkedPath = localPath.left(dirIndex) + "/";
// advance the iterator; the next dir seperator
dirIndex = localPath.find(dirSeps, dirIndex+1);
}
QDir checkDir(checkedPath);
if (!checkDir.exists()) {
//qDebug("mkdir making dir %s", checkedPath.latin1());
if (!checkDir.mkdir(checkedPath)) {
qDebug("Unable to make directory %s", checkedPath.latin1());
return FALSE;
}
}
}
return TRUE;
}
void Launcher::preloadApps()
{
Config cfg("Launcher");
cfg.setGroup("Preload");
QStringList apps = cfg.readListEntry("Apps",',');
for (QStringList::ConstIterator it=apps.begin(); it!=apps.end(); ++it) {
#ifndef QT_NO_COP
QCopEnvelope e("QPE/Application/"+(*it).local8Bit(), "enablePreload()");
#endif
}
}
diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp
index 9fc4565..2a051a6 100644
--- a/core/launcher/launcherview.cpp
+++ b/core/launcher/launcherview.cpp
@@ -757,192 +757,197 @@ void LauncherView::setViewMode( ViewMode m )
}
}
void LauncherView::setBackgroundType( BackgroundType t, const QString &val )
{
if ( !bgCache )
bgCache = new QMap<QString,BgPixmap*>;
if ( bgCache->contains( bgName ) )
(*bgCache)[bgName]->ref--;
switch ( t ) {
case Ruled: {
bgName = QString("Ruled_%1").arg(colorGroup().background().name()); // No tr
QPixmap bg;
if ( bgCache->contains( bgName ) ) {
(*bgCache)[bgName]->ref++;
bg = (*bgCache)[bgName]->pm;
} else {
bg.resize( width(), 9 );
QPainter painter( &bg );
for ( int i = 0; i < 3; i++ ) {
painter.setPen( white );
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 );
}
painter.end();
bgCache->insert( bgName, new BgPixmap(bg) );
}
icons->setBackgroundPixmap( bg );
break;
}
case SolidColor:
icons->setBackgroundPixmap( QPixmap() );
if ( val.isEmpty() ) {
icons->setBackgroundColor( colorGroup().base() );
} else {
icons->setBackgroundColor( val );
}
bgName = "";
break;
case Image:
bgName = val;
if ( bgCache->contains( bgName ) ) {
(*bgCache)[bgName]->ref++;
icons->setBackgroundPixmap( (*bgCache)[bgName]->pm );
} else {
qDebug( "Loading image: %s", val.latin1() );
QPixmap bg( Resource::loadPixmap( val ) );
if ( bg.isNull() ) {
QImageIO imgio;
imgio.setFileName( bgName );
QSize ds = qApp->desktop()->size();
QString param( "Scale( %1, %2, ScaleMin )" ); // No tr
imgio.setParameters( param.arg(ds.width()).arg(ds.height()).latin1() );
imgio.read();
bg = imgio.image();
}
bgCache->insert( bgName, new BgPixmap(bg) );
icons->setBackgroundPixmap( bg );
}
break;
}
// remove unreferenced backgrounds.
QMap<QString,BgPixmap*>::Iterator it = bgCache->begin();
while ( it != bgCache->end() ) {
QMap<QString,BgPixmap*>::Iterator curr = it;
++it;
if ( (*curr)->ref == 0 ) {
delete (*curr);
bgCache->remove( curr );
}
}
bgType = t;
icons->viewport()->update();
}
void LauncherView::setTextColor( const QColor &tc )
{
textCol = tc;
QColorGroup cg = icons->colorGroup();
cg.setColor( QColorGroup::Text, tc );
icons->setPalette( QPalette(cg,cg,cg) );
icons->viewport()->update();
}
void LauncherView::setViewFont( const QFont &f )
{
icons->setFont( f );
}
+void LauncherView::unsetViewFont( )
+{
+ icons->unsetFont( );
+}
+
void LauncherView::resizeEvent(QResizeEvent *e)
{
QVBox::resizeEvent( e );
if ( e->size().width() != e->oldSize().width() )
sort();
}
void LauncherView::populate( AppLnkSet *folder, const QString& typefilter )
{
icons->clear();
internalPopulate( folder, typefilter );
}
QString LauncherView::getAllDocLinkInfo() const
{
return icons->getAllDocLinkInfo();
}
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);
}
}
void LauncherView::returnPressed( QIconViewItem *item )
{
if ( item ) {
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);
}
}
void LauncherView::itemPressed( int btn, QIconViewItem *item )
{
if ( item ) {
AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
if ( btn == RightButton )
emit rightPressed( appLnk );
/*
else if ( btn == LeftButton )
emit clicked( appLnk );
*/
item->setSelected(FALSE);
}
}
void LauncherView::internalPopulate( AppLnkSet *folder, const QString& typefilter )
{
QListIterator<AppLnk> it( folder->children() );
icons->setTypeFilter(typefilter,FALSE);
while ( it.current() ) {
// show only the icons for existing files
if (QFile(it.current()->file()).exists() || ( it.current()->file().left(4) == "http" )) {
icons->addItem(*it,FALSE);
}
else {
//maybe insert some .desktop file deletion code later
//maybe dir specific
}
++it;
}
icons->sort();
}
bool LauncherView::removeLink(const QString& linkfile)
{
return icons->removeLink(linkfile);
}
void LauncherView::sort()
{
icons->sort();
}
void LauncherView::addItem(AppLnk* app, bool resort)
{
diff --git a/core/launcher/launcherview.h b/core/launcher/launcherview.h
index 194e4a2..82a319b 100644
--- a/core/launcher/launcherview.h
+++ b/core/launcher/launcherview.h
@@ -1,105 +1,106 @@
/**********************************************************************
** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
** This file is part of the 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.
**
**********************************************************************/
#ifndef LAUNCHERVIEW_H
#define LAUNCHERVIEW_H
#include <qpe/storage.h>
#include <qvbox.h>
class AppLnk;
class AppLnkSet;
class CategorySelect;
class LauncherIconView;
class QIconView;
class QIconViewItem;
class MenuButton;
class QComboBox;
class LauncherView : public QVBox
{
Q_OBJECT
public:
LauncherView( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~LauncherView();
bool removeLink(const QString& linkfile);
void addItem(AppLnk* app, bool resort=TRUE);
void sort();
void setFileSystems(const QList<FileSystem> &);
void setToolsEnabled(bool);
void updateTools();
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 unsetViewFont ( );
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