summaryrefslogtreecommitdiff
authorkergoth <kergoth>2002-02-04 22:14:18 (UTC)
committer kergoth <kergoth>2002-02-04 22:14:18 (UTC)
commitd46cb220a09b41312d86bb33573940d3dcba2588 (patch) (side-by-side diff)
tree6aacb1589d5de2ca908d067f99ba64dc608a6fa5
parent500e2f0cdbe82035516b7a1c576e08e0b2ad72b3 (diff)
downloadopie-d46cb220a09b41312d86bb33573940d3dcba2588.zip
opie-d46cb220a09b41312d86bb33573940d3dcba2588.tar.gz
opie-d46cb220a09b41312d86bb33573940d3dcba2588.tar.bz2
latest qtopia merge as of 20020204.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/global.cpp55
-rw-r--r--library/qpeapplication.cpp40
-rwxr-xr-xmkipks2
-rw-r--r--noncore/games/minesweep/Makefile.in18
4 files changed, 71 insertions, 44 deletions
diff --git a/library/global.cpp b/library/global.cpp
index fd7579a..dd15eb7 100644
--- a/library/global.cpp
+++ b/library/global.cpp
@@ -1,67 +1,68 @@
/**********************************************************************
** 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.
**
**********************************************************************/
+#define QTOPIA_INTERNAL_LANGLIST
#include <qpe/qpedebug.h>
#include <qpe/global.h>
#include <qpe/qdawg.h>
#include <qpe/qpeapplication.h>
#include <qpe/resource.h>
#include <qpe/storage.h>
#include <qpe/applnk.h>
#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
#include "qpe/qcopenvelope_qws.h"
#endif
#include <qfile.h>
#include <qlabel.h>
#include <qtimer.h>
#include <qmap.h>
#include <qdict.h>
#include <qdir.h>
#include <qmessagebox.h>
#include <qregexp.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <qwindowsystem_qws.h> // for qwsServer
#include <qdatetime.h>
//#include "quickexec_p.h"
class Emitter : public QObject {
Q_OBJECT
public:
Emitter( QWidget* receiver, const QString& document )
{
connect(this, SIGNAL(setDocument(const QString&)),
receiver, SLOT(setDocument(const QString&)));
emit setDocument(document);
disconnect(this, SIGNAL(setDocument(const QString&)),
receiver, SLOT(setDocument(const QString&)));
}
signals:
void setDocument(const QString&);
};
@@ -125,102 +126,108 @@ void StartingAppList::handleNewChannel( const QString & name )
{
#if QT_VERSION >= 232 && !defined(QT_NO_COP)
dict.remove( name );
#endif
}
static bool docDirCreated = FALSE;
static QDawg* fixed_dawg = 0;
static QDict<QDawg> *named_dawg = 0;
static QString qpeDir()
{
QString dir = getenv("OPIEDIR");
if ( dir.isEmpty() ) dir = "..";
return dir;
}
static QString dictDir()
{
return qpeDir() + "/etc/dict";
}
/*!
\class Global global.h
\brief The Global class collects application-wide global functions.
*/
/*!
\internal
*/
Global::Global()
{
}
/*!
Returns the unchangeable QDawg that contains general
words for the current locale.
\sa addedDawg()
*/
const QDawg& Global::fixedDawg()
{
if ( !fixed_dawg ) {
if ( !docDirCreated )
createDocDir();
fixed_dawg = new QDawg;
QString dawgfilename = dictDir() + "/dawg";
- QString lang = getenv( "LANG" );
- QString dawgfilename_lang = dawgfilename + "." + lang;
- QString words_lang = dictDir() + "/words." + lang;
- if ( QFile::exists(dawgfilename_lang) ||
- QFile::exists(words_lang) )
- dawgfilename = dawgfilename_lang;
+ QString words_lang;
+ QStringList langs = Global::languageList();
+ for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) {
+ QString lang = *it;
+ words_lang = dictDir() + "/words." + lang;
+ QString dawgfilename_lang = dawgfilename + "." + lang;
+ if ( QFile::exists(dawgfilename_lang) ||
+ QFile::exists(words_lang) ) {
+ dawgfilename = dawgfilename_lang;
+ break;
+ }
+ }
QFile dawgfile(dawgfilename);
if ( !dawgfile.exists() ) {
QString fn = dictDir() + "/words";
if ( QFile::exists(words_lang) )
fn = words_lang;
QFile in(fn);
if ( in.open(IO_ReadOnly) ) {
fixed_dawg->createFromWords(&in);
dawgfile.open(IO_WriteOnly);
fixed_dawg->write(&dawgfile);
dawgfile.close();
}
} else {
fixed_dawg->readFile(dawgfilename);
}
}
return *fixed_dawg;
}
/*!
Returns the changeable QDawg that contains general
words for the current locale.
\sa fixedDawg()
*/
const QDawg& Global::addedDawg()
{
return dawg("local");
}
/*!
Returns the QDawg with the given \a name.
This is an application-specific word list.
\a name should not contain "/".
*/
const QDawg& Global::dawg(const QString& name)
{
createDocDir();
if ( !named_dawg )
named_dawg = new QDict<QDawg>;
QDawg* r = named_dawg->find(name);
if ( !r ) {
r = new QDawg;
named_dawg->insert(name,r);
QString dawgfilename = dictDir() + "/" + name + ".dawg";
@@ -594,51 +601,87 @@ QString Global::shellQuote(const QString& s)
}
r += s[i];
}
r += "\"";
return r;
}
/*!
Returns the string \a s with the characters backslash and "
quoted by a preceeding backslash.
*/
QString Global::stringQuote(const QString& s)
{
QString r="\"";
for (int i=0; i<(int)s.length(); i++) {
char c = s[i].latin1();
switch (c) {
case '\\': case '"':
r+="\\";
}
r += s[i];
}
r += "\"";
return r;
}
/*!
Finds all documents on the system's document directories which
match the filter \a mimefilter, and appends the resulting DocLnk
objects to \a folder.
*/
void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter)
{
QString homedocs = QString(getenv("HOME")) + "/Documents";
DocLnkSet d(homedocs,mimefilter);
folder->appendFrom(d);
StorageInfo storage;
const QList<FileSystem> &fs = storage.fileSystems();
QListIterator<FileSystem> it ( fs );
for ( ; it.current(); ++it ) {
if ( (*it)->isRemovable() ) {
QString path = (*it)->path();
DocLnkSet ide( path, mimefilter );
folder->appendFrom(ide);
}
}
}
+QStringList Global::languageList()
+{
+ QString lang = getenv("LANG");
+ QStringList langs;
+ langs.append(lang);
+ int i = lang.find(".");
+ if ( i > 0 )
+ lang = lang.left( i );
+ i = lang.find( "_" );
+ if ( i > 0 )
+ langs.append(lang.left(i));
+ return langs;
+}
+
+QStringList Global::helpPath()
+{
+ QStringList path;
+ QStringList langs = Global::languageList();
+ for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) {
+ QString lang = *it;
+ if ( !lang.isEmpty() )
+ path += QPEApplication::qpeDir() + "/help/" + lang + "/html";
+ }
+ path += QPEApplication::qpeDir() + "/pics";
+ path += QPEApplication::qpeDir() + "/help/en/html";
+ path += QPEApplication::qpeDir() + "/docs";
+ QString dir = QDir::current().canonicalPath();
+ if ( dir == "/" )
+ dir += "/docs";
+ else {
+ path += dir + "/../pics";
+ dir += "/../docs";
+ path += dir;
+ }
+ return path;
+}
#include "global.moc"
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 70ffec1..4dbfbd8 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -1,69 +1,70 @@
/**********************************************************************
** 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.
**
** $Id$
**
**********************************************************************/
+#define QTOPIA_INTERNAL_LANGLIST
#include <stdlib.h>
#include <unistd.h>
#include <qfile.h>
#ifdef Q_WS_QWS
#ifndef QT_NO_COP
#if QT_VERSION <= 231
#define private public
#define sendLocally processEvent
#include "qcopenvelope_qws.h"
#undef private
#else
#include "qcopenvelope_qws.h"
#endif
#endif
#include <qwindowsystem_qws.h>
#endif
#include <qtextstream.h>
#include <qpalette.h>
#include <qbuffer.h>
#include <qptrdict.h>
#include <qregexp.h>
#include <qdir.h>
#include <qlabel.h>
#include <qdialog.h>
#include <qdragobject.h>
#include <qevent.h>
#include <qtooltip.h>
#include <qsignal.h>
#include "qpeapplication.h"
#include "qpestyle.h"
#if QT_VERSION >= 300
#include <qstylefactory.h>
#else
#include <qplatinumstyle.h>
#include <qwindowsstyle.h>
#include <qmotifstyle.h>
#include <qmotifplusstyle.h>
#include "lightstyle.h"
#endif
#include "global.h"
#include "resource.h"
#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
#include "qutfcodec.h"
#endif
#include "config.h"
#include "network.h"
#include "fontmanager.h"
#include "power.h"
@@ -92,112 +93,97 @@ public:
forceshow(FALSE), nomaximize(FALSE), qpe_main_widget(0),
keep_running(TRUE)
{
qcopq.setAutoDelete(TRUE);
}
int presstimer;
QWidget* presswidget;
QPoint presspos;
bool rightpressed;
int kbgrabber;
bool kbregrab;
bool notbusysent;
QString appName;
struct QCopRec {
QCopRec(const QCString &ch, const QCString &msg,
const QByteArray &d) :
channel(ch), message(msg), data(d) { }
QCString channel;
QCString message;
QByteArray data;
};
bool preloaded;
bool forceshow;
bool nomaximize;
QWidget* qpe_main_widget;
bool keep_running;
QList<QCopRec> qcopq;
void enqueueQCop(const QCString &ch, const QCString &msg,
const QByteArray &data)
{
qcopq.append(new QCopRec(ch,msg,data));
}
void sendQCopQ()
{
QCopRec* r;
for (QListIterator<QCopRec> it(qcopq); (r=it.current()); ++it)
QCopChannel::sendLocally(r->channel,r->message,r->data);
qcopq.clear();
}
};
class ResourceMimeFactory : public QMimeSourceFactory {
public:
ResourceMimeFactory()
{
- QStringList path;
- QString lang = getenv("LANG");
- if ( !lang.isEmpty() )
- path += QPEApplication::qpeDir() + "/help/" + lang + "/html";
- path += QPEApplication::qpeDir() + "/pics";
- path += QPEApplication::qpeDir() + "/help/en/html";
- path += QPEApplication::qpeDir() + "/docs";
- QString dir = QDir::current().canonicalPath();
- if ( dir == "/" )
- dir += "/docs";
- else {
- path += dir + "/../pics";
- dir += "/../docs";
- path += dir;
- }
- setFilePath( path );
+ setFilePath( Global::helpPath() );
setExtensionType("html","text/html;charset=UTF-8");
}
const QMimeSource* data(const QString& abs_name) const
{
const QMimeSource* r = QMimeSourceFactory::data(abs_name);
if ( !r ) {
int sl = abs_name.length();
do {
sl = abs_name.findRev('/',sl-1);
QString name = sl>=0 ? abs_name.mid(sl+1) : abs_name;
int dot = name.findRev('.');
if ( dot >= 0 )
name = name.left(dot);
QImage img = Resource::loadImage(name);
if ( !img.isNull() )
r = new QImageDrag(img);
} while (!r && sl>0);
}
return r;
}
};
static int muted=0;
static void setVolume(int t=0, int percent=-1)
{
switch (t) {
case 0: {
Config cfg("Sound");
cfg.setGroup("System");
if ( percent < 0 )
percent = cfg.readNumEntry("Volume",50);
int fd = 0;
if ((fd = open("/dev/mixer", O_RDWR))>=0) {
int vol = muted ? 0 : percent;
// set both channels to same volume
vol |= vol << 8;
ioctl(fd, MIXER_WRITE(0), &vol);
::close(fd);
}
} break;
}
}
int qpe_sysBrightnessSteps()
{
#if defined(QT_QWS_IPAQ)
@@ -492,122 +478,118 @@ QPEApplication::QPEApplication( int& argc, char **argv, Type t )
this, SLOT(systemMessage( const QCString &, const QByteArray &)) );
QCString channel = QCString(argv[0]);
channel.replace(QRegExp(".*/"),"");
d->appName = channel;
channel = "QPE/Application/" + channel;
pidChannel = new QCopChannel( channel, this);
connect( pidChannel, SIGNAL(received(const QCString &, const QByteArray &)),
this, SLOT(pidMessage(const QCString &, const QByteArray &)));
if ( f.isOpen() ) {
d->keep_running = FALSE;
QDataStream ds(&f);
QCString channel, message;
QByteArray data;
while(!ds.atEnd()) {
ds >> channel >> message >> data;
d->enqueueQCop(channel,message,data);
}
flock(f.handle(), LOCK_UN);
f.close();
f.remove();
}
for (int a=0; a<argc; a++) {
if ( qstrcmp(argv[a],"-preload")==0 ) {
argv[a] = argv[a+1];
a++;
d->preloaded = TRUE;
argc-=1;
} else if ( qstrcmp(argv[a],"-preload-show")==0 ) {
argv[a] = argv[a+1];
a++;
d->preloaded = TRUE;
d->forceshow = TRUE;
argc-=1;
}
}
/* overide stored arguments */
setArgs(argc, argv);
#endif
qwsSetDecoration( new QPEDecoration() );
#ifndef QT_NO_TRANSLATION
- char *l = getenv( "LANG" );
- QString lang;
- if ( l ) {
- lang = l;
+ QStringList langs = Global::languageList();
+ for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) {
+ QString lang = *it;
- /*
- Config config("qpe");
- config.setGroup( "Appearance" );
- lang = config.readEntry( "Language", lang );
- */
+ QTranslator * trans;
+ QString tfn;
- QTranslator * trans = new QTranslator(this);
- QString tfn = qpeDir()+"/i18n/"+lang+"/"+d->appName+".qm";
+ trans = new QTranslator(this);
+ tfn = qpeDir()+"/i18n/"+lang+"/libqpe.qm";
if ( trans->load( tfn ))
installTranslator( trans );
else
delete trans;
trans = new QTranslator(this);
- tfn = qpeDir()+"/i18n/"+lang+"/libqpe.qm";
+ tfn = qpeDir()+"/i18n/"+lang+"/"+d->appName+".qm";
if ( trans->load( tfn ))
installTranslator( trans );
else
delete trans;
- //###language/font hack; should look it up somewhere
+ //###language/font hack; should look it up somewhere
if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
QFont fn = FontManager::unicodeFont( FontManager::Proportional );
setFont( fn );
}
}
#endif
applyStyle();
if ( type() == GuiServer ) {
setScreenSaverInterval(-1);
setVolume();
QWSServer::setScreenSaver(new QPEScreenSaver);
}
installEventFilter( this );
QPEMenuToolFocusManager::initialize();
#ifdef QT_NO_QWS_CURSOR
// if we have no cursor, probably don't want tooltips
QToolTip::setEnabled( FALSE );
#endif
}
static QPtrDict<void>* inputMethodDict=0;
static void createInputMethodDict()
{
if ( !inputMethodDict )
inputMethodDict = new QPtrDict<void>;
}
/*!
Returns the currently set hint to the system as to whether
\a w has any use for text input methods.
\sa setInputMethodHint()
*/
QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget* w )
{
if ( inputMethodDict && w )
return (InputMethodHint)(int)inputMethodDict->find(w);
return Normal;
}
/*!
\enum QPEApplication::InputMethodHint
diff --git a/mkipks b/mkipks
index dedb060..d44f074 100755
--- a/mkipks
+++ b/mkipks
@@ -131,91 +131,91 @@ do
D=$DATADIR$BASE
if [ -x $ff -a -n "$STRIP" ]
then
case $(file $ff) in
$STRIP_FILES)
$STRIP $ff
;; *)
esac
fi
if [ -n "$RPM" ]
then
case "$ff" in
/*) RPMFILES="$RPMFILES $ff"
;; *) RPMFILES="$RPMFILES $OPIEDIR/$ff"
esac
else
mkdir -p $D
if cp -a $ff $D
then
true
else
ERROR=1
fi
fi
else
echo >&2 "$0: $i: No such file: $ff"
ERROR=1
fi
done
done
fi
if [ -z "$ERROR" ]
then
if [ -n "$RPM" ]
then
SPEC=/tmp/mkipks-rpm-$$.spec
echo >$SPEC "Summary: $summary"
echo >>$SPEC "Name: $packagename"
echo >>$SPEC "Group: $section" ##########
echo >>$SPEC "License: $license"
echo >>$SPEC "Version: ${version%-*}"
echo >>$SPEC "Release: ${version#*-}"
echo >>$SPEC "%description"
sed -n -e '/^Description:/,$ p' $i | tail +2 >>$SPEC
echo >>$SPEC "%files"
echo >>$SPEC "%defattr(-,root,root)"
/bin/ls $RPMFILES >>$SPEC
- rpm -bb $SPEC --target $ARCH-unknown-linux
+ rpm -bb --target $ARCH-unknown-linux $SPEC
# rm $SPEC
elif [ -z "$IMAGEDIR" ]
then
#size=$(du -h -s $DATADIR | sed -e 's/[ ].*//')
size=$(mkfs.jffs2 -r $DATADIR | wc -c)
echo "Package: $packagename" >$CTRLDIR/control
echo "Installed-Size: $size" >>$CTRLDIR/control
echo "Filename: ./$package.ipk" >>$CTRLDIR/control
echo "Version: $version" >>$CTRLDIR/control
echo "Depends: $depends" >>$CTRLDIR/control
egrep -v "^(Files|Version|Depends):" >>$CTRLDIR/control $i
echo "$DEB_VERSION" >$TDIR/debian-binary
base=${i%.control}
scripts="preinst postinst prerm postrm"
for pf in $scripts
do
if [ -x ${base}.$pf ]
then
cp ${base}.$pf $CTRLDIR/$pf
fi
done
if [ "$UID" = 0 ]
then
chown -R root.root $TDIR
fi
( cd $CTRLDIR; tar cfz ../control.tar.gz ./*; )
( cd $DATADIR; tar cfz ../data.tar.gz ./*; )
( cd $TDIR; rm -rf control data; tar cf - ./debian-binary ./control.tar.gz ./data.tar.gz; ) | gzip >$RDIR/$package.ipk
RESULT=$package.ipk
if [ -n "$VERB" ]
then
echo >&2 "Built $RESULT ($size)"
fi
if [ -n "$LIST" ]
then
echo $RESULT
fi
fi
else
echo >&2 "Not building $package package"
fi
done
diff --git a/noncore/games/minesweep/Makefile.in b/noncore/games/minesweep/Makefile.in
index 67ea94c..6df2608 100644
--- a/noncore/games/minesweep/Makefile.in
+++ b/noncore/games/minesweep/Makefile.in
@@ -24,111 +24,113 @@ TARGET1 = lib$(TARGET).so.$(VER_MAJ)
####### Files
HEADERS = minefield.h \
minesweep.h
SOURCES = main.cpp \
minefield.cpp \
minesweep.cpp
OBJECTS = main.o \
minefield.o \
minesweep.o
INTERFACES =
UICDECLS =
UICIMPLS =
SRCMOC = moc_minefield.cpp \
moc_minesweep.cpp
OBJMOC = moc_minefield.o \
moc_minesweep.o
####### Implicit rules
.SUFFIXES: .cpp .cxx .cc .C .c
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
####### Build rules
all: $(DESTDIR)$(TARGET)
$(DESTDIR)$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS)
$(SYSCONF_LINK) $(LFLAGS) -o $(DESTDIR)$(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)
moc: $(SRCMOC)
-tmake:
- tmake minesweep.pro
+tmake: Makefile.in
+
+Makefile.in: minesweep.pro
+ tmake minesweep.pro -o Makefile.in
clean:
-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS)
-rm -f *~ core
-rm -f allmoc.cpp
####### Extension Modules
listpromodules:
@echo
listallmodules:
@echo
listaddonpromodules:
@echo
listaddonentmodules:
@echo
REQUIRES=
####### Sub-libraries
###### Combined headers
####### Compile
main.o: main.cpp \
minesweep.h \
- $(OPIEDIR)/include/qpe/qpeapplication.h
+ /home/kergoth/roms/openzaurus/buildroot-oz/build/opie/include/qpe/qpeapplication.h
minefield.o: minefield.cpp \
minefield.h \
- $(OPIEDIR)/include/qpe/config.h
+ /home/kergoth/roms/openzaurus/buildroot-oz/build/opie/include/qpe/config.h
minesweep.o: minesweep.cpp \
minesweep.h \
minefield.h \
- $(OPIEDIR)/include/qpe/resource.h \
- $(OPIEDIR)/include/qpe/config.h \
- $(OPIEDIR)/include/qpe/qpetoolbar.h \
- $(OPIEDIR)/include/qpe/qpemenubar.h
+ /home/kergoth/roms/openzaurus/buildroot-oz/build/opie/include/qpe/resource.h \
+ /home/kergoth/roms/openzaurus/buildroot-oz/build/opie/include/qpe/config.h \
+ /home/kergoth/roms/openzaurus/buildroot-oz/build/opie/include/qpe/qpetoolbar.h \
+ /home/kergoth/roms/openzaurus/buildroot-oz/build/opie/include/qpe/qpemenubar.h
moc_minefield.o: moc_minefield.cpp \
minefield.h
moc_minesweep.o: moc_minesweep.cpp \
minesweep.h
moc_minefield.cpp: minefield.h
$(MOC) minefield.h -o moc_minefield.cpp
moc_minesweep.cpp: minesweep.h
$(MOC) minesweep.h -o moc_minesweep.cpp