summaryrefslogtreecommitdiff
authorzecke <zecke>2005-04-16 22:02:12 (UTC)
committer zecke <zecke>2005-04-16 22:02:12 (UTC)
commit206784bc9919dca87a71de9b998ff0ece08bd8ca (patch) (side-by-side diff)
treeb45acd807cdb073e6a9c0d07862f72b395c865a9
parentf2b8a146b411a99c43050ab902f641ee406e3bab (diff)
downloadopie-206784bc9919dca87a71de9b998ff0ece08bd8ca.zip
opie-206784bc9919dca87a71de9b998ff0ece08bd8ca.tar.gz
opie-206784bc9919dca87a71de9b998ff0ece08bd8ca.tar.bz2
Opie X11:
Do not take the local qpeapplication.h but the Opie/X11 version
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/config.cpp2
-rw-r--r--library/qpedialog.cpp2
2 files changed, 2 insertions, 2 deletions
diff --git a/library/config.cpp b/library/config.cpp
index 72bd4d2..73ddeb5 100644
--- a/library/config.cpp
+++ b/library/config.cpp
@@ -1,231 +1,231 @@
/**********************************************************************
** Copyright (C) 2000,2004 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qdir.h>
#include <qmessagebox.h>
#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
#include <qtextcodec.h>
#endif
#include <qtextstream.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/time.h>
#include <fcntl.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#define QTOPIA_INTERNAL_LANGLIST
#include "config.h"
#include "global.h"
-#include "qpeapplication.h"
+#include <qtopia/qpeapplication.h>
/*
* Internal Class
*/
class ConfigPrivate {
public:
ConfigPrivate() : multilang(FALSE) {}
ConfigPrivate(const ConfigPrivate& o) :
trfile(o.trfile),
trcontext(o.trcontext),
multilang(o.multilang)
{}
ConfigPrivate& operator=(const ConfigPrivate& o)
{
trfile = o.trfile;
trcontext = o.trcontext;
multilang = o.multilang;
return *this;
}
QString trfile;
QCString trcontext;
bool multilang;
};
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
#ifndef Q_OS_WIN32
//#define DEBUG_CONFIG_CACHE
class ConfigData
{
public:
ConfigData() {}
ConfigData( const ConfigGroupMap& cf, const ConfigPrivate& pri,
struct stat sbuf )
: cfg( cf ), priv( pri ), mtime( sbuf.st_mtime ),
size( sbuf.st_size )
{
gettimeofday(&used, 0 );
}
ConfigGroupMap cfg;
ConfigPrivate priv; // Owned by this object
time_t mtime;
unsigned int size;
struct timeval used;
};
class ConfigCache : public QObject {
public:
static ConfigCache* instance();
void insert( const QString& fileName, const ConfigGroupMap& cfg,
const ConfigPrivate *priv );
bool find(const QString& fileName, ConfigGroupMap& cfg,
ConfigPrivate** priv );
protected:
void timerEvent( QTimerEvent* );
private:
ConfigCache();
void remove( const QString& fileName );
void removeLru();
private:
QMap<QString, ConfigData> m_cached;
unsigned int m_totalSize;
int m_tid;
private:
static ConfigCache* m_inst;
static const unsigned int CONFIG_CACHE_SIZE = 8192;
static const unsigned int CONFIG_CACHE_TIMEOUT = 1000;
};
ConfigCache* ConfigCache::m_inst = 0;
/*
* get destroyed when qApp gets destroyed
*/
ConfigCache::ConfigCache() : QObject( qApp ), m_totalSize( 0 ), m_tid( 0 ) {}
ConfigCache* ConfigCache::instance() {
if ( !m_inst )
m_inst = new ConfigCache();
return m_inst;
}
void ConfigCache::remove( const QString& fileName ) {
QMap<QString, ConfigData>::Iterator it = m_cached.find( fileName );
if ( it == m_cached.end() )
return;
m_totalSize -= (*it).size;
m_cached.remove( it );
}
void ConfigCache::removeLru() {
QMap<QString, ConfigData>::Iterator it = m_cached.begin();
QMap<QString, ConfigData>::Iterator lru = it;
++it;
for (; it != m_cached.end(); ++it)
if ((*it).used.tv_sec < (*lru).used.tv_sec ||
((*it).used.tv_sec == (*lru).used.tv_sec &&
(*it).used.tv_usec < (*lru).used.tv_usec))
lru = it;
m_totalSize -= (*lru).size;
m_cached.remove(lru);
}
void ConfigCache::timerEvent( QTimerEvent* ) {
while ( m_totalSize > CONFIG_CACHE_SIZE )
removeLru();
killTimer(m_tid);
m_tid = 0;
}
void ConfigCache::insert( const QString& fileName, const ConfigGroupMap& cfg,
const ConfigPrivate* _priv ) {
struct stat sbuf;
::stat( QFile::encodeName(fileName), &sbuf );
if ( static_cast<unsigned int>(sbuf.st_size) >= CONFIG_CACHE_SIZE>>1)
return;
/*
* remove the old version and use the new one
*/
ConfigPrivate priv = _priv ? *_priv : ConfigPrivate();
ConfigData data( cfg, priv, sbuf );
m_totalSize += data.size;
remove( fileName );
m_cached.insert( fileName, data );
/*
* we've overcommited allocation, let us clean up
* soon
*/
if ( m_totalSize >= CONFIG_CACHE_SIZE )
if ( !m_tid )
m_tid = startTimer(CONFIG_CACHE_TIMEOUT);
}
bool ConfigCache::find( const QString& fileName, ConfigGroupMap& cfg,
ConfigPrivate **ppriv ) {
QMap<QString, ConfigData>::Iterator it = m_cached.find(fileName);
if (it != m_cached.end()) {
ConfigData &data = *it;
struct stat sbuf;
::stat(QFile::encodeName( fileName ), &sbuf);
if (data.mtime == sbuf.st_mtime && (int)data.size == sbuf.st_size) {
cfg = data.cfg;
/*
* null pointer
*/
if ( *ppriv == 0 )
*ppriv = new ConfigPrivate( data.priv );
**ppriv = data.priv;
gettimeofday(&data.used, 0);
return true;
}
}
return false;
}
#endif
/*!
\internal
*/
QString Config::configFilename(const QString& name, Domain d)
{
switch (d) {
case File:
return name;
case User: {
QDir dir = (QString(getenv("HOME")) + "/Settings");
if ( !dir.exists() )
mkdir(dir.path().local8Bit(),0700);
return dir.path() + "/" + name + ".conf";
diff --git a/library/qpedialog.cpp b/library/qpedialog.cpp
index f52171f..8da0ca6 100644
--- a/library/qpedialog.cpp
+++ b/library/qpedialog.cpp
@@ -1,84 +1,84 @@
/**********************************************************************
** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
** This file is part of the Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "qpedialog.h"
#include <qdialog.h>
-#include <qpeapplication.h>
+#include <qtopia/qpeapplication.h>
// Allow access to nornally protected accept and reject functions
class HackedPrivateQDialog : public QDialog{
public:
void accept() { QDialog::accept();}
void reject() { QDialog::reject();}
};
/**
* \brief This is the only c'tor.
*
* The parent of this Listener is the Dialog you pass. This means once
* the dialog is deleted this listener will be deleted too.
* This Listener listens on QPEApplication::appMessage signal and implements
* accept() and reject().
*
* \code
* QDialog *dialog = new YourDialog();
(void)new QPEDialogListener(dialog);
if( QPEApplication::execDialog(dialog) == QDialog::Accept ){
// do some stuff
}
delete dialog;
* \endcode
*
* @param di The dialog to handle
*/
QPEDialogListener::QPEDialogListener(QDialog *di ) : QObject(di)
{
dialog = di;
connect(qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)),
this, SLOT(appMessage(const QCString&,const QByteArray&)) );
}
/**
* d'tor
*/
QPEDialogListener::~QPEDialogListener() {}
/**
* \internal
*/
void QPEDialogListener::appMessage( const QCString &msg, const QByteArray & )
{
if (!dialog)
return;
HackedPrivateQDialog *hackedDialog = static_cast<HackedPrivateQDialog*>(dialog);
if (msg == "accept()") {
hackedDialog->accept();
} else if (msg == "reject()") {
hackedDialog->reject();
}
}