45 files changed, 70 insertions, 46 deletions
@@ -1,308 +1,316 @@ .phony: force force: $(configs) : $(call makecfg,$@) $(TOPDIR)/gen.pro : $(TOPDIR)/.config echo > $@ # added for threaded version ifneq ($(CONFIG_THREADED),) echo CONFIG += thread >> $@ else echo CONFIG -= thread >> $@ endif +# added for auto stripped build +ifneq ($(CONFIG_STRIP),) + echo CONFIG += strip >> $@ +endif ifneq ($(CONFIG_DEBUG),) echo CONFIG += debug >> $@ echo CONFIG -= release >> $@ echo DEFINES += "QT_COMPONENT_DEBUG=2" >> $@ echo DEFINES += QT_DEBUG >> $@ else echo CONFIG -= debug >> $@ echo CONFIG += release >> $@ echo DEFINES += "OPIE_NO_DEBUG" >> $@ endif ifeq ($(CONFIG_STATIC),y) echo !contains\( TARGET,qpe \) \{ >> $@ echo CONFIG += staticlib >> $@ echo \} >> $@ endif ifeq ($(filter 3.%,$(QTE_VERSION)),) # not qt3 echo CONFIG -= qt3 >> $@ else echo CONFIG += qt3 >> $@ endif ifneq ($(CONFIG_QUICK_LAUNCH),) echo contains\( CONFIG, quick-app \) \{ >> $@ echo CONFIG -= staticlib >> $@ echo CONFIG -= quick-app >> $@ echo CONFIG += quick-app-lib >> $@ echo QUICKLAUNCH_PATH = $(CONFIG_QUICKLAUNCH_PATH) >> $@ echo \} >> $@ else echo contains\( CONFIG, quick-app \) \{ >> $@ echo CONFIG -= quick-app >> $@ echo CONFIG += quick-app-bin >> $@ echo \} >> $@ endif ifeq ($(CONFIG_SQL_PIM_BACKEND),y) echo ENABLE_SQL_PIM_BACKEND=$(CONFIG_SQL_PIM_BACKEND) >> $@ else echo ENABLE_SQL_PIM_BACKEND=n >> $@ endif ifeq ($(CONFIG_OPIE_NO_OVERRIDE_QT),y) echo CONFIG += no-override >> $@ endif ifeq ($(CONFIG_OPIELOGIN_USEPAM),y) echo CONFIG += OPIELOGIN_USEPAM >> $@ endif ifeq ($(CONFIG_LIBQPE_WITHROHFEEDBACK),y) echo CONFIG += LIBQPE_WITHROHFEEDBACK >> $@ endif ifeq ($(CONFIG_OPIE_NO_ERASERECT_FIX),y) echo DEFINES += OPIE_NO_ERASE_RECT_HACKFIX >> $@ endif ifeq ($(CONFIG_OPIE_NO_BUILTIN_SHUTDOWN),y) echo DEFINES += OPIE_NO_BUILTIN_SHUTDOWN >> $@ endif ifeq ($(CONFIG_OPIE_NO_BUILTIN_CALIBRATE),y) echo DEFINES += OPIE_NO_BUILTIN_CALIBRATE >> $@ endif ifeq ($(CONFIG_USE_REALTIME_AUDIO_THREAD),y) echo DEFINES += USE_REALTIME_AUDIO_THREAD >> $@ endif ifeq ($(CONFIG_USE_FILE_NOTIFICATION),y) echo DEFINES += USE_FILE_NOTIFICATION >> $@ endif ifeq ($(CONFIG_QT_QWS_ALLOW_CLOCK),y) echo DEFINES += QT_QWS_ALLOW_OVERCLOCK >> $@ endif ifeq ($(CONFIG_OPIE_NEW_ALLOC),y) echo DEFINES += OPIE_NEW_MALLOC >> $@ endif ifeq ($(CONFIG_OPIE_NO_SOUND_PCM_READ_BITS),y) echo DEFINES += OPIE_NO_SOUND_PCM_READ_BITS >> $@ endif echo DEFINES += OPIE_SOUND_FRAGMENT_SHIFT=$(CONFIG_OPIE_SOUND_FRAGMENT_SHIFT) >> $@ ifeq ($(CONFIG_OPIE_WE_VERSION_OVERRIDE),y) echo DEFINES += OPIE_WE_VERSION=$(CONFIG_OPIE_WE_VERSION) >> $@ endif ifeq ($(CONFIG_OPIE_TASKBAR_LOCK_KEY_STATE),y) echo DEFINES += OPIE_TASKBAR_LOCK_KEY_STATE >> $@ endif # Write LIB dirs and INC dirs... ifeq ($(CONFIG_LIBETPAN_DEP),y) echo LIBETPAN_LIB_DIR = $(CONFIG_LIBETPAN_LIB_DIR) >> $@ echo LIBETPAN_INC_DIR = $(CONFIG_LIBETPAN_INC_DIR) >> $@ endif ifeq ($(CONFIG_LIBPCAP_DEP),y) echo LIBPCAP_LIB_DIR = $(CONFIG_LIBPCAP_LIB_DIR) >> $@ echo LIBPCAP_INC_DIR = $(CONFIG_LIBPCAP_INC_DIR) >> $@ endif ifeq ($(CONFIG_LIBSQLITE_DEP),y) echo LIBSQLITE_LIB_DIR = $(CONFIG_LIBSQLITE_LIB_DIR) >> $@ echo LIBSQLITE_INC_DIR = $(CONFIG_LIBSQLITE_INC_DIR) >> $@ endif ifeq ($(CONFIG_LIBXINE_DEP),y) echo LIBXINE_LIB_DIR = $(CONFIG_LIBXINE_LIB_DIR) >> $@ echo LIBXINE_INC_DIR = $(CONFIG_LIBXINE_INC_DIR) >> $@ endif +ifeq ($(CONFIG_LIBBLUEZ_DEP),y) + echo LIBBLUEZ_LIB_DIR = $(CONFIG_LIBBLUEZ_LIB_DIR) >> $@ + echo LIBBLUEZ_INC_DIR = $(CONFIG_LIBBLUEZ_INC_DIR) >> $@ +endif ifeq ($(CONFIG_LIBIPK_DEP),y) echo LIBIPK_LIB_DIR = $(CONFIG_LIBIPK_LIB_DIR) >> $@ echo LIBIPK_INC_DIR = $(CONFIG_LIBIPK_INC_DIR) >> $@ endif ifeq ($(CONFIG_LIBSDK_DEP),y) echo LIBSDL_LIB_DIR = $(CONFIG_LIBSDL_LIB_DIR) >> $@ echo LIBSDL_INC_DIR = $(CONFIG_LIBSDL_INC_DIR) >> $@ endif ifeq ($(CONFIG_LIBSWORD_DEP),y) echo LIBSWORD_LIB_DIR = $(CONFIG_LIBSWORD_LIB_DIR) >> $@ echo LIBSWORD_INC_DIR = $(CONFIG_LIBSWORD_INC_DIR) >> $@ endif $(TOPDIR)/.depends : $(shell if [ -e $(TOPDIR)/config.in ]\; then echo $(TOPDIR)/config.in\; fi\;) $(TOPDIR)/.config $(TOPDIR)/packages @echo Generating dependency information... # add to subdir-y, and add descend rules @cat $(TOPDIR)/packages | grep -v '^#' | \ awk '{print \ ".PHONY : " $$2 "\n" \ "subdir-$$(" $$1 ") += " $$2 "\n\n"; \ print $$2 " : " $$2 "/Makefile\n\t+$$(call descend,$$@,$(filter-out $$@,$$(filter-out $$@,$$(MAKECMDGOALS))))\n"; }' > $(TOPDIR)/.depends cat $(TOPDIR)/packages | grep -v '^#' | \ perl -ne '($$cfg, $$dir, $$pro) = $$_ =~ /^(\S+)\s+(\S+)\s+(\S+)/; if ( -e "$$dir/$$pro" ) { print "$$dir/Makefile : $$dir/$$pro \$$(QMAKE) \$$(OPIEDIR)/gen.pro \$$(OPIEDIR)/.config\n\t\$$(call makefilegen,\$$@)\n\n"; }' \ >> $(TOPDIR)/.depends # interpackage dependency generation @cat $(TOPDIR)/packages | \ $(TOPDIR)/scripts/deps.pl >> $(TOPDIR)/.depends $(TOPDIR)/.depends.cfgs: # config.in interdependencies @echo $(configs) | sed -e 's,/config.in,,g' | ( for i in `cat`; do echo $$i; done ) > dirs @cat dirs | ( for i in `cat`; do if [ "`cat dirs|grep $$i 2>/dev/null|wc -l`" -ne "1" ]; then deps=`cat dirs|grep $$i| grep -v "^$$i$$"|for i in \`cat|sed -e's,^$(TOPDIR)/,$$(TOPDIR)/,g'\`; do echo $$i/config.in; done`; echo `echo $$i/config.in|sed -e 's,^$(TOPDIR)/,$$(TOPDIR)/,'` : $$deps; fi; done ) >> $@ @-rm -f dirs $(QTDIR)/stamp-headers : @-rm -f $(QTDIR)/stamp-headers* ( cd $(QTDIR)/include; \ $(patsubst %,ln -sf ../src/kernel/%;,qgfx_qws.h qwsmouse_qws.h \ qcopchannel_qws.h qwindowsystem_qws.h \ qfontmanager_qws.h qwsdefaultdecoration_qws.h)) touch $@ $(QTDIR)/stamp-headers-x11 : @-rm -f $(QTDIR)/stamp-headers* cd $(QTDIR)/include; $(patsubst %,ln -sf $(OPIEDIR)/x11/libqpe-x11/qt/%;,qgfx_qws.h qwsmouse_qws.h qcopchannel_qws.h qwindowsystem_qws.h qfontmanager_qws.h qwsdefaultdecoration_qws.h) touch $@ $(OPIEDIR)/stamp-headers : @-rm -f $(OPIEDIR)/stamp-headers* mkdir -p $(TOPDIR)/include/qpe \ $(TOPDIR)/include/qtopia \ $(TOPDIR)/include/opie \ $(TOPDIR)/include/opie2 \ $(TOPDIR)/include/opie2/private \ $(TOPDIR)/include/qtopia/private \ $(TOPDIR)/include/sl ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; ) ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; ) ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; ) # libopie2 ( cd include/opie2 && ln -sf ../../libopie2/opiecore/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opiecore/device/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opiemm/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opiedb/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opienet/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opiepim/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opiepim/core/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opiepim/backend/*.h .; ) ( cd include/opie2/private && ln -sf ../../../libopie2/opiepim/private/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opiepim/ui/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opieui/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opieui/fileselector/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opieui/big-screen/*.h .; ) ( cd include/opie2 && ln -sf ../../libopie2/opiesecurity/*.h .; ) # auxilliary libraries ( cd include/opie2 && ln -sf ../../libqtaux/*.h .; ) ( cd include/sl && ln -sf ../../libslcompat/*.h .; ) ( cd include/ && ln -sf ../noncore/net/ftplib/*.h .; ) ( cd include/ && ln -sf ../inputmethods/pickboard/pickboardcfg.h .; ) ( cd include/ && ln -sf ../inputmethods/pickboard/pickboardpicks.h .; ) # all ( cd include/opie2; for generatedHeader in `cd ../../libopie2/opieui; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \ ln -sf ../../libopie2/opieui/$$generatedHeader $$generatedHeader; done ) ( cd include/opie2; for generatedHeader in `cd ../../libopie2/opiepim/ui; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \ ln -sf ../../libopie2/opiepim/ui/$$generatedHeader $$generatedHeader; done ) ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h touch $@ $(OPIEDIR)/stamp-headers-x11 : @-rm -f $(OPIEDIR)/stamp-headers* mkdir -p $(TOPDIR)/include/qpe $(TOPDIR)/include/qtopia \ $(TOPDIR)/include/opie $(TOPDIR)/include/qtopia/private ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; ) ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; ) ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; ) ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; ) ( cd include/opie && ln -sf ../../libsql/*.h .; ) ( cd include/opie && ln -sf ../../libopie/pim/*.h .; ) ( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \ ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done ) ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h ( cd include/qpe; ln -sf ../../x11/libqpe-x11/qpe/*.h .; ) touch $@ $(TOPDIR)/library/custom.h : $(TOPDIR)/.config @-rm -f $@ @$(if $(patsubst "%",%,$(CONFIG_CUSTOMFILE)),\ ln -sf $(patsubst "%",%,$(CONFIG_CUSTOMFILE)) $@) @touch $@ $(TOPDIR)/scripts/lxdialog/lxdialog $(TOPDIR)/scripts/kconfig/mconf $(TOPDIR)/scripts/kconfig/conf $(TOPDIR)/scripts/kconfig/qconf $(TOPDIR)/scripts/kconfig/libkconfig.so $(TOPDIR)/scripts/kconfig/gconf $(TOPDIR)/qmake/qmake: +$(call descend,$(shell dirname $@),$(shell basename $@)) menuconfig: $(TOPDIR)/scripts/lxdialog/lxdialog $(TOPDIR)/scripts/kconfig/mconf ./config.in $(TOPDIR)/scripts/kconfig/mconf ./config.in @touch ./.config.stamp xconfig: $(TOPDIR)/scripts/kconfig/qconf $(TOPDIR)/scripts/kconfig/libkconfig.so ./config.in $(TOPDIR)/scripts/kconfig/qconf ./config.in @touch .config.stamp gconfig: $(TOPDIR)/scripts/kconfig/gconf $(TOPDIR)/scripts/kconfig/libkconfig.so ./config.in $(TOPDIR)/scripts/kconfig/gconf ./config.in @touch .config.stamp config: $(TOPDIR)/scripts/kconfig/conf ./config.in $(TOPDIR)/scripts/kconfig/conf ./config.in @touch .config.stamp oldconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in $(TOPDIR)/scripts/kconfig/conf -o ./config.in @touch .config.stamp randconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in $(TOPDIR)/scripts/kconfig/conf -r ./config.in @touch .config.stamp allyesconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in $(TOPDIR)/scripts/kconfig/conf -y ./config.in @touch .config.stamp allnoconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in $(TOPDIR)/scripts/kconfig/conf -n ./config.in @touch .config.stamp defconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in $(TOPDIR)/scripts/kconfig/conf -d ./config.in @touch .config.stamp $(TOPDIR)/qmake/qmake : $(TOPDIR)/mkspecs/default $(TOPDIR)/mkspecs/default : ln -sf linux-g++ $@ $(TOPDIR)/scripts/subst : force @( \ echo 's,\$$QPE_VERSION,$(QPE_VERSION),g'; \ echo 's,\$$OPIE_VERSION,$(OPIE_VERSION),g'; \ echo 's,\$$QTE_VERSION,$(QTE_VERSION),g'; \ echo 's,\$$QTE_REVISION,$(QTE_REVISION),g'; \ echo 's,\$$SUB_VERSION,$(SUB_VERSION),g'; \ echo 's,\$$EXTRAVERSION,$(EXTRAVERSION),g'; \ echo 's,\$$QTE_BASEVERSION,$(QTE_BASEVERSION),g'; \ ) > $@ || ( rm -f $@; exit 1 ) $(TOPDIR)/scripts/filesubst : force @( \ echo 's,\$$OPIEDIR/root/,/,g'; \ echo 's,$(OPIEDIR)/root/,/,g'; \ echo 's,\$$OPIEDIR,$(prefix),g'; \ echo 's,$(OPIEDIR),$(prefix),g'; \ echo 's,\$$QTDIR,$(prefix),g'; \ echo 's,$(QTDIR),$(prefix),g'; \ echo 's,^\(\./\)*root/,/,g'; \ echo 's,^\(\./\)*etc/,$(prefix)/etc/,g'; \ echo 's,^\(\./\)*lib/,$(prefix)/lib/,g'; \ echo 's,^\(\./\)*bin/,$(prefix)/bin/,g'; \ echo 's,^\(\./\)*pics/,$(prefix)/pics/,g'; \ echo 's,^\(\./\)*sounds/,$(prefix)/sounds/,g'; \ echo 's,^\(\./\)*i18n/,$(prefix)/i18n/,g'; \ echo 's,^\(\./\)*plugins/,$(prefix)/plugins/,g'; \ echo 's,^\(\./\)*apps/,$(prefix)/apps/,g'; \ echo 's,^\(\./\)*share/,$(prefix)/share/,g'; \ echo 's,^\(\./\)*i18n/,$(prefix)/i18n/,g'; \ echo 's,^\(\./\)*help/,$(prefix)/help/,g'; \ ) > $@ || ( rm -f $@; exit 1 ) ## general rules ## define descend $(MAKE) $(if $(QMAKE),QMAKE=$(QMAKE)) -C $(1) $(2) endef define makefilegen cd $(if $(1),$(dir $(1))); $(TOPDIR)/qmake/qmake $(3) -o $(if $(1),$(notdir $(1))) $(word 3,$(shell grep "[[:space:]]$(patsubst %/Makefile,%,$(1))[[:space:]]" $(OPIEDIR)/packages)) endef define makecfg $(TOPDIR)/scripts/makecfg.pl $1 $(OPIEDIR) endef diff --git a/core/multimedia/opieplayer/modplug/opie-modplugin.control b/core/multimedia/opieplayer/modplug/opie-modplugin.control index 9e0957b..6e9ad7c 100644 --- a/core/multimedia/opieplayer/modplug/opie-modplugin.control +++ b/core/multimedia/opieplayer/modplug/opie-modplugin.control @@ -1,10 +1,10 @@ Package: opie-modplugin Files: plugins/codecs/libmodplugin.so* Priority: optional Section: libs Maintainer: Simon Hausmann <hausmann@kde.org>, L.J. Potter <lpotter@trolltech.com> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 2.0.2-$EXTRAVERSION Depends: task-opie-minimal Description: MOD/XM/S3M/IT plugin using libmodplug Plugin to play MOD/XM/S3M/IT amiga tracker modules with the mediaplayer in the Opie environment. diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp index 0654e1a..3f0ac74 100644 --- a/core/pim/addressbook/addressbook.cpp +++ b/core/pim/addressbook/addressbook.cpp @@ -1,1049 +1,1049 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** Copyright (C) 2003 Stefan Eilers (eilers.stefan@epost.de) ** ** This file is part of the Open Palmtop Environment (see www.opie.info). ** ** 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. ** ** **********************************************************************/ #define QTOPIA_INTERNAL_FD // #include "addresssettings.h" #include "addressbook.h" #include <opie2/odebug.h> #include <opie2/ofileselector.h> #include <opie2/ofiledialog.h> #include <opie2/opimcontact.h> #include <opie2/ocontactaccessbackend_vcard.h> #include <qpe/resource.h> #include <qpe/ir.h> #include <qpe/qpemessagebox.h> #include <qmenubar.h> // #include <qtoolbar.h> // #include <qmenubar.h> #include <qpe/qpeapplication.h> #include <qaction.h> #include <qlayout.h> #include <qmessagebox.h> #include <qtoolbutton.h> #include <stdlib.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #include "picker.h" #include "configdlg.h" extern QString addressbookPersonalVCardName(); AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, WFlags f ) : QMainWindow( parent, name, f ), catMenu (0l), abEditor(0l), syncing(FALSE), m_tableViewButton(0l), m_cardViewButton(0l) { isLoading = true; m_config.load(); setCaption( tr("Contacts") ); - setIcon( Resource::loadPixmap( "AddressBook" ) ); + setIcon( Resource::loadPixmap( "addressbook/AddressBook" ) ); // Settings for Main Menu // setToolBarsMovable( false ); setToolBarsMovable( !m_config.fixedBars() ); setRightJustification( true ); QToolBar *bar = new QToolBar( this ); bar->setHorizontalStretchable( TRUE ); QMenuBar *mbList = new QMenuBar( bar ); mbList->setMargin( 0 ); QPopupMenu *edit = new QPopupMenu( mbList ); mbList->insertItem( tr( "Contact" ), edit ); // Category Menu catMenu = new QPopupMenu( this ); catMenu->setCheckable( TRUE ); connect( catMenu, SIGNAL(activated(int)), this, SLOT(slotSetCategory(int)) ); mbList->insertItem( tr("View"), catMenu ); // Create Toolbar listTools = new QToolBar( this, "list operations" ); listTools->setHorizontalStretchable( true ); addToolBar( listTools ); moveToolBar( listTools, m_config.getToolBarPos() ); // View Icons m_tableViewButton = new QAction( tr( "List" ), Resource::loadPixmap( "addressbook/listview" ), QString::null, 0, this, 0 ); connect( m_tableViewButton, SIGNAL( activated() ), this, SLOT( slotListView() ) ); m_tableViewButton->setToggleAction( true ); m_tableViewButton->addTo( listTools ); m_cardViewButton = new QAction( tr( "Card" ), Resource::loadPixmap( "addressbook/cardview" ), QString::null, 0, this, 0 ); connect( m_cardViewButton, SIGNAL( activated() ), this, SLOT( slotCardView() ) ); m_cardViewButton->setToggleAction( true ); m_cardViewButton->addTo( listTools ); listTools->addSeparator(); // Other Buttons QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); actionNew = a; connect( a, SIGNAL( activated() ), this, SLOT( slotListNew() ) ); a->addTo( edit ); a->addTo( listTools ); a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ), QString::null, 0, this, 0 ); actionEdit = a; connect( a, SIGNAL( activated() ), this, SLOT( slotViewEdit() ) ); a->addTo( edit ); a->addTo( listTools ); a = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); actionTrash = a; connect( a, SIGNAL( activated() ), this, SLOT( slotListDelete() ) ); a->addTo( edit ); a->addTo( listTools ); // make it possible to go directly to businesscard via qcop call //#if defined(Q_WS_QWS) // Why this ? (se) #if !defined(QT_NO_COP) QCopChannel *addressChannel = new QCopChannel("QPE/Addressbook" , this ); connect (addressChannel, SIGNAL( received(const QCString&,const QByteArray&)), this, SLOT ( appMessage(const QCString&,const QByteArray&) ) ); #endif // #endif a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ), QString::null, 0, this, 0 ); actionFind = a; connect( a, SIGNAL(activated()), this, SLOT( slotFindOpen()) ); a->addTo( edit ); a->addTo( listTools ); // Much better search widget, taken from QTReader.. (se) searchBar = new OFloatBar( "Search", this, QMainWindow::Top, TRUE ); searchBar->setHorizontalStretchable( TRUE ); searchBar->hide(); searchEdit = new QLineEdit( searchBar, "searchEdit" ); // QFont f("unifont", 16 /*, QFont::Bold*/); // searchEdit->setFont( f ); searchBar->setStretchableWidget( searchEdit ); connect( searchEdit, SIGNAL( returnPressed() ), this, SLOT( slotFind() ) ); a = new QAction( tr( "Start Search" ), Resource::loadPixmap( "enter" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); a->addTo( searchBar ); a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( slotFindClose() ) ); a->addTo( searchBar ); a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "addressbook/sendmail" ), QString::null, 0, this, 0 ); //a->setEnabled( FALSE ); we got support for it now :) zecke actionMail = a; connect( a, SIGNAL( activated() ), this, SLOT( writeMail() ) ); a->addTo( edit ); a->addTo( listTools ); if ( Ir::supported() ) { a = new QAction( tr ("Beam Entry" ), Resource::loadPixmap( "beam" ), QString::null, 0, this, 0 ); actionBeam = a; connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); a->addTo( edit ); a->addTo( listTools ); } edit->insertSeparator(); a = new QAction( tr("Import vCard"), Resource::loadPixmap( "addressbook/fileimport"), QString::null, 0, this, 0); actionPersonal = a; connect( a, SIGNAL( activated() ), this, SLOT( importvCard() ) ); a->addTo( edit ); a = new QAction( tr("Export vCard"), Resource::loadPixmap( "addressbook/fileexport"), QString::null, 0, this, 0); actionPersonal = a; connect( a, SIGNAL( activated() ), this, SLOT( exportvCard() ) ); a->addTo( edit ); edit->insertSeparator(); a = new QAction( tr("My Personal Details"), Resource::loadPixmap( "addressbook/identity" ), QString::null, 0, this, 0 , TRUE ); actionPersonal = a; connect( a, SIGNAL( activated() ), this, SLOT( slotPersonalView() ) ); a->addTo( edit ); #ifdef __DEBUG_RELEASE // Remove this function for public Release ! This is only // for debug purposes .. a = new QAction( tr( "Save all Data"), QString::null, 0, 0 ); connect( a, SIGNAL( activated() ), this , SLOT( slotSave() ) ); a->addTo( edit ); #endif a = new QAction( tr( "Config" ), Resource::loadPixmap( "SettingsIcon" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( slotConfig() ) ); a->addTo( edit ); // Create Views listContainer = new QWidget( this ); QVBoxLayout *vb = new QVBoxLayout( listContainer ); m_abView = new AbView( listContainer, m_config.orderList() ); vb->addWidget( m_abView ); // abList->setHScrollBarMode( QScrollView::AlwaysOff ); connect( m_abView, SIGNAL( signalViewSwitched(int) ), this, SLOT( slotViewSwitched(int) ) ); QObject::connect( m_abView, SIGNAL(signalNotFound()), this, SLOT(slotNotFound()) ); // m_abView->load(); // Already done by c'tor . // Letter Picker pLabel = new LetterPicker( listContainer ); connect(pLabel, SIGNAL(letterClicked(char)), this, SLOT(slotSetLetter(char))); connect(m_abView, SIGNAL( signalClearLetterPicker() ), pLabel, SLOT( clear() ) ); vb->addWidget( pLabel ); // All Categories into view-menu.. populateCategories(); // Fontsize defaultFont = new QFont( m_abView->font() ); slotSetFont(m_config.fontSize()); m_curFontSize = m_config.fontSize(); setCentralWidget(listContainer); // odebug << "adressbook contrsuction: t=" << t.elapsed() << oendl; connect( qApp, SIGNAL( flush() ), this, SLOT( flush() ) ); connect( qApp, SIGNAL( reload() ), this, SLOT( reload() ) ); connect( qApp, SIGNAL( appMessage(const QCString&,const QByteArray&) ), this, SLOT( appMessage(const QCString&,const QByteArray&) ) ); isLoading = false; } void AddressbookWindow::slotConfig() { ConfigDlg* dlg = new ConfigDlg( this, "Config" ); dlg -> setConfig( m_config ); if ( QPEApplication::execDialog( dlg ) ) { odebug << "Config Dialog accepted!" << oendl; m_config = dlg -> getConfig(); if ( m_curFontSize != m_config.fontSize() ){ odebug << "Font was changed!" << oendl; m_curFontSize = m_config.fontSize(); emit slotSetFont( m_curFontSize ); } m_abView -> setListOrder( m_config.orderList() ); } delete dlg; } void AddressbookWindow::slotSetFont( int size ) { odebug << "void AddressbookWindow::slotSetFont( " << size << " )" << oendl; if (size > 2 || size < 0) size = 1; m_config.setFontSize( size ); QFont *currentFont; switch (size) { case 0: m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) ); currentFont = new QFont (m_abView->font()); // abList->resizeRows(currentFont->pixelSize() + 7); :SX // abList->resizeRows(); break; case 1: m_abView->setFont( *defaultFont ); currentFont = new QFont (m_abView->font()); // // abList->resizeRows(currentFont->pixelSize() + 7); // abList->resizeRows(); break; case 2: m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) ); currentFont = new QFont (m_abView->font()); // //abList->resizeRows(currentFont->pixelSize() + 7); // abList->resizeRows(); break; } } void AddressbookWindow::importvCard() { QString str = Opie::Ui::OFileDialog::getOpenFileName( 1,"/");//,"", "*", this ); if(!str.isEmpty() ){ setDocument((const QString&) str ); } } void AddressbookWindow::exportvCard() { odebug << "void AddressbookWindow::exportvCard()" << oendl; QString filename = Opie::Ui::OFileDialog::getSaveFileName( 1,"/home/"); //,"", "*", this ); if( !filename.isEmpty() && ( filename[filename.length()-1] != '/' ) ){ odebug << " Save to file " << filename << ", (" << filename.length()-1 << ")" << oendl; Opie::OPimContact curCont = m_abView->currentEntry(); if ( !curCont.isEmpty() ){ Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, filename ); Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook_exp", QString::null , vcard_backend, true ); if ( access ){ access->add( curCont ); access->save(); } delete access; }else QMessageBox::critical( 0, "Export VCard", QString( tr( "You have to select a contact !") ) ); }else QMessageBox::critical( 0, "Export VCard", QString( tr( "You have to set a filename !") ) ); } void AddressbookWindow::setDocument( const QString &filename ) { odebug << "void AddressbookWindow::setDocument( " << filename << " )" << oendl; // Switch to default backend. This should avoid to import into // the personal database accidently. if ( actionPersonal->isOn() ){ actionPersonal->setOn( false ); slotPersonalView(); } if ( filename.find(".vcf") != int(filename.length()) - 4 ){ switch( QMessageBox::information( this, tr ( "Right file type ?" ), tr( "The selected file \n does not end with \".vcf\".\n Do you really want to open it?" ), tr( "&Yes" ), tr( "&No" ), QString::null, 0, // Enter == button 0 2 ) ) { // Escape == button 2 case 0: odebug << "YES clicked" << oendl; break; case 1: odebug << "NO clicked" << oendl; return; break; } } Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, filename ); Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); Opie::OPimContactAccess::List allList = access->allRecords(); odebug << "Found number of contacts in File: " << allList.count() << oendl; if ( !allList.count() ) { QMessageBox::information( this, "Import VCard", "It was impossible to import\nthe VCard.\n" "The VCard may be corrupted!" ); } bool doAsk = true; Opie::OPimContactAccess::List::Iterator it; for ( it = allList.begin(); it != allList.end(); ++it ){ odebug << "Adding Contact from: " << (*it).fullName() << oendl; if ( doAsk ){ switch( QMessageBox::information( this, tr ( "Add Contact?" ), tr( "Do you really want add contact for \n%1?" ) .arg( (*it).fullName().latin1() ), tr( "&Yes" ), tr( "&No" ), tr( "&All Yes"), 0, // Enter == button 0 2 ) ) { // Escape == button 2 case 0: odebug << "YES clicked" << oendl; m_abView->addEntry( *it ); break; case 1: odebug << "NO clicked" << oendl; break; case 2: odebug << "YesAll clicked" << oendl; doAsk = false; break; } }else m_abView->addEntry( *it ); } delete access; } void AddressbookWindow::resizeEvent( QResizeEvent *e ) { QMainWindow::resizeEvent( e ); } AddressbookWindow::~AddressbookWindow() { ToolBarDock dock; int dummy; bool bDummy; getLocation ( listTools, dock, dummy, bDummy, dummy ); m_config.setToolBarDock( dock ); m_config.save(); } void AddressbookWindow::slotUpdateToolbar() { Opie::OPimContact ce = m_abView->currentEntry(); actionMail->setEnabled( !ce.defaultEmail().isEmpty() ); } void AddressbookWindow::slotListNew() { Opie::OPimContact cnt; if( !syncing ) { editEntry( NewEntry ); } else { QMessageBox::warning(this, tr("Contacts"), tr("Can not edit data, currently syncing")); } } // void AddressbookWindow::slotListView() // { // m_abView -> init( abList->currentEntry() ); // // :SX mView->sync(); // //:SX showView(); // } void AddressbookWindow::slotListDelete() { if(!syncing) { Opie::OPimContact tmpEntry = m_abView ->currentEntry(); // get a name, do the best we can... QString strName = tmpEntry.fullName(); if ( strName.isEmpty() ) { strName = tmpEntry.company(); if ( strName.isEmpty() ) strName = "No Name"; } if ( QPEMessageBox::confirmDelete( this, tr( "Contacts" ), strName ) ) { m_abView->removeEntry( tmpEntry.uid() ); } } else { QMessageBox::warning( this, tr("Contacts"), tr("Can not edit data, currently syncing") ); } } void AddressbookWindow::slotFindOpen() { searchBar->show(); m_abView -> inSearch(); searchEdit->setFocus(); } void AddressbookWindow::slotFindClose() { searchBar->hide(); m_abView -> offSearch(); // m_abView->setFocus(); } void AddressbookWindow::slotFind() { m_abView->slotDoFind( searchEdit->text(), m_config.beCaseSensitive(), m_config.useRegExp(), false); searchEdit->clearFocus(); // m_abView->setFocus(); } void AddressbookWindow::slotViewBack() { // :SX showList(); } void AddressbookWindow::slotViewEdit() { if(!syncing) { if (actionPersonal->isOn()) { editPersonal(); } else { editEntry( EditEntry ); } } else { QMessageBox::warning( this, tr("Contacts"), tr("Can not edit data, currently syncing") ); } } void AddressbookWindow::writeMail() { Opie::OPimContact c = m_abView -> currentEntry(); QString name = c.fileAs(); QString email = c.defaultEmail(); // I prefer the OPIE-Environment variable before the // QPE-one.. QString basepath = QString::fromLatin1( getenv("OPIEDIR") ); if ( basepath.isEmpty() ) basepath = QString::fromLatin1( getenv("QPEDIR") ); // Try to access the preferred. If not possible, try to // switch to the other one.. if ( m_config.useQtMail() ){ odebug << "Accessing: " << (basepath + "/bin/qtmail") << oendl; if ( QFile::exists( basepath + "/bin/qtmail" ) ){ odebug << "QCop" << oendl; QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)"); e << name << email; return; } else m_config.setUseOpieMail( true ); } if ( m_config.useOpieMail() ){ odebug << "Accessing: " << (basepath + "/bin/opiemail") << oendl; if ( QFile::exists( basepath + "/bin/opiemail" ) ){ odebug << "QCop" << oendl; QCopEnvelope e("QPE/Application/opiemail", "writeMail(QString,QString)"); e << name << email; return; } else m_config.setUseQtMail( true ); } } static const char * beamfile = "/tmp/obex/contact.vcf"; void AddressbookWindow::slotBeam() { QString beamFilename; Opie::OPimContact c; if ( actionPersonal->isOn() ) { beamFilename = addressbookPersonalVCardName(); if ( !QFile::exists( beamFilename ) ) return; // can't beam a non-existent file Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, beamFilename ); Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); Opie::OPimContactAccess::List allList = access->allRecords(); Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first c = *it; delete access; } else { unlink( beamfile ); // delete if exists mkdir("/tmp/obex/", 0755); c = m_abView -> currentEntry(); Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, beamfile ); Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); access->add( c ); access->save(); delete access; beamFilename = beamfile; } odebug << "Beaming: " << beamFilename << oendl; Ir *ir = new Ir( this ); connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); QString description = c.fullName(); ir->send( beamFilename, description, "text/x-vCard" ); } void AddressbookWindow::beamDone( Ir *ir ) { delete ir; unlink( beamfile ); } static void parseName( const QString& name, QString *first, QString *middle, QString * last ) { int comma = name.find ( "," ); QString rest; if ( comma > 0 ) { *last = name.left( comma ); comma++; while ( comma < int(name.length()) && name[comma] == ' ' ) comma++; rest = name.mid( comma ); } else { int space = name.findRev( ' ' ); *last = name.mid( space+1 ); rest = name.left( space ); } int space = rest.find( ' ' ); if ( space <= 0 ) { *first = rest; } else { *first = rest.left( space ); *middle = rest.mid( space+1 ); } } void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) { bool needShow = FALSE; odebug << "Receiving QCop-Call with message " << msg << oendl; if (msg == "editPersonal()") { editPersonal(); } else if (msg == "editPersonalAndClose()") { editPersonal(); close(); } else if ( msg == "addContact(QString,QString)" ) { QDataStream stream(data,IO_ReadOnly); QString name, email; stream >> name >> email; Opie::OPimContact cnt; QString fn, mn, ln; parseName( name, &fn, &mn, &ln ); // odebug << " " << fn << " - " << mn " - " << ln << oendl; cnt.setFirstName( fn ); cnt.setMiddleName( mn ); cnt.setLastName( ln ); cnt.insertEmails( email ); cnt.setDefaultEmail( email ); cnt.setFileAs(); m_abView -> addEntry( cnt ); // :SXm_abView()->init( cnt ); editEntry( EditEntry ); } else if ( msg == "beamBusinessCard()" ) { QString beamFilename = addressbookPersonalVCardName(); if ( !QFile::exists( beamFilename ) ) return; // can't beam a non-existent file Ir *ir = new Ir( this ); connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); QString description = "mycard.vcf"; ir->send( beamFilename, description, "text/x-vCard" ); } else if ( msg == "show(int)" ) { raise(); QDataStream stream(data,IO_ReadOnly); int uid; stream >> uid; odebug << "Showing uid: " << uid << oendl; // Deactivate Personal View.. if ( actionPersonal->isOn() ){ actionPersonal->setOn( false ); slotPersonalView(); } // Reset category and show as card.. m_abView -> setShowByCategory( QString::null ); m_abView -> setCurrentUid( uid ); slotViewSwitched ( AbView::CardView ); needShow = true; } else if ( msg == "edit(int)" ) { QDataStream stream(data,IO_ReadOnly); int uid; stream >> uid; // Deactivate Personal View.. if ( actionPersonal->isOn() ){ actionPersonal->setOn( false ); slotPersonalView(); } // Reset category and edit.. m_abView -> setShowByCategory( QString::null ); m_abView -> setCurrentUid( uid ); slotViewEdit(); } if (needShow) QPEApplication::setKeepRunning(); } void AddressbookWindow::editEntry( EntryMode entryMode ) { Opie::OPimContact entry; if ( !abEditor ) { abEditor = new ContactEditor( entry, this, "editor" ); } if ( entryMode == EditEntry ) abEditor->setEntry( m_abView -> currentEntry() ); else if ( entryMode == NewEntry ) abEditor->setEntry( entry ); // other things may change the caption. abEditor->setCaption( tr("Edit Address") ); // fix the foxus... abEditor->setNameFocus(); if ( QPEApplication::execDialog( abEditor ) ) { setFocus(); if ( entryMode == NewEntry ) { Opie::OPimContact insertEntry = abEditor->entry(); insertEntry.assignUid(); m_abView -> addEntry( insertEntry ); m_abView -> setCurrentUid( insertEntry.uid() ); } else { Opie::OPimContact replEntry = abEditor->entry(); if ( !replEntry.isValidUid() ) replEntry.assignUid(); m_abView -> replaceEntry( replEntry ); } } // populateCategories(); } void AddressbookWindow::editPersonal() { Opie::OPimContact entry; // Switch to personal view if not selected // but take care of the menu, too if ( ! actionPersonal->isOn() ){ odebug << "*** ++++" << oendl; actionPersonal->setOn( true ); slotPersonalView(); } if ( !abEditor ) { abEditor = new ContactEditor( entry, this, "editor" ); } abEditor->setCaption(tr("Edit My Personal Details")); abEditor->setPersonalView( true ); editEntry( EditEntry ); abEditor->setPersonalView( false ); } void AddressbookWindow::slotPersonalView() { odebug << "slotPersonalView()" << oendl; if (!actionPersonal->isOn()) { // we just turned it off odebug << "slotPersonalView()-> OFF" << oendl; setCaption( tr("Contacts") ); actionNew->setEnabled(TRUE); actionTrash->setEnabled(TRUE); actionFind->setEnabled(TRUE); actionMail->setEnabled(TRUE); // slotUpdateToolbar(); m_abView->showPersonal( false ); return; } odebug << "slotPersonalView()-> ON" << oendl; // XXX need to disable some QActions. actionNew->setEnabled(FALSE); actionTrash->setEnabled(FALSE); actionFind->setEnabled(FALSE); actionMail->setEnabled(FALSE); setCaption( tr("Contacts - My Personal Details") ); m_abView->showPersonal( true ); } void AddressbookWindow::listIsEmpty( bool empty ) { if ( !empty ) { deleteButton->setEnabled( TRUE ); } } void AddressbookWindow::reload() { syncing = FALSE; m_abView->clear(); m_abView->reload(); } void AddressbookWindow::flush() { syncing = TRUE; m_abView->save(); } void AddressbookWindow::closeEvent( QCloseEvent *e ) { if(active_view == AbView::CardView){ slotViewSwitched( AbView::TableView ); e->ignore(); return; } if(syncing) { /* shouldn't we save, I hear you say? well its already been set so that an edit can not occur during a sync, and we flushed at the start of the sync, so there is no need to save Saving however itself would cause problems. */ e->accept(); return; } //################## shouldn't always save // True, but the database handles this automatically ! (se) if ( save() ) e->accept(); else e->ignore(); } /* Returns TRUE if it is OK to exit */ bool AddressbookWindow::save() { if ( !m_abView->save() ) { if ( QMessageBox::critical( 0, tr( "Out of space" ), tr("Unable to save information.\n" "Free up some space\n" "and try again.\n" "\nQuit anyway?"), QMessageBox::Yes|QMessageBox::Escape, QMessageBox::No|QMessageBox::Default ) != QMessageBox::No ) return TRUE; else return FALSE; } return TRUE; } #ifdef __DEBUG_RELEASE void AddressbookWindow::slotSave() { save(); } #endif void AddressbookWindow::slotNotFound() { odebug << "Got not found signal!" << oendl; QMessageBox::information( this, tr( "Not Found" ), "<qt>" + tr( "Unable to find a contact for this search pattern!" ) + "</qt>" ); } void AddressbookWindow::slotWrapAround() { odebug << "Got wrap signal!" << oendl; // if ( doNotifyWrapAround ) // QMessageBox::information( this, tr( "End of list" ), // tr( "End of list. Wrap around now...!" ) + "\n" ); } void AddressbookWindow::slotSetCategory( int c ) { odebug << "void AddressbookWindow::slotSetCategory( " << c << " ) from " << catMenu->count() << oendl; QString cat, book; AbView::Views view = AbView::TableView; if ( c <= 0 ) return; // Switch view if ( c < 3 ) for ( unsigned int i = 1; i < 3; i++ ){ if ( catMenu ) catMenu->setItemChecked( i, c == (int)i ); } else // Checkmark Category Menu Item Selected for ( unsigned int i = 3; i < catMenu->count(); i++ ) catMenu->setItemChecked( i, c == (int)i ); // Now switch to the selected category for ( unsigned int i = 1; i < catMenu->count(); i++ ) { if (catMenu->isItemChecked( i )) { if ( i == 1 ){ // default List view book = QString::null; view = AbView::TableView; }else if ( i == 2 ){ book = tr( "Cards" ); view = AbView::CardView; // }else if ( i == 3 ){ // book = tr( "Personal" ); // view = AbView:: PersonalView; }else if ( i == 3 ){ // default All Categories cat = QString::null; }else if ( i == (unsigned int)catMenu->count() - 1 ){ // last menu option (seperator is counted, too) will be Unfiled cat = "Unfiled"; odebug << "Unfiled selected!" << oendl; }else{ cat = m_abView->categories()[i - 4]; } } } // Switch to the selected View slotViewSwitched( view ); // Tell the view about the selected category m_abView -> setShowByCategory( cat ); if ( book.isEmpty() ) book = "List"; if ( cat.isEmpty() ) cat = "All"; setCaption( tr( "Contacts" ) + " - " + book + " - " + tr( cat ) ); } void AddressbookWindow::slotViewSwitched( int view ) { odebug << "void AddressbookWindow::slotViewSwitched( " << view << " )" << oendl; int menu = 0; // Switch to selected view switch ( view ){ case AbView::TableView: menu = 1; m_tableViewButton->setOn(true); m_cardViewButton->setOn(false); break; case AbView::CardView: menu = 2; m_tableViewButton->setOn(false); m_cardViewButton->setOn(true); break; } for ( unsigned int i = 1; i < 3; i++ ){ if ( catMenu ) catMenu->setItemChecked( i, menu == (int)i ); } // Tell the view about the selected view m_abView -> setShowToView ( (AbView::Views) view ); active_view = view; } void AddressbookWindow::slotListView() { slotViewSwitched( AbView::TableView ); } void AddressbookWindow::slotCardView() { slotViewSwitched( AbView::CardView ); } void AddressbookWindow::slotSetLetter( char c ) { m_abView->setShowByLetter( c, m_config.letterPickerSearch() ); } void AddressbookWindow::populateCategories() { catMenu->clear(); int id, rememberId; id = 1; rememberId = 0; catMenu->insertItem( Resource::loadPixmap( "addressbook/listview" ), tr( "List" ), id++ ); catMenu->insertItem( Resource::loadPixmap( "addressbook/cardview" ), tr( "Cards" ), id++ ); // catMenu->insertItem( tr( "Personal" ), id++ ); catMenu->insertSeparator(); catMenu->insertItem( tr( "All" ), id++ ); QStringList categories = m_abView->categories(); categories.append( tr( "Unfiled" ) ); for ( QStringList::Iterator it = categories.begin(); it != categories.end(); ++it ) { catMenu->insertItem( *it, id ); if ( *it == m_abView -> showCategory() ) rememberId = id; ++id; } if ( m_abView -> showCategory().isEmpty() ) { slotSetCategory( 3 ); } else { slotSetCategory( rememberId ); } } diff --git a/core/pim/today/task-opie-today.control b/core/pim/today/task-opie-today.control index 6798141..3d637cc 100644 --- a/core/pim/today/task-opie-today.control +++ b/core/pim/today/task-opie-today.control @@ -1,12 +1,12 @@ Package: task-opie-today Priority: optional Section: opie/pim Maintainer: Maximilian Reiß <harlekin@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.5$EXTRAVERSION Depends: task-opie-minimal, opie-today, opie-today-datebookplugin, opie-today-todolistplugin License: GPL Description: Task for basic Today app setup Includes datebook and todolist plugins. Files: diff --git a/core/settings/security/demo/multiauth.control b/core/settings/security/demo/multiauth.control index c7dd82a..c549035 100644 --- a/core/settings/security/demo/multiauth.control +++ b/core/settings/security/demo/multiauth.control @@ -1,16 +1,16 @@ Package: opie-multiauth Files: bin/multiauth apps/Applications/multiauth.desktop pics/security/multiauth.png Priority: optional Section: opie/settings Maintainer: Clement Seveillac <clement@nist.gov> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.0.2$EXTRAVERSION Depends: opie-security Description: multi-plugin authentication demonstrator for Opie. This demonstration application allows us to use one or several ways to lock and unlock our device. Since it really locks your PDA the way you configured it in the Security settings, you can map a button to it through the Buttons settings to lock your PDA on demand, with one simple click. You must install some opie-multiauth-* plugins, and configure them through opie-security, to really see its possibilities. diff --git a/core/tools/quicklauncher/main.cpp b/core/tools/quicklauncher/main.cpp index fbed5a1..59dd17e 100644 --- a/core/tools/quicklauncher/main.cpp +++ b/core/tools/quicklauncher/main.cpp @@ -1,290 +1,289 @@ /********************************************************************** ** Copyright (C) 2000-2003 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. ** **********************************************************************/ #define QTOPIA_INTERNAL_INITAPP #include "dropins.h" /* OPIE */ #include <opie2/odebug.h> #include <opie2/oapplication.h> /* QT */ #include <qpainter.h> #include <qstrlist.h> #include <qtimer.h> #include <qguardedptr.h> #include <qcopchannel_qws.h> #ifdef private # undef private #endif #define private public #include <qtopia/qpeapplication.h> #undef private /* STD */ #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #ifdef _OS_LINUX_ #include <sys/prctl.h> #ifndef PR_SET_NAME #define PR_SET_NAME 15 #endif #endif #include <unistd.h> using QuickPrivate::PluginLoader; static QPEApplication *app = 0; static PluginLoader *loader = 0; static ApplicationInterface *appIface = 0; static QGuardedPtr<QWidget> mainWindow; #ifdef _OS_LINUX_ static char **argv0 = 0; static int argv_lth; extern char **environ; #ifndef SPT_BUFSIZE #define SPT_BUFSIZE 2048 #endif #include <stdarg.h> void setproctitle (const char *fmt,...) { int i; char buf[SPT_BUFSIZE]; va_list ap; if (!argv0) return; va_start(ap, fmt); (void) vsnprintf(buf, SPT_BUFSIZE, fmt, ap); va_end(ap); i = strlen (buf); if (i > argv_lth - 2) { i = argv_lth - 2; buf[i] = '\0'; } memset(argv0[0], '\0', argv_lth); /* clear the memory area */ (void) strcpy (argv0[0], buf); argv0[1] = NULL; } #endif class QuickLauncher : public QObject { Q_OBJECT public: QuickLauncher() : QObject() { QCString ch("QPE/QuickLauncher-"); ch += QString::number(getpid()); qlChannel = new QCopChannel( ch, this); connect( qlChannel, SIGNAL(received(const QCString&,const QByteArray&)), this, SLOT(message(const QCString&,const QByteArray&)) ); } static void exec( int /*argc*/, char **argv ) { QString appName = argv[0]; int sep = appName.findRev( '/' ); if ( sep > 0 ) appName = appName.mid( sep+1 ); appIface = 0; - if ( loader->queryInterface(appName, IID_QtopiaApplication, (QUnknownInterface**)&appIface) != QS_OK ) { - owarn << "Plugin does not support QuickLauncher interface" << oendl; + if ( ! ( loader->queryInterface(appName, IID_QtopiaApplication, (QUnknownInterface**)&appIface) == QS_OK ) ) { exit(-1); } mainWindow = appIface->createMainWindow( appName ); if ( mainWindow ) { if ( mainWindow->metaObject()->slotNames().contains("setDocument(const QString&)") ) { app->showMainDocumentWidget( mainWindow ); } else { app->showMainWidget( mainWindow ); } } else { owarn << "Could not create application main window" << oendl; exit(-1); } } private slots: void message(const QCString &msg, const QByteArray & data) { QStrList argList; if ( msg == "execute(QStrList)" ) { delete qlChannel; QDataStream stream( data, IO_ReadOnly ); QStrList argList; stream >> argList; odebug << "QuickLauncher execute: " << argList.at(0) << oendl; doQuickLaunch( argList ); delete this; } else if ( msg == "execute(QString)" ) { delete qlChannel; QDataStream stream( data, IO_ReadOnly ); QString arg; stream >> arg; odebug << "QuickLauncher execute: " << arg << oendl; QStrList argList; argList.append( arg.utf8() ); doQuickLaunch( argList ); delete this; } } private: void doQuickLaunch( QStrList &argList ) { static int myargc = argList.count(); static char **myargv = new char *[myargc + 1]; for ( int j = 0; j < myargc; j++ ) { myargv[j] = new char [strlen(argList.at(j))+1]; strcpy( myargv[j], argList.at(j) ); } myargv[myargc] = NULL; #ifdef _OS_LINUX_ // Change name of process setproctitle(myargv[0]); prctl( PR_SET_NAME, (unsigned long)myargv[0], 0, 0, 0 ); #endif connect(app, SIGNAL(lastWindowClosed()), app, SLOT(hideOrQuit())); app->exit_loop(); app->initApp( myargc, myargv ); exec( myargc, myargv ); } private: QCopChannel *qlChannel; }; int main( int argc, char** argv ) { app = new Opie::Core::OApplication( argc, argv ); loader = new PluginLoader( "application" ); unsetenv( "LD_BIND_NOW" ); QCString arg0 = argv[0]; int sep = arg0.findRev( '/' ); if ( sep > 0 ) arg0 = arg0.mid( sep+1 ); if ( arg0 != "quicklauncher" ) { odebug << "QuickLauncher invoked as: " << arg0.data() << oendl; QuickLauncher::exec( argc, argv ); } else { #ifdef _OS_LINUX_ // Setup to change proc title int i; char **envp = environ; /* Move the environment so we can reuse the memory. * (Code borrowed from sendmail.) */ for (i = 0; envp[i] != NULL; i++) continue; environ = (char **) malloc(sizeof(char *) * (i + 1)); if (environ == NULL) return -1; for (i = 0; envp[i] != NULL; i++) if ((environ[i] = strdup(envp[i])) == NULL) return -1; environ[i] = NULL; argv0 = argv; if (i > 0) argv_lth = envp[i-1] + strlen(envp[i-1]) - argv0[0]; else argv_lth = argv0[argc-1] + strlen(argv0[argc-1]) - argv0[0]; #endif (void)new QuickLauncher(); odebug << "QuickLauncher running" << oendl; // Pre-load default fonts QFontMetrics fm( QApplication::font() ); fm.ascent(); // causes font load. QFont f( QApplication::font() ); f.setWeight( QFont::Bold ); QFontMetrics fmb( f ); fmb.ascent(); // causes font load. // Each of the following force internal structures/internal // initialization to be performed. This may mean allocating // memory that is not needed by all applications. Resource::loadIconSet("new"); // do internal init /* make sure libopie gets lined in */ { Opie::Ui::OWait item; } // Create a widget to force initialization of title bar images, etc. QObject::disconnect(app, SIGNAL(lastWindowClosed()), app, SLOT(hideOrQuit())); QWidget *w = new QWidget(0,0,Qt::WDestructiveClose|Qt::WStyle_ContextHelp|Qt::WStyle_Tool); w->setGeometry( -100, -100, 10, 10 ); w->show(); QTimer::singleShot( 0, w, SLOT(close()) ); app->enter_loop(); } int rv = app->exec(); if ( mainWindow ) delete (QWidget*)mainWindow; delete app; if ( appIface ) loader->releaseInterface( appIface ); delete loader; // Neither QLibrary nor my Dropin is a QObject and they don't depend // on a qApp so we destroy QWidget::destroyMapper() without // crashing the app // // The problem is there are some 'static' resources not freed // in the apps and on destructing these objects are not available // anymore. In future fix up the apps but for now // we just skip deletion and hope things go well -zecke // delete app; // hack instead -zecke // delete app->pidChannel; // app->pidChannel = 0; return rv; } #include "main.moc" diff --git a/dependencies.in b/dependencies.in index ce1ac96..357d994 100644 --- a/dependencies.in +++ b/dependencies.in @@ -1,84 +1,96 @@ config LIBETPAN_DEP boolean "Have Libetpan >= 0.33pre" default "n" config LIBETPAN_LIB_DIR string "LIBETPAN library dir" depends LIBETPAN_DEP config LIBETPAN_INC_DIR string "LIBETPAN include dir" depends LIBETPAN_DEP config LIBPCAP_DEP boolean "Have libpcap >= 0.7.2" default "n" config LIBPCAP_LIB_DIR string "LIBPCAP library dir" depends LIBPCAP_DEP config LIBPCAP_INC_DIR string "LIBPCAP include dir" depends LIBPCAP_DEP config LIBSQLITE_DEP boolean "Have sqlite >= 3.0.7" default n config LIBSQLITE_LIB_DIR string "LIBSQLITE library dir" depends LIBSQLITE_DEP config LIBSQLITE_INC_DIR string "LIBSQLITE include dir" depends LIBSQLITE_DEP config LIBXINE_DEP boolean "Have libxine >= 1.0rc6" default "n" config LIBXINE_LIB_DIR string "LIBXINE library dir" depends LIBXINE_DEP config LIBXINE_INC_DIR string "LIBXINE include dir" depends LIBXINE_DEP config LIBIPK_DEP boolean "Have libipkg >= 0.99.120" default "n" config LIBIPK_LIB_DIR string "libipkg library dir" depends LIBIPK_DEP config LIBIPK_INC_DIR string "libipkg include dir" depends LIBIPK_DEP config LIBSDL_DEP boolean "Have libsdl12 and sdlimage" default "n" config LIBSDL_LIB_DIR string "LIBSDL library dir" depends LIBSDL_DEP config LIBSDL_INC_DIR string "LIBSDL include dir" depends LIBSDL_DEP config LIBSWORD_DEP boolean "Have libsword > = 1.5.0" default "n" config LIBSWORD_LIB_DIR string "libsword library dir" depends LIBSWORD_DEP config LIBSWORD_INC_DIR string "libsword include dir" depends LIBSWORD_DEP + config LIBBLUEZ_DEP + boolean "Have bluez library" + default "n" + + config LIBBLUEZ_LIB_DIR + string "libbluez library dir" + depends LIBBLUEZ_DEP + + config LIBBLUEZ_INC_DIR + string "libbluez include dir" + depends LIBBLUEZ_DEP + diff --git a/etc/opie-keytabs.control b/etc/opie-keytabs.control index e3d83de..9563b3a 100644 --- a/etc/opie-keytabs.control +++ b/etc/opie-keytabs.control @@ -1,9 +1,9 @@ Package: opie-keytabs Files: etc/keytabs/* Priority: optional Section: opie/applications Maintainer: Opie Team <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.6$EXTRAVERSION License: GPL Description: Opie keytabs for terminal applications diff --git a/libopie2/libopie2.control b/libopie2/libopie2.control index fcd44b4..e72c535 100644 --- a/libopie2/libopie2.control +++ b/libopie2/libopie2.control @@ -1,10 +1,10 @@ Package: libopie2 Files: Priority: optional Section: opie/system Maintainer: Opie Team <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.8.2$EXTRAVERSION Depends: libopiecore2 ($QPE_VERSION), libopiedb2 ($QPE_VERSION), libopiemm2 ($QPE_VERSION), libopienet2 ($QPE_VERSION), libopiepim2 ($QPE_VERSION), libopieui2 ($QPE_VERSION) Provides: libopie2 Description: Opie library 2.0 diff --git a/libopie2/opiecore/libopiecore2.control b/libopie2/opiecore/libopiecore2.control index c7fc141..1d27c1c 100644 --- a/libopie2/opiecore/libopiecore2.control +++ b/libopie2/opiecore/libopiecore2.control @@ -1,10 +1,10 @@ Package: libopiecore2 Files: lib/libopiecore2.so.* Priority: optional Section: opie/system Maintainer: Opie Team <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.8.5$EXTRAVERSION Depends: libqpe1 Provides: libopiecore2 Description: Opie library 2.0 CORE diff --git a/libopie2/opiedb/libopiedb2.control b/libopie2/opiedb/libopiedb2.control index 7e9354a..5744b24 100644 --- a/libopie2/opiedb/libopiedb2.control +++ b/libopie2/opiedb/libopiedb2.control @@ -1,10 +1,10 @@ Package: libopiedb2 Files: lib/libopiedb2.so* Priority: optional Section: opie/system Maintainer: Opie Team <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.8.2$EXTRAVERSION Depends: libqpe1, libopiecore2 ($QPE_VERSION), libsqlite3-0 | sqlite3-bin Provides: libopiedb2 Description: Opie library 2.1 DB diff --git a/libopie2/opiemm/libopiemm2.control b/libopie2/opiemm/libopiemm2.control index 0dd2df2..38d7ddc 100644 --- a/libopie2/opiemm/libopiemm2.control +++ b/libopie2/opiemm/libopiemm2.control @@ -1,10 +1,10 @@ Package: libopiemm2 Files: lib/libopiemm2.so.* Priority: optional Section: opie/system Maintainer: Opie Team <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.8.2$EXTRAVERSION Depends: libqpe1, libopiecore2 (1.8.2) Provides: libopiemm2 Description: Opie library 2.0 MM diff --git a/libopie2/opienet/libopienet2.control b/libopie2/opienet/libopienet2.control index 69876b5..da53e2b 100644 --- a/libopie2/opienet/libopienet2.control +++ b/libopie2/opienet/libopienet2.control @@ -1,10 +1,10 @@ Package: libopienet2 Files: lib/libopienet2.so.* etc/manufacturers Priority: optional Section: opie/libs Maintainer: Opie Team <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.8.4$EXTRAVERSION Depends: libopiecore2, libpcap0.8 (>=0.7.2) Provides: libopienet2 Description: Opie library 2.0 NET diff --git a/libopie2/opiepim/libopiepim2.control b/libopie2/opiepim/libopiepim2.control index 28b7505..457e20a 100644 --- a/libopie2/opiepim/libopiepim2.control +++ b/libopie2/opiepim/libopiepim2.control @@ -1,10 +1,10 @@ Package: libopiepim2 Files: lib/libopiepim2.so.* Priority: optional Section: opie/system Maintainer: Opie Team <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.8.3$EXTRAVERSION Depends: libqpe1, libopiecore2 (>=1.8.0) Provides: libopiepim2 Description: Opie library 2.0 PIM diff --git a/libopie2/opiesecurity/libopiesecurity2.control b/libopie2/opiesecurity/libopiesecurity2.control index 1eabb93..0a29a47 100644 --- a/libopie2/opiesecurity/libopiesecurity2.control +++ b/libopie2/opiesecurity/libopiesecurity2.control @@ -1,11 +1,11 @@ Package: libopiesecurity2 Files: lib/libopiesecurity2.so.* Priority: optional Section: opie/system Maintainer: Opie Team <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.8.5$EXTRAVERSION Depends: libqpe1, libopiecore2, libopieui2 Provides: libopiesecurity2 Recommends: opie-multiauth-pinplugin | opie-multiauth-noticeplugin | opie-multiauth-dummyplugin | opie-multiauth-bluepingplugin, opie-security Description: Opie library 2.0 security diff --git a/libopie2/opieui/oresource.cpp b/libopie2/opieui/oresource.cpp index 9559210..c94421a 100644 --- a/libopie2/opieui/oresource.cpp +++ b/libopie2/opieui/oresource.cpp @@ -1,58 +1,59 @@ /* This file is part of the Opie Project Copyright (C) 2003 Patrick S. Vogt <tille@handhelds.org> =. .=l. .>+-= _;:, .> :=|. This program is free software; you can .> <`_, > . <= redistribute it and/or modify it under :`=1 )Y*s>-.-- : the terms of the GNU Library General Public .="- .-=="i, .._ License as published by the Free Software - . .-<_> .<> Foundation; either version 2 of the License, ._= =} : or (at your option) any later version. .%`+i> _;_. .i_,=:_. -<s. This program is distributed in the hope that + . -:. = it will be useful, but WITHOUT ANY WARRANTY; : .. .:, . . . without even the implied warranty of =_ + =;=|` MERCHANTABILITY or FITNESS FOR A _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU ..}^=.= = ; Library General Public License for more ++= -. .` .: details. : = ...= . :.=- -. .:....=;==+<; You should have received a copy of the GNU -_. . . )=. = Library General Public License along with -- :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <opie2/oapplication.h> #include <opie2/odebug.h> #include "oresource.h" #ifdef QWS namespace Resource { QPixmap loadPixmap( const QString& pix ) { QString filename; filename.sprintf( "%s/%s.png", (const char*) oApp->qpeDir(), (const char*) pix ); + odebug << "Load pixmap " << filename << oendl; QPixmap pixmap( filename ); if ( pixmap.isNull() ) { odebug << "libopie2 resource: can't find pixmap " << filename << oendl; } return pixmap; }; }; #endif diff --git a/libqtaux/libqtaux.control b/libqtaux/libqtaux.control index d801a98..996962f 100644 --- a/libqtaux/libqtaux.control +++ b/libqtaux/libqtaux.control @@ -1,10 +1,10 @@ Package: libqtaux2 Files: lib/libqtaux2.so.* Priority: optional Section: opie/system Maintainer: Opie Team <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 2.3.7$EXTRAVERSION Depends: libqte2 Provides: libqtaux Description: Qt/Embedded Auxilliary Stuff diff --git a/noncore/applets/zkbapplet/zkbapplet.control b/noncore/applets/zkbapplet/zkbapplet.control index 08b540f..4e03c26 100644 --- a/noncore/applets/zkbapplet/zkbapplet.control +++ b/noncore/applets/zkbapplet/zkbapplet.control @@ -1,10 +1,10 @@ Package: zkbapplet Files: plugins/applets/libzkbapplet.so* pics/zkb-disabled.png share/zkb/*.xml bin/keyz-cfg apps/Settings/keyz-cfg.desktop pics/keyz-cfg.png share/zkb/zkb.xml.sample Priority: optional Section: opie/applets Maintainer: Rajko Albrecht <alwin@handhelds.org> Architecture: arm Depends: task-opie-minimal Description: ZKB Applet and configuration program Obsoletes: keyz-cfg -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.6.0$EXTRAVERSION diff --git a/noncore/apps/dagger/opie-dagger.control b/noncore/apps/dagger/opie-dagger.control index cfb45be..4ded1f2 100644 --- a/noncore/apps/dagger/opie-dagger.control +++ b/noncore/apps/dagger/opie-dagger.control @@ -1,9 +1,9 @@ Package: opie-dagger Files: plugins/application/libdagger.so* bin/dagger pics/dagger apps/Applications/dagger.desktop Priority: optional Section: opie/applications Depends: task-opie-minimal, libopiecore2, libopieui2 Architecture: arm Maintainer: Dan Williams (drw@handhelds.org) Description: A Bible study program utilizing the Sword library. -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.9.1$EXTRAVERSION diff --git a/noncore/games/bounce/opie-bounce.control b/noncore/games/bounce/opie-bounce.control index 0513958..54c14b4 100644 --- a/noncore/games/bounce/opie-bounce.control +++ b/noncore/games/bounce/opie-bounce.control @@ -1,11 +1,11 @@ Package: opie-bounce Files: plugins/application/libbounce.so* bin/bounce apps/Games/bounce.desktop pics/bounce/*.png -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.6$EXTRAVERSION Depends: task-opie-minimal, libopiecore2 Priority: optional Section: opie/games Maintainer: Martin Imobersteg <imm@gmx.ch> Architecture: arm License: GPL Description: bounce A JezzGame like game for Qtopia. diff --git a/noncore/games/buzzword/opie-buzzword.control b/noncore/games/buzzword/opie-buzzword.control index f76a2c2..586b566 100644 --- a/noncore/games/buzzword/opie-buzzword.control +++ b/noncore/games/buzzword/opie-buzzword.control @@ -1,11 +1,11 @@ Package: opie-buzzword Files: plugins/application/libbuzzword.so* bin/buzzword apps/Games/buzzword.desktop pics/buzzword/buzzword.png share/buzzword/buzzwords -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.1$EXTRAVERSION Depends: task-opie-minimal,libopiecore2 Priority: optional Section: opie/games Maintainer: Martin Imobersteg <imm@gmx.ch> Architecture: arm License: GPL Description: BuzzWord A BuzzWord Bingo for the Opie environment. diff --git a/noncore/games/kbill/opie-kbill.control b/noncore/games/kbill/opie-kbill.control index cf12bca..665fa32 100644 --- a/noncore/games/kbill/opie-kbill.control +++ b/noncore/games/kbill/opie-kbill.control @@ -1,13 +1,13 @@ Package: opie-kbill Files: bin/kbill apps/Games/kbill.desktop pics/kbill/* Priority: optional Section: opie/games Maintainer: Mark Westcott <mark@houseoffish.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.8$EXTRAVERSION Depends: task-opie-minimal License: GPL Description: The famous hit Bill game Hit Bill as hard as you can before he infects your network with a wannabe OS. diff --git a/noncore/games/kcheckers/opie-kcheckers.control b/noncore/games/kcheckers/opie-kcheckers.control index e7c20d3..e64acca 100644 --- a/noncore/games/kcheckers/opie-kcheckers.control +++ b/noncore/games/kcheckers/opie-kcheckers.control @@ -1,10 +1,10 @@ Package: opie-kcheckers Files: plugins/application/libkcheckers.so* bin/kcheckers apps/Games/kcheckers.desktop pics/kcheckers Priority: optional Section: opie/games Maintainer: leseb <prudhomme@laposte.net> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.3$EXTRAVERSION Depends: task-opie-minimal, libopiecore2 Description: The game of Checkers A game for the Opie environment. diff --git a/noncore/games/kpacman/opie-kpacman.control b/noncore/games/kpacman/opie-kpacman.control index 97120aa..2717f44 100644 --- a/noncore/games/kpacman/opie-kpacman.control +++ b/noncore/games/kpacman/opie-kpacman.control @@ -1,11 +1,11 @@ Package: opie-kpacman Files: plugins/applications/libkpacman.so* bin/kpacman apps/Games/kpacman.desktop pics/kpacman/kpacman.png share/kpacman -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.3.1$EXTRAVERSION Depends: task-opie-minimal Priority: optional Section: opie/games Maintainer: Catalin Climov <catalin@climov.com> Architecture: arm License: GPL Description: Kpacman A Pacman clone for Qtopia. diff --git a/noncore/multimedia/camera/opie-camera.control b/noncore/multimedia/camera/opie-camera.control index 5171050..091de98 100644 --- a/noncore/multimedia/camera/opie-camera.control +++ b/noncore/multimedia/camera/opie-camera.control @@ -1,10 +1,10 @@ Package: opie-camera Files: lib/libcamera.* bin/camera bin/capture pics/camera apps/Applications/camera.desktop Priority: optional Section: opie/multimedia Maintainer: Michael 'Mickey' Lauer <mickeyl@Vanille.de> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.0.1$EXTRAVERSION Depends: libqpe1, libopiecore2, libopieui2 Description: A Camera Application A Camera Application to use with the Sharp CE-AG06. diff --git a/noncore/multimedia/opieplayer2/opie-mediaplayer2-codecs.control b/noncore/multimedia/opieplayer2/opie-mediaplayer2-codecs.control index f4cbc41..9c14ab4 100644 --- a/noncore/multimedia/opieplayer2/opie-mediaplayer2-codecs.control +++ b/noncore/multimedia/opieplayer2/opie-mediaplayer2-codecs.control @@ -1,10 +1,10 @@ Package: opie-mediaplayer2-codecs Files: root/usr/lib/libao.so* root/usr/lib/libogg* root/usr/lib/libvorbisidec.so* root/usr/lib/libxine.so* root/usr/lib/xine/* Section: ;ibs Essential: no Priority: optional -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.7$EXTRAVERSION Architecture: arm Maintainer: Maximilian Reiss <harlekin@handhelds.org> Depends: libc6 (>= 2.1), opie-mediaplayer2 Description: Codecs for opieplayer 2 diff --git a/noncore/multimedia/powerchord/opie-powerchord.control b/noncore/multimedia/powerchord/opie-powerchord.control index 490e8a2..5216385 100644 --- a/noncore/multimedia/powerchord/opie-powerchord.control +++ b/noncore/multimedia/powerchord/opie-powerchord.control @@ -1,11 +1,11 @@ Package: opie-powercord Files: plugins/applications/libpowerchord.so* bin/powerchord apps/Applications/powerchord.desktop pics/powerchord share/powerchord Priority: optional Section: opie/multimedia Maintainer: Camilo Mesias <camilo@mesias.co.uk>, ljp <lpotter@trolltech.com> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.0.8$EXTRAVERSION Depends: task-opie-minimal Description: Guitar Chord generator application Allows naming of chords using base note and key. Fretboard diagrams are produced illustrating ways to play the chord. diff --git a/noncore/net/mail/libetpanstuff/libetpan.control b/noncore/net/mail/libetpanstuff/libetpan.control index b664157..d90124d 100644 --- a/noncore/net/mail/libetpanstuff/libetpan.control +++ b/noncore/net/mail/libetpanstuff/libetpan.control @@ -1,10 +1,10 @@ Package: libetpan Files: usr/lib/libetpan* Priority: optional Section: system Maintainer: Rajko Albrecht <alwin@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.33$EXTRAVERSION Depends: libssl0.9.7 Description: libetpan mail/news library - A version of libetpan patched for Opies mailing app License: LGPL diff --git a/noncore/net/mail/libmailwrapper/libmailwrapper.control b/noncore/net/mail/libmailwrapper/libmailwrapper.control index 3491d67..1226c10 100644 --- a/noncore/net/mail/libmailwrapper/libmailwrapper.control +++ b/noncore/net/mail/libmailwrapper/libmailwrapper.control @@ -1,10 +1,10 @@ Package: libmailwrapper Files: lib/libmailwrapper.so* Priority: optional Section: libs Maintainer: Rajko Albrecht <alwin@handhelds.org>, Juergen Graf <jgf@handhelds.org>, Maximilian Reiß <harlekin@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.6$EXTRAVERSION Depends: task-opie-minimal, libopiecore2, libopieui2, libetpan (>= 0.33pre) Description: wrapper lib needed by Opie's mailer License: LGPL diff --git a/noncore/net/mail/taskbarapplet/opie-mailapplet.control b/noncore/net/mail/taskbarapplet/opie-mailapplet.control index c838e0b..fc7b337 100644 --- a/noncore/net/mail/taskbarapplet/opie-mailapplet.control +++ b/noncore/net/mail/taskbarapplet/opie-mailapplet.control @@ -1,10 +1,10 @@ Package: opie-mailapplet Files: plugins/applets/libmailapplet.so* Priority: optional Section: opie/applets Maintainer: Rajko Albrecht <alwin@handhelds.org>, Juergen Graf <jgf@handhelds.org>, Maximilian Reiß <harlekin@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.5$EXTRAVERSION Depends: task-opie-minimal, libopiecore2, opie-mail Description: A Biff-like mailchecker License: LGPL diff --git a/noncore/net/opierdesktop/opie-rdesktop.control b/noncore/net/opierdesktop/opie-rdesktop.control index 2a9d415..754e572 100644 --- a/noncore/net/opierdesktop/opie-rdesktop.control +++ b/noncore/net/opierdesktop/opie-rdesktop.control @@ -1,9 +1,9 @@ Package: opie-rdesktop Files: bin/ordesktop pics/opierdesktop apps/Applications/ordesktop.desktop Priority: optional Section: opie/applications Maintainer: Michael 'Mickey' Lauer <mickeyl@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.2.0$EXTRAVERSION Depends: task-opie-minimal Description: Remote Desktop Protocol (RDP) Client diff --git a/noncore/net/opietooth/blue-pin/opie-bluepin.control b/noncore/net/opietooth/blue-pin/opie-bluepin.control index e9aa683..3d94691 100644 --- a/noncore/net/opietooth/blue-pin/opie-bluepin.control +++ b/noncore/net/opietooth/blue-pin/opie-bluepin.control @@ -1,10 +1,10 @@ Package: opie-bluepin Files: plugins/application/libbluepin.so* bin/bluepin Priority: optional Section: opie/applications Maintainer: Holger Freyther <zecke@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.3.4$EXTRAVERSION Depends: task-opie-minimal License: GPL Description: Bluetooth pin application diff --git a/noncore/net/opietooth/manager/opie-bluetoothmanager.control b/noncore/net/opietooth/manager/opie-bluetoothmanager.control index 89ab698..5a4d01d 100644 --- a/noncore/net/opietooth/manager/opie-bluetoothmanager.control +++ b/noncore/net/opietooth/manager/opie-bluetoothmanager.control @@ -1,10 +1,10 @@ Package: opie-bluetoothmanager Files: plugins/application/libbluetooth-manager.so* bin/bluetooth-manager apps/Settings/bluetooth-manager.desktop pics/opietooth/* Priority: optional Section: opie/settings Maintainer: Maximilian Reiß <max.reiss@gmx.de> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.5.4$EXTRAVERSION Depends: task-opie-minimal, libopietooth1, opie-bluepin License: GPL Description: Bluetooth Manager application diff --git a/noncore/net/wellenreiter/opie-wellenreiter.control b/noncore/net/wellenreiter/opie-wellenreiter.control index 7dc9c22..2c36d17 100644 --- a/noncore/net/wellenreiter/opie-wellenreiter.control +++ b/noncore/net/wellenreiter/opie-wellenreiter.control @@ -1,10 +1,10 @@ Package: opie-wellenreiter Files: bin/wellenreiter pics/wellenreiter apps/Applications/wellenreiter.desktop Priority: optional Section: opie/applications Maintainer: Michael 'Mickey' Lauer <mickeyl@handhelds.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.0.3$EXTRAVERSION Depends: libqpe1, libpcap0.8 (>=0.7.2), libopiecore2, libopienet2, libopieui2 Description: A WaveLAN Network Monitor A WaveLAN Network Monitor/Sniffer for the Opie Environment. diff --git a/noncore/securityplugins/blueping/bluepingplugin.control b/noncore/securityplugins/blueping/bluepingplugin.control index 62562f7..4b3e96a 100644 --- a/noncore/securityplugins/blueping/bluepingplugin.control +++ b/noncore/securityplugins/blueping/bluepingplugin.control @@ -1,11 +1,11 @@ Package: opie-multiauth-bluepingplugin Files: plugins/security/libmultiauthbluepingplugin.so* pics/security/bluepingplugin.png root/etc/suspend-scripts/S50bluetooth Priority: optional Section: opie/settings Maintainer: Clement Seveillac <clement@nist.gov> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.0.2$EXTRAVERSION Depends: libopiecore2, opie-security, bluez-utils (<= 2.3rel-hh5) Description: Blueping plugin for opie-security authentication. This is a bluetooth-based authentication plugin (you need to have another Bluetooth device around to use it). diff --git a/noncore/securityplugins/dummy/dummyplugin.control b/noncore/securityplugins/dummy/dummyplugin.control index b4cc5e2..bfd4d8d 100644 --- a/noncore/securityplugins/dummy/dummyplugin.control +++ b/noncore/securityplugins/dummy/dummyplugin.control @@ -1,11 +1,11 @@ Package: opie-multiauth-dummyplugin Files: plugins/security/libmultiauthdummyplugin.so* pics/security/dummyplugin.png Priority: optional Section: opie/settings Maintainer: Clement Seveillac <clement@nist.gov> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.0.2$EXTRAVERSION Depends: libopiecore2, opie-security Description: Dummy plugin for opie-security authentication. This is a very simple authentication plugin (you just have to press a button basically), for demonstration purpose. diff --git a/noncore/securityplugins/notice/notice.control b/noncore/securityplugins/notice/notice.control index 091ce74..29a8fb7 100644 --- a/noncore/securityplugins/notice/notice.control +++ b/noncore/securityplugins/notice/notice.control @@ -1,11 +1,11 @@ Package: opie-multiauth-noticeplugin Files: plugins/security/libmultiauthnoticeplugin.so* pics/security/noticeplugin.png pics/security/noticeplugin_small.png Priority: optional Section: opie/settings Maintainer: Clement Seveillac <clement@nist.gov> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.0.1$EXTRAVERSION Depends: libopiecore2, opie-security Description: Notice plugin for opie-security authentication. It allows you to display e.g. a notice from your legal departement. diff --git a/noncore/securityplugins/pin/pin.control b/noncore/securityplugins/pin/pin.control index 51c3f08..9235f04 100644 --- a/noncore/securityplugins/pin/pin.control +++ b/noncore/securityplugins/pin/pin.control @@ -1,11 +1,11 @@ Package: opie-multiauth-pinplugin Files: plugins/security/libmultiauthpinplugin.so* pics/security/pinplugin.png Priority: optional Section: opie/settings Maintainer: Clement Seveillac <clement@nist.gov> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.0.2$EXTRAVERSION Depends: libopiecore2, opie-security Description: PIN plugin for opie-security authentication. Simple PIN-based authentication plugin (replicate the functionality Qtopia has, or Opie used to have, without plugins). diff --git a/noncore/tools/opie-sh/opie-sh.control b/noncore/tools/opie-sh/opie-sh.control index 496a036..6627335 100644 --- a/noncore/tools/opie-sh/opie-sh.control +++ b/noncore/tools/opie-sh/opie-sh.control @@ -1,11 +1,11 @@ Package: opie-sh Files: bin/opie-sh apps/Opie-SH/opie-sh.desktop pics/opie-sh/*.png help/opie-sh/*.html Priority: optional Section: opie/sh Maintainer: Thomas Stephens <spiralman@softhome.net> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.5$EXTRAVERSION Depends: task-opie-minimal License: GPL Description: A QDialog shell frontend A program to let you use various dialogs from the console (or a shell script) diff --git a/noncore/tools/opie-sh/scripts/opie-sh-wavelanchooser.control b/noncore/tools/opie-sh/scripts/opie-sh-wavelanchooser.control index 0d6b235..9450eee 100644 --- a/noncore/tools/opie-sh/scripts/opie-sh-wavelanchooser.control +++ b/noncore/tools/opie-sh/scripts/opie-sh-wavelanchooser.control @@ -1,11 +1,11 @@ Package: opie-sh-wavelanchooser Files: bin/opie-sh-wavelanchooser.sh apps/Opie-SH/opie-sh-wavelanchooser.desktop pics/opie-sh-scripts/qtwavelan.png Installed-Size: 0 -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.1$EXTRAVERSION Depends: task-opie-minimal (1.5.0+), opie-sh Priority: optional Section: opie/sh Maintainer: gonz <gonz@directbox.com> Architecture: all License: GPL Description: Frontend to choose wavelan config diff --git a/noncore/unsupported/gsmtool/opie-gsmtool.control b/noncore/unsupported/gsmtool/opie-gsmtool.control index d987b11..6c5e4a3 100644 --- a/noncore/unsupported/gsmtool/opie-gsmtool.control +++ b/noncore/unsupported/gsmtool/opie-gsmtool.control @@ -1,11 +1,11 @@ Package: opie-gsmtool Files: plugins/application/libgsmtool.so* bin/gsmtool apps/Applications/gsmtool.desktop pics/gsmtool Priority: optional Section: opie/applications Maintainer: David Woodhouse <dwmw2@infradead.org> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 1.0.0$EXTRAVERSION Depends: task-opie-minimal, gsmlib License: Public Domain Description: GSMTool program An GSM phone utility program for the Opie environment. diff --git a/noncore/unsupported/ubrowser/opie-ubrowser.control b/noncore/unsupported/ubrowser/opie-ubrowser.control index bfa6c30..349a7df 100644 --- a/noncore/unsupported/ubrowser/opie-ubrowser.control +++ b/noncore/unsupported/ubrowser/opie-ubrowser.control @@ -1,10 +1,10 @@ Package: opie-ubrowser Files: bin/ubrowser apps/Applications/ubrowser.desktop pics/ubrowser/*.png plugins/application/libubrowser.so* Priority: optional Section: opie/applications Maintainer: Thomas Stephens <spiralman@softhome.net> Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION +Version: 0.1$EXTRAVERSION Depends: task-opie-minimal License: GPL Description: A very small web browser diff --git a/scripts/GeneratePackageMake b/scripts/GeneratePackageMake index 099d3e8..9d692a9 100755 --- a/scripts/GeneratePackageMake +++ b/scripts/GeneratePackageMake @@ -1,228 +1,228 @@ # generate file containg control name / package name / files find . -name *.control | grep -v -- "-mt.control" | while read i do i=${i/.\//} CDIR=${i%/*} BNAME=${i##*/} BNAME=${BNAME/.control/} echo "cdir: ${CDIR}" echo "bname: ${BNAME}" grep -e "Package:" -e "Files:" ./${i} done > /tmp/ALL # # makefile header # cat << MAKEFILEHEADER # # generate -mt.control file from regular control # arg 1 : path to control file to convert # define GenerateMTControl @echo "Generating -mt control file for \$(basename \$<)" @\$(OPIEDIR)/scripts/tothreaded \$< \$(OPIEDIR)/AllThreadedPackages endef # # package one control file # arg 1 : directory from OPIEROOT where control file resides # arg 2 : control file basename without -mt (no .control) # arg 3 : control file basename with -mt if needed # arg 4 : package name (value specified by Package: ...) # define DoPackage -@echo \"Building ipk of \$(4)\" -@( \$(ForSubst) ) > \$(TOPDIR)/scripts/subst -@( \$(ForFileSubst) ) > \$(TOPDIR)/scripts/Filesubst -@( cd \$(OPIEDIR); \\ +echo \"Building ipk of \$(4)\" +( \$(ForSubst) ) > \$(TOPDIR)/scripts/subst +( \$(ForFileSubst) ) > \$(TOPDIR)/scripts/Filesubst +( cd \$(OPIEDIR); \\ \$(OPIEDIR)/scripts/mkipkg \\ --subst=\$(OPIEDIR)/scripts/subst \\ --filesubst=\$(OPIEDIR)/scripts/filesubst \\ --control=\$(OPIEDIR)/\$(1)/\$(3).control \\ --prerm=\$(OPIEDIR)/\$(1)/\$(2).prerm \\ --preinst=\$(OPIEDIR)/\$(1)/\$(2).preinst \\ --postrm=\$(OPIEDIR)/\$(1)/\$(2).postrm \\ --postinst=\$(OPIEDIR)/\$(1)/\$(2).postinst \\ --strip=\$(STRIP) \$(OPIEDIR); \\ rm -f \$(OPIEDIR)/Packages/\$(4)_*.ipk; \\ mv *.ipk \$(OPIEDIR)/Packages; \\ touch \$(OPIEDIR)/Packages/\$(4) \\ ) || true endef # # prepared for generating the substfile for every build # define ForSubst echo 's,\\\$\$QPE_VERSION,\$(QPE_VERSION),g'; \\ echo 's,\\\$\$OPIE_VERSION,\$(OPIE_VERSION),g'; \\ echo 's,\\\$\$QTE_VERSION,\$(QTE_VERSION),g'; \\ echo 's,\\\$\$QTE_REVISION,\$(QTE_REVISION),g'; \\ echo 's,\\\$\$SUB_VERSION,\$(SUB_VERSION),g'; \\ echo 's,\\\$\$EXTRAVERSION,\$(EXTRAVERSION),g'; \\ echo 's,\\\$\$QTE_BASEVERSION,\$(QTE_BASEVERSION),g' endef define ForFileSubst echo 's,\\\$\$OPIEDIR/root/,/,g'; \\ echo 's,\$(OPIEDIR)/root/,/,g'; \\ echo 's,\\\$\$OPIEDIR,\$(prefix),g'; \\ echo 's,\$(OPIEDIR),\$(prefix),g'; \\ echo 's,\\\$\$QTDIR,\$(prefix),g'; \\ echo 's,\$(QTDIR),\$(prefix),g'; \\ echo 's,^\(\./\)*root/,/,g'; \\ echo 's,^\(\./\)*etc/,\$(prefix)/etc/,g'; \\ echo 's,^\(\./\)*lib/,\$(prefix)/lib/,g'; \\ echo 's,^\(\./\)*bin/,\$(prefix)/bin/,g'; \\ echo 's,^\(\./\)*pics/,\$(prefix)/pics/,g'; \\ echo 's,^\(\./\)*sounds/,\$(prefix)/sounds/,g'; \\ echo 's,^\(\./\)*i18n/,\$(prefix)/i18n/,g'; \\ echo 's,^\(\./\)*plugins/,\$(prefix)/plugins/,g'; \\ echo 's,^\(\./\)*apps/,\$(prefix)/apps/,g'; \\ echo 's,^\(\./\)*share/,\$(prefix)/share/,g'; \\ echo 's,^\(\./\)*i18n/,\$(prefix)/i18n/,g'; \\ echo 's,^\(\./\)*help/,\$(prefix)/help/,g' endef # # Will contain a list of all non-mt control files ALLCONTROLFILES= # # Will contain a list of all packaging targets ALLPACKAGES= # s contains now single space s=\$(x) \$(x) # # for convenience : generate AllTh ATP=\$(OPIEDIR)/AllThreadedPackages MAKEFILEHEADER while read k do CDIR="${k#* }" read k BNAME="${k#* }" read k case $k in *"ackage:"*) Pkg="${k#* }" Pkg="${Pkg// }" ;; *"iles:"*) Files="${k/Files:/}" ;; esac read k case $k in *"ackage:"*) Pkg="${k#* }" Pkg="${Pkg// }" ;; *"iles:"*) Files="${k/Files:/}" ;; esac cat << HERE # # package $Pkg in ${BNAME} # package-${Pkg} : \$(OPIEDIR)/Packages/$Pkg package-${Pkg}-mt : \$(ATP) \$(OPIEDIR)/Packages/$Pkg-mt # collect control files and package targets ALLCONTROLFILES += ${CDIR}/${BNAME}.control ALLPACKAGES += $Pkg # to generate -mt control file \$(OPIEDIR)/${CDIR}/${BNAME}-mt.control : \$(OPIEDIR)/${CDIR}/${BNAME}.control \$(GenerateMTControl) HERE if [ ! -z "${Files}" ] then cat << HERE # optimize speed .phony : \$(wildcard \$(addprefix \$(OPIEDIR)/,${Files})) # capture missing files (because not built) \$(OPIEDIR)/Packages/$Pkg \$(OPIEDIR)/Packages/$Pkg-mt \$(SUBSTFILES): \$(wildcard \$(addprefix \$(OPIEDIR)/,${Files})) HERE # echo "\$(wildcard \$(addprefix \$(OPIEDIR)/,${Files})) : " fi cat << HERE \$(OPIEDIR)/Packages/$Pkg : \$(OPIEDIR)/${CDIR}/${BNAME}.control @\$(call DoPackage,${CDIR},${BNAME},${BNAME},${Pkg}) \$(OPIEDIR)/Packages/$Pkg-mt : \$(OPIEDIR)/${CDIR}/${BNAME}-mt.control @\$(call DoPackage,${CDIR},${BNAME},${BNAME}-mt,${Pkg}-mt) HERE done < /tmp/ALL cat << HERE # # regenerate package file if control files are modified # Package.make : \$(addprefix \$(OPIEDIR)/,\$(ALLCONTROLFILES)) # # make targets to build packages # needs quicklauncher link in location (because dangling # links are not considered as true files by the wildcard command) # # if you want to build one package only then use # make package-<basenameof control> # or make package-<basenameof control>-mt # packages : /opt/QtPalmtop/bin/quicklauncher \\ \$(OPIEDIR)/Packages \\ \$(add prefix \$(OPIEDIR)/Packages/,\$(ALLPACKAGES)) packages-mt : /opt/QtPalmtop/bin/quicklauncher \\ \$(ATP) \\ \$(OPIEDIR)/Packages \\ \$(addprefix \$(OPIEDIR)/Packages/,\$(addsuffix -mt,\$(ALLPACKAGES))) # # capture missing quichlauncher link # /opt/QtPalmtop/bin/quicklauncher : @echo "create a link from /opt/QtPalmtop to \$(OPIEDIR) for this target to work" exit 2 # # Create Packages directory # \$(OPIEDIR)/Packages : @mkdir \$(OPIEDIR)/Packages # # update file containing all packages # \$(ATP) : \$(addprefix \$(OPIEDIR)/,\$(ALLCONTROLFILES)) @echo "Generating \$(notdir \$(ATP))" @echo -e "\$(subst \$(s),,\$(foreach i,\$(ALLPACKAGES),\$(i)\n))" > \$@ HERE rm /tmp/ALL diff --git a/scripts/mkipkg b/scripts/mkipkg index a336371..2f020f4 100755 --- a/scripts/mkipkg +++ b/scripts/mkipkg @@ -1,388 +1,392 @@ #!/bin/sh # vim: et sw=4 # TODO: srcdir!=builddir usage() { echo "usage: $self --destdir=[destination installation directory]" echo "usage: $self [destination installation directory]" exit 1 } self=mkipkg destdir= strip=strip control= builddir= srcdir= prefix= preinst= postinst= prerm= postrm= mkfsjffs2= ipkgbuild=ipkg-build buildversion= subst= user=root group=root filesubst= oldpwd= for option do case "$option" in -*=*) arg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; esac case "$option" in --destdir=*) destdir=$arg ;; --strip=*) strip=$arg ;; --control=*) control=$arg ;; --preinst=*) preinst=$arg ;; --postinst=*) postinst=$arg ;; --prerm=*) prerm=$arg ;; --postrm=*) postrm=$arg ;; --builddir=*) builddir=$arg ;; --srcdir=*) srcdir=$arg ;; --prefix=*) prefix=$arg ;; --mkfsjffs2=*) mkfsjffs2=$arg ;; --ipkgbuild=*) ipkgbuild=$arg ;; --buildversion=*) buildversion=$arg ;; --subst=*) subst=$arg ;; --user=*) user=$arg ;; --group=*) group=$arg ;; --filesubst=*) filesubst=$arg ;; --classic) classic=-c ;; -*) usage ;; *) destdir=$option ;; esac done if [ -z "$control" ]; then control=$destdir/CONTROL/control fi if [ -z "$prerm" ]; then prerm=$destdir/CONTROL/prerm fi if [ -z "$postrm" ]; then postrm=$destdir/CONTROL/postrm fi if [ -z "$preinst" ]; then preinst=$destdir/CONTROL/preinst fi if [ -z "$postinst" ]; then postinst=$destdir/CONTROL/postinst fi # remove leading slash from prefix (to fix globbing) if [ -n "$prefix" ]; then prefix=`echo $prefix | sed -e "s,/\(.*\),\\1,"` fi if [ -z "$destdir" ]; then usage fi if [ ! -r $control ]; then echo "$self: cannot find $control, exiting..." exit 1 fi if [ -z "`which $ipkgbuild 2>/dev/null`" ]; then echo "$self: cannot find ipkg-build, exiting..." exit 1 fi findFile() { local path= if [ $# = 1 ]; then find $1 -type f -o -type b -o -type c -o -type l find $1 -type d -a -empty else find . -type f -o -type b -o -type c -o -type l | \ sed -e "s,\./\(.*\),\\1,g" find . -type d -a -empty fi } _pushd() { oldpwd=`pwd`; cd $1; } _popd() { cd $oldpwd; } setVar() { eval "$1='$2'" } expandMaskToList() { local _list=`echo $1` local _tmpFileList= for f in $_list; do if [ -d $f ]; then f="`findFile $f`" fi _tmpFileList="`eval echo $f` $_tmpFileList" done setVar $2 "$_tmpFileList" } createFileList() { local excludeMask local includeMask local includemaskpresent=0 local excludemaskpresent=0 if (grep -q ^FileExcludeMask $1); then excludemaskpresent=1 excludeMask=$(eval echo '"'$(sed -n -e "s,^FileExcludeMask: *,,p" $1)'"') fi if (grep -q ^FileIncludeMask $1); then includemaskpresent=1 includeMask=$(eval echo '"'$(sed -n -e "s,^FileIncludeMask: *,,p" $1)'"') else if (grep -q ^Files: $1); then includemaskpresent=1 includeMask=$(eval echo '"'$(sed -n -e "s,^Files: *,,p" $1)'"') fi fi _pushd $destdir declare -a excludeMaskArray excludeMaskArray=( $excludeMask ) excludeMaskArray=( "${excludeMaskArray[@]}" "CONTROL/*" "usr/share/*" ) if [ $includemaskpresent != 1 ]; then includeMask="." fi if [ -z "$includeMask" ]; then setVar $2 "" _popd return 0 fi expandMaskToList "$includeMask" _fileList excludeMaskArray=( "${excludeMaskArray[@]}" "*/CVS*" "*/SCCS*" ) local realFileList= local missing=0 for file in $_fileList; do local containedInList=0 for i in "${excludeMaskArray[@]}"; do if [[ $file == $i ]]; then containedInList=1 break; fi done if [ $containedInList = 0 ]; then if ! [ -e $file -o -L $file ]; then echo "$self: $file not found" missing=1 fi realFileList=$file" $realFileList" fi done _popd if [ $missing = 1 ]; then return 1 fi setVar $2 "$realFileList" } stripFile() { - if [ -f $1 -a -x $1 ]; then - $strip --strip-all $1 + if [ ! -h $1 -a -f $1 -a -x $1 ]; then + $strip -p --strip-all $1 fi } substFile() { local oldfile=$1 if [ ! -e $2 ]; then return 1; fi if [ -e $oldfile -o -L $oldfile ]; then newfile=`echo $oldfile|sed -f $2|sed -e's,^/,,g'` olddir=`dirname $oldfile` base=`basename $oldfile` newdir=`dirname $newfile` # echo >&2 moving $oldfile to $newfile if [ "$newdir" = "$olddir" ]; then return 0 fi mkdir -p $newdir mv $olddir/$base $newfile rmdir -p $olddir 2>/dev/null fi } stripFiles() { for f in $1; do + # do not strip links + if [ ! -h ./$f ] + then stripFile ./$f + fi done } substFiles() { for f in $1; do substFile ./$f done } substAndStripFiles() { for f in $1; do stripFile ./$f substFile ./$f $2 done } installScript() { if [ -n "$1" -a -f "$1" ]; then destfile=`basename $1` filetype=`echo $destfile|cut -d. -f2` if [ -n "$filetype" ]; then destfile=$filetype; fi if [ -n "$subst" ]; then sed -f $subst < $1 > $ctrldir/$destfile else cat $1 > $ctrldir/$destfile fi chmod +x $ctrldir/$destfile fi } tempDir=/tmp/`basename $self`.$$ mkdir -p $tempDir if [ $? != 0 ]; then echo "$self: cannot create $tempDir, exiting..." rm -rf $tempDir exit 1 fi ctrldir=$tempDir/CONTROL mkdir -p $ctrldir if [ ! -e $subst ] || [ -z "$subst" ]; then cat $control > $ctrldir/control.new else sed -f $subst < $control > $ctrldir/control.new fi createFileList $ctrldir/control.new ipkgFileList if [ "$?" != "0" ]; then echo "$self: ERROR: missing files, not building $control" rm -rf $tempDir exit 1 fi cat $ctrldir/control.new | egrep -v '^(Files|FileExcludeMask|FileIncludeMask):' > $ctrldir/control rm -f $ctrldir/control.new ( cd $destdir && tar -cf - $ipkgFileList 2>/dev/null ) | ( cd $tempDir && tar -xf - 2>/dev/null ) if [ -z "$filesubst" ]; then ( cd $tempDir && stripFiles "$ipkgFileList" ) else if ! (echo $filesubst|grep -q '^/'); then filesubst="$oldpwd/$filesubst" fi ( cd $tempDir && substAndStripFiles "$ipkgFileList" $filesubst ) fi # removing CVS directories find $tempDir -name CVS -a -type d -print0 | xargs -0 rm -rf path="`echo "$PATH" | sed -e "s/\:/ /g"`" if [ -z "$mkfsjffs2" ]; then for i in $path; do if [ -x "$i/mkfs.jffs2" ]; then mkfsjffs2="$i/mkfs.jffs2" break fi done fi if [ -z "$mkfsjffs2" ]; then echo "$self: WARNING: no mkjfs.jffs2 found in path. Falling back to using du" echo "for size calculation. mkfs.jffs2 is recommended for size calculation" echo "as it calculates the real package size on the compressed file system," echo "in contrast to du calculating the uncompressed size!" buildsize=`du -h -s $tempDir | awk '{print $1}'` else buildsize=`$mkfsjffs2 -r $tempDir | wc -c` fi if [ "$buildsize" != "0" ]; then echo "Installed-Size: $buildsize" >> $ctrldir/control fi installScript $preinst installScript $postinst installScript $prerm installScript $posrm $ipkgbuild $classic -o $user -g $group $tempDir rm -rf $tempDir diff --git a/scripts/tothreaded b/scripts/tothreaded index 31ed31e..f916ad8 100755 --- a/scripts/tothreaded +++ b/scripts/tothreaded |