author | kergoth <kergoth> | 2002-02-04 22:14:18 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2002-02-04 22:14:18 (UTC) |
commit | d46cb220a09b41312d86bb33573940d3dcba2588 (patch) (side-by-side diff) | |
tree | 6aacb1589d5de2ca908d067f99ba64dc608a6fa5 | |
parent | 500e2f0cdbe82035516b7a1c576e08e0b2ad72b3 (diff) | |
download | opie-d46cb220a09b41312d86bb33573940d3dcba2588.zip opie-d46cb220a09b41312d86bb33573940d3dcba2588.tar.gz opie-d46cb220a09b41312d86bb33573940d3dcba2588.tar.bz2 |
latest qtopia merge as of 20020204.
-rw-r--r-- | library/global.cpp | 49 | ||||
-rw-r--r-- | library/qpeapplication.cpp | 38 | ||||
-rwxr-xr-x | mkipks | 2 | ||||
-rw-r--r-- | noncore/games/minesweep/Makefile.in | 18 |
4 files changed, 67 insertions, 40 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 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; - QString words_lang = dictDir() + "/words." + lang; if ( QFile::exists(dawgfilename_lang) || - QFile::exists(words_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,116 +478,112 @@ 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 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); @@ -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 |