summaryrefslogtreecommitdiff
path: root/library
Side-by-side diff
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp155
1 files changed, 108 insertions, 47 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index c41dd06..852671a 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -94,9 +94,9 @@ class QPEApplicationData
public:
QPEApplicationData() : presstimer( 0 ), presswidget( 0 ), kbgrabber( 0 ),
rightpressed( FALSE ), kbregrab( FALSE ), notbusysent( FALSE ), preloaded( FALSE ),
forceshow( FALSE ), nomaximize( FALSE ), keep_running( TRUE ), qpe_main_widget( 0 )
-
+
{
qcopq.setAutoDelete( TRUE );
}
@@ -126,9 +126,9 @@ public:
QByteArray data;
};
QWidget* qpe_main_widget;
QList<QCopRec> qcopq;
-
+
void enqueueQCop( const QCString &ch, const QCString &msg,
const QByteArray &data )
{
qcopq.append( new QCopRec( ch, msg, data ) );
@@ -177,9 +177,9 @@ public:
mw->setCaption( (*it)->name() );
return TRUE;
}
}
- */
+ */
return FALSE;
}
@@ -329,26 +329,68 @@ static void setMic( int t = 0, int percent = -1 )
}
}
+static void setBass( int t = 0, int percent = -1 )
+{
+ switch ( t ) {
+ case 0: {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Volume" );
+ if ( percent < 0 )
+ percent = cfg.readNumEntry( "BassPercent", 50 );
+
+ int fd = 0;
+ int bass = percent;
+ if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
+ ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass );
+ ::close( fd );
+ }
+ }
+ break;
+ }
+}
+
+
+static void setTreble( int t = 0, int percent = -1 )
+{
+ switch ( t ) {
+ case 0: {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Volume" );
+ if ( percent < 0 )
+ percent = cfg.readNumEntry( "TreblePercent", 50 );
+
+ int fd = 0;
+ int treble = percent;
+ if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
+ ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble );
+ ::close( fd );
+ }
+ }
+ break;
+ }
+}
+
+
/*!
\class QPEApplication qpeapplication.h
\brief The QPEApplication class implements various system services
that are available to all Qtopia applications.
-
+
Simply by using QPEApplication instead of QApplication, a standard Qt
application becomes a Qtopia application. It automatically follows
style changes, quits and raises, and in the
case of \link docwidget.html document-oriented\endlink applications,
changes the currently displayed document in response to the environment.
-
+
To create a \link docwidget.html document-oriented\endlink
application use showMainDocumentWidget(); to create a
non-document-oriented application use showMainWidget(). The
keepRunning() function indicates whether the application will
continue running after it's processed the last \link qcop.html
QCop\endlink message. This can be changed using setKeepRunning().
-
+
A variety of signals are emitted when certain events occur, for
example, timeChanged(), clockChanged(), weekChanged(),
dateFormatChanged() and volumeChanged(). If the application receives
a \link qcop.html QCop\endlink message on the application's
@@ -357,24 +399,24 @@ static void setMic( int t = 0, int percent = -1 )
are emitted when synching begins and ends respectively - upon these
signals, the application should save and reload any data
files that are involved in synching. Most of these signals will initially
be received and unfiltered through the appMessage() signal.
-
+
This class also provides a set of useful static functions. The
qpeDir() and documentDir() functions return the respective paths.
The grabKeyboard() and ungrabKeyboard() functions are used to
control whether the application takes control of the device's
physical buttons (e.g. application launch keys). The stylus' mode of
operation is set with setStylusOperation() and retrieved with
stylusOperation(). There are also setInputMethodHint() and
inputMethodHint() functions.
-
+
\ingroup qtopiaemb
*/
/*!
\fn void QPEApplication::clientMoused()
-
+
\internal
*/
/*!
@@ -384,57 +426,57 @@ static void setMic( int t = 0, int percent = -1 )
*/
/*!
\fn void QPEApplication::clockChanged( bool ampm );
-
+
This signal is emitted when the user changes the clock's style. If
\a ampm is TRUE, the user wants a 12-hour AM/PM clock, otherwise,
they want a 24-hour clock.
*/
/*!
\fn void QPEApplication::volumeChanged( bool muted )
-
+
This signal is emitted whenever the mute state is changed. If \a
muted is TRUE, then sound output has been muted.
*/
/*!
\fn void QPEApplication::weekChanged( bool startOnMonday )
-
+
This signal is emitted if the week start day is changed. If \a
startOnMonday is TRUE then the first day of the week is Monday; if
\a startOnMonday is FALSE then the first day of the week is
Sunday.
*/
/*!
\fn void QPEApplication::dateFormatChanged()
-
+
This signal is emitted whenever the date format is changed.
*/
/*!
\fn void QPEApplication::flush()
-
+
###
*/
/*!
\fn void QPEApplication::reload()
-
+
*/
/*!
\fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data )
-
+
This signal is emitted when a message is received on this
application's QPE/Application/<i>appname</i> \link qcop.html
QCop\endlink channel.
-
+
The slot to which you connect this signal uses \a msg and \a data
in the following way:
-
+
\code
void MyWidget::receive( const QCString& msg, const QByteArray& data )
{
QDataStream stream( data, IO_ReadOnly );
@@ -446,18 +488,18 @@ static void setMic( int t = 0, int percent = -1 )
...
}
}
\endcode
-
+
\sa qcop.html
Note that messages received here may be processed by qpe application
and emitted as signals, such as flush() and reload().
*/
/*!
Constructs a QPEApplication just as you would construct
a QApplication, passing \a argc, \a argv, and \a t.
-
+
For applications, \a t should be the default, GuiClient. Only
the Qtopia server passes GuiServer.
*/
QPEApplication::QPEApplication( int & argc, char **argv, Type t )
@@ -608,10 +650,10 @@ static void createInputMethodDict()
/*!
Returns the currently set hint to the system as to whether
widget \a w has any use for text input methods.
-
-
+
+
\sa setInputMethodHint() InputMethodHint
*/
QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
{
@@ -621,18 +663,18 @@ QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
}
/*!
\enum QPEApplication::InputMethodHint
-
+
\value Normal the application sometimes needs text input (the default).
\value AlwaysOff the application never needs text input.
\value AlwaysOn the application always needs text input.
*/
/*!
Hints to the system that widget \a w has use for text input methods
as specified by \a mode.
-
+
\sa inputMethodHint() InputMethodHint
*/
void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode )
{
@@ -907,30 +949,30 @@ void QPEApplication::setDefaultRotation( int r )
void QPEApplication::applyStyle()
{
Config config( "qpe" );
config.setGroup( "Appearance" );
-
+
// don't block ourselves ...
Opie::force_appearance = 0;
-
+
static QString appname = Opie::binaryName ( );
-
+
QStringList ex = config. readListEntry ( "NoStyle", ';' );
int nostyle = 0;
for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
break;
}
}
-
+
// Widget style
QString style = config.readEntry( "Style", "Light" );
-
+
// don't set a custom style
if ( nostyle & Opie::Force_Style )
style = "Light";
-
+
internalSetStyle ( style );
// Colors
QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) );
@@ -953,15 +995,15 @@ void QPEApplication::applyStyle()
setPalette( pal, TRUE );
// Window Decoration
QString dec = config.readEntry( "Decoration", "Qtopia" );
-
+
// don't set a custom deco
if ( nostyle & Opie::Force_Decoration )
dec = "";
-
+
//qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle);
-
+
if ( dec != d->decorationName ) {
qwsSetDecoration( new QPEDecoration( dec ) );
d->decorationName = dec;
}
@@ -969,16 +1011,16 @@ void QPEApplication::applyStyle()
// Font
QString ff = config.readEntry( "FontFamily", font().family() );
int fs = config.readNumEntry( "FontSize", font().pointSize() );
- // don't set a custom font
+ // don't set a custom font
if ( nostyle & Opie::Force_Font ) {
ff = "Helvetica";
fs = 10;
}
-
+
setFont ( QFont ( ff, fs ), true );
-
+
// revert to global blocking policy ...
Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
Opie::force_appearance &= ~nostyle;
}
@@ -1115,8 +1157,27 @@ void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data
stream >> micMuted;
setMic();
emit micChanged( micMuted );
}
+ else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ int t, v;
+ stream >> t >> v;
+ setBass( t, v );
+ }
+ else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ setBass();
+ }
+ else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ int t, v;
+ stream >> t >> v;
+ setTreble( t, v );
+ }
+ else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ setTreble();
+ }
+
+
+
#endif
}
/*!
@@ -1228,9 +1289,9 @@ void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
/*!
Sets widget \a mw as the mainWidget() and shows it. For small windows,
consider passing TRUE for \a nomaximize rather than the default FALSE.
-
+
\sa showMainDocumentWidget()
*/
void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
{
@@ -1239,14 +1300,14 @@ void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
/*!
Sets widget \a mw as the mainWidget() and shows it. For small windows,
consider passing TRUE for \a nomaximize rather than the default FALSE.
-
+
This calls designates the application as
a \link docwidget.html document-oriented\endlink application.
-
+
The \a mw widget \e must have this slot: setDocument(const QString&).
-
+
\sa showMainWidget()
*/
void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
{
@@ -1263,9 +1324,9 @@ void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
QCop\endlink message and then quit. If the application calls this
function while processing a \link qcop.html QCop\endlink message,
after processing its outstanding \link qcop.html QCop\endlink
messages the application will start 'properly' and show itself.
-
+
\sa keepRunning()
*/
void QPEApplication::setKeepRunning()
{
@@ -1277,9 +1338,9 @@ void QPEApplication::setKeepRunning()
/*!
Returns TRUE if the application will quit after processing the
current list of qcop messages; otherwise returns FALSE.
-
+
\sa setKeepRunning()
*/
bool QPEApplication::keepRunning() const
{
@@ -1418,9 +1479,9 @@ static void createDict()
}
/*!
Returns the current StylusMode for widget \a w.
-
+
\sa setStylusOperation() StylusMode
*/
QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w )
{
@@ -1430,21 +1491,21 @@ QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w )
}
/*!
\enum QPEApplication::StylusMode
-
+
\value LeftOnly the stylus only generates LeftButton
events (the default).
\value RightOnHold the stylus generates RightButton events
if the user uses the press-and-hold gesture.
-
+
\sa setStylusOperation() stylusOperation()
*/
/*!
Causes widget \a w to receive mouse events according to the stylus
\a mode.
-
+
\sa stylusOperation() StylusMode
*/
void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode )
{
@@ -1587,9 +1648,9 @@ void QPEApplication::ungrabKeyboard()
keys. Instead of launching applications when these keys are pressed
the signals emitted are sent to this application instead. Some games
programs take over the launch keys in this way to make interaction
easier.
-
+
\sa ungrabKeyboard()
*/
void QPEApplication::grabKeyboard()
{