summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/desktop.cpp25
-rw-r--r--core/launcher/desktop.h2
-rw-r--r--core/settings/button/buttonsettings.cpp3
-rw-r--r--core/settings/button/buttonutils.cpp3
-rw-r--r--core/settings/button/remapdlg.cpp26
-rw-r--r--libopie/odevice.cpp15
-rw-r--r--libopie/odevicebutton.cpp3
7 files changed, 55 insertions, 22 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp
index 59f2aea..fbcce7c 100644
--- a/core/launcher/desktop.cpp
+++ b/core/launcher/desktop.cpp
@@ -333,54 +333,63 @@ void DesktopApplication::launcherMessage( const QCString & msg, const QByteArray
}
void DesktopApplication::sendHeldAction ( )
{
if ( m_last_button ) {
m_last_button-> heldAction ( ). send ( );
m_last_button = 0;
}
}
-void DesktopApplication::checkButtonAction ( const ODeviceButton *db, int /*keycode*/, bool press, bool autoRepeat )
+bool DesktopApplication::checkButtonAction ( const ODeviceButton *db, int /*keycode*/, bool press, bool autoRepeat )
{
if ( db ) {
if ( !press && !autoRepeat && m_button_timer-> isActive ( )) {
m_button_timer-> stop ( );
- if ( !db-> pressedAction ( ). channel ( ). isEmpty ( )) {
- db-> pressedAction ( ). send ( );
+
+ if (!db-> pressedAction ( ). channel ( ) .isEmpty())
+ {
+ if ( db-> pressedAction ( ). channel ( )!="ignore") {
+ db-> pressedAction ( ). send ( );
+ }
+ else return false;
}
}
else if ( press && !autoRepeat ) {
m_button_timer-> stop ( );
+ if (!db-> pressedAction ( ). channel ( ) .isEmpty())
+ {
- if ( !db-> heldAction ( ). channel ( ). isEmpty ( )) {
- m_last_button = db;
- m_button_timer-> start ( ODevice::inst ( )-> buttonHoldTime ( ), true );
+ if ( db-> heldAction ( ). channel ( )!="ignore") {
+ m_last_button = db;
+ m_button_timer-> start ( ODevice::inst ( )-> buttonHoldTime ( ), true );
+ }
+ else return false;
}
}
}
+ return true;
}
bool DesktopApplication::eventFilter ( QObject *o, QEvent *e )
{
if ( e-> type ( ) == QEvent::KeyPress || e-> type ( ) == QEvent::KeyRelease ) {
QKeyEvent *ke = (QKeyEvent *) e;
const ODeviceButton *db = ODevice::inst ( )-> buttonForKeycode ( ke-> key ( ));
if ( db ) {
- checkButtonAction ( db, ke-> key ( ), e-> type ( ) == QEvent::KeyPress, ke-> isAutoRepeat ( ));
- return true;
+ return checkButtonAction ( db, ke-> key ( ), e-> type ( ) == QEvent::KeyPress, ke-> isAutoRepeat ( ));
}
}
return QPEApplication::eventFilter ( o, e );
}
#ifdef Q_WS_QWS
bool DesktopApplication::qwsEventFilter( QWSEvent *e )
{
qpedesktop->checkMemory();
if ( e->type == QWSEvent::Key ) {
diff --git a/core/launcher/desktop.h b/core/launcher/desktop.h
index db0173e..4024c38 100644
--- a/core/launcher/desktop.h
+++ b/core/launcher/desktop.h
@@ -74,25 +74,25 @@ protected:
public slots:
virtual void systemMessage ( const QCString &msg, const QByteArray &data );
virtual void launcherMessage ( const QCString &msg, const QByteArray &data );
void rereadVolumes();
protected slots:
void shutdown ( ShutdownImpl::Type );
void apmTimeout ( );
void sendHeldAction ( );
protected:
virtual bool eventFilter ( QObject *o, QEvent *e );
- void checkButtonAction ( const Opie::ODeviceButton *db, int keycode, bool press, bool autoRepeat );
+ bool checkButtonAction ( const Opie::ODeviceButton *db, int keycode, bool press, bool autoRepeat );
private:
static DesktopApplication *me ( );
private:
void reloadPowerWarnSettings();
DesktopPowerAlerter *pa;
PowerStatus *m_ps, *m_ps_last;
QTimer *cardSendTimer;
QCopChannel *channel;
OpieScreenSaver *m_screensaver;
QTimer * m_apm_timer;
diff --git a/core/settings/button/buttonsettings.cpp b/core/settings/button/buttonsettings.cpp
index eabb779..942d5e4 100644
--- a/core/settings/button/buttonsettings.cpp
+++ b/core/settings/button/buttonsettings.cpp
@@ -199,35 +199,34 @@ void ButtonSettings::keyReleaseEvent ( QKeyEvent *e )
}
void ButtonSettings::keyTimeout ( )
{
if ( m_last_button ) {
edit ( m_last_button, true );
m_last_button = false;
}
}
void ButtonSettings::edit ( buttoninfo *bi, bool hold )
{
- qDebug ( "remap %s for %s", hold ? "hold" : "press", bi-> m_button-> userText ( ). latin1 ( ));
if ( m_lock )
return;
m_lock = true;
RemapDlg *d = new RemapDlg ( bi-> m_button, hold, this );
d-> showMaximized ( );
if ( d-> exec ( ) == QDialog::Accepted ) {
- qDebug ( " -> %s %s", d-> message ( ). channel ( ). data ( ), d-> message ( ). message ( ). data ( ));
+
if ( hold ) {
bi-> m_hmsg = d-> message ( );
bi-> m_hdirty = true;
}
else {
bi-> m_pmsg = d-> message ( );
bi-> m_pdirty = true;
}
updateLabels ( );
}
diff --git a/core/settings/button/buttonutils.cpp b/core/settings/button/buttonutils.cpp
index 91d2af3..27a2f38 100644
--- a/core/settings/button/buttonutils.cpp
+++ b/core/settings/button/buttonutils.cpp
@@ -56,25 +56,26 @@ ButtonUtils::ButtonUtils ( )
}
ButtonUtils::~ButtonUtils ( )
{
delete m_apps;
}
qCopInfo ButtonUtils::messageToInfo ( const OQCopMessage &c )
{
QCString ch = c. channel ( );
QCString f = c. message ( );
- if ( ch. isNull ( ))
+
+ if ( ch == "ignore" )
return qCopInfo ( qApp-> translate ( "ButtonSettings", "<nobr>Ignored</nobr>" ));
for ( const predef_qcop *p = predef; p-> m_text; p++ ) {
if (( ch == p-> m_channel ) && ( f == p-> m_function ))
return qCopInfo ( qApp-> translate ( "ButtonSettings", p-> m_text ), Resource::loadPixmap ( p-> m_pixmap ));
}
if ( ch. left ( 16 ) == "QPE/Application/" ) {
QString app = ch. mid ( 16 );
const AppLnk *applnk = m_apps-> findExec ( app );
if ( applnk )
app = applnk-> name ( );
diff --git a/core/settings/button/remapdlg.cpp b/core/settings/button/remapdlg.cpp
index a251bd4..b6ee60b 100644
--- a/core/settings/button/remapdlg.cpp
+++ b/core/settings/button/remapdlg.cpp
@@ -50,33 +50,43 @@ RemapDlg::RemapDlg ( const Opie::ODeviceButton *b, bool hold, QWidget *parent, c
m_current = 0;
static const char * const def_channels [] = { "QPE/Application/", "QPE/Launcher", "QPE/System", "QPE/TaskBar", "QPE/", 0 };
w_channel-> insertStrList ((const char **) def_channels );
m_msg = hold ? b-> heldAction ( ) : b-> pressedAction ( );
m_msg_preset = hold ? b-> factoryPresetHeldAction ( ) : b-> factoryPresetPressedAction ( );
m_map_none = new NoSortItem ( w_list, 0, tr( "No mapping" ));
m_map_preset = new NoSortItem ( w_list, 1, tr( "Default" ), m_msg_preset. channel ( ), m_msg_preset. message ( ));
((NoSortItem *) m_map_preset )-> setDefault ( true );
- m_map_custom = new NoSortItem ( w_list, 2, tr( "Custom" ), m_msg. channel ( ), m_msg. message ( ));
+
+ if (m_msg. channel ( ) == "ignore")
+ {
+ m_map_custom = new NoSortItem ( w_list, 2, tr( "Custom" ), m_msg_preset. channel ( ), m_msg_preset. message ( ));
+
+ m_current = m_map_none;
+ }
+ else
+ {
+ m_map_custom = new NoSortItem ( w_list, 2, tr( "Custom" ), m_msg. channel ( ), m_msg. message ( ));
+ m_current = m_map_custom;
+ }
QListViewItem *it = new NoSortItem ( w_list, 3, tr( "Actions" ));
ButtonUtils::inst ( )-> insertActions ( it );
it-> setOpen ( true );
m_map_show = new NoSortItem ( w_list, 4, tr( "Show" ));
- m_current = m_map_custom;
w_list-> setCurrentItem ( m_current );
QTimer::singleShot ( 0, this, SLOT( delayedInit ( )));
}
RemapDlg::~RemapDlg ( )
{
}
void RemapDlg::delayedInit ( )
{
bool b = w_list-> viewport ( )-> isUpdatesEnabled ( );
@@ -88,28 +98,36 @@ void RemapDlg::delayedInit ( )
m_map_show-> repaint ( );
}
void RemapDlg::itemChanged ( QListViewItem *it )
{
bool enabled = false;
OQCopMessage m;
m_current = it;
if ( it == m_map_none )
- m_msg = m = OQCopMessage ( 0, 0 );
+ {
+ m_msg = m = OQCopMessage ( "ignore", 0 );
+ qDebug ("***ignoring");
+ }
else if ( it == m_map_preset )
+ {
m_msg = m = m_msg_preset;
- else if ( it && !it-> childCount ( )) {
+ qDebug ("***Preset");
+ }
+ else if ( it && !it-> childCount ( ))
+ {
+ qDebug ("***Custom: %s %s ",it-> text ( 1 ). latin1 ( ), it-> text ( 2 ). latin1 ( ));
enabled = ( it == m_map_custom );
m_msg = m = OQCopMessage ( it-> text ( 1 ). latin1 ( ), it-> text ( 2 ). latin1 ( ));
}
w_channel-> setEnabled ( enabled );
w_message-> setEnabled ( enabled );
w_channel-> setEditText ( m. channel ( ));
w_message-> setEditText ( m. message ( ));
}
void RemapDlg::textChanged ( const QString &str )
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index 9e97c56..d5e3c5c 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -271,25 +271,24 @@ void ODevice::init ( )
// Simulation uses iPAQ 3660 device buttons
for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) {
i_button *ib = ipaq_buttons + i;
ODeviceButton b;
if (( ib-> model & Model_iPAQ_H36xx ) == Model_iPAQ_H36xx ) {
b. setKeycode ( ib-> code );
b. setUserText ( qApp-> translate ( "Button", ib-> utext ));
b. setPixmap ( Resource::loadPixmap ( ib-> pix ));
b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction ));
b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction ));
-
d-> m_buttons. append ( b );
}
}
reloadButtonMapping ( );
}
ODevice::~ODevice ( )
{
delete d;
}
bool ODevice::setSoftSuspend ( bool /*soft*/ )
@@ -507,55 +506,61 @@ void ODevice::reloadButtonMapping ( )
QByteArray pdata, hdata;
if ( cfg. hasGroup ( group )) {
cfg. setGroup ( group );
pch = cfg. readEntry ( "PressedActionChannel" ). latin1 ( );
pm = cfg. readEntry ( "PressedActionMessage" ). latin1 ( );
// pdata = decodeBase64 ( buttonFile. readEntry ( "PressedActionArgs" ));
hch = cfg. readEntry ( "HeldActionChannel" ). latin1 ( );
hm = cfg. readEntry ( "HeldActionMessage" ). latin1 ( );
// hdata = decodeBase64 ( buttonFile. readEntry ( "HeldActionArgs" ));
}
-
+
b. setPressedAction ( OQCopMessage ( pch, pm, pdata ));
+
b. setHeldAction ( OQCopMessage ( hch, hm, hdata ));
}
}
void ODevice::remapPressedAction ( int button, const OQCopMessage &action )
{
+ QString mb_chan;
+
if ( button >= (int) d-> m_buttons. count ( ))
return;
+
ODeviceButton &b = d-> m_buttons [button];
- b. setPressedAction ( action );
+ b. setPressedAction ( action );
+
+ mb_chan=b. pressedAction ( ). channel ( );
Config buttonFile ( "ButtonSettings" );
buttonFile. setGroup ( "Button" + QString::number ( button ));
- buttonFile. writeEntry ( "PressedActionChannel", (const char*) b. pressedAction ( ). channel ( ));
+ buttonFile. writeEntry ( "PressedActionChannel", (const char*) mb_chan);
buttonFile. writeEntry ( "PressedActionMessage", (const char*) b. pressedAction ( ). message ( ));
// buttonFile. writeEntry ( "PressedActionArgs", encodeBase64 ( b. pressedAction ( ). data ( )));
QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" );
}
void ODevice::remapHeldAction ( int button, const OQCopMessage &action )
{
if ( button >= (int) d-> m_buttons. count ( ))
return;
ODeviceButton &b = d-> m_buttons [button];
- b. setHeldAction ( action );
+ b. setHeldAction ( action );
Config buttonFile ( "ButtonSettings" );
buttonFile. setGroup ( "Button" + QString::number ( button ));
buttonFile. writeEntry ( "HeldActionChannel", (const char *) b. heldAction ( ). channel ( ));
buttonFile. writeEntry ( "HeldActionMessage", (const char *) b. heldAction ( ). message ( ));
// buttonFile. writeEntry ( "HeldActionArgs", decodeBase64 ( b. heldAction ( ). data ( )));
QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" );
}
diff --git a/libopie/odevicebutton.cpp b/libopie/odevicebutton.cpp
index 2270343..4b22358 100644
--- a/libopie/odevicebutton.cpp
+++ b/libopie/odevicebutton.cpp
@@ -61,25 +61,25 @@ OQCopMessage::OQCopMessage ( const QCString &ch, const QCString &m, const QByteA
void OQCopMessage::init ( const QCString &ch, const QCString &m, const QByteArray &arg )
{
if ( !d )
d = new OQCopMessageData ( );
d-> m_channel = ch;
d-> m_message = m;
d-> m_data = arg;
}
bool OQCopMessage::send ( )
{
- if ( d-> m_channel. isEmpty ( ) || d-> m_message. isEmpty ( ))
+ if ( d-> m_channel. isEmpty ( ) || d-> m_message. isEmpty ( ) )
return false;
QCopEnvelope e ( d-> m_channel, d-> m_message );
if ( d-> m_data. size ( ))
e. writeRawBytes ( d-> m_data. data ( ), d-> m_data. size ( ));
return true;
}
QCString OQCopMessage::channel ( ) const
{
@@ -209,24 +209,25 @@ void ODeviceButton::setUserText(const QString& text)
}
void ODeviceButton::setPixmap(const QPixmap& picture)
{
m_Pixmap = picture;
}
void ODeviceButton::setFactoryPresetPressedAction(const OQCopMessage& action)
{
m_FactoryPresetPressedAction = action;
}
+
void ODeviceButton::setPressedAction(const OQCopMessage& action)
{
m_PressedAction = action;
}
void ODeviceButton::setFactoryPresetHeldAction(const OQCopMessage& action)
{
m_FactoryPresetHeldAction = action;
}
void ODeviceButton::setHeldAction(const OQCopMessage& action)
{